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