[lld] 6ab8e8f - [LLD][COFF] Fix manifest UAC trustInfo namespace (#165285)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 29 03:35:25 PDT 2025
Author: Andrew Ng
Date: 2025-10-29T10:35:20Z
New Revision: 6ab8e8fa031e0a22c0244c1aa8f54581ed9bffd1
URL: https://github.com/llvm/llvm-project/commit/6ab8e8fa031e0a22c0244c1aa8f54581ed9bffd1
DIFF: https://github.com/llvm/llvm-project/commit/6ab8e8fa031e0a22c0244c1aa8f54581ed9bffd1.diff
LOG: [LLD][COFF] Fix manifest UAC trustInfo namespace (#165285)
Fix manifest `trustInfo` to use the `urn:schemas-microsoft-com:asm.v3`
namespace.
Fixes https://github.com/llvm/llvm-project/issues/120394.
Added:
lld/test/COFF/Inputs/manifest-uac.test
lld/test/COFF/manifest-uac.test
Modified:
lld/COFF/DriverUtils.cpp
lld/test/COFF/manifest.test
lld/test/COFF/manifestinput.test
Removed:
################################################################################
diff --git a/lld/COFF/DriverUtils.cpp b/lld/COFF/DriverUtils.cpp
index 96ae2f0ddef6f..10a3934d53284 100644
--- a/lld/COFF/DriverUtils.cpp
+++ b/lld/COFF/DriverUtils.cpp
@@ -440,7 +440,7 @@ std::string LinkerDriver::createDefaultXml() {
<< "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\"\n"
<< " manifestVersion=\"1.0\">\n";
if (ctx.config.manifestUAC) {
- os << " <trustInfo>\n"
+ os << " <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n"
<< " <security>\n"
<< " <requestedPrivileges>\n"
<< " <requestedExecutionLevel level=" << ctx.config.manifestLevel
diff --git a/lld/test/COFF/Inputs/manifest-uac.test b/lld/test/COFF/Inputs/manifest-uac.test
new file mode 100644
index 0000000000000..5269339489355
--- /dev/null
+++ b/lld/test/COFF/Inputs/manifest-uac.test
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel level='asInvoker'
+ uiAccess='false'/>
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+</assembly>
diff --git a/lld/test/COFF/manifest-uac.test b/lld/test/COFF/manifest-uac.test
new file mode 100644
index 0000000000000..d3a17c7282716
--- /dev/null
+++ b/lld/test/COFF/manifest-uac.test
@@ -0,0 +1,33 @@
+# REQUIRES: libxml2
+
+# RUN: yaml2obj %p/Inputs/ret42.yaml -o %t.obj
+# RUN: lld-link /out:%t.exe /entry:main \
+# RUN: /manifest:embed \
+# RUN: /manifestinput:%p/Inputs/manifest-uac.test %t.obj
+# RUN: llvm-readobj --coff-resources %t.exe | FileCheck %s
+
+CHECK: Data (
+CHECK-NEXT: 0000: 3C3F786D 6C207665 7273696F 6E3D2231 |<?xml version="1|
+CHECK-NEXT: 0010: 2E302220 656E636F 64696E67 3D225554 |.0" encoding="UT|
+CHECK-NEXT: 0020: 462D3822 3F3E0A3C 61737365 6D626C79 |F-8"?>.<assembly|
+CHECK-NEXT: 0030: 20786D6C 6E733D22 75726E3A 73636865 | xmlns="urn:sche|
+CHECK-NEXT: 0040: 6D61732D 6D696372 6F736F66 742D636F |mas-microsoft-co|
+CHECK-NEXT: 0050: 6D3A6173 6D2E7631 22206D61 6E696665 |m:asm.v1" manife|
+CHECK-NEXT: 0060: 73745665 7273696F 6E3D2231 2E30223E |stVersion="1.0">|
+CHECK-NEXT: 0070: 0A20203C 74727573 74496E66 6F20786D |. <trustInfo xm|
+CHECK-NEXT: 0080: 6C6E733D 2275726E 3A736368 656D6173 |lns="urn:schemas|
+CHECK-NEXT: 0090: 2D6D6963 726F736F 66742D63 6F6D3A61 |-microsoft-com:a|
+CHECK-NEXT: 00A0: 736D2E76 33223E0A 20202020 3C736563 |sm.v3">. <sec|
+CHECK-NEXT: 00B0: 75726974 793E0A20 20202020 203C7265 |urity>. <re|
+CHECK-NEXT: 00C0: 71756573 74656450 72697669 6C656765 |questedPrivilege|
+CHECK-NEXT: 00D0: 733E0A20 20202020 2020203C 72657175 |s>. <requ|
+CHECK-NEXT: 00E0: 65737465 64457865 63757469 6F6E4C65 |estedExecutionLe|
+CHECK-NEXT: 00F0: 76656C20 6C657665 6C3D2261 73496E76 |vel level="asInv|
+CHECK-NEXT: 0100: 6F6B6572 22207569 41636365 73733D22 |oker" uiAccess="|
+CHECK-NEXT: 0110: 66616C73 65222F3E 0A202020 2020203C |false"/>. <|
+CHECK-NEXT: 0120: 2F726571 75657374 65645072 6976696C |/requestedPrivil|
+CHECK-NEXT: 0130: 65676573 3E0A2020 20203C2F 73656375 |eges>. </secu|
+CHECK-NEXT: 0140: 72697479 3E0A2020 3C2F7472 75737449 |rity>. </trustI|
+CHECK-NEXT: 0150: 6E666F3E 0A3C2F61 7373656D 626C793E |nfo>.</assembly>|
+CHECK-NEXT: 0160: 0A |.|
+CHECK-NEXT: )
diff --git a/lld/test/COFF/manifest.test b/lld/test/COFF/manifest.test
index 4910600bd3a17..09de96e9bccfa 100644
--- a/lld/test/COFF/manifest.test
+++ b/lld/test/COFF/manifest.test
@@ -10,7 +10,7 @@
MANIFEST: <?xml version="1.0" standalone="yes"?>
MANIFEST: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
MANIFEST: manifestVersion="1.0">
-MANIFEST: <trustInfo>
+MANIFEST: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
MANIFEST: <security>
MANIFEST: <requestedPrivileges>
MANIFEST: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -26,7 +26,7 @@ MANIFEST: </assembly>
UAC: <?xml version="1.0" standalone="yes"?>
UAC: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
UAC: manifestVersion="1.0">
-UAC: <trustInfo>
+UAC: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
UAC: <security>
UAC: <requestedPrivileges>
UAC: <requestedExecutionLevel level='requireAdministrator' uiAccess='true'/>
@@ -43,7 +43,7 @@ UAC: </assembly>
DEPENDENCY: <?xml version="1.0" standalone="yes"?>
DEPENDENCY: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
DEPENDENCY: manifestVersion="1.0">
-DEPENDENCY: <trustInfo>
+DEPENDENCY: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
DEPENDENCY: <security>
DEPENDENCY: <requestedPrivileges>
DEPENDENCY: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -90,7 +90,7 @@ NOUACNODEP: </assembly>
SEVERALDEPS: <?xml version="1.0" standalone="yes"?>
SEVERALDEPS: <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
SEVERALDEPS: manifestVersion="1.0">
-SEVERALDEPS: <trustInfo>
+SEVERALDEPS: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
SEVERALDEPS: <security>
SEVERALDEPS: <requestedPrivileges>
SEVERALDEPS: <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
@@ -139,31 +139,34 @@ EMBED: 0040: 6D61732D 6D696372 6F736F66 742D636F |mas-microsoft-co|
EMBED: 0050: 6D3A6173 6D2E7631 220A2020 20202020 |m:asm.v1". |
EMBED: 0060: 20202020 6D616E69 66657374 56657273 | manifestVers|
EMBED: 0070: 696F6E3D 22312E30 223E0A20 203C7472 |ion="1.0">. <tr|
-EMBED: 0080: 75737449 6E666F3E 0A202020 203C7365 |ustInfo>. <se|
-EMBED: 0090: 63757269 74793E0A 20202020 20203C72 |curity>. <r|
-EMBED: 00A0: 65717565 73746564 50726976 696C6567 |equestedPrivileg|
-EMBED: 00B0: 65733E0A 20202020 20202020 203C7265 |es>. <re|
-EMBED: 00C0: 71756573 74656445 78656375 74696F6E |questedExecution|
-EMBED: 00D0: 4C657665 6C206C65 76656C3D 27617349 |Level level='asI|
-EMBED: 00E0: 6E766F6B 65722720 75694163 63657373 |nvoker' uiAccess|
-EMBED: 00F0: 3D276661 6C736527 2F3E0A20 20202020 |='false'/>. |
-EMBED: 0100: 203C2F72 65717565 73746564 50726976 | </requestedPriv|
-EMBED: 0110: 696C6567 65733E0A 20202020 3C2F7365 |ileges>. </se|
-EMBED: 0120: 63757269 74793E0A 20203C2F 74727573 |curity>. </trus|
-EMBED: 0130: 74496E66 6F3E0A20 203C6465 70656E64 |tInfo>. <depend|
-EMBED: 0140: 656E6379 3E0A2020 20203C64 6570656E |ency>. <depen|
-EMBED: 0150: 64656E74 41737365 6D626C79 3E0A2020 |dentAssembly>. |
-EMBED: 0160: 20202020 3C617373 656D626C 79496465 | <assemblyIde|
-EMBED: 0170: 6E746974 7920666F 6F3D2762 61722720 |ntity foo='bar' |
-EMBED: 0180: 2F3E0A20 2020203C 2F646570 656E6465 |/>. </depende|
-EMBED: 0190: 6E744173 73656D62 6C793E0A 20203C2F |ntAssembly>. </|
-EMBED: 01A0: 64657065 6E64656E 63793E0A 20203C64 |dependency>. <d|
-EMBED: 01B0: 6570656E 64656E63 793E0A20 2020203C |ependency>. <|
-EMBED: 01C0: 64657065 6E64656E 74417373 656D626C |dependentAssembl|
-EMBED: 01D0: 793E0A20 20202020 203C6173 73656D62 |y>. <assemb|
-EMBED: 01E0: 6C794964 656E7469 74792062 617A3D27 |lyIdentity baz='|
-EMBED: 01F0: 71757578 27202F3E 0A202020 203C2F64 |quux' />. </d|
-EMBED: 0200: 6570656E 64656E74 41737365 6D626C79 |ependentAssembly|
-EMBED: 0210: 3E0A2020 3C2F6465 70656E64 656E6379 |>. </dependency|
-EMBED: 0220: 3E0A3C2F 61737365 6D626C79 3E0A |>.</assembly>.|
+EMBED: 0080: 75737449 6E666F20 786D6C6E 733D2275 |ustInfo xmlns="u|
+EMBED: 0090: 726E3A73 6368656D 61732D6D 6963726F |rn:schemas-micro|
+EMBED: 00A0: 736F6674 2D636F6D 3A61736D 2E763322 |soft-com:asm.v3"|
+EMBED: 00B0: 3E0A2020 20203C73 65637572 6974793E |>. <security>|
+EMBED: 00C0: 0A202020 2020203C 72657175 65737465 |. <requeste|
+EMBED: 00D0: 64507269 76696C65 6765733E 0A202020 |dPrivileges>. |
+EMBED: 00E0: 20202020 20203C72 65717565 73746564 | <requested|
+EMBED: 00F0: 45786563 7574696F 6E4C6576 656C206C |ExecutionLevel l|
+EMBED: 0100: 6576656C 3D276173 496E766F 6B657227 |evel='asInvoker'|
+EMBED: 0110: 20756941 63636573 733D2766 616C7365 | uiAccess='false|
+EMBED: 0120: 272F3E0A 20202020 20203C2F 72657175 |'/>. </requ|
+EMBED: 0130: 65737465 64507269 76696C65 6765733E |estedPrivileges>|
+EMBED: 0140: 0A202020 203C2F73 65637572 6974793E |. </security>|
+EMBED: 0150: 0A20203C 2F747275 7374496E 666F3E0A |. </trustInfo>.|
+EMBED: 0160: 20203C64 6570656E 64656E63 793E0A20 | <dependency>. |
+EMBED: 0170: 2020203C 64657065 6E64656E 74417373 | <dependentAss|
+EMBED: 0180: 656D626C 793E0A20 20202020 203C6173 |embly>. <as|
+EMBED: 0190: 73656D62 6C794964 656E7469 74792066 |semblyIdentity f|
+EMBED: 01A0: 6F6F3D27 62617227 202F3E0A 20202020 |oo='bar' />. |
+EMBED: 01B0: 3C2F6465 70656E64 656E7441 7373656D |</dependentAssem|
+EMBED: 01C0: 626C793E 0A20203C 2F646570 656E6465 |bly>. </depende|
+EMBED: 01D0: 6E63793E 0A20203C 64657065 6E64656E |ncy>. <dependen|
+EMBED: 01E0: 63793E0A 20202020 3C646570 656E6465 |cy>. <depende|
+EMBED: 01F0: 6E744173 73656D62 6C793E0A 20202020 |ntAssembly>. |
+EMBED: 0200: 20203C61 7373656D 626C7949 64656E74 | <assemblyIdent|
+EMBED: 0210: 69747920 62617A3D 27717575 7827202F |ity baz='quux' /|
+EMBED: 0220: 3E0A2020 20203C2F 64657065 6E64656E |>. </dependen|
+EMBED: 0230: 74417373 656D626C 793E0A20 203C2F64 |tAssembly>. </d|
+EMBED: 0240: 6570656E 64656E63 793E0A3C 2F617373 |ependency>.</ass|
+EMBED: 0250: 656D626C 793E0A |embly>.|
EMBED: )
diff --git a/lld/test/COFF/manifestinput.test b/lld/test/COFF/manifestinput.test
index 04af80a13312d..cbf27b1ea96b5 100644
--- a/lld/test/COFF/manifestinput.test
+++ b/lld/test/COFF/manifestinput.test
@@ -5,22 +5,21 @@
# RUN: /manifest:embed \
# RUN: /manifestuac:"level='requireAdministrator'" \
# RUN: /manifestinput:%p/Inputs/manifestinput.test %t.obj
-# RUN: llvm-readobj --coff-resources --file-headers %t.exe | FileCheck %s \
-# RUN: -check-prefix TEST_EMBED
+# RUN: llvm-readobj --coff-resources --file-headers %t.exe | FileCheck %s
-TEST_EMBED: ResourceTableRVA: 0x2000
-TEST_EMBED-NEXT: ResourceTableSize: 0x2A0
-TEST_EMBED-DAG: Resources [
-TEST_EMBED-NEXT: Total Number of Resources: 1
-TEST_EMBED-DAG: Number of String Entries: 0
-TEST_EMBED-NEXT: Number of ID Entries: 1
-TEST_EMBED-NEXT: Type: MANIFEST (ID 24) [
-TEST_EMBED-NEXT: Table Offset: 0x18
-TEST_EMBED-NEXT: Number of String Entries: 0
-TEST_EMBED-NEXT: Number of ID Entries: 1
-TEST_EMBED-NEXT: Name: (ID 1) [
-TEST_EMBED-NEXT: Table Offset: 0x30
-TEST_EMBED-NEXT: Number of String Entries: 0
-TEST_EMBED-NEXT: Number of ID Entries: 1
-TEST_EMBED-NEXT: Language: (ID 1033) [
-TEST_EMBED-NEXT: Entry Offset: 0x48
+CHECK: ResourceTableRVA: 0x2000
+CHECK-NEXT: ResourceTableSize: 0x2C8
+CHECK-DAG: Resources [
+CHECK-NEXT: Total Number of Resources: 1
+CHECK-DAG: Number of String Entries: 0
+CHECK-NEXT: Number of ID Entries: 1
+CHECK-NEXT: Type: MANIFEST (ID 24) [
+CHECK-NEXT: Table Offset: 0x18
+CHECK-NEXT: Number of String Entries: 0
+CHECK-NEXT: Number of ID Entries: 1
+CHECK-NEXT: Name: (ID 1) [
+CHECK-NEXT: Table Offset: 0x30
+CHECK-NEXT: Number of String Entries: 0
+CHECK-NEXT: Number of ID Entries: 1
+CHECK-NEXT: Language: (ID 1033) [
+CHECK-NEXT: Entry Offset: 0x48
More information about the llvm-commits
mailing list