mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
I started trying to fix a small issue, but this code has seen a small fix too many. The old code was fairly convoluted. Some of the issues it had: * It failed to check if a symbol difference was in the some section when converting a relocation to pcrel. * It failed to check if the relocation was already pcrel. * The pcrel value computation was wrong in some cases (relocation-pc.s) * It was missing quiet a few cases where it should not convert symbol relocations to section relocations, leaving the backends to patch it up. * It would not propagate the fact that it had changed a relocation to pcrel, requiring a quiet nasty work around in ARM. * It was missing comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205076 91177308-0d34-0410-b5e6-96231b3b80d8
144 lines
4.1 KiB
ArmAsm
144 lines
4.1 KiB
ArmAsm
@ RUN: llvm-mc -filetype=obj -triple arm-none-linux-gnueabi %s -o - | llvm-readobj -r -t | FileCheck %s
|
|
@ RUN: llvm-mc -filetype=obj -triple thumb-none-linux-gnueabi %s -o - | llvm-readobj -r -t | FileCheck %s
|
|
|
|
defined1:
|
|
defined2:
|
|
defined3:
|
|
.symver defined1, bar1@zed
|
|
.symver undefined1, bar2@zed
|
|
|
|
.symver defined2, bar3@@zed
|
|
|
|
.symver defined3, bar5@@@zed
|
|
.symver undefined3, bar6@@@zed
|
|
|
|
.long defined1
|
|
.long undefined1
|
|
.long defined2
|
|
.long defined3
|
|
.long undefined3
|
|
|
|
.global global1
|
|
.symver global1, g1@@zed
|
|
global1:
|
|
|
|
@ CHECK: Relocations [
|
|
@ CHECK-NEXT: Section (2) .rel.text {
|
|
@ CHECK-NEXT: 0x0 R_ARM_ABS32 .text 0x0
|
|
@ CHECK-NEXT: 0x4 R_ARM_ABS32 bar2@zed 0x0
|
|
@ CHECK-NEXT: 0x8 R_ARM_ABS32 .text 0x0
|
|
@ CHECK-NEXT: 0xC R_ARM_ABS32 .text 0x0
|
|
@ CHECK-NEXT: 0x10 R_ARM_ABS32 bar6@zed 0x0
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: ]
|
|
|
|
@ CHECK: Symbol {
|
|
@ CHECK: Name: bar1@zed
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar3@@zed
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar5@@zed
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: defined1
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: defined2
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .text (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .data (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .data (0x3)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: .bss (0)
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Local (0x0)
|
|
@ CHECK-NEXT: Type: Section (0x3)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .bss (0x4)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: g1@@zed
|
|
@ CHECK-NEXT: Value: 0x14
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: global1
|
|
@ CHECK-NEXT: Value: 0x14
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: .text (0x1)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar2@zed
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: Undefined (0x0)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: Symbol {
|
|
@ CHECK-NEXT: Name: bar6@zed
|
|
@ CHECK-NEXT: Value: 0x0
|
|
@ CHECK-NEXT: Size: 0
|
|
@ CHECK-NEXT: Binding: Global (0x1)
|
|
@ CHECK-NEXT: Type: None (0x0)
|
|
@ CHECK-NEXT: Other: 0
|
|
@ CHECK-NEXT: Section: Undefined (0x0)
|
|
@ CHECK-NEXT: }
|
|
@ CHECK-NEXT: ]
|