[all-commits] [llvm/llvm-project] 8df257: [libunwind] Ensure test/libunwind_01.pass is not c...
Alexander Richardson via All-commits
all-commits at lists.llvm.org
Mon Jun 20 02:06:11 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 8df257a6d0b0b32e05e89874eff4c8ddd2a2a2a9
https://github.com/llvm/llvm-project/commit/8df257a6d0b0b32e05e89874eff4c8ddd2a2a2a9
Author: Alex Richardson <Alexander.Richardson at cl.cam.ac.uk>
Date: 2022-06-20 (Mon, 20 Jun 2022)
Changed paths:
M libunwind/test/libunwind_01.pass.cpp
Log Message:
-----------
[libunwind] Ensure test/libunwind_01.pass is not completely inlined
By adding noinline and calling fprintf before returning we ensure that
every function will have a distinct call frame and that the return address
will always be saved instead of saving the target in main as the result.
Before this change all backtraces were always backtrace -> main -> _start,
i.e. always exactly three entries. This happenend because all calls were
inlined in main() and the test just happenend to pass because there is at
least _start before main.
I found this while fixing some bugs in libunwind for CHERI and noticed that
the test was passing even though the code was completely broken.
Obtained from: https://github.com/CTSRD-CHERI/llvm-project
Reviewed By: #libunwind, ldionne, MaskRay
Differential Revision: https://reviews.llvm.org/D126611
More information about the All-commits
mailing list