1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-readobj -s %t | FileCheck --check-prefix=SECTIONS %s 3*9880d681SAndroid Build Coastguard Worker// RUN: llvm-readobj -t %t | FileCheck --check-prefix=SYMBOLS %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker// Test that we create a .symtab_shndx if a symbol points to a section 6*9880d681SAndroid Build Coastguard Worker// numbered SHN_LORESERVE (0xFF00) or higher. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker// SECTIONS: Name: .symtab_shndx 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker// Test that we don't create a symbol for the symtab_shndx section. 11*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NOT: symtab_shndx 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker// Test that both a and b show up in the correct section. 15*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Name: a 16*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Value: 0x0 17*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Size: 0 18*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Binding: Local (0x0) 19*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Type: None (0x0) 20*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Other: 0 21*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Section: dm (0xFF00) 22*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: } 23*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Symbol { 24*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Name: b 25*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Value: 0x1 26*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Size: 0 27*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Binding: Local (0x0) 28*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Type: None (0x0) 29*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Other: 0 30*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: Section: dm (0xFF00) 31*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: } 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker// Test that this file has one section too many. 35*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Name: (0) 36*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Value: 0x0 37*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Size: 0 38*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Binding: Local (0x0) 39*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Type: Section (0x3) 40*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Other: 0 41*9880d681SAndroid Build Coastguard Worker// SYMBOLS: Section: dm (0xFF00) 42*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT: } 43*9880d681SAndroid Build Coastguard Worker// SYMBOLS-NEXT:] 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker.macro gen_sections4 x 46*9880d681SAndroid Build Coastguard Worker .section a\x 47*9880d681SAndroid Build Coastguard Worker .section b\x 48*9880d681SAndroid Build Coastguard Worker .section c\x 49*9880d681SAndroid Build Coastguard Worker .section d\x 50*9880d681SAndroid Build Coastguard Worker.endm 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker.macro gen_sections8 x 53*9880d681SAndroid Build Coastguard Worker gen_sections4 a\x 54*9880d681SAndroid Build Coastguard Worker gen_sections4 b\x 55*9880d681SAndroid Build Coastguard Worker.endm 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker.macro gen_sections16 x 58*9880d681SAndroid Build Coastguard Worker gen_sections8 a\x 59*9880d681SAndroid Build Coastguard Worker gen_sections8 b\x 60*9880d681SAndroid Build Coastguard Worker.endm 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker.macro gen_sections32 x 63*9880d681SAndroid Build Coastguard Worker gen_sections16 a\x 64*9880d681SAndroid Build Coastguard Worker gen_sections16 b\x 65*9880d681SAndroid Build Coastguard Worker.endm 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker.macro gen_sections64 x 68*9880d681SAndroid Build Coastguard Worker gen_sections32 a\x 69*9880d681SAndroid Build Coastguard Worker gen_sections32 b\x 70*9880d681SAndroid Build Coastguard Worker.endm 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker.macro gen_sections128 x 73*9880d681SAndroid Build Coastguard Worker gen_sections64 a\x 74*9880d681SAndroid Build Coastguard Worker gen_sections64 b\x 75*9880d681SAndroid Build Coastguard Worker.endm 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker.macro gen_sections256 x 78*9880d681SAndroid Build Coastguard Worker gen_sections128 a\x 79*9880d681SAndroid Build Coastguard Worker gen_sections128 b\x 80*9880d681SAndroid Build Coastguard Worker.endm 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker.macro gen_sections512 x 83*9880d681SAndroid Build Coastguard Worker gen_sections256 a\x 84*9880d681SAndroid Build Coastguard Worker gen_sections256 b\x 85*9880d681SAndroid Build Coastguard Worker.endm 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker.macro gen_sections1024 x 88*9880d681SAndroid Build Coastguard Worker gen_sections512 a\x 89*9880d681SAndroid Build Coastguard Worker gen_sections512 b\x 90*9880d681SAndroid Build Coastguard Worker.endm 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker.macro gen_sections2048 x 93*9880d681SAndroid Build Coastguard Worker gen_sections1024 a\x 94*9880d681SAndroid Build Coastguard Worker gen_sections1024 b\x 95*9880d681SAndroid Build Coastguard Worker.endm 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker.macro gen_sections4096 x 98*9880d681SAndroid Build Coastguard Worker gen_sections2048 a\x 99*9880d681SAndroid Build Coastguard Worker gen_sections2048 b\x 100*9880d681SAndroid Build Coastguard Worker.endm 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Worker.macro gen_sections8192 x 103*9880d681SAndroid Build Coastguard Worker gen_sections4096 a\x 104*9880d681SAndroid Build Coastguard Worker gen_sections4096 b\x 105*9880d681SAndroid Build Coastguard Worker.endm 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker.macro gen_sections16384 x 108*9880d681SAndroid Build Coastguard Worker gen_sections8192 a\x 109*9880d681SAndroid Build Coastguard Worker gen_sections8192 b\x 110*9880d681SAndroid Build Coastguard Worker.endm 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker.macro gen_sections32768 x 113*9880d681SAndroid Build Coastguard Worker gen_sections16384 a\x 114*9880d681SAndroid Build Coastguard Worker gen_sections16384 b\x 115*9880d681SAndroid Build Coastguard Worker.endm 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker .section foo 118*9880d681SAndroid Build Coastguard Worker .section bar 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workergen_sections32768 a 121*9880d681SAndroid Build Coastguard Workergen_sections16384 b 122*9880d681SAndroid Build Coastguard Workergen_sections8192 c 123*9880d681SAndroid Build Coastguard Workergen_sections4096 d 124*9880d681SAndroid Build Coastguard Workergen_sections2048 e 125*9880d681SAndroid Build Coastguard Workergen_sections1024 f 126*9880d681SAndroid Build Coastguard Workergen_sections512 g 127*9880d681SAndroid Build Coastguard Workergen_sections128 h 128*9880d681SAndroid Build Coastguard Workergen_sections64 i 129*9880d681SAndroid Build Coastguard Workergen_sections32 j 130*9880d681SAndroid Build Coastguard Workergen_sections16 k 131*9880d681SAndroid Build Coastguard Workergen_sections8 l 132*9880d681SAndroid Build Coastguard Workergen_sections4 m 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workera: 135*9880d681SAndroid Build Coastguard Workerb = a + 1 136*9880d681SAndroid Build Coastguard Worker.long dm 137