2011-04-25 07:11:23 +00:00
|
|
|
// The purpose of this test is to verify that symbol aliases
|
2013-04-12 04:06:46 +00:00
|
|
|
// (@foo: alias <type> @bar) generate the correct entries in the symbol table.
|
2011-04-25 07:11:23 +00:00
|
|
|
// They should be identical except for the name.
|
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -t | FileCheck %s
|
|
|
|
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -t | FileCheck %s
|
2011-04-25 07:11:23 +00:00
|
|
|
|
|
|
|
.def _foo;
|
|
|
|
.scl 2;
|
|
|
|
.type 32;
|
|
|
|
.endef
|
|
|
|
.text
|
|
|
|
.globl _foo
|
|
|
|
.align 16, 0x90
|
|
|
|
_foo: # @foo
|
|
|
|
# BB#0: # %entry
|
|
|
|
ret
|
|
|
|
|
|
|
|
.data
|
|
|
|
.globl _bar # @bar
|
|
|
|
.align 4
|
|
|
|
_bar:
|
|
|
|
.long 0 # 0x0
|
|
|
|
|
|
|
|
|
2013-01-29 22:10:07 +00:00
|
|
|
# Order is important here. Assign _bar_alias_alias before _bar_alias.
|
2011-04-25 07:11:23 +00:00
|
|
|
.globl _foo_alias
|
|
|
|
_foo_alias = _foo
|
2013-01-29 22:10:07 +00:00
|
|
|
.globl _bar_alias_alias
|
|
|
|
_bar_alias_alias = _bar_alias
|
2011-04-25 07:11:23 +00:00
|
|
|
.globl _bar_alias
|
|
|
|
_bar_alias = _bar
|
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK: Name: {{_?}}foo
|
|
|
|
// CHECK-NEXT: Value: [[FOO_VALUE:.*$]]
|
|
|
|
// CHECK-NEXT: Section: [[FOO_SECTION_NUMBER:.*$]]
|
|
|
|
// CHECK-NEXT: BaseType: [[FOO_SIMPLE_TYPE:.*$]]
|
|
|
|
// CHECK-NEXT: ComplexType: [[FOO_COMPLEX_TYPE:.*$]]
|
|
|
|
// CHECK-NEXT: StorageClass: [[FOO_STORAGE_CLASS:.*$]]
|
|
|
|
// CHECK-NEXT: AuxSymbolCount: [[FOO_NUMBER_OF_AUX_SYMBOLS:.*$]]
|
2011-04-25 07:11:23 +00:00
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK: Name: {{_?}}bar
|
|
|
|
// CHECK-NEXT: Value: [[BAR_VALUE:.*$]]
|
|
|
|
// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER:.*$]]
|
|
|
|
// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE:.*$]]
|
|
|
|
// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE:.*$]]
|
|
|
|
// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS:.*$]]
|
|
|
|
// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS:.*$]]
|
2011-04-25 07:11:23 +00:00
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK: Name: {{_?}}foo_alias
|
|
|
|
// CHECK-NEXT: Value: [[FOO_VALUE]]
|
|
|
|
// CHECK-NEXT: Section: [[FOO_SECTION_NUMBER]]
|
|
|
|
// CHECK-NEXT: BaseType: [[FOO_SIMPLE_TYPE]]
|
2014-05-01 19:02:03 +00:00
|
|
|
// CHECK-NEXT: ComplexType: Null (0x0)
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK-NEXT: StorageClass: [[FOO_STORAGE_CLASS]]
|
|
|
|
// CHECK-NEXT: AuxSymbolCount: [[FOO_NUMBER_OF_AUX_SYMBOLS]]
|
2011-04-25 07:11:23 +00:00
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK: Name: {{_?}}bar_alias_alias
|
|
|
|
// CHECK-NEXT: Value: [[BAR_VALUE]]
|
|
|
|
// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER]]
|
|
|
|
// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE]]
|
|
|
|
// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE]]
|
|
|
|
// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS]]
|
|
|
|
// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS]]
|
2013-01-29 22:10:07 +00:00
|
|
|
|
2013-04-12 04:06:46 +00:00
|
|
|
// CHECK: Name: {{_?}}bar_alias
|
|
|
|
// CHECK-NEXT: Value: [[BAR_VALUE]]
|
|
|
|
// CHECK-NEXT: Section: [[BAR_SECTION_NUMBER]]
|
|
|
|
// CHECK-NEXT: BaseType: [[BAR_SIMPLE_TYPE]]
|
|
|
|
// CHECK-NEXT: ComplexType: [[BAR_COMPLEX_TYPE]]
|
|
|
|
// CHECK-NEXT: StorageClass: [[BAR_STORAGE_CLASS]]
|
|
|
|
// CHECK-NEXT: AuxSymbolCount: [[BAR_NUMBER_OF_AUX_SYMBOLS]]
|
2011-04-25 07:11:23 +00:00
|
|
|
|