-
Notifications
You must be signed in to change notification settings - Fork 14.4k
[LLD][MinGW] Exclude load config symbols from auto-export #126134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-lld-coff Author: Jacek Caban (cjacek) ChangesFull diff: https://github.com/llvm/llvm-project/pull/126134.diff 2 Files Affected:
diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp
index a6407bc279200e..5304c12f4ff4a2 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 831edfe0b6f88b..06ea9ec50259e5 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: }
|
@llvm/pr-subscribers-lld Author: Jacek Caban (cjacek) ChangesFull diff: https://github.com/llvm/llvm-project/pull/126134.diff 2 Files Affected:
diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp
index a6407bc279200e..5304c12f4ff4a2 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 831edfe0b6f88b..06ea9ec50259e5 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: }
|
@llvm/pr-subscribers-platform-windows Author: Jacek Caban (cjacek) ChangesFull diff: https://github.com/llvm/llvm-project/pull/126134.diff 2 Files Affected:
diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp
index a6407bc279200e..5304c12f4ff4a2 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 831edfe0b6f88b..06ea9ec50259e5 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: }
|
Those symbols are usually part of the CRT, which is handled by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. I had forgotten the fact that these normally are excluded by the logic for excluding anything from the CRT, so the effect is smaller than I thought when I saw the recent testcase.
No description provided.