mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01: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 llvm-svn: 202716
This commit is contained in:
parent
6351c4738a
commit
1644c2608f
@ -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