diff options
author | Bastian Blank <waldi@debian.org> | 2008-07-04 13:00:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-04 13:40:09 -0400 |
commit | 51597acfd3c09073aeea94a0e6f76a931f8c22d2 (patch) | |
tree | b3038e108c9b380035ec95dd3305f7496d0c2f04 /arch/alpha | |
parent | 1209726ce942047c9fefe7cd427dc36f8e9ded53 (diff) |
Alpha Linux kernel fails with inconsistent kallsyms data
The build of the Alpha Linux kernel currently fails[1] with inconsistent
kallsyms data. As I never saw that before, I thought about hardware
problems. But in fact it is a bug in the Linux kernel.
The end of the rodata section is marked with the "__end_rodata" symbol.
This symbol have different aligning constraints than the inittext parts
and therefor the start marked "_sinittext". Because of that the
__end_rodata symbol shifts between < _sinittext and == _sinittext. The
later variant is seen as a code symbol and recorded in the kallsyms data.
On fix would be to move the exception table a little bit and get some
space between that two areas.
[1]: http://buildd.debian.org/fetch.cgi?pkg=linux-2.6&arch=alpha&ver=2.6.25-5&stamp=1213919009&file=log&as=raw
Cc: maximilian attems <max@stro.at>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/kernel/vmlinux.lds.S | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index f13249be17c5..ef37fc1acaea 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S | |||
@@ -25,6 +25,13 @@ SECTIONS | |||
25 | } :kernel | 25 | } :kernel |
26 | _etext = .; /* End of text section */ | 26 | _etext = .; /* End of text section */ |
27 | 27 | ||
28 | NOTES :kernel :note | ||
29 | .dummy : { | ||
30 | *(.dummy) | ||
31 | } :kernel | ||
32 | |||
33 | RODATA | ||
34 | |||
28 | /* Exception table */ | 35 | /* Exception table */ |
29 | . = ALIGN(16); | 36 | . = ALIGN(16); |
30 | __ex_table : { | 37 | __ex_table : { |
@@ -33,13 +40,6 @@ SECTIONS | |||
33 | __stop___ex_table = .; | 40 | __stop___ex_table = .; |
34 | } | 41 | } |
35 | 42 | ||
36 | NOTES :kernel :note | ||
37 | .dummy : { | ||
38 | *(.dummy) | ||
39 | } :kernel | ||
40 | |||
41 | RODATA | ||
42 | |||
43 | /* Will be freed after init */ | 43 | /* Will be freed after init */ |
44 | . = ALIGN(PAGE_SIZE); | 44 | . = ALIGN(PAGE_SIZE); |
45 | /* Init code and data */ | 45 | /* Init code and data */ |