Revert "generic, x86: fix __per_cpu_load relocation"
authorIngo Molnar <mingo@elte.hu>
Thu, 29 Jan 2009 16:10:12 +0000 (17:10 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 29 Jan 2009 16:18:54 +0000 (17:18 +0100)
This reverts commit 5a611268b69f05262936dd177205acbce4471358.

It is causing occasional boot crashes, caused by certain
linker versions (GNU ld version 2.18.50.0.6-2 20080403) messing up:

 82dcc000 D __per_cpu_load
 c16e6000 A __per_cpu_load_abs

The __per_cpu_load value is out of whack. Hpa noticed the following
detail:

  * (gdb) p/x -(0xc16e6000-0x82dcc000)
  * $2 = 0xc16e6000
  * I.e. one is the other << 1

The two symbols should be equal.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/asm-generic/vmlinux.lds.h

index f3180a8..53e21f3 100644 (file)
  * end offset.
  */
 #define PERCPU_VADDR(vaddr, phdr)                                      \
-       VMLINUX_SYMBOL(__per_cpu_load_abs) = .;                         \
-       .data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load_abs)      \
+       VMLINUX_SYMBOL(__per_cpu_load) = .;                             \
+       .data.percpu vaddr : AT(VMLINUX_SYMBOL(__per_cpu_load)          \
                                - LOAD_OFFSET) {                        \
                VMLINUX_SYMBOL(__per_cpu_start) = .;                    \
-               VMLINUX_SYMBOL(__per_cpu_load) = LOADADDR(.data.percpu) + LOAD_OFFSET;\
                *(.data.percpu.first)                                   \
                *(.data.percpu.page_aligned)                            \
                *(.data.percpu)                                         \
                *(.data.percpu.shared_aligned)                          \
                VMLINUX_SYMBOL(__per_cpu_end) = .;                      \
        } phdr                                                          \
-       . = VMLINUX_SYMBOL(__per_cpu_load_abs) + SIZEOF(.data.percpu);
+       . = VMLINUX_SYMBOL(__per_cpu_load) + SIZEOF(.data.percpu);
 
 /**
  * PERCPU - define output section for percpu area, simple version