diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2022-07-14 10:31:21 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2022-07-15 16:58:05 -0700 |
commit | 2582080f19e8fe9c1204dfb6fecf744311f00777 (patch) | |
tree | ccb21c1bca24976e4f9b669fcddf28c46ada2dec /libcpp | |
parent | fd3d25d6df1cbd385d2834ff3059dfb6905dd75c (diff) | |
download | gcc-2582080f19e8fe9c1204dfb6fecf744311f00777.zip gcc-2582080f19e8fe9c1204dfb6fecf744311f00777.tar.gz gcc-2582080f19e8fe9c1204dfb6fecf744311f00777.tar.bz2 |
x86: Disable sibcall if indirect_return attribute doesn't match
When shadow stack is enabled, function with indirect_return attribute
may return via indirect jump. In this case, we need to disable sibcall
if caller doesn't have indirect_return attribute and indirect branch
tracking is enabled since compiler won't generate ENDBR when calling the
caller.
gcc/
PR target/85620
* config/i386/i386.cc (ix86_function_ok_for_sibcall): Return
false if callee has indirect_return attribute and caller
doesn't.
gcc/testsuite/
PR target/85620
* gcc.target/i386/pr85620-2.c: Updated.
* gcc.target/i386/pr85620-5.c: New test.
* gcc.target/i386/pr85620-6.c: Likewise.
* gcc.target/i386/pr85620-7.c: Likewise.
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions