OSDN Git Service

Undeo previous delta. Set gc_mark instead.
authornickc <nickc>
Fri, 17 Sep 1999 11:04:47 +0000 (11:04 +0000)
committernickc <nickc>
Fri, 17 Sep 1999 11:04:47 +0000 (11:04 +0000)
bfd/ChangeLog
bfd/elf32-arm.h

index 572cbca..6c07ea2 100644 (file)
@@ -1,3 +1,8 @@
+1999-09-17  Nick Clifton  <nickc@cygnus.com>
+
+       * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo
+       previous delta.  Set sec->gc_mark instead.
+
 Thu Sep 16 11:21:13 1999  Catherine Moore  <clm@cygnus.com>
 
        * elf32-m68k.c (elf_cpu32_plt0_entry): Use a1 instead of a0.
index 191995f..c71c1d2 100644 (file)
@@ -545,7 +545,10 @@ bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
 
   if (sec == NULL)
     {
-      flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED;
+      /* Note: we do not include the flag SEC_LINKER_CREATED, as this
+        will prevent elf_link_input_bfd() from processing the contents
+        of this section.  */
+      flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
 
       sec = bfd_make_section (abfd, ARM2THUMB_GLUE_SECTION_NAME);
 
@@ -553,13 +556,17 @@ bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
          || !bfd_set_section_flags (abfd, sec, flags)
          || !bfd_set_section_alignment (abfd, sec, 2))
        return false;
+      
+      /* Set the gc mark to prevent the section from being removed by garbage
+        collection, despite the fact that no relocs refer to this section.  */
+      sec->gc_mark = 1;
     }
 
   sec = bfd_get_section_by_name (abfd, THUMB2ARM_GLUE_SECTION_NAME);
 
   if (sec == NULL)
     {
-      flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED;
+      flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY;
 
       sec = bfd_make_section (abfd, THUMB2ARM_GLUE_SECTION_NAME);
 
@@ -567,6 +574,8 @@ bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
          || !bfd_set_section_flags (abfd, sec, flags)
          || !bfd_set_section_alignment (abfd, sec, 2))
        return false;
+      
+      sec->gc_mark = 1;
     }
 
   /* Save the bfd for later use.  */