specify dev roc objects do not require an exec stack (required by ld)

This commit is contained in:
Brendan Hansknecht 2023-05-01 07:07:48 -07:00
parent 1cc379ba00
commit 6ea3340442
No known key found for this signature in database
GPG key ID: A199D0660F95F948

View file

@ -41,11 +41,16 @@ pub fn build_module<'a, 'r>(
x86_64::X86_64Assembler,
x86_64::X86_64SystemV,
>(env, TargetInfo::default_x86_64(), interns, layout_interner);
build_object(
procedures,
backend,
Object::new(BinaryFormat::Elf, Architecture::X86_64, Endianness::Little),
)
// Newer version of `ld` require `.note.GNU-stack` for security reasons.
// It specifies that we will not execute code stored on the stack.
let mut object =
Object::new(BinaryFormat::Elf, Architecture::X86_64, Endianness::Little);
object.add_section(
vec![],
b".note.GNU-stack".to_vec(),
SectionKind::Elf(object::elf::SHT_PROGBITS),
);
build_object(procedures, backend, object)
}
Triple {
architecture: TargetArch::X86_64,