mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 03:29:40 +00:00
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204584 91177308-0d34-0410-b5e6-96231b3b80d8
152 lines
4.1 KiB
ArmAsm
152 lines
4.1 KiB
ArmAsm
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t - | FileCheck %s
|
|
|
|
// This tests that types are propagated from symbols to their aliases. Our
|
|
// behavior is a bit different than gas. If the type of a symbol changes,
|
|
// gas will update the type of the aliases only if those aliases were declare
|
|
// at a point in the file where the aliased symbol was already define.
|
|
|
|
// The lines marked with GAS illustrate this difference.
|
|
|
|
|
|
.type sym01, @object
|
|
sym01:
|
|
.type sym02, @function
|
|
sym02:
|
|
|
|
sym03 = sym01
|
|
sym04 = sym03
|
|
.type sym03, @function
|
|
sym05 = sym03
|
|
sym06 = sym01 - sym02
|
|
sym07 = sym02 - sym01
|
|
|
|
sym08 = sym10
|
|
sym09 = sym10 + 1
|
|
.type sym10, @object
|
|
sym10:
|
|
|
|
sym11 = sym10
|
|
sym12 = sym10 + 1
|
|
.type sym10, @function
|
|
|
|
// CHECK: Symbol {
|
|
// CHECK: Name: sym01
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Object (0x1)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym02
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym03
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym04
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Object (0x1)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym05
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
|
|
// GAS: Type: Function (0x2)
|
|
// CHECK-NEXT: Type: Object (0x1)
|
|
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym06
|
|
// 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: Absolute (0xFFF1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym07
|
|
// 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: Absolute (0xFFF1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym08
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym09
|
|
// CHECK-NEXT: Value: 0x1
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
|
|
// GAS: Type: None (0x0)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym10
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym11
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
|
|
// GAS: Type: Object (0x1)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: sym12
|
|
// CHECK-NEXT: Value: 0x1
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
|
|
// GAS: Type: Object (0x1)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x1)
|
|
// CHECK-NEXT: }
|