diff options
author | Yoshinori Sato <ysato@users.sourceforge.jp> | 2008-07-31 03:07:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-01 15:46:41 -0400 |
commit | c6de002617c199f80f9a2a713dffc263bdc69b81 (patch) | |
tree | f86f31fcb65c2d0447e11c7f920bbb4ae1f4fbcf /include | |
parent | ea44c1d60df3640bd956a67c392865c44fe9bc45 (diff) |
Missing symbol prefix on vmlinux.lds.h
ARCH=h8300:
init/main.c:781: undefined reference to `___early_initcall_end'
Same problem have
__start___bug_table
__stop___bug_table
__tracedata_start
__tracedata_end
__per_cpu_start
__per_cpu_end
When defining a symbol in vmlinux.lds, use the VMLINUX_SYMBOL macro.
VMLINUX_SYMBOL adds a prefix charactor.
You can't just use straight symbol names in common header files as they
dont take into consideration weird arch-specific ABI conventions. in the
case of Blackfin/h8300, the ABI dictates that any C-visible symbols have
an underscore prefixed to them. Thus all symbols in vmlinux.lds.h need to
be wrapped in VMLINUX_SYMBOL() so that each arch can put hide this magic
in their own files.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: "Mike Frysinger" <vapier.adi@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/vmlinux.lds.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 6d88a923c945..cb752ba72466 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -333,9 +333,9 @@ | |||
333 | #define BUG_TABLE \ | 333 | #define BUG_TABLE \ |
334 | . = ALIGN(8); \ | 334 | . = ALIGN(8); \ |
335 | __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ | 335 | __bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \ |
336 | __start___bug_table = .; \ | 336 | VMLINUX_SYMBOL(__start___bug_table) = .; \ |
337 | *(__bug_table) \ | 337 | *(__bug_table) \ |
338 | __stop___bug_table = .; \ | 338 | VMLINUX_SYMBOL(__stop___bug_table) = .; \ |
339 | } | 339 | } |
340 | #else | 340 | #else |
341 | #define BUG_TABLE | 341 | #define BUG_TABLE |
@@ -345,9 +345,9 @@ | |||
345 | #define TRACEDATA \ | 345 | #define TRACEDATA \ |
346 | . = ALIGN(4); \ | 346 | . = ALIGN(4); \ |
347 | .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \ | 347 | .tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \ |
348 | __tracedata_start = .; \ | 348 | VMLINUX_SYMBOL(__tracedata_start) = .; \ |
349 | *(.tracedata) \ | 349 | *(.tracedata) \ |
350 | __tracedata_end = .; \ | 350 | VMLINUX_SYMBOL(__tracedata_end) = .; \ |
351 | } | 351 | } |
352 | #else | 352 | #else |
353 | #define TRACEDATA | 353 | #define TRACEDATA |
@@ -362,7 +362,7 @@ | |||
362 | 362 | ||
363 | #define INITCALLS \ | 363 | #define INITCALLS \ |
364 | *(.initcallearly.init) \ | 364 | *(.initcallearly.init) \ |
365 | __early_initcall_end = .; \ | 365 | VMLINUX_SYMBOL(__early_initcall_end) = .; \ |
366 | *(.initcall0.init) \ | 366 | *(.initcall0.init) \ |
367 | *(.initcall0s.init) \ | 367 | *(.initcall0s.init) \ |
368 | *(.initcall1.init) \ | 368 | *(.initcall1.init) \ |
@@ -383,9 +383,9 @@ | |||
383 | 383 | ||
384 | #define PERCPU(align) \ | 384 | #define PERCPU(align) \ |
385 | . = ALIGN(align); \ | 385 | . = ALIGN(align); \ |
386 | __per_cpu_start = .; \ | 386 | VMLINUX_SYMBOL(__per_cpu_start) = .; \ |
387 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \ | 387 | .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { \ |
388 | *(.data.percpu) \ | 388 | *(.data.percpu) \ |
389 | *(.data.percpu.shared_aligned) \ | 389 | *(.data.percpu.shared_aligned) \ |
390 | } \ | 390 | } \ |
391 | __per_cpu_end = .; | 391 | VMLINUX_SYMBOL(__per_cpu_end) = .; |