aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
authorYoshinori Sato <ysato@users.sourceforge.jp>2008-07-31 03:07:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-08-01 15:46:41 -0400
commitc6de002617c199f80f9a2a713dffc263bdc69b81 (patch)
treef86f31fcb65c2d0447e11c7f920bbb4ae1f4fbcf /include/asm-generic
parentea44c1d60df3640bd956a67c392865c44fe9bc45 (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/asm-generic')
-rw-r--r--include/asm-generic/vmlinux.lds.h14
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) = .;