summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
diff options
context:
space:
mode:
authorEd Maste <emaste@freebsd.org>2014-03-03 14:27:49 +0000
committerEd Maste <emaste@freebsd.org>2014-03-03 14:27:49 +0000
commit2a710d0a5bb0ba0d49e47c8c85cdb13ac1af25d0 (patch)
tree1c46440ba29f163df8c8d81621cf904835dd97c9 /llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
parentf9f8f4859a98d3135cead40094dc9cb67d51fbc6 (diff)
downloadbcm5719-llvm-2a710d0a5bb0ba0d49e47c8c85cdb13ac1af25d0.tar.gz
bcm5719-llvm-2a710d0a5bb0ba0d49e47c8c85cdb13ac1af25d0.zip
[mips] support FK_Data_2 and FK_Data_8 to fix big-endian debug data
This fixes invalid lengths in .debug_aranges on big-endian mips64 (lengths appear to be left-shifted by 32 bits) and in .debug_loc. Differential Revision: http://llvm-reviews.chandlerc.com/D2517 llvm-svn: 202716
Diffstat (limited to 'llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp')
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
index da332378bb1..dfaa4db50d9 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
@@ -38,6 +38,7 @@ static unsigned adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
switch (Kind) {
default:
return 0;
+ case FK_Data_2:
case FK_GPRel_4:
case FK_Data_4:
case FK_Data_8:
@@ -140,12 +141,15 @@ public:
unsigned FullSize;
switch ((unsigned)Kind) {
+ case FK_Data_2:
case Mips::fixup_Mips_16:
FullSize = 2;
break;
+ case FK_Data_8:
case Mips::fixup_Mips_64:
FullSize = 8;
break;
+ case FK_Data_4:
default:
FullSize = 4;
break;
OpenPOWER on IntegriCloud