]> granicus.if.org Git - llvm/commit
[AsmPrinter] Make the encoding of call sites in .gcc_except_table configurable and...
authorAlex Bradbury <asb@lowrisc.org>
Wed, 17 Jul 2019 14:00:35 +0000 (14:00 +0000)
committerAlex Bradbury <asb@lowrisc.org>
Wed, 17 Jul 2019 14:00:35 +0000 (14:00 +0000)
commit4295d622f9e623da5378d182f3efad7fe446d932
tree7f0957d593459ff2fcaae69cf7d7466b37da6ac7
parent8fd4480eccab25f7481eb72e81bd296433fac525
[AsmPrinter] Make the encoding of call sites in .gcc_except_table configurable and use for RISC-V

The original behavior was to always emit the offsets to each call site in the
call site table as uleb128 values, however on some architectures (eg RISCV)
these uleb128 offsets into the code cannot always be resolved until link time
(because relaxation will invalidate any calculated offsets), and there are no
appropriate relocations for uleb128 values. As a consequence it needs to be
possible to specify an alternative.

This also switches RISCV to use DW_EH_PE_udata4 for call side encodings in
.gcc_except_table

Differential Revision: https://reviews.llvm.org/D63415
Patch by Edward Jones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366329 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/AsmPrinter.h
include/llvm/Target/TargetLoweringObjectFile.h
lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
lib/CodeGen/AsmPrinter/EHStreamer.cpp
lib/CodeGen/TargetLoweringObjectFileImpl.cpp
lib/Target/TargetLoweringObjectFile.cpp
test/CodeGen/RISCV/dwarf-eh.ll