]> git.ipfire.org Git - thirdparty/gcc.git/commit
iesFrom: Alexandre Oliva <oliva@adacore.com>
authorAlexandre Oliva <oliva@adacore.com>
Thu, 22 May 2025 18:06:24 +0000 (15:06 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Thu, 22 May 2025 18:06:24 +0000 (15:06 -0300)
commita4f45de95eed90e3d166bb706bb883e3a6cda0bd
treec8d22c5735a2dec23ae691169197a96cbc9b9952
parent65f27c18e349e2ccdfac34cef8640d8c6ca1d3c1
iesFrom: Alexandre Oliva <oliva@adacore.com>

[aarch64] [vxworks] mark x18 as fixed, adjust tests

VxWorks uses x18 as the TCB, so STATIC_CHAIN_REGNUM has long been set
(in gcc/config/aarch64/aarch64-vxworks.h) to use x9 instead.

This patch marks x18 as fixed if the newly-introduced
TARGET_OS_USES_R18 is defined, so that it is not chosen by the
register allocator, rejects -fsanitize-shadow-call-stack due to the
register conflict, and adjusts tests that depend on x18 or on the
static chain register.

for  gcc/ChangeLog

* config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18): Define.
Update comments.
* config/aarch64/aarch64.cc (aarch64_conditional_register_usage):
Mark x18 as fixed on VxWorks.
(aarch64_override_options_internal): Issue sorry message on
-fsanitize=shadow-call-stack if TARGET_OS_USES_R18.

for  gcc/testsuite/ChangeLog

* gcc.dg/cwsc1.c (CHAIN, aarch64): x9 instead x18 for __vxworks.
* gcc.target/aarch64/reg-alloc-4.c: Drop x18-assigned asm
operand on vxworks.
* gcc.target/aarch64/shadow_call_stack_1.c: Don't expect
-ffixed-x18 error on vxworks, but rather the sorry message.
* gcc.target/aarch64/shadow_call_stack_2.c: Skip on vxworks.
* gcc.target/aarch64/shadow_call_stack_3.c: Likewise.
* gcc.target/aarch64/shadow_call_stack_4.c: Likewise.
* gcc.target/aarch64/shadow_call_stack_5.c: Likewise.
* gcc.target/aarch64/shadow_call_stack_6.c: Likewise.
* gcc.target/aarch64/shadow_call_stack_7.c: Likewise.
* gcc.target/aarch64/shadow_call_stack_8.c: Likewise.
* gcc.target/aarch64/stack-check-prologue-19.c: Likewise.
* gcc.target/aarch64/stack-check-prologue-20.c: Likewise.
14 files changed:
gcc/config/aarch64/aarch64-vxworks.h
gcc/config/aarch64/aarch64.cc
gcc/testsuite/gcc.dg/cwsc1.c
gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_1.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_2.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_3.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_4.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_5.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_6.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_7.c
gcc/testsuite/gcc.target/aarch64/shadow_call_stack_8.c
gcc/testsuite/gcc.target/aarch64/stack-check-prologue-19.c
gcc/testsuite/gcc.target/aarch64/stack-check-prologue-20.c