]> granicus.if.org Git - llvm/commit
Merging r344591:
authorTom Stellard <tstellar@redhat.com>
Fri, 16 Nov 2018 05:16:44 +0000 (05:16 +0000)
committerTom Stellard <tstellar@redhat.com>
Fri, 16 Nov 2018 05:16:44 +0000 (05:16 +0000)
commit05998067a2e562cbcbd8970b32bf9ce4f3eb8064
tree48b1f1476dfdbaed56b6b025f61bc2eb6a4bc361
parent7515784defa9816244a243edb6cb070386525fa5
Merging r344591:

------------------------------------------------------------------------
r344591 | abeserminji | 2018-10-16 01:27:28 -0700 (Tue, 16 Oct 2018) | 11 lines

[mips][micromips] Fix how values in .gcc_except_table are calculated

When a landing pad is calculated in a program that is compiled
for micromips, it will point to an even address. Such an error will
cause a segmentation fault, as the instructions in micromips are
aligned on odd addresses. This patch sets the last bit of the offset
where a landing pad is, to 1, which will effectively be
an odd address and point to the instruction exactly.

Differential Revision: https://reviews.llvm.org/D52985

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_70@347028 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/MC/MCAsmBackend.h
lib/MC/MCExpr.cpp
lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h
test/CodeGen/Mips/micromips-gcc-except-table.ll [new file with mode: 0644]