[committed,pe] ld: fix coff PE SEH

Message ID patch-15182-tamar@arm.com
State New
Headers show
Series
  • [committed,pe] ld: fix coff PE SEH
Related show

Commit Message

H.J. Lu via Binutils Dec. 31, 2021, 11:40 a.m.
Hi All,

COFF_WITH_pex64 and COFF_WITH_peAArch64 can't be true at the same time.
That means that two conditionals that control the sorting of the .pdata section
became a falsum.

The testsuite doesn't catch this because the linker does the sorting and to link
you require library support from the unwinder so we can't test from binutils in
isolation.

Manually tested example in PR and works now.

Cross-compiled and regtested on x86_64-w64-mingw32 and no issues.

Committed as a trivial change.

Thanks,
Tamar

bfd/ChangeLog:

2021-12-31  Tamar Christina  <tamar.christina@arm.com>

	PR ld/28682
	* peXXigen.c: Fix conditional.

--- inline copy of patch -- 
diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index 5f977ea32dce48843604e8d789ac1de72e380679..48e52b0904609fe3ff80b76a8f3b8ca7df1c780b 100644


--

Patch

diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index 5f977ea32dce48843604e8d789ac1de72e380679..48e52b0904609fe3ff80b76a8f3b8ca7df1c780b 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -3088,7 +3088,7 @@  _bfd_XX_get_symbol_info (bfd * abfd, asymbol *symbol, symbol_info *ret)
   coff_get_symbol_info (abfd, symbol, ret);
 }
 
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64)
+#if !defined(COFF_WITH_pep) && (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64))
 static int
 sort_x64_pdata (const void *l, const void *r)
 {
@@ -4516,7 +4516,7 @@  _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
 
 /* If there is a .pdata section and we have linked pdata finally, we
      need to sort the entries ascending.  */
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64)
+#if !defined(COFF_WITH_pep) && (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64))
   {
     asection *sec = bfd_get_section_by_name (abfd, ".pdata");