[binutils-gdb] PE fake section for C_SECTION syms

Alan Modra amodra@sourceware.org
Tue Mar 21 22:48:40 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6634b215662aa856c8df9ee0e56c0a2f7ad3684e

commit 6634b215662aa856c8df9ee0e56c0a2f7ad3684e
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Mar 22 09:02:57 2023 +1030

    PE fake section for C_SECTION syms
    
    It's an odd thing to have objdump -x show a different section table
    to objdump -h, but that can happen if swapping in symbols leads to
    creating sections.  Setting SEC_LINKER_CREATED stops the display of
    these sections, so that you get shown what is in the object file.
    
            * peXXigen.c (_bfd_XXi_swap_sym_in): Set SEC_LINKER_CREATED on
            fake section created for C_SECTION syms.  Don't zero asection
            fields that are already zero.

Diff:
---
 bfd/peXXigen.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index d59a97f0d11..42f2d21cee3 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -189,7 +189,8 @@ _bfd_XXi_swap_sym_in (bfd * abfd, void * ext1, void * in1)
 	    }
 	  memcpy (sec_name, name, name_len);
 
-	  flags = SEC_HAS_CONTENTS | SEC_ALLOC | SEC_DATA | SEC_LOAD;
+	  flags = (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_DATA | SEC_LOAD
+		   | SEC_LINKER_CREATED);
 	  sec = bfd_make_section_anyway_with_flags (abfd, sec_name, flags);
 	  if (sec == NULL)
 	    {
@@ -198,18 +199,7 @@ _bfd_XXi_swap_sym_in (bfd * abfd, void * ext1, void * in1)
 	      return;
 	    }
 
-	  sec->vma = 0;
-	  sec->lma = 0;
-	  sec->size = 0;
-	  sec->filepos = 0;
-	  sec->rel_filepos = 0;
-	  sec->reloc_count = 0;
-	  sec->line_filepos = 0;
-	  sec->lineno_count = 0;
-	  sec->userdata = NULL;
-	  sec->next = NULL;
 	  sec->alignment_power = 2;
-
 	  sec->target_index = unused_section_number;
 
 	  in->n_scnum = unused_section_number;


More information about the Binutils-cvs mailing list