diff options
Diffstat (limited to 'libexec/ld.so/powerpc/rtld_machine.c')
-rw-r--r-- | libexec/ld.so/powerpc/rtld_machine.c | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/libexec/ld.so/powerpc/rtld_machine.c b/libexec/ld.so/powerpc/rtld_machine.c index ea5f4a900cc..b1f3dc9ab38 100644 --- a/libexec/ld.so/powerpc/rtld_machine.c +++ b/libexec/ld.so/powerpc/rtld_machine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rtld_machine.c,v 1.68 2019/10/05 00:08:50 guenther Exp $ */ +/* $OpenBSD: rtld_machine.c,v 1.69 2019/10/23 19:55:09 guenther Exp $ */ /* * Copyright (c) 1999 Dale Rahn @@ -58,19 +58,19 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) int numrela; long relrel; int fails = 0; - Elf32_Addr loff; - Elf32_Rela *relas; + Elf_Addr loff; + Elf_RelA *relas; /* for jmp table relocations */ - Elf32_Addr prev_value = 0, prev_ooff = 0; - const Elf32_Sym *prev_sym = NULL; + Elf_Addr prev_value = 0, prev_ooff = 0; + const Elf_Sym *prev_sym = NULL; loff = object->obj_base; - numrela = object->Dyn.info[relasz] / sizeof(Elf32_Rela); + numrela = object->Dyn.info[relasz] / sizeof(Elf_RelA); relrel = rel == DT_RELA ? object->relacount : 0; - relas = (Elf32_Rela *)(object->Dyn.info[rel]); + relas = (Elf_RelA *)(object->Dyn.info[rel]); if (relas == NULL) - return(0); + return 0; if (relrel > numrela) _dl_die("relcount > numrel: %ld > %d", relrel, numrela); @@ -86,26 +86,26 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) *r_addr = loff + relas->r_addend; } for (; i < numrela; i++, relas++) { - Elf32_Addr *r_addr = (Elf32_Addr *)(relas->r_offset + loff); - const Elf32_Sym *sym; + Elf_Addr *r_addr = (Elf_Addr *)(relas->r_offset + loff); + const Elf_Sym *sym; const char *symn; int type; - if (ELF32_R_SYM(relas->r_info) == 0xffffff) + if (ELF_R_SYM(relas->r_info) == 0xffffff) continue; - type = ELF32_R_TYPE(relas->r_info); + type = ELF_R_TYPE(relas->r_info); if (type == RELOC_JMP_SLOT && rel != DT_JMPREL) continue; sym = object->dyn.symtab; - sym += ELF32_R_SYM(relas->r_info); + sym += ELF_R_SYM(relas->r_info); symn = object->dyn.strtab + sym->st_name; - if (ELF32_R_SYM(relas->r_info) && - !(ELF32_ST_BIND(sym->st_info) == STB_LOCAL && - ELF32_ST_TYPE (sym->st_info) == STT_NOTYPE) && + if (ELF_R_SYM(relas->r_info) && + !(ELF_ST_BIND(sym->st_info) == STB_LOCAL && + ELF_ST_TYPE (sym->st_info) == STT_NOTYPE) && sym != prev_sym) { struct sym_res sr; @@ -126,9 +126,9 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) switch (type) { case RELOC_32: - if (ELF32_ST_BIND(sym->st_info) == STB_LOCAL && - (ELF32_ST_TYPE(sym->st_info) == STT_SECTION || - ELF32_ST_TYPE(sym->st_info) == STT_NOTYPE) ) { + if (ELF_ST_BIND(sym->st_info) == STB_LOCAL && + (ELF_ST_TYPE(sym->st_info) == STT_SECTION || + ELF_ST_TYPE(sym->st_info) == STT_NOTYPE) ) { *r_addr = prev_ooff + relas->r_addend; } else { *r_addr = prev_ooff + prev_value + @@ -136,9 +136,9 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) } break; case RELOC_RELATIVE: - if (ELF32_ST_BIND(sym->st_info) == STB_LOCAL && - (ELF32_ST_TYPE(sym->st_info) == STT_SECTION || - ELF32_ST_TYPE(sym->st_info) == STT_NOTYPE) ) { + if (ELF_ST_BIND(sym->st_info) == STB_LOCAL && + (ELF_ST_TYPE(sym->st_info) == STT_SECTION || + ELF_ST_TYPE(sym->st_info) == STT_NOTYPE) ) { *r_addr = loff + relas->r_addend; } else { *r_addr = loff + prev_value + @@ -158,8 +158,8 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) /* should not be supported ??? */ case RELOC_REL24: { - Elf32_Addr val = prev_ooff + prev_value + - relas->r_addend - (Elf32_Addr)r_addr; + Elf_Addr val = prev_ooff + prev_value + + relas->r_addend - (Elf_Addr)r_addr; if (!B24_VALID_RANGE(val)) { /* invalid offset */ _dl_die("%s: invalid %s offset %x at %p", @@ -177,10 +177,10 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) #if 1 case RELOC_16_LO: { - Elf32_Addr val; + Elf_Addr val; val = loff + relas->r_addend; - *(Elf32_Half *)r_addr = val; + *(Elf_Half *)r_addr = val; _dl_dcbf(r_addr); } @@ -189,10 +189,10 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) #if 1 case RELOC_16_HI: { - Elf32_Addr val; + Elf_Addr val; val = loff + relas->r_addend; - *(Elf32_Half *)r_addr = (val >> 16); + *(Elf_Half *)r_addr = (val >> 16); _dl_dcbf(r_addr); } @@ -201,10 +201,10 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) #if 1 case RELOC_16_HA: { - Elf32_Addr val; + Elf_Addr val; val = loff + relas->r_addend; - *(Elf32_Half *)r_addr = ((val + 0x8000) >> 16); + *(Elf_Half *)r_addr = ((val + 0x8000) >> 16); _dl_dcbf(r_addr); } @@ -215,8 +215,8 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) case RELOC_REL14: case RELOC_REL14_NTAKEN: { - Elf32_Addr val = prev_ooff + prev_value + - relas->r_addend - (Elf32_Addr)r_addr; + Elf_Addr val = prev_ooff + prev_value + + relas->r_addend - (Elf_Addr)r_addr; if (((val & 0xffff8000) != 0) && ((val & 0xffff8000) != 0xffff8000)) { /* invalid offset */ @@ -255,11 +255,11 @@ _dl_md_reloc(elf_object_t *object, int rel, int relasz) default: _dl_die("%s: unsupported relocation '%s' %d at %p\n", object->load_name, symn, - ELF32_R_TYPE(relas->r_info), (void *)r_addr ); + ELF_R_TYPE(relas->r_info), (void *)r_addr ); } } - return(fails); + return fails; } /* @@ -273,7 +273,7 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) int fails = 0; if (object->Dyn.info[DT_PLTREL] != DT_RELA) - return (0); + return 0; if (object->traced) lazy = 1; @@ -281,26 +281,26 @@ _dl_md_reloc_got(elf_object_t *object, int lazy) if (!lazy) { fails = _dl_md_reloc(object, DT_JMPREL, DT_PLTRELSZ); } else { - Elf32_Addr *got; - Elf32_Addr *plt; + Elf_Addr *got; + Elf_Addr *plt; int numplt, i; /* Relocate processor-specific tags. */ object->Dyn.info[DT_PROC(DT_PPC_GOT)] += object->obj_base; - got = (Elf32_Addr *) - (Elf32_Rela *)(object->Dyn.info[DT_PROC(DT_PPC_GOT)]); - got[1] = (Elf32_Addr)_dl_bind_start; - got[2] = (Elf32_Addr)object; + got = (Elf_Addr *) + (Elf_RelA *)(object->Dyn.info[DT_PROC(DT_PPC_GOT)]); + got[1] = (Elf_Addr)_dl_bind_start; + got[2] = (Elf_Addr)object; - plt = (Elf32_Addr *) - (Elf32_Rela *)(object->Dyn.info[DT_PLTGOT]); - numplt = object->Dyn.info[DT_PLTRELSZ] / sizeof(Elf32_Rela); + plt = (Elf_Addr *) + (Elf_RelA *)(object->Dyn.info[DT_PLTGOT]); + numplt = object->Dyn.info[DT_PLTRELSZ] / sizeof(Elf_RelA); for (i = 0; i < numplt; i++) plt[i] += object->obj_base; } - return (fails); + return fails; } Elf_Addr @@ -310,7 +310,7 @@ _dl_bind(elf_object_t *object, int reloff) struct sym_res sr; const char *symn; Elf_RelA *relas; - Elf32_Addr *plttable; + Elf_Addr *plttable; int64_t cookie = pcookie; struct { struct __kbind param; @@ -333,8 +333,8 @@ _dl_bind(elf_object_t *object, int reloff) if (__predict_false(sr.obj->traced) && _dl_trace_plt(sr.obj, symn)) return buf.newval; - plttable = (Elf32_Addr *)(Elf32_Rela *)(object->Dyn.info[DT_PLTGOT]); - buf.param.kb_addr = &plttable[ reloff / sizeof(Elf32_Rela) ]; + plttable = (Elf_Addr *)(Elf_RelA *)(object->Dyn.info[DT_PLTGOT]); + buf.param.kb_addr = &plttable[ reloff / sizeof(Elf_RelA) ]; buf.param.kb_size = sizeof(Elf_Addr); { |