From 1ffa9a1825124bdf3d99f1f09b720aac99038822 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 25 Oct 2004 15:24:25 +0000 Subject: [PATCH] 2004-10-25 David Mosberger * readelf.c (slurp_ia64_unwind_table): Support relocations against non-section symbols by adding in the symbol value. --- binutils/ChangeLog | 5 +++++ binutils/readelf.c | 20 +++----------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 665e83f3cd7..936792c310f 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2004-10-25 David Mosberger + + * readelf.c (slurp_ia64_unwind_table): Support relocations against + non-section symbols by adding in the symbol value. + 2004-10-25 Nick Clifton PR 465 diff --git a/binutils/readelf.c b/binutils/readelf.c index b2a26893699..7944c2ae0ae 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -4421,25 +4421,11 @@ slurp_ia64_unwind_table (FILE *file, { relname = elf_ia64_reloc_type (ELF32_R_TYPE (rp->r_info)); sym = aux->symtab + ELF32_R_SYM (rp->r_info); - - if (ELF32_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF32_ST_TYPE (sym->st_info)); - continue; - } } else { relname = elf_ia64_reloc_type (ELF64_R_TYPE (rp->r_info)); sym = aux->symtab + ELF64_R_SYM (rp->r_info); - - if (ELF64_ST_TYPE (sym->st_info) != STT_SECTION) - { - warn (_("Skipping unexpected symbol type %u\n"), - ELF64_ST_TYPE (sym->st_info)); - continue; - } } if (strncmp (relname, "R_IA64_SEGREL", 13) != 0) @@ -4454,15 +4440,15 @@ slurp_ia64_unwind_table (FILE *file, { case 0: aux->table[i].start.section = sym->st_shndx; - aux->table[i].start.offset += rp->r_addend; + aux->table[i].start.offset += rp->r_addend + sym->st_value; break; case 1: aux->table[i].end.section = sym->st_shndx; - aux->table[i].end.offset += rp->r_addend; + aux->table[i].end.offset += rp->r_addend + sym->st_value; break; case 2: aux->table[i].info.section = sym->st_shndx; - aux->table[i].info.offset += rp->r_addend; + aux->table[i].info.offset += rp->r_addend + sym->st_value; break; default: break; -- 2.30.2