Align functions according to their ISA's requirements (#4826)
Add a function_alignment function to the TargetIsa trait, and use it to align functions when generating objects. Additionally, collect the maximum alignment required for pc-relative constants in functions and pass that value out. Use the max of these two values when padding functions for alignment. This fixes a bug on x86_64 where rip-relative loads to sse registers could cause a segfault, as functions weren't always guaranteed to be aligned to 16-byte addresses. Fixes #4812
This commit is contained in:
@@ -28,6 +28,9 @@ pub struct FunctionInfo {
|
||||
pub start: u64,
|
||||
/// The size of the compiled function, in bytes.
|
||||
pub length: u32,
|
||||
|
||||
/// The alignment requirements of this function, in bytes.
|
||||
pub alignment: u32,
|
||||
}
|
||||
|
||||
/// Information about a compiled trampoline which the host can call to enter
|
||||
|
||||
Reference in New Issue
Block a user