summaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-12-15 11:37:02 +0000
committerNick Clifton <nickc@redhat.com>2011-12-15 11:37:02 +0000
commit987f3c99cd0ac9589aab6e4733d7c06ecac311ac (patch)
tree111ba1d09aac900460da0394c2bce640f8d68dbc /binutils/readelf.c
parent61feac9f872d1fb0f4d4de634c00a2e57348ef5e (diff)
downloadbinutils-redhat-987f3c99cd0ac9589aab6e4733d7c06ecac311ac.tar.gz
* readelf.c (get_symbol_type): Add ELFOSABI_FREEBSD to the
supported abi's. * config/obj-elf.c (obj_elf_type): Add ELFOSABI_FREEBSD to the supported abi's.
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 70cf8522a6..502c76e1f1 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -6978,7 +6978,7 @@ decode_arm_unwind (struct arm_unw_aux_info * aux,
if (elf_header.e_machine == EM_ARM
&& (word & 0x70000000))
- warn (_("Corrupt ARM compact model table entry (%08x)\n"), word);
+ warn (_("Corrupt ARM compact model table entry: %x \n"), word);
per_index = (word >> 24) & 0x7f;
printf (_(" Compact model index: %d\n"), per_index);
@@ -7071,6 +7071,12 @@ dump_arm_unwind (struct arm_unw_aux_info *aux, Elf_Internal_Shdr *exidx_sec)
return;
}
+ /* ARM EHABI, Section 5:
+ An index table entry consists of 2 words.
+ The first word contains a prel31 offset to the start of a function, with bit 31 clear. */
+ if (exidx_fn & 0x80000000)
+ warn (_("corrupt index table entry: %x\n"), exidx_fn);
+
fn = arm_expand_prel31 (exidx_fn, exidx_sec->sh_addr + 8 * i);
arm_print_vma_and_name (aux, fn, fn_addr);
@@ -8750,6 +8756,7 @@ get_symbol_type (unsigned int type)
if (type == STT_GNU_IFUNC
&& (elf_header.e_ident[EI_OSABI] == ELFOSABI_GNU
+ || elf_header.e_ident[EI_OSABI] == ELFOSABI_FREEBSD
/* GNU is still using the default value 0. */
|| elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE))
return "IFUNC";