You need to sign in or sign up before continuing.
Detect `try`/`catch` landing pads
Landing pads are basically the `catch` blocks in C++ `try`/`catch` statements. So far we were missing them since they are encoded in a particular way in a way similar to DWARF debugging information in the `.eh_frame` and, more specifically, in the `.gcc_except_table` sections of ELF programs. This commit parses these sections so that the basic blocks associated to landing pads are correctly identified. Personality functions are detected too. A test is also introduced to assess the effectiveness of our code.
Showing
- binaryfile.cpp 475 additions, 41 deletionsbinaryfile.cpp
- binaryfile.h 169 additions, 4 deletionsbinaryfile.h
- jumptargetmanager.cpp 5 additions, 0 deletionsjumptargetmanager.cpp
- tests/Analysis/AnalysisTests.cmake 2 additions, 1 deletiontests/Analysis/AnalysisTests.cmake
- tests/Analysis/x86_64/try-catch-ehframe.S 104 additions, 0 deletionstests/Analysis/x86_64/try-catch-ehframe.S
- tests/Analysis/x86_64/try-catch-ehframe.cfg.csv 10 additions, 0 deletionstests/Analysis/x86_64/try-catch-ehframe.cfg.csv
- tests/Analysis/x86_64/try-catch-ehframe.functions-boundaries.csv 11 additions, 0 deletions...nalysis/x86_64/try-catch-ehframe.functions-boundaries.csv
- tests/Analysis/x86_64/try-catch-ehframe.noreturn.csv 1 addition, 0 deletionstests/Analysis/x86_64/try-catch-ehframe.noreturn.csv
Loading
Please register or sign in to comment