Re: [PATCH 0/2] jump label: update for .39

From: David Daney
Date: Thu Mar 10 2011 - 13:47:19 EST


On 03/10/2011 10:35 AM, Steven Rostedt wrote:
On Thu, 2011-03-10 at 13:20 -0500, Jason Baron wrote:
On Thu, Mar 10, 2011 at 01:04:01PM -0500, Steven Rostedt wrote:
Now its up to the linker to decide where to place that element. Can we
guarantee that it will always be on an 8 byte boundery?
Hmm, I wonder if we could add a .ALIGN sizeof(long) before that?


we can. Sparc does it, see: arch/sparc/include/asm/jump_label.h.

So I guess it would be .align 8 for 64-bit and .align 4 for 32-bit...

Now what about the vmlinux.ld? That has a align 8. Is that a one time
short (align to 8 bytes here), or will it carry through aligning the
rest of the section. If not, perhaps we may be OK.


That is the alignment of the start of the section in the *output* object. The linker will respect the requested alignment of the various __jump_table sections in the *input* objects. So adding an .align 8 before emitting data into the __jump_table section would not hurt (It could even help.)

I empirically determined that if no .align is specified, the requested alignment defaults to 4 for x86_64.

The alignment requested by the assembler will have to satisfy *all* the requested alignments, so manually forcing everything to .align 8 (or .align 4 for 32-bit) should ensure that the linker doesn't put in any holes.

David Daney
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/