LLVM Drops Its Shadow Call Stack Support For x86_64

Written by Michael Larabel in LLVM on 7 March 2019 at 07:42 PM EST. Add A Comment
LLVM
LLVM for a while has offered a "Shadow Call Stack" pass used to protect programs against stack buffer overflows. While the 64-bit ARM (AArch64) shadow call stack has worked out well, the x86_64 implementation has been deemed insufficient and is now removed.

The x86_64 LLVM Shadow Call Stack was found to regress performance too much and have security weaknesses so it was expected to be removed while now it's finally happened. The AArch64 LLVM ShadowCallStack pass will continue to be supported by the x86_64 version has been removed in LLVM 9.
Delete x86_64 ShadowCallStack support

Summary:
ShadowCallStack on x86_64 suffered from the same racy security issues as Return Flow Guard and had performance overhead as high as 13% depending on the benchmark. x86_64 ShadowCallStack was always an experimental feature and never shipped a runtime required to support it, as such there are no expected downstream users.

Those interested in learning more about the design intentions of the shadow call stack and its relevance still for AArch64 can be found via the LLVM documentation.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week