* readelf.c (get_symbol_type): Add ELFOSABI_FREEBSD to the
authorNick Clifton <nickc@redhat.com>
Thu, 15 Dec 2011 11:37:03 +0000 (11:37 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 15 Dec 2011 11:37:03 +0000 (11:37 +0000)
supported abi's.

* config/obj-elf.c (obj_elf_type): Add ELFOSABI_FREEBSD to the
supported abi's.

binutils/ChangeLog
binutils/readelf.c
gas/ChangeLog
gas/config/obj-elf.c

index aeab175e9c11584967ebd2e7837598b9a9a2a09d..646dd83cd4b1803de52114630f1e42bc4698c006 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-15  Andreas Tobler  <andreast@fgznet.ch>
+
+       * readelf.c (get_symbol_type): Add ELFOSABI_FREEBSD to the
+       supported abi's.
+
 2011-12-13  Tristan Gingold  <gingold@adacore.com>
 
        * od-macho.c: New file.
index 70cf8522a61b7d4c0e96bb525f07c33e976b7d8b..502c76e1f1604835ec2dd1b18474dfc366adb29a 100644 (file)
@@ -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";
index 2a996c24f8d55d49c4d8c6d86ced2fa5ef47223a..90134497c2add6a7d66485b391ccdc1bdce5c840 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-15  Konstantin Belousov  <kib@FreeBSD.org>
+
+       * config/obj-elf.c (obj_elf_type): Add ELFOSABI_FREEBSD to the
+       supported abi's.
+
 2011-12-15  Iain Sandoe  <iains@gcc.gnu.org>
 
        * config/obj-macho.c (obj_mach_o_subsections_by_symbols): New global.
index 6e16a62629bd64763759ebd646435a742545f1de..287de6a4e2b606f59b095d3840861121ff6948bd 100644 (file)
@@ -1702,9 +1702,10 @@ obj_elf_type (int ignore ATTRIBUTE_UNUSED)
 
       bed = get_elf_backend_data (stdoutput);
       if (!(bed->elf_osabi == ELFOSABI_GNU
+           || bed->elf_osabi == ELFOSABI_FREEBSD
            /* GNU is still using the default value 0.  */
            || bed->elf_osabi == ELFOSABI_NONE))
-       as_bad (_("symbol type \"%s\" is supported only by GNU targets"),
+       as_bad (_("symbol type \"%s\" is supported only by GNU and FreeBSD targets"),
                type_name);
       type = BSF_FUNCTION | BSF_GNU_INDIRECT_FUNCTION;
     }