aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2022-07-14 10:31:21 -0700
committerH.J. Lu <hjl.tools@gmail.com>2022-07-15 16:58:05 -0700
commit2582080f19e8fe9c1204dfb6fecf744311f00777 (patch)
treeccb21c1bca24976e4f9b669fcddf28c46ada2dec /libcpp
parentfd3d25d6df1cbd385d2834ff3059dfb6905dd75c (diff)
downloadgcc-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