]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas/COFF: extend use of SEC_ALLOC
authorJan Beulich <jbeulich@suse.com>
Fri, 10 Oct 2025 13:58:03 +0000 (15:58 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 10 Oct 2025 13:58:03 +0000 (15:58 +0200)
In line with bfd's styp_to_sec_flags(), set SEC_ALLOC for code/data
sections. Tie the setting to SEC_LOAD, not avoid inadvertently producing
a .bss-like section.

gas/config/obj-coff.c

index f4fa9c52c5588a0ec5ef399df7167000a784cfca..590013cf6592e78513b07d20d5eb98667b68b1a4 100644 (file)
@@ -43,7 +43,7 @@
    attributes when a directive has no valid flags or the "w" flag is
    used.  This default should be appropriate for most.  */
 #ifndef TC_COFF_SECTION_DEFAULT_ATTRIBUTES
-#define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_LOAD | SEC_DATA)
+#define TC_COFF_SECTION_DEFAULT_ATTRIBUTES (SEC_ALLOC | SEC_LOAD | SEC_DATA)
 #endif
 
 /* This is used to hold the symbol built by a sequence of pseudo-ops
@@ -1603,6 +1603,8 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
                case 'n':
                  /* Section not loaded.  */
                  flags &=~ SEC_LOAD;
+                 if (!is_bss)
+                   flags &= ~SEC_ALLOC;
                  flags |= SEC_NEVER_LOAD;
                  load_removed = 1;
                  break;
@@ -1615,7 +1617,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
                  /* Data section.  */
                  flags |= SEC_DATA;
                  if (! load_removed)
-                   flags |= SEC_LOAD;
+                   flags |= SEC_LOAD | SEC_ALLOC;
                  flags &=~ SEC_READONLY;
                  break;
 
@@ -1639,7 +1641,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED)
                     otherwise set the SEC_DATA flag.  */
                  flags |= (attr == 'x' || (flags & SEC_CODE) ? SEC_CODE : SEC_DATA);
                  if (! load_removed)
-                   flags |= SEC_LOAD;
+                   flags |= SEC_LOAD | SEC_ALLOC;
                  /* Note - the READONLY flag is set here, even for the 'x'
                     attribute in order to be compatible with the MSVC
                     linker.  */