linux/arch
Vivek Goyal 6569580de7 [PATCH] i386: Distinguish absolute symbols
Ld knows about 2 kinds of symbols,  absolute and section
relative.  Section relative symbols symbols change value
when a section is moved and absolute symbols do not.

Currently in the linker script we have several labels
marking the beginning and ending of sections that
are outside of sections, making them absolute symbols.
Having a mixture of absolute and section relative
symbols refereing to the same data is currently harmless
but it is confusing.

This must be done carefully as newer revs of ld do not place
symbols that appear in sections without data and instead
ld makes those symbols global :(

My ultimate goal is to build a relocatable kernel.  The
safest and least intrusive technique is to generate
relocation entries so the kernel can be relocated at load
time.  The only penalty would be an increase in the size
of the kernel binary.  The problem is that if absolute and
relocatable symbols are not properly specified absolute symbols
will be relocated or section relative symbols won't be, which
is fatal.

The practical motivation is that when generating kernels that
will run from a reserved area for analyzing what caused
a kernel panic, it is simpler if you don't need to hard code
the physical memory location they will run at, especially
for the distributions.

[AK: and merged:]

o Also put a message so that in future people can be aware of it and
  avoid introducing absolute symbols.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
2006-12-07 02:14:03 +01:00
..
alpha [NET]: Alpha checksum annotations and cleanups. 2006-12-02 21:23:01 -08:00
arm Fix misc Kconfig typos 2006-11-30 05:22:59 +01:00
arm26 [PATCH] remove bogus arch-specific syscall exports 2006-10-11 11:17:07 -07:00
avr32 AVR32: Add missing return instruction in __raw_writesb 2006-11-06 14:07:16 +01:00
cris [NET]: Cris checksum annotations and cleanups. 2006-12-02 21:23:02 -08:00
frv [NET]: FRV checksum annotations. 2006-12-02 21:23:03 -08:00
h8300 [NET]: H8300 checksum annotations and cleanups. 2006-12-02 21:23:04 -08:00
i386 [PATCH] i386: Distinguish absolute symbols 2006-12-07 02:14:03 +01:00
ia64 [NET]: IA64 checksum annotations and cleanups. 2006-12-02 21:23:05 -08:00
m32r [NET]: M32R checksum annotations and cleanups. 2006-12-02 21:23:06 -08:00
m68k [NET]: M68K checksum annotations and cleanups. 2006-12-02 21:23:07 -08:00
m68knommu [PATCH] m68knommu: remove __rom_end from 68360 startup code 2006-12-04 08:26:12 -08:00
mips [MIPS] Cleanup memory barriers for weakly ordered systems. 2006-12-04 22:43:14 +00:00
parisc [NET]: PARISC checksum annotations and cleanups. 2006-12-02 21:23:10 -08:00
powerpc [POWERPC] Add missing EXPORTS for mpc52xx support 2006-12-05 11:34:37 +11:00
ppc [POWERPC] Add files build to .gitignore 2006-12-04 20:41:29 +11:00
s390 [S390] Don't use small stacks when lockdep is used. 2006-12-04 15:41:10 +01:00
sh [NET]: Kill direct includes of asm/checksum.h 2006-12-02 21:22:59 -08:00
sh64 [NET]: SH64 checksum annotations and cleanups. 2006-12-02 21:23:11 -08:00
sparc Fix misc Kconfig typos 2006-11-30 05:22:59 +01:00
sparc64 PCI: Use pci_generic_prep_mwi on sparc64 2006-12-01 14:36:57 -08:00
um [NET]: UML checksum annotations and cleanups. 2006-12-02 21:23:12 -08:00
v850 [NET]: V850 checksum annotations and cleanups. 2006-12-02 21:23:13 -08:00
x86_64 [PATCH] x86: Mention PCI instead of RAM in NMI parity error message 2006-12-07 02:14:03 +01:00
xtensa [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00