diff options
| author | martin <martin@NetBSD.org> | 2023-06-04 20:02:29 +0000 |
|---|---|---|
| committer | martin <martin@NetBSD.org> | 2023-06-04 20:02:29 +0000 |
| commit | db82ad683130e72e65b39b6df6869dab1b3fb3b4 (patch) | |
| tree | 72ff1105b880eef8a9d772fbfc68bf51e6d872f2 /libexec | |
| parent | 71b53e514264dcb8389ebea4fc9cc87db90293ae (diff) | |
Avoid using uninitialized variable "symnum" when building with DEBUG
enabled by borrowing the rdbg_symname() macro from arch/x86_64.
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/ld.elf_so/arch/i386/mdreloc.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/libexec/ld.elf_so/arch/i386/mdreloc.c b/libexec/ld.elf_so/arch/i386/mdreloc.c index 2aaa2616182..22e1dc950d3 100644 --- a/libexec/ld.elf_so/arch/i386/mdreloc.c +++ b/libexec/ld.elf_so/arch/i386/mdreloc.c @@ -1,8 +1,8 @@ -/* $NetBSD: mdreloc.c,v 1.42 2023/06/04 01:24:57 joerg Exp $ */ +/* $NetBSD: mdreloc.c,v 1.43 2023/06/04 20:02:29 martin Exp $ */ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: mdreloc.c,v 1.42 2023/06/04 01:24:57 joerg Exp $"); +__RCSID("$NetBSD: mdreloc.c,v 1.43 2023/06/04 20:02:29 martin Exp $"); #endif /* not lint */ #include <sys/types.h> @@ -15,6 +15,9 @@ void _rtld_bind_start(void); void _rtld_relocate_nonplt_self(Elf_Dyn *, Elf_Addr); caddr_t _rtld_bind(const Obj_Entry *, Elf_Word); +#define rdbg_symname(obj, rela) \ + ((obj)->strtab + (obj)->symtab[ELF_R_SYM((rela)->r_info)].st_name) + void _rtld_setup_pltgot(const Obj_Entry *obj) { @@ -97,7 +100,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) *where += target - (Elf_Addr)where; rdbg(("PC32 %s in %s --> %p in %s", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where, defobj->path)); break; @@ -111,7 +114,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) if (*where != tmp) *where = tmp; rdbg(("32/GLOB_DAT %s in %s --> %p in %s", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where, defobj->path)); break; @@ -154,7 +157,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) *where += (Elf_Addr)(def->st_value - defobj->tlsoffset); rdbg(("TLS_TPOFF %s in %s --> %p", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where)); break; @@ -165,7 +168,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) *where += (Elf_Addr)(defobj->tlsoffset - def->st_value); rdbg(("TLS_TPOFF32 %s in %s --> %p", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where)); break; @@ -173,7 +176,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) *where = (Elf_Addr)(defobj->tlsindex); rdbg(("TLS_DTPMOD32 %s in %s --> %p", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where)); break; @@ -181,7 +184,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) *where = (Elf_Addr)(def->st_value); rdbg(("TLS_DTPOFF32 %s in %s --> %p", - obj->strtab + obj->symtab[symnum].st_name, + rdbg_symname(obj, rel), obj->path, (void *)*where)); break; @@ -192,7 +195,7 @@ _rtld_relocate_nonplt_objects(Obj_Entry *obj) (u_long)ELF_R_SYM(rel->r_info), (u_long)ELF_R_TYPE(rel->r_info), (void *)rel->r_offset, (void *)*where, - obj->strtab + obj->symtab[symnum].st_name)); + rdbg_symname(obj, rel))); _rtld_error("%s: Unsupported relocation type %ld " "in non-PLT relocations", obj->path, (u_long) ELF_R_TYPE(rel->r_info)); |
