From 48c43d665360f5c04fd4627a80c605237a605526 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 6 Feb 2025 22:34:38 +0100 Subject: [PATCH] [LLD][MinGW] Exclude load config symbols from auto-export --- 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 a6407bc279200..5304c12f4ff4a 100644 --- a/lld/COFF/MinGW.cpp +++ b/lld/COFF/MinGW.cpp @@ -93,6 +93,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", @@ -110,6 +111,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", @@ -118,6 +120,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 831edfe0b6f88..06ea9ec50259e 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: }