OSDN Git Service

* elfread.c (elf_symfile_segments): Do not warn about
authordrow <drow>
Tue, 3 Nov 2009 02:16:14 +0000 (02:16 +0000)
committerdrow <drow>
Tue, 3 Nov 2009 02:16:14 +0000 (02:16 +0000)
uninitialized sections outside of load segments.

gdb/ChangeLog
gdb/elfread.c

index ec24e9f..8fc59bb 100644 (file)
@@ -1,3 +1,8 @@
+2009-11-02  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * elfread.c (elf_symfile_segments): Do not warn about
+       uninitialized sections outside of load segments.
+
 2009-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * symfile.c (build_id_to_debug_filename): New variable debugdir.  Move
index 767dfe6..131d7d2 100644 (file)
@@ -114,7 +114,17 @@ elf_symfile_segments (bfd *abfd)
            break;
          }
 
-      if (bfd_get_section_size (sect) > 0 && j == num_segments)
+      /* We should have found a segment for every non-empty section.
+        If we haven't, we will not relocate this section by any
+        offsets we apply to the segments.  As an exception, do not
+        warn about SHT_NOBITS sections; in normal ELF execution
+        environments, SHT_NOBITS means zero-initialized and belongs
+        in a segment, but in no-OS environments some tools (e.g. ARM
+        RealView) use SHT_NOBITS for uninitialized data.  Since it is
+        uninitialized, it doesn't need a program header.  Such
+        binaries are not relocatable.  */
+      if (bfd_get_section_size (sect) > 0 && j == num_segments
+         && (bfd_get_section_flags (abfd, sect) & SEC_LOAD) != 0)
        warning (_("Loadable segment \"%s\" outside of ELF segments"),
                 bfd_section_name (abfd, sect));
     }