2009-02-23 Christophe Lyon <christophe.lyon@st.com>
[deliverable/binutils-gdb.git] / bfd / elf.c
index 70ed7656d0bfee8aada78425608c9b0f5503712a..44af469e1ff9c1aa471a7770bbb34c574a16d1af 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1,7 +1,8 @@
 /* ELF executable support for BFD.
 
    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-   2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+   2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -258,7 +259,7 @@ bfd_elf_mkcorefile (bfd *abfd)
   return bfd_elf_make_generic_object (abfd);
 }
 
-char *
+static char *
 bfd_elf_get_str_section (bfd *abfd, unsigned int shindex)
 {
   Elf_Internal_Shdr **i_shdrp;
@@ -1019,45 +1020,6 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
   return TRUE;
 }
 
-/*
-INTERNAL_FUNCTION
-       bfd_elf_find_section
-
-SYNOPSIS
-       struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
-
-DESCRIPTION
-       Helper functions for GDB to locate the string tables.
-       Since BFD hides string tables from callers, GDB needs to use an
-       internal hook to find them.  Sun's .stabstr, in particular,
-       isn't even pointed to by the .stab section, so ordinary
-       mechanisms wouldn't work to find it, even if we had some.
-*/
-
-struct elf_internal_shdr *
-bfd_elf_find_section (bfd *abfd, char *name)
-{
-  Elf_Internal_Shdr **i_shdrp;
-  char *shstrtab;
-  unsigned int max;
-  unsigned int i;
-
-  i_shdrp = elf_elfsections (abfd);
-  if (i_shdrp != NULL)
-    {
-      shstrtab = bfd_elf_get_str_section (abfd,
-                                         elf_elfheader (abfd)->e_shstrndx);
-      if (shstrtab != NULL)
-       {
-         max = elf_numsections (abfd);
-         for (i = 1; i < max; i++)
-           if (!strcmp (&shstrtab[i_shdrp[i]->sh_name], name))
-             return i_shdrp[i];
-       }
-    }
-  return 0;
-}
-
 const char *const bfd_elf_section_type_names[] = {
   "SHT_NULL", "SHT_PROGBITS", "SHT_SYMTAB", "SHT_STRTAB",
   "SHT_RELA", "SHT_HASH", "SHT_DYNAMIC", "SHT_NOTE",
@@ -2778,14 +2740,17 @@ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg)
       asection *s;
       unsigned int idx;
 
-      loc -= 4;
       s = elt;
-      if (!gas)
-       s = s->output_section;
-      idx = 0;
-      if (s != NULL)
-       idx = elf_section_data (s)->this_idx;
-      H_PUT_32 (abfd, idx, loc);
+      if (! elf_discarded_section (s))
+       {
+         loc -= 4;
+         if (!gas)
+           s = s->output_section;
+         idx = 0;
+         if (s != NULL)
+           idx = elf_section_data (s)->this_idx;
+         H_PUT_32 (abfd, idx, loc);
+       }
       elt = elf_next_in_group (elt);
       if (elt == first)
        break;
This page took 0.025569 seconds and 4 git commands to generate.