Messages in this thread | | | Subject | Re: [PATCH][GIT PULL][for 2.6.35] tracing: Add alignment to syscall metadata declarations | From | Steven Rostedt <> | Date | Fri, 09 Jul 2010 16:46:14 -0400 |
| |
On Fri, 2010-07-09 at 22:33 +0200, Sam Ravnborg wrote: > On Fri, Jul 09, 2010 at 03:56:42PM -0400, Steven Rostedt wrote:
> This looks like a fix that just hide the real bug. > If I remember the original report correct the problem is > that the symbol: > > __start_syscalls_metadata > > Does not point to a valid syscall entry. > > The symbol is assigned in vmlinux.lds.h like this: > #define TRACE_SYSCALLS() VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \ > *(__syscalls_metadata) \ > VMLINUX_SYMBOL(__stop_syscalls_metadata) = .; > > Now consider what is happening if we have the following scanario: > > . equals 0x1004 so __start_syscalls_metadata is set to 0x1004 > But __syscall_metadata require 8 byte alignment so it starts at 0x1008.
I did not know that the linker could start a section at a half a word size. That seems to me to be a linker bug.
If a word for a box is 8 bytes than the linker had better start sections on 8 byte boundaries. Otherwise I would think other things may break.
For 4 byte word boxes, this should be safe anyway.
-- Steve
| |