BaseTools: Add --export-symbol option to GenFw for explicit symbol exports#1621
BaseTools: Add --export-symbol option to GenFw for explicit symbol exports#1621Flickdm wants to merge 1 commit intomicrosoft:release/202502from
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## release/202502 #1621 +/- ##
================================================
Coverage ? 1.44%
================================================
Files ? 203
Lines ? 75101
Branches ? 0
================================================
Hits ? 1087
Misses ? 74014
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
84a8b9d to
0da25e0
Compare
0da25e0 to
fb564cc
Compare
Add support for the --export-symbol=NAME command-line option to GenFw.
This allows users to explicitly specify symbols to export to the
PE-COFF export table as an alternative to the PRM (Platform Runtime
Mechanism) automatic discovery.
Key changes:
- New --export-symbol=NAME option can be specified multiple times
- Supports up to 256 explicit export symbols
- Works for X64 and AArch64 architectures
- Validates that all requested symbols are found in the ELF file
- Updates error message to reflect both --prm and --export-symbol support
- Reuses the existing symbol RVA lookup loop (simpler implementation)
This feature enables more flexible symbol export control for scenarios
where PRM module export descriptors are not applicable.
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.efi
Signed-off-by: Doug Flick <dougflick@microsoft.com>
fb564cc to
d441bd6
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## release/202502 #1621 +/- ##
=================================================
Coverage ? 2.22%
=================================================
Files ? 1460
Lines ? 381068
Branches ? 4588
=================================================
Hits ? 8477
Misses ? 372518
Partials ? 73
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This PR has been automatically marked as stale because it has not had activity in 60 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions. |
Description
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:
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"
For details on how to complete these options and their meaning refer to CONTRIBUTING.md.
How This Was Tested
<Describe the test(s) that were run to verify the changes.>
Integration Instructions
<Describe how these changes should be integrated. Use N/A if nothing is required.>