Silence ARI for valid calls to abort
[deliverable/binutils-gdb.git] / bfd / elf-strtab.c
index a91a03da746888025afb4df6661e8da90f0378a8..55e138a6319cb105a8a2482aa56bc72678201bf5 100644 (file)
@@ -1,5 +1,5 @@
 /* ELF strtab with GC and suffix merging support.
-   Copyright (C) 2001-2016 Free Software Foundation, Inc.
+   Copyright (C) 2001-2019 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -68,7 +68,7 @@ elf_strtab_hash_newfunc (struct bfd_hash_entry *entry,
      subclass.  */
   if (entry == NULL)
     entry = (struct bfd_hash_entry *)
-        bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry));
+       bfd_hash_allocate (table, sizeof (struct elf_strtab_hash_entry));
   if (entry == NULL)
     return NULL;
 
@@ -168,7 +168,7 @@ _bfd_elf_strtab_add (struct elf_strtab_hash *tab,
          bfd_size_type amt = sizeof (struct elf_strtab_hash_entry *);
          tab->alloced *= 2;
          tab->array = (struct elf_strtab_hash_entry **)
-              bfd_realloc_or_free (tab->array, tab->alloced * amt);
+             bfd_realloc_or_free (tab->array, tab->alloced * amt);
          if (tab->array == NULL)
            return (size_t) -1;
        }
@@ -270,6 +270,12 @@ _bfd_elf_strtab_size (struct elf_strtab_hash *tab)
   return tab->sec_size ? tab->sec_size : tab->size;
 }
 
+bfd_size_type
+_bfd_elf_strtab_len (struct elf_strtab_hash *tab)
+{
+  return tab->size;
+}
+
 bfd_size_type
 _bfd_elf_strtab_offset (struct elf_strtab_hash *tab, size_t idx)
 {
@@ -285,6 +291,19 @@ _bfd_elf_strtab_offset (struct elf_strtab_hash *tab, size_t idx)
   return tab->array[idx]->u.index;
 }
 
+const char *
+_bfd_elf_strtab_str (struct elf_strtab_hash *tab, size_t idx,
+                    bfd_size_type *offset)
+{
+  if (idx == 0)
+    return 0;
+  BFD_ASSERT (idx < tab->size);
+  BFD_ASSERT (tab->sec_size);
+  if (offset)
+    *offset = tab->array[idx]->u.index;
+  return tab->array[idx]->root.string;
+}
+
 bfd_boolean
 _bfd_elf_strtab_emit (register bfd *abfd, struct elf_strtab_hash *tab)
 {
@@ -315,7 +334,9 @@ _bfd_elf_strtab_emit (register bfd *abfd, struct elf_strtab_hash *tab)
   return TRUE;
 }
 
-/* Compare two elf_strtab_hash_entry structures.  Called via qsort.  */
+/* Compare two elf_strtab_hash_entry structures.  Called via qsort.
+   Won't ever return zero as all entries differ, so there is no issue
+   with qsort stability here.  */
 
 static int
 strrevcmp (const void *a, const void *b)
This page took 0.025024 seconds and 4 git commands to generate.