[Lldb-commits] [PATCH] D67347: [Windows] Use EH info from the PE32 exceptions directory to construct unwind plans

Aleksandr Urakov via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Sep 9 04:11:32 PDT 2019


aleksandr.urakov created this revision.
Herald added subscribers: llvm-commits, lldb-commits, JDevlieghere, MaskRay, arichardson, aprantl, mgorny, emaste.
Herald added a reviewer: espindola.
Herald added projects: LLDB, LLVM.

This patch adds an implementation of reconstructing of unwind plans from PE EH info.

To achieve the goal the `ICallFrameInfo` abstraction was made. It is based on the `DWARFCallFrameInfo` class interface with a few changes to make it less DWARF-specific.

To implement the new interface for PECOFF object files the class `PECallFrameInfo` was written. It uses the next helper classes:

- `UnwindCodesIterator` helps to iterate through `UnwindCode` structures (and processes chained infos transparently);
- `EHProgramBuilder` with the use of `UnwindCodesIterator` constructs `EHProgram`;


Repository:
  rLLDB LLDB

https://reviews.llvm.org/D67347

Files:
  lldb/include/lldb/Symbol/DWARFCallFrameInfo.h
  lldb/include/lldb/Symbol/ICallFrameInfo.h
  lldb/include/lldb/Symbol/ObjectFile.h
  lldb/include/lldb/Symbol/UnwindTable.h
  lldb/include/lldb/lldb-forward.h
  lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
  lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
  lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
  lldb/source/Plugins/ObjectFile/PECOFF/CMakeLists.txt
  lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
  lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.h
  lldb/source/Plugins/ObjectFile/PECOFF/PECallFrameInfo.cpp
  lldb/source/Plugins/ObjectFile/PECOFF/PECallFrameInfo.h
  lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
  lldb/source/Symbol/DWARFCallFrameInfo.cpp
  lldb/source/Symbol/FuncUnwinders.cpp
  lldb/source/Symbol/ObjectFile.cpp
  lldb/source/Symbol/UnwindTable.cpp
  lldb/unittests/Symbol/CMakeLists.txt
  lldb/unittests/Symbol/TestPECallFrameInfo.cpp
  llvm/include/llvm/Support/Win64EH.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67347.219314.patch
Type: text/x-patch
Size: 55057 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190909/af597421/attachment-0001.bin>


More information about the lldb-commits mailing list