From abd31b48e3a8b1fe3cb01d37e35c80aa7cab9fc0 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 7 Feb 2025 15:52:39 +0100 Subject: [PATCH] [LLD][MinGW] Exclude load config symbols from auto-export (#126134) --- lld/COFF/MinGW.cpp | 6 ++++++ lld/test/COFF/arm64x-export-all.s | 29 ++--------------------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp index 8f1c1ebcc3f1..0786353b0643 100644 --- a/lld/COFF/MinGW.cpp +++ b/lld/COFF/MinGW.cpp @@ -92,6 +92,7 @@ AutoExporter::AutoExporter( "__fmode", "_environ", "___dso_handle", + "__load_config_used", // These are the MinGW names that differ from the standard // ones (lacking an extra underscore). "_DllMain@12", @@ -109,6 +110,7 @@ AutoExporter::AutoExporter( "_fmode", "environ", "__dso_handle", + "_load_config_used", // These are the MinGW names that differ from the standard // ones (lacking an extra underscore). "DllMain", @@ -117,6 +119,10 @@ AutoExporter::AutoExporter( }; excludeSymbolPrefixes.insert("_head_"); } + if (symtab.isEC()) { + excludeSymbols.insert("__chpe_metadata"); + excludeSymbolPrefixes.insert("__os_arm64x_"); + } } void AutoExporter::addWholeArchive(StringRef path) { diff --git a/lld/test/COFF/arm64x-export-all.s b/lld/test/COFF/arm64x-export-all.s index 831edfe0b6f8..06ea9ec50259 100644 --- a/lld/test/COFF/arm64x-export-all.s +++ b/lld/test/COFF/arm64x-export-all.s @@ -15,16 +15,11 @@ // EXP-NEXT: AddressSize: 64bit // EXP-NEXT: Export { // EXP-NEXT: Ordinal: 1 -// EXP-NEXT: Name: _load_config_used -// EXP-NEXT: RVA: -// EXP-NEXT: } -// EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 2 // EXP-NEXT: Name: sym // EXP-NEXT: RVA: 0x2000 // EXP-NEXT: } // EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 3 +// EXP-NEXT: Ordinal: 2 // EXP-NEXT: Name: sym2 // EXP-NEXT: RVA: 0x2004 // EXP-NEXT: } @@ -34,31 +29,11 @@ // EXP-NEXT: AddressSize: 64bit // EXP-NEXT: Export { // EXP-NEXT: Ordinal: 1 -// EXP-NEXT: Name: __chpe_metadata -// EXP-NEXT: RVA: -// EXP-NEXT: } -// EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 2 -// EXP-NEXT: Name: __os_arm64x_dispatch_icall -// EXP-NEXT: RVA: 0x12B0 -// EXP-NEXT: } -// EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 3 -// EXP-NEXT: Name: __os_arm64x_dispatch_ret -// EXP-NEXT: RVA: -// EXP-NEXT: } -// EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 4 -// EXP-NEXT: Name: _load_config_used -// EXP-NEXT: RVA: -// EXP-NEXT: } -// EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 5 // EXP-NEXT: Name: sym // EXP-NEXT: RVA: 0x2008 // EXP-NEXT: } // EXP-NEXT: Export { -// EXP-NEXT: Ordinal: 6 +// EXP-NEXT: Ordinal: 2 // EXP-NEXT: Name: sym2 // EXP-NEXT: RVA: 0x200C // EXP-NEXT: }