summaryrefslogtreecommitdiff
path: root/libexec/ld.so/hppa/rtld_machine.c
diff options
context:
space:
mode:
authorKurt Miller <kurt@cvs.openbsd.org>2008-04-09 21:45:27 +0000
committerKurt Miller <kurt@cvs.openbsd.org>2008-04-09 21:45:27 +0000
commite8fa3db80c2b63ccd534533dd3faba4cea7228b8 (patch)
tree576d27cf7bc73facdc4c3316c2b0c99491e0e78d /libexec/ld.so/hppa/rtld_machine.c
parent2649d5c18f001d23bb274cca5b01e455722dcc89 (diff)
Improve support for shared libs linked at non-zero addreses:
- rename private values in struct elf_object to better describe their meaning: s/load_offs/obj_base/ "object's address '0' base" s/load_addr/load_base/ "The base address of the loadable segments" - gdb needs the obj_base value so swap positions with load_base in struct elf_object - fix a few occurrences of where load_base was used instead of obj_base. With help and okay drahn@
Diffstat (limited to 'libexec/ld.so/hppa/rtld_machine.c')
-rw-r--r--libexec/ld.so/hppa/rtld_machine.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libexec/ld.so/hppa/rtld_machine.c b/libexec/ld.so/hppa/rtld_machine.c
index 47f2e7bab03..3398eb5ec82 100644
--- a/libexec/ld.so/hppa/rtld_machine.c
+++ b/libexec/ld.so/hppa/rtld_machine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtld_machine.c,v 1.14 2007/11/27 16:42:19 miod Exp $ */
+/* $OpenBSD: rtld_machine.c,v 1.15 2008/04/09 21:45:26 kurt Exp $ */
/*
* Copyright (c) 2004 Michael Shalayeff
@@ -101,7 +101,7 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz)
int i, numrela, fails = 0;
size_t size;
- loff = object->load_offs;
+ loff = object->obj_base;
numrela = object->Dyn.info[relasz] / sizeof(Elf_RelA);
rela = (Elf_RelA *)(object->Dyn.info[rel]);
@@ -217,7 +217,7 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz)
DL_DEB(("[%x]PLABEL32: bad\n", i));
break;
}
- *pt = _dl_md_plabel(sobj->load_offs +
+ *pt = _dl_md_plabel(sobj->obj_base +
this->st_value + rela->r_addend,
sobj->dyn.pltgot);
#ifdef DEBUG
@@ -325,7 +325,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy)
} else {
rela = (Elf_RelA *)(object->dyn.jmprel);
numrela = object->dyn.pltrelsz / sizeof(Elf_RelA);
- ooff = object->load_offs;
+ ooff = object->obj_base;
for (i = 0; i < numrela; i++, rela++) {
Elf_Addr *r_addr = (Elf_Addr *)(ooff + rela->r_offset);
@@ -367,7 +367,7 @@ _dl_bind(elf_object_t *object, int reloff)
sym += ELF_R_SYM(rela->r_info);
symn = object->dyn.strtab + sym->st_name;
- addr = (Elf_Addr *)(object->load_offs + rela->r_offset);
+ addr = (Elf_Addr *)(object->obj_base + rela->r_offset);
this = NULL;
ooff = _dl_find_symbol(symn, &this,
SYM_SEARCH_ALL|SYM_WARNNOTFOUND|SYM_PLT, sym, object, &sobj);