Messages in this thread | | | From | Zeev Tarantov <> | Date | Sat, 10 Jul 2010 18:36:17 +0300 | Subject | Re: [PATCH] tracing: properly align linker defined symbols |
| |
On Sat, Jul 10, 2010 at 16:48, Sam Ravnborg <sam@ravnborg.org> wrote: > On Sat, Jul 10, 2010 at 07:34:05AM -0400, Steven Rostedt wrote: >> On Sat, 2010-07-10 at 13:18 +0300, Zeev Tarantov wrote: >> > On Sat, Jul 10, 2010 at 09:35, Sam Ravnborg <sam@ravnborg.org> wrote: >> >> > > +/* >> > > + * Align to a 32 byte boundary equal to the >> > > + * alignment gcc 4.5 uses for a struct >> > > + */ >> > > +#define STRUCT_ALIGN() . = ALIGN(32) >> > > + >> >> What I'm nervous about is when gcc 4.8 decides to up the alignment to >> 64. >> >> Maybe we should have both patches, just to be safe. > > Another approach could be to just stop playing games with alignment > and use the fact that __stop_syscalls_metadata point to next byte > after last entry. > > Something like the below untested patch. > > But to fix the current regression I prefer the simpler > patch that just fixup the aligment. > > Sam > > > diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c > index 34e3580..50e9606 100644 > --- a/kernel/trace/trace_syscalls.c > +++ b/kernel/trace/trace_syscalls.c > @@ -79,15 +79,19 @@ static struct syscall_metadata *find_syscall_meta(unsigned long syscall) > stop = (struct syscall_metadata *)__stop_syscalls_metadata; > kallsyms_lookup(syscall, NULL, NULL, NULL, str); > > - for ( ; start < stop; start++) { > + /* > + * start may point a few bytes before first entry > + * stop points at first byte after last entry > + */ > + for (stop--; stop >= start; stop--) { > /* > * Only compare after the "sys" prefix. Archs that use > * syscall wrappers may have syscalls symbols aliases prefixed > * with "SyS" instead of "sys", leading to an unwanted > * mismatch. > */ > - if (start->name && !strcmp(start->name + 3, str + 3)) > - return start; > + if (stop->name && !strcmp(stop->name + 3, str + 3)) > + return stop; > } > return NULL; > } >
This also boots (source from tarball with only this patch, same config & compiler). Tested-by: Zeev Tarantov <zeev.tarantov@gmail.com>
-Zeev -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |