mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +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) {
|
switch (Kind) {
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
|
case FK_Data_2:
|
||||||
case FK_GPRel_4:
|
case FK_GPRel_4:
|
||||||
case FK_Data_4:
|
case FK_Data_4:
|
||||||
case FK_Data_8:
|
case FK_Data_8:
|
||||||
@ -140,12 +141,15 @@ public:
|
|||||||
unsigned FullSize;
|
unsigned FullSize;
|
||||||
|
|
||||||
switch ((unsigned)Kind) {
|
switch ((unsigned)Kind) {
|
||||||
|
case FK_Data_2:
|
||||||
case Mips::fixup_Mips_16:
|
case Mips::fixup_Mips_16:
|
||||||
FullSize = 2;
|
FullSize = 2;
|
||||||
break;
|
break;
|
||||||
|
case FK_Data_8:
|
||||||
case Mips::fixup_Mips_64:
|
case Mips::fixup_Mips_64:
|
||||||
FullSize = 8;
|
FullSize = 8;
|
||||||
break;
|
break;
|
||||||
|
case FK_Data_4:
|
||||||
default:
|
default:
|
||||||
FullSize = 4;
|
FullSize = 4;
|
||||||
break;
|
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