On Wed, Jan 6, 2016 at 9:59 AM, Borislav Petkov <bp(a)alien8.de> wrote:
On Wed, Jan 06, 2016 at 09:54:19AM -0800, Andy Lutomirski wrote:
> I assume that this zero is to save the couple of bytes for the
> relocation entry on relocatable kernels?
I didn't want to touch all _ASM_EXTABLE() macro invocations by adding a
third param @handler which is redundant as we know which it is.
I see. You could shove the .long ex_handler_default - . into the
macro, but that would indeed bloat the kernel image a bit more
(although not the in-memory size of the kernel).
> > + new_ip = ex_fixup_addr(e);
> > + handler = ex_fixup_handler(e);
> > +
> > + if (!handler)
> > + handler = ex_handler_default;
> the !handler condition here will never trigger because the offset was
> already applied.
Actually, if I do "0 - .", that would overflow the int because current
location is virtual address and that's 64-bit. Or would gas simply
truncate it? Lemme check...
Anyway, what we should do instead is simply
to denote that the @handler is implicit.
Agreed. I just think that your current fixup_ex_handler
implementation needs adjustment if you do it that way.