linux/arch/alpha/kernel
Chaskiel Grundman 69ac59647e [PATCH] alpha: process_reloc_for_got confuses r_offset and r_addend
arch/alpha/kernel/module.c:process_reloc_for_got(), which figures out how big
the .got section for a module should be, appears to be confusing r_offset (the
file offset that the relocation needs to be applied to) with r_addend (the
offset of the relocation's actual target address from the address of the
relocation's symbol).  Because of this, one .got entry is allocated for each
relocation instead of one each unique symbol/addend.

In the module I am working with, this causes the .got section to be almost 10
times larger than it needs to be (75544 bytes instead of 7608 bytes).  As the
.got is accessed with global-pointer-relative instructions, it needs to be
within the 64k gp "zone", and a 75544 byte .got clearly does not fit.  The
result of this is that relocation overflows are detected during module load
and the load is aborted.

Change struct got_entry/process_reloc_for_got to fix this.

Acked-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-09 13:57:30 -07:00
..
alpha_ksyms.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
console.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_apecs.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_cia.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_irongate.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_lca.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_marvel.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_mcpcia.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_polaris.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_t2.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_titan.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_tsunami.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
core_wildfire.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_ev6.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_ev7.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_marvel.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
err_titan.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
es1888.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gct.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_alpha.c [PATCH] alpha smp fix (part #2) 2005-07-01 08:20:23 -07:00
irq_i8259.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_pyxis.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq_srm.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machvec_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
module.c [PATCH] alpha: process_reloc_for_got confuses r_offset and r_addend 2005-09-09 13:57:30 -07:00
ns87312.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
osf_sys.c [PATCH] alpha/osf_sys: use helper functions to convert between tv and jiffies 2005-05-17 07:59:21 -07:00
pci_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_iommu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-noop.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci.c [PATCH] pci and yenta: pcibios_bus_to_resource 2005-08-04 21:32:46 -07:00
process.c [PATCH] Don't export machine_restart, machine_halt, or machine_power_off. 2005-07-26 14:35:42 -07:00
proto.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ptrace.c [PATCH] convert that currently tests _NSIG directly to use valid_signal() 2005-05-01 08:59:14 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
smc37c93x.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smc37c669.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smp.c [PATCH] alpha spinlock code and bogus constraints 2005-08-23 18:43:44 -07:00
srm_env.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
srmcons.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_alcor.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_cabriolet.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_dp264.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_eb64p.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_eiger.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_jensen.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_marvel.c [PATCH] PCI: remove CONFIG_PCI_NAMES 2005-09-08 14:57:23 -07:00
sys_miata.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_mikasa.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_nautilus.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_noritake.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_rawhide.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_ruffian.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_rx164.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_sable.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_sio.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_sx164.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_takara.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_titan.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_wildfire.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
systbls.S [PATCH] new alpha syscalls 2005-07-27 18:24:24 -07:00
time.c [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
traps.c [PATCH] alpha smp fix 2005-06-30 22:29:48 -07:00
vmlinux.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00