Rollup merge of #96523 - nbdd0121:windows, r=petrochenkov
Add `@feat.00` symbol to symbols.o for COFF Fix #96498 This is based on top of #96444. r? ``@petrochenkov``
This commit is contained in:
commit
48199e0e3f
3 changed files with 35 additions and 0 deletions
|
@ -1700,6 +1700,29 @@ fn add_linked_symbol_object(
|
|||
// We handle the name decoration of COFF targets in `symbol_export.rs`, so disable the
|
||||
// default mangler in `object` crate.
|
||||
file.set_mangling(object::write::Mangling::None);
|
||||
|
||||
// Add feature flags to the object file. On MSVC this is optional but LLD will complain if
|
||||
// not present.
|
||||
let mut feature = 0;
|
||||
|
||||
if file.architecture() == object::Architecture::I386 {
|
||||
// Indicate that all SEH handlers are registered in .sxdata section.
|
||||
// We don't have generate any code, so we don't need .sxdata section but LLD still
|
||||
// expects us to set this bit (see #96498).
|
||||
// Reference: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
|
||||
feature |= 1;
|
||||
}
|
||||
|
||||
file.add_symbol(object::write::Symbol {
|
||||
name: "@feat.00".into(),
|
||||
value: feature,
|
||||
size: 0,
|
||||
kind: object::SymbolKind::Data,
|
||||
scope: object::SymbolScope::Compilation,
|
||||
weak: false,
|
||||
section: object::write::SymbolSection::Absolute,
|
||||
flags: object::SymbolFlags::None,
|
||||
});
|
||||
}
|
||||
|
||||
for (sym, kind) in symbols.iter() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue