forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of rust-lang#125732 - matthiaskrgr:rollup-bozbtk3, r=matth…
…iaskrgr Rollup of 7 pull requests Successful merges: - rust-lang#124655 (Add `-Zfixed-x18`) - rust-lang#125693 (Format all source files in `tests/coverage/`) - rust-lang#125700 (coverage: Avoid overflow when the MC/DC condition limit is exceeded) - rust-lang#125705 (Reintroduce name resolution check for trying to access locals from an inline const) - rust-lang#125708 (tier 3 target policy: clarify the point about producing assembly) - rust-lang#125715 (remove unneeded extern crate in rmake test) - rust-lang#125719 (Extract coverage-specific code out of `compiletest::runtest`) r? `@ghost` `@rustbot` modify labels: rollup
- Loading branch information
Showing
45 changed files
with
897 additions
and
534 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# `fixed-x18` | ||
|
||
This option prevents the compiler from using the x18 register. It is only | ||
supported on aarch64. | ||
|
||
From the [ABI spec][arm-abi]: | ||
|
||
> X18 is the platform register and is reserved for the use of platform ABIs. | ||
> This is an additional temporary register on platforms that don't assign a | ||
> special meaning to it. | ||
This flag only has an effect when the x18 register would otherwise be considered | ||
a temporary register. When the flag is applied, x18 is always a reserved | ||
register. | ||
|
||
This flag is intended for use with the shadow call stack sanitizer. Generally, | ||
when that sanitizer is enabled, the x18 register is used to store a pointer to | ||
the shadow stack. Enabling this flag prevents the compiler from overwriting the | ||
shadow stack pointer with temporary data, which is necessary for the sanitizer | ||
to work correctly. | ||
|
||
Currently, the `-Zsanitizer=shadow-call-stack` flag is only supported on | ||
platforms that always treat x18 as a reserved register, and the `-Zfixed-x18` | ||
flag is not required to use the sanitizer on such platforms. However, the | ||
sanitizer may be supported on targets where this is not the case in the future. | ||
|
||
It is undefined behavior for `-Zsanitizer=shadow-call-stack` code to call into | ||
code where x18 is a temporary register. On the other hand, when you are *not* | ||
using the shadow call stack sanitizer, compilation units compiled with and | ||
without the `-Zfixed-x18` flag are compatible with each other. | ||
|
||
[arm-abi]: https://developer.arm.com/documentation/den0024/a/The-ABI-for-ARM-64-bit-Architecture/Register-use-in-the-AArch64-Procedure-Call-Standard/Parameters-in-general-purpose-registers |
Oops, something went wrong.