From: H.J. Lu Date: Mon, 25 Oct 2004 15:24:25 +0000 (+0000) Subject: 2004-10-25 David Mosberger X-Git-Tag: csl-arm-2004-q3d~164 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1ffa9a1825124bdf3d99f1f09b720aac99038822;p=platform%2Fupstream%2Fbinutils.git 2004-10-25 David Mosberger * readelf.c (slurp_ia64_unwind_table): Support relocations against non-section symbols by adding in the symbol value. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 665e83f..936792c 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 b2a2689..7944c2a 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;