Commit 5c73f54
committed
BaseTools: Add --export-symbol option to GenFw for explicit symbol exports
Add support for explicitly specifying symbols to export when converting
ELF to PE-COFF format. This enables exporting specific function symbols.
Changes:
- GenFw.c: Add --export-symbol=NAME argument parsing to specify symbols
for export. Multiple symbols can be specified with repeated arguments.
- ElfConvert.h: Add extern declarations for export symbol tracking.
- Elf64Convert.c: When explicit export symbols are provided, use those
instead of auto-detecting PRM module exports. Searches the ELF symbol
table for the specified symbols and adds them to the PE-COFF export
directory.
This feature is needed for GCC/LTO builds where symbols may not be
automatically detected for export but need to be explicitly specified
in the module's INF BuildOptions.
Usage in INF [BuildOptions]:
GCC:*_*_*_DLINK_FLAGS = -Wl,--undefined=CryptoEntry
GCC:*_*_*_OBJCOPY_STRIPFLAG = --strip-unneeded -R .eh_frame --keep-symbol=CryptoEntry
GCC:*_*_*_GENFW_FLAGS = --export-symbol=CryptoEntry
Validation on Linux:
llvm-readobj --coff-exports YourModule.efi1 parent ba9f76c commit 5c73f54
File tree
3 files changed
+151
-32
lines changed- BaseTools/Source/C/GenFw
3 files changed
+151
-32
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
193 | | - | |
| 193 | + | |
194 | 194 | | |
195 | 195 | | |
196 | 196 | | |
| |||
1038 | 1038 | | |
1039 | 1039 | | |
1040 | 1040 | | |
| 1041 | + | |
| 1042 | + | |
1041 | 1043 | | |
1042 | 1044 | | |
1043 | 1045 | | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
1044 | 1049 | | |
1045 | 1050 | | |
1046 | 1051 | | |
| |||
1050 | 1055 | | |
1051 | 1056 | | |
1052 | 1057 | | |
1053 | | - | |
| 1058 | + | |
1054 | 1059 | | |
1055 | 1060 | | |
1056 | 1061 | | |
1057 | 1062 | | |
1058 | | - | |
| 1063 | + | |
1059 | 1064 | | |
1060 | 1065 | | |
1061 | 1066 | | |
1062 | | - | |
| 1067 | + | |
1063 | 1068 | | |
1064 | | - | |
1065 | | - | |
1066 | | - | |
1067 | | - | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
1068 | 1077 | | |
1069 | | - | |
| 1078 | + | |
1070 | 1079 | | |
1071 | | - | |
1072 | 1080 | | |
1073 | | - | |
| 1081 | + | |
1074 | 1082 | | |
1075 | | - | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 1087 | + | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
1076 | 1118 | | |
1077 | | - | |
1078 | | - | |
1079 | | - | |
1080 | | - | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
1081 | 1126 | | |
1082 | 1127 | | |
1083 | | - | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
1084 | 1138 | | |
1085 | | - | |
1086 | | - | |
1087 | | - | |
1088 | | - | |
1089 | | - | |
1090 | | - | |
1091 | | - | |
1092 | | - | |
1093 | | - | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
1094 | 1151 | | |
1095 | 1152 | | |
1096 | | - | |
1097 | | - | |
1098 | | - | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
1099 | 1169 | | |
1100 | | - | |
1101 | | - | |
1102 | 1170 | | |
| 1171 | + | |
| 1172 | + | |
1103 | 1173 | | |
| 1174 | + | |
1104 | 1175 | | |
1105 | | - | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
1106 | 1193 | | |
1107 | 1194 | | |
1108 | 1195 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
| |||
91 | 92 | | |
92 | 93 | | |
93 | 94 | | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
94 | 101 | | |
95 | 102 | | |
96 | 103 | | |
| |||
285 | 292 | | |
286 | 293 | | |
287 | 294 | | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
288 | 299 | | |
289 | 300 | | |
290 | 301 | | |
| |||
1516 | 1527 | | |
1517 | 1528 | | |
1518 | 1529 | | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
| 1547 | + | |
| 1548 | + | |
1519 | 1549 | | |
1520 | 1550 | | |
1521 | 1551 | | |
| |||
0 commit comments