PE fake section for C_SECTION syms

Message ID ZBoyosqQBtXm4rI0@squeak.grove.modra.org
State Repeat Merge
Headers
Series PE fake section for C_SECTION syms |

Checks

Context Check Description
snail/binutils-gdb-check warning Git am fail log

Commit Message

Alan Modra March 21, 2023, 10:41 p.m. UTC
  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.
  

Patch

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;