mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-17 17:06:59 +00:00
[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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202716 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6e983f35b4
commit
c1e634da0c
@ -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;
|
||||
|
43
test/MC/Mips/mips64eb-fixups.s
Normal file
43
test/MC/Mips/mips64eb-fixups.s
Normal file
@ -0,0 +1,43 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64eb-unknown-freebsd %s -o - | llvm-readobj -s -sd | FileCheck %s
|
||||
|
||||
.section .fixups,"",@progbits
|
||||
.byte 0xff
|
||||
$diff0 = ($loc1)-($loc0)
|
||||
.2byte ($diff0)
|
||||
|
||||
.byte 0xff
|
||||
$diff1 = ($loc2)-($loc0)
|
||||
.4byte ($diff1)
|
||||
|
||||
.byte 0xff
|
||||
$diff2 = ($loc3)-($loc0)
|
||||
.8byte ($diff2)
|
||||
.byte 0xff
|
||||
|
||||
$loc0:
|
||||
.byte 0xee
|
||||
$loc1:
|
||||
.byte 0xdd
|
||||
$loc2:
|
||||
.byte 0xcc
|
||||
$loc3:
|
||||
|
||||
# CHECK: AddressSize: 64bit
|
||||
# CHECK: Section {
|
||||
# CHECK: Name: .fixups (12)
|
||||
# CHECK-NEXT: Type: SHT_PROGBITS (0x1)
|
||||
# CHECK-NEXT: Flags [ (0x0)
|
||||
# CHECK-NEXT: ]
|
||||
# CHECK-NEXT: Address: 0x0
|
||||
# CHECK-NEXT: Offset: 0x40
|
||||
# CHECK-NEXT: Size: 21
|
||||
# CHECK-NEXT: Link: 0
|
||||
# CHECK-NEXT: Info: 0
|
||||
# CHECK-NEXT: AddressAlignment: 1
|
||||
# CHECK-NEXT: EntrySize: 0
|
||||
# CHECK-NEXT: SectionData (
|
||||
# CHECK-NEXT: 0000: FF0001FF 00000002 FF000000 00000000 |................|
|
||||
# CHECK-NEXT: 0010: 03FFEEDD CC |.....|
|
||||
# CHECK-NEXT: )
|
||||
# CHECK-NEXT: }
|
||||
# CHECK: ]
|
Loading…
Reference in New Issue
Block a user