// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t -r --expand-relocs | FileCheck %s // Local symbol overriding section. .section x1,"a",@progbits .local x1 .comm x1,4,4 .long x1 // reloc: .bss + 0 // Section declared after local. Local symbol wins. .local x2 .comm x2,4,4 .section x2,"a",@progbits .long x2 // reloc: .bss + 4 // No overriding symbol. .section x3,"a",@progbits .long x3 // reloc: x3(section) + 0 // Global vs section. .section x4,"a",@progbits .long 0 .globl x4 .section foo, "a", @progbits x4: .long 0 .long x4 // reloc: x4(global) + 0 // Global vs implicit section .globl .data .data: .long 42 .long .data // reloc: .data(global) + 0 // CHECK: Relocations [ // CHECK: Section (4) .relax1 { // CHECK: Relocation { // CHECK: Offset: 0x0 // CHECK: Type: R_X86_64_32 (10) // CHECK: Symbol: .bss (3) // CHECK: Addend: 0x0 // CHECK: } // CHECK: } // CHECK: Section (7) .relax2 { // CHECK: Relocation { // CHECK: Offset: 0x0 // CHECK: Type: R_X86_64_32 (10) // CHECK: Symbol: .bss (3) // CHECK: Addend: 0x4 // CHECK: } // CHECK: } // CHECK: Section (9) .relax3 { // CHECK: Relocation { // CHECK: Offset: 0x0 // CHECK: Type: R_X86_64_32 (10) // CHECK: Symbol: x3 (4) // CHECK: Addend: 0x0 // CHECK: } // CHECK: } // CHECK: Section (12) .relafoo { // CHECK: Relocation { // CHECK: Offset: 0x4 // CHECK: Type: R_X86_64_32 (10) // CHECK: Symbol: x4 (6) // CHECK: Addend: 0x0 // CHECK: } // CHECK: Relocation { // CHECK: Offset: 0xC // CHECK: Type: R_X86_64_32 (10) // CHECK: Symbol: .data (5) // CHECK: Addend: 0x0 // CHECK: } // CHECK: } // CHECK: ] // CHECK: Symbols [ // CHECK: Symbol { // CHECK: Name: (0) // CHECK: Value: 0x0 // CHECK: Size: 0 // CHECK: Binding: Local (0x0) // CHECK: Type: None (0x0) // CHECK: Other: 0 // CHECK: Section: Undefined (0x0) // CHECK: } // CHECK: Symbol { // CHECK: Name: x1 (67) // CHECK: Value: 0x0 // CHECK: Size: 4 // CHECK: Binding: Local (0x0) // CHECK: Type: Object (0x1) // CHECK: Other: 0 // CHECK: Section: .bss (0x5) // CHECK: } // CHECK: Symbol { // CHECK: Name: x2 (59) // CHECK: Value: 0x4 // CHECK: Size: 4 // CHECK: Binding: Local (0x0) // CHECK: Type: Object (0x1) // CHECK: Other: 0 // CHECK: Section: .bss (0x5) // CHECK: } // CHECK: Symbol { // CHECK: Name: (0) // CHECK: Value: 0x0 // CHECK: Size: 0 // CHECK: Binding: Local (0x0) // CHECK: Type: Section (0x3) // CHECK: Other: 0 // CHECK: Section: .bss (0x5) // CHECK: } // CHECK: Symbol { // CHECK: Name: (0) // CHECK: Value: 0x0 // CHECK: Size: 0 // CHECK: Binding: Local (0x0) // CHECK: Type: Section (0x3) // CHECK: Other: 0 // CHECK: Section: x3 (0x8) // CHECK: } // CHECK: Symbol { // CHECK: Name: .data (37) // CHECK: Value: 0x8 // CHECK: Size: 0 // CHECK: Binding: Global (0x1) // CHECK: Type: None (0x0) // CHECK: Other: 0 // CHECK: Section: foo (0xB) // CHECK: } // CHECK: Symbol { // CHECK: Name: x4 (43) // CHECK: Value: 0x0 // CHECK: Size: 0 // CHECK: Binding: Global (0x1) // CHECK: Type: None (0x0) // CHECK: Other: 0 // CHECK: Section: foo (0xB) // CHECK: } // CHECK: ]