Ensure functions are aligned properly on AArch64 (#3908)

Previously (as in an hour ago) #3905 landed a new ability for fuzzing to
arbitrarily insert padding between functions. Running some fuzzers
locally though this instantly hit a lot of problems on AArch64 because
the arbitrary padding isn't aligned to 4 bytes like all other functions
are. To fix this issue appending functions now correctly aligns the
output as appropriate for the platform. The alignment argument for
appending was switched to `None` where `None` means "use the platform
default" and otherwise and explicit alignment can be specified for
inserting other data (like arbitrary padding or Windows unwind tables).
This commit is contained in:
Alex Crichton
2022-03-09 15:45:30 -06:00
committed by GitHub
parent 1a54826ca8
commit 4d404c90b4
4 changed files with 11 additions and 9 deletions

View File

@@ -264,9 +264,11 @@ impl wasmtime_environ::Compiler for Compiler {
traps.push(range.clone(), &func.traps);
func_starts.push(range.start);
if self.linkopts.padding_between_functions > 0 {
builder
.text
.append(false, &vec![0; self.linkopts.padding_between_functions], 1);
builder.text.append(
false,
&vec![0; self.linkopts.padding_between_functions],
Some(1),
);
}
}