1; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \ 2; RUN: -xcoff-traceback-table=false -data-sections=false -filetype=obj -o %t.o < %s 3; RUN: llvm-readobj --relocs --expand-relocs %t.o | FileCheck -D#NFA=2 --check-prefix=RELOC %s 4; RUN: llvm-readobj --syms %t.o | FileCheck -D#NFA=2 --check-prefix=SYM %s 5; RUN: llvm-objdump -D -r --symbol-description %t.o | FileCheck -D#NFA=2 --check-prefix=DIS %s 6 7@const_ivar = constant i32 6, align 4 8@GInit = global i32 1, align 4 9@TGInit = thread_local global i32 1, align 4 10; @TIUninit is local-dynamic indeed 11@TIUninit = internal thread_local global i32 0, align 4 12 13; Function Attrs: nofree norecurse nounwind willreturn writeonly 14define void @storesTIUninit(i32 %Val) #0 { 15entry: 16 store i32 %Val, ptr @TIUninit, align 4 17 ret void 18} 19 20; Function Attrs: norecurse nounwind readonly willreturn 21define i32 @loadsTGInit() #1 { 22entry: 23 %0 = load i32, ptr @TGInit, align 4 24 %1 = load i32, ptr @GInit, align 4 25 %add = add nsw i32 %1, %0 26 ret i32 %add 27} 28 29; RELOC: File: 30; RELOC-NEXT: Format: aixcoff-rs6000 31; RELOC-NEXT: Arch: powerpc 32; RELOC-NEXT: AddressSize: 32bit 33; RELOC-NEXT: Relocations [ 34; RELOC-NEXT: Section (index: 1) .text { 35; RELOC-NEXT: Relocation { 36; RELOC-NEXT: Virtual Address: 0xE 37; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+25]]) 38; RELOC-NEXT: IsSigned: No 39; RELOC-NEXT: FixupBitValue: 0 40; RELOC-NEXT: Length: 16 41; RELOC-NEXT: Type: R_TOC (0x3) 42; RELOC-NEXT: } 43; RELOC-NEXT: Relocation { 44; RELOC-NEXT: Virtual Address: 0x14 45; RELOC-NEXT: Symbol: .__tls_get_mod ([[#NFA+1]]) 46; RELOC-NEXT: IsSigned: No 47; RELOC-NEXT: FixupBitValue: 0 48; RELOC-NEXT: Length: 26 49; RELOC-NEXT: Type: R_RBA (0x18) 50; RELOC-NEXT: } 51; RELOC-NEXT: Relocation { 52; RELOC-NEXT: Virtual Address: 0x1A 53; RELOC-NEXT: Symbol: TIUninit ([[#NFA+27]]) 54; RELOC-NEXT: IsSigned: No 55; RELOC-NEXT: FixupBitValue: 0 56; RELOC-NEXT: Length: 16 57; RELOC-NEXT: Type: R_TOC (0x3) 58; RELOC-NEXT: } 59; RELOC-NEXT: Relocation { 60; RELOC-NEXT: Virtual Address: 0x3A 61; RELOC-NEXT: Symbol: .TGInit ([[#NFA+29]]) 62; RELOC-NEXT: IsSigned: No 63; RELOC-NEXT: FixupBitValue: 0 64; RELOC-NEXT: Length: 16 65; RELOC-NEXT: Type: R_TOC (0x3) 66; RELOC-NEXT: } 67; RELOC-NEXT: Relocation { 68; RELOC-NEXT: Virtual Address: 0x3E 69; RELOC-NEXT: Symbol: TGInit ([[#NFA+31]]) 70; RELOC-NEXT: IsSigned: No 71; RELOC-NEXT: FixupBitValue: 0 72; RELOC-NEXT: Length: 16 73; RELOC-NEXT: Type: R_TOC (0x3) 74; RELOC-NEXT: } 75; RELOC-NEXT: Relocation { 76; RELOC-NEXT: Virtual Address: 0x44 77; RELOC-NEXT: Symbol: .__tls_get_addr ([[#NFA+3]]) 78; RELOC-NEXT: IsSigned: No 79; RELOC-NEXT: FixupBitValue: 0 80; RELOC-NEXT: Length: 26 81; RELOC-NEXT: Type: R_RBA (0x18) 82; RELOC-NEXT: } 83; RELOC-NEXT: Relocation { 84; RELOC-NEXT: Virtual Address: 0x4A 85; RELOC-NEXT: Symbol: GInit ([[#NFA+33]]) 86; RELOC-NEXT: IsSigned: No 87; RELOC-NEXT: FixupBitValue: 0 88; RELOC-NEXT: Length: 16 89; RELOC-NEXT: Type: R_TOC (0x3) 90; RELOC-NEXT: } 91; RELOC-NEXT: } 92; RELOC-NEXT: Section (index: 2) .data { 93; RELOC-NEXT: Relocation { 94; RELOC-NEXT: Virtual Address: 0x70 95; RELOC-NEXT: Symbol: .storesTIUninit ([[#NFA+7]]) 96; RELOC-NEXT: IsSigned: No 97; RELOC-NEXT: FixupBitValue: 0 98; RELOC-NEXT: Length: 32 99; RELOC-NEXT: Type: R_POS (0x0) 100; RELOC-NEXT: } 101; RELOC-NEXT: Relocation { 102; RELOC-NEXT: Virtual Address: 0x74 103; RELOC-NEXT: Symbol: TOC ([[#NFA+23]]) 104; RELOC-NEXT: IsSigned: No 105; RELOC-NEXT: FixupBitValue: 0 106; RELOC-NEXT: Length: 32 107; RELOC-NEXT: Type: R_POS (0x0) 108; RELOC-NEXT: } 109; RELOC-NEXT: Relocation { 110; RELOC-NEXT: Virtual Address: 0x7C 111; RELOC-NEXT: Symbol: .loadsTGInit ([[#NFA+9]]) 112; RELOC-NEXT: IsSigned: No 113; RELOC-NEXT: FixupBitValue: 0 114; RELOC-NEXT: Length: 32 115; RELOC-NEXT: Type: R_POS (0x0) 116; RELOC-NEXT: } 117; RELOC-NEXT: Relocation { 118; RELOC-NEXT: Virtual Address: 0x80 119; RELOC-NEXT: Symbol: TOC ([[#NFA+23]]) 120; RELOC-NEXT: IsSigned: No 121; RELOC-NEXT: FixupBitValue: 0 122; RELOC-NEXT: Length: 32 123; RELOC-NEXT: Type: R_POS (0x0) 124; RELOC-NEXT: } 125; RELOC-NEXT: Relocation { 126; RELOC-NEXT: Virtual Address: 0x88 127; RELOC-NEXT: Symbol: _$TLSML ([[#NFA+25]]) 128; RELOC-NEXT: IsSigned: No 129; RELOC-NEXT: FixupBitValue: 0 130; RELOC-NEXT: Length: 32 131; RELOC-NEXT: Type: R_TLSML (0x25) 132; RELOC-NEXT: } 133; RELOC-NEXT: Relocation { 134; RELOC-NEXT: Virtual Address: 0x8C 135; RELOC-NEXT: Symbol: TIUninit ([[#NFA+39]]) 136; RELOC-NEXT: IsSigned: No 137; RELOC-NEXT: FixupBitValue: 0 138; RELOC-NEXT: Length: 32 139; RELOC-NEXT: Type: R_TLS_LD (0x22) 140; RELOC-NEXT: } 141; RELOC-NEXT: Relocation { 142; RELOC-NEXT: Virtual Address: 0x90 143; RELOC-NEXT: Symbol: TGInit ([[#NFA+37]]) 144; RELOC-NEXT: IsSigned: No 145; RELOC-NEXT: FixupBitValue: 0 146; RELOC-NEXT: Length: 32 147; RELOC-NEXT: Type: R_TLSM (0x24) 148; RELOC-NEXT: } 149; RELOC-NEXT: Relocation { 150; RELOC-NEXT: Virtual Address: 0x94 151; RELOC-NEXT: Symbol: TGInit ([[#NFA+37]]) 152; RELOC-NEXT: IsSigned: No 153; RELOC-NEXT: FixupBitValue: 0 154; RELOC-NEXT: Length: 32 155; RELOC-NEXT: Type: R_TLS (0x20) 156; RELOC-NEXT: } 157; RELOC-NEXT: Relocation { 158; RELOC-NEXT: Virtual Address: 0x98 159; RELOC-NEXT: Symbol: GInit ([[#NFA+17]]) 160; RELOC-NEXT: IsSigned: No 161; RELOC-NEXT: FixupBitValue: 0 162; RELOC-NEXT: Length: 32 163; RELOC-NEXT: Type: R_POS (0x0) 164; RELOC-NEXT: } 165; RELOC-NEXT: } 166; RELOC-NEXT: ] 167 168; SYM: File: 169; SYM-NEXT: Format: aixcoff-rs6000 170; SYM-NEXT: Arch: powerpc 171; SYM-NEXT: AddressSize: 32bit 172; SYM-NEXT: Symbols [ 173; SYM-NEXT: Symbol { 174; SYM-NEXT: Index: 0 175; SYM-NEXT: Name: .file 176; SYM-NEXT: Value (SymbolTableIndex): 0x0 177; SYM-NEXT: Section: N_DEBUG 178; SYM-NEXT: Source Language ID: TB_CPLUSPLUS (0x9) 179; SYM-NEXT: CPU Version ID: TCPU_COM (0x3) 180; SYM-NEXT: StorageClass: C_FILE (0x67) 181; SYM-NEXT: NumberOfAuxEntries: 2 182; SYM: Symbol { 183; SYM-NEXT: Index: [[#NFA+1]] 184; SYM-NEXT: Name: .__tls_get_mod 185; SYM-NEXT: Value (RelocatableAddress): 0x0 186; SYM-NEXT: Section: N_UNDEF 187; SYM-NEXT: Type: 0x0 188; SYM-NEXT: StorageClass: C_EXT (0x2) 189; SYM-NEXT: NumberOfAuxEntries: 1 190; SYM-NEXT: CSECT Auxiliary Entry { 191; SYM-NEXT: Index: [[#NFA+2]] 192; SYM-NEXT: SectionLen: 0 193; SYM-NEXT: ParameterHashIndex: 0x0 194; SYM-NEXT: TypeChkSectNum: 0x0 195; SYM-NEXT: SymbolAlignmentLog2: 0 196; SYM-NEXT: SymbolType: XTY_ER (0x0) 197; SYM-NEXT: StorageMappingClass: XMC_PR (0x0) 198; SYM-NEXT: StabInfoIndex: 0x0 199; SYM-NEXT: StabSectNum: 0x0 200; SYM-NEXT: } 201; SYM-NEXT: } 202; SYM-NEXT: Symbol { 203; SYM-NEXT: Index: [[#NFA+3]] 204; SYM-NEXT: Name: .__tls_get_addr 205; SYM-NEXT: Value (RelocatableAddress): 0x0 206; SYM-NEXT: Section: N_UNDEF 207; SYM-NEXT: Type: 0x0 208; SYM-NEXT: StorageClass: C_EXT (0x2) 209; SYM-NEXT: NumberOfAuxEntries: 1 210; SYM-NEXT: CSECT Auxiliary Entry { 211; SYM-NEXT: Index: [[#NFA+4]] 212; SYM-NEXT: SectionLen: 0 213; SYM-NEXT: ParameterHashIndex: 0x0 214; SYM-NEXT: TypeChkSectNum: 0x0 215; SYM-NEXT: SymbolAlignmentLog2: 0 216; SYM-NEXT: SymbolType: XTY_ER (0x0) 217; SYM-NEXT: StorageMappingClass: XMC_PR (0x0) 218; SYM-NEXT: StabInfoIndex: 0x0 219; SYM-NEXT: StabSectNum: 0x0 220; SYM-NEXT: } 221; SYM-NEXT: } 222; SYM-NEXT: Symbol { 223; SYM-NEXT: Index: [[#NFA+5]] 224; SYM-NEXT: Name: 225; SYM-NEXT: Value (RelocatableAddress): 0x0 226; SYM-NEXT: Section: .text 227; SYM-NEXT: Type: 0x0 228; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 229; SYM-NEXT: NumberOfAuxEntries: 1 230; SYM-NEXT: CSECT Auxiliary Entry { 231; SYM-NEXT: Index: [[#NFA+6]] 232; SYM-NEXT: SectionLen: 104 233; SYM-NEXT: ParameterHashIndex: 0x0 234; SYM-NEXT: TypeChkSectNum: 0x0 235; SYM-NEXT: SymbolAlignmentLog2: 5 236; SYM-NEXT: SymbolType: XTY_SD (0x1) 237; SYM-NEXT: StorageMappingClass: XMC_PR (0x0) 238; SYM-NEXT: StabInfoIndex: 0x0 239; SYM-NEXT: StabSectNum: 0x0 240; SYM-NEXT: } 241; SYM-NEXT: } 242; SYM-NEXT: Symbol { 243; SYM-NEXT: Index: [[#NFA+7]] 244; SYM-NEXT: Name: .storesTIUninit 245; SYM-NEXT: Value (RelocatableAddress): 0x0 246; SYM-NEXT: Section: .text 247; SYM-NEXT: Type: 0x0 248; SYM-NEXT: StorageClass: C_EXT (0x2) 249; SYM-NEXT: NumberOfAuxEntries: 1 250; SYM-NEXT: CSECT Auxiliary Entry { 251; SYM-NEXT: Index: [[#NFA+8]] 252; SYM-NEXT: ContainingCsectSymbolIndex: [[#NFA+5]] 253; SYM-NEXT: ParameterHashIndex: 0x0 254; SYM-NEXT: TypeChkSectNum: 0x0 255; SYM-NEXT: SymbolAlignmentLog2: 0 256; SYM-NEXT: SymbolType: XTY_LD (0x2) 257; SYM-NEXT: StorageMappingClass: XMC_PR (0x0) 258; SYM-NEXT: StabInfoIndex: 0x0 259; SYM-NEXT: StabSectNum: 0x0 260; SYM-NEXT: } 261; SYM-NEXT: } 262; SYM-NEXT: Symbol { 263; SYM-NEXT: Index: [[#NFA+9]] 264; SYM-NEXT: Name: .loadsTGInit 265; SYM-NEXT: Value (RelocatableAddress): 0x30 266; SYM-NEXT: Section: .text 267; SYM-NEXT: Type: 0x0 268; SYM-NEXT: StorageClass: C_EXT (0x2) 269; SYM-NEXT: NumberOfAuxEntries: 1 270; SYM-NEXT: CSECT Auxiliary Entry { 271; SYM-NEXT: Index: [[#NFA+10]] 272; SYM-NEXT: ContainingCsectSymbolIndex: [[#NFA+5]] 273; SYM-NEXT: ParameterHashIndex: 0x0 274; SYM-NEXT: TypeChkSectNum: 0x0 275; SYM-NEXT: SymbolAlignmentLog2: 0 276; SYM-NEXT: SymbolType: XTY_LD (0x2) 277; SYM-NEXT: StorageMappingClass: XMC_PR (0x0) 278; SYM-NEXT: StabInfoIndex: 0x0 279; SYM-NEXT: StabSectNum: 0x0 280; SYM-NEXT: } 281; SYM-NEXT: } 282; SYM-NEXT: Symbol { 283; SYM-NEXT: Index: [[#NFA+11]] 284; SYM-NEXT: Name: .rodata 285; SYM-NEXT: Value (RelocatableAddress): 0x68 286; SYM-NEXT: Section: .text 287; SYM-NEXT: Type: 0x0 288; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 289; SYM-NEXT: NumberOfAuxEntries: 1 290; SYM-NEXT: CSECT Auxiliary Entry { 291; SYM-NEXT: Index: [[#NFA+12]] 292; SYM-NEXT: SectionLen: 4 293; SYM-NEXT: ParameterHashIndex: 0x0 294; SYM-NEXT: TypeChkSectNum: 0x0 295; SYM-NEXT: SymbolAlignmentLog2: 2 296; SYM-NEXT: SymbolType: XTY_SD (0x1) 297; SYM-NEXT: StorageMappingClass: XMC_RO (0x1) 298; SYM-NEXT: StabInfoIndex: 0x0 299; SYM-NEXT: StabSectNum: 0x0 300; SYM-NEXT: } 301; SYM-NEXT: } 302; SYM-NEXT: Symbol { 303; SYM-NEXT: Index: [[#NFA+13]] 304; SYM-NEXT: Name: const_ivar 305; SYM-NEXT: Value (RelocatableAddress): 0x68 306; SYM-NEXT: Section: .text 307; SYM-NEXT: Type: 0x0 308; SYM-NEXT: StorageClass: C_EXT (0x2) 309; SYM-NEXT: NumberOfAuxEntries: 1 310; SYM-NEXT: CSECT Auxiliary Entry { 311; SYM-NEXT: Index: [[#NFA+14]] 312; SYM-NEXT: ContainingCsectSymbolIndex: [[#NFA+11]] 313; SYM-NEXT: ParameterHashIndex: 0x0 314; SYM-NEXT: TypeChkSectNum: 0x0 315; SYM-NEXT: SymbolAlignmentLog2: 0 316; SYM-NEXT: SymbolType: XTY_LD (0x2) 317; SYM-NEXT: StorageMappingClass: XMC_RO (0x1) 318; SYM-NEXT: StabInfoIndex: 0x0 319; SYM-NEXT: StabSectNum: 0x0 320; SYM-NEXT: } 321; SYM-NEXT: } 322; SYM-NEXT: Symbol { 323; SYM-NEXT: Index: [[#NFA+15]] 324; SYM-NEXT: Name: .data 325; SYM-NEXT: Value (RelocatableAddress): 0x6C 326; SYM-NEXT: Section: .data 327; SYM-NEXT: Type: 0x0 328; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 329; SYM-NEXT: NumberOfAuxEntries: 1 330; SYM-NEXT: CSECT Auxiliary Entry { 331; SYM-NEXT: Index: [[#NFA+16]] 332; SYM-NEXT: SectionLen: 4 333; SYM-NEXT: ParameterHashIndex: 0x0 334; SYM-NEXT: TypeChkSectNum: 0x0 335; SYM-NEXT: SymbolAlignmentLog2: 2 336; SYM-NEXT: SymbolType: XTY_SD (0x1) 337; SYM-NEXT: StorageMappingClass: XMC_RW (0x5) 338; SYM-NEXT: StabInfoIndex: 0x0 339; SYM-NEXT: StabSectNum: 0x0 340; SYM-NEXT: } 341; SYM-NEXT: } 342; SYM-NEXT: Symbol { 343; SYM-NEXT: Index: [[#NFA+17]] 344; SYM-NEXT: Name: GInit 345; SYM-NEXT: Value (RelocatableAddress): 0x6C 346; SYM-NEXT: Section: .data 347; SYM-NEXT: Type: 0x0 348; SYM-NEXT: StorageClass: C_EXT (0x2) 349; SYM-NEXT: NumberOfAuxEntries: 1 350; SYM-NEXT: CSECT Auxiliary Entry { 351; SYM-NEXT: Index: [[#NFA+18]] 352; SYM-NEXT: ContainingCsectSymbolIndex: [[#NFA+15]] 353; SYM-NEXT: ParameterHashIndex: 0x0 354; SYM-NEXT: TypeChkSectNum: 0x0 355; SYM-NEXT: SymbolAlignmentLog2: 0 356; SYM-NEXT: SymbolType: XTY_LD (0x2) 357; SYM-NEXT: StorageMappingClass: XMC_RW (0x5) 358; SYM-NEXT: StabInfoIndex: 0x0 359; SYM-NEXT: StabSectNum: 0x0 360; SYM-NEXT: } 361; SYM-NEXT: } 362; SYM-NEXT: Symbol { 363; SYM-NEXT: Index: [[#NFA+19]] 364; SYM-NEXT: Name: storesTIUninit 365; SYM-NEXT: Value (RelocatableAddress): 0x70 366; SYM-NEXT: Section: .data 367; SYM-NEXT: Type: 0x0 368; SYM-NEXT: StorageClass: C_EXT (0x2) 369; SYM-NEXT: NumberOfAuxEntries: 1 370; SYM-NEXT: CSECT Auxiliary Entry { 371; SYM-NEXT: Index: [[#NFA+20]] 372; SYM-NEXT: SectionLen: 12 373; SYM-NEXT: ParameterHashIndex: 0x0 374; SYM-NEXT: TypeChkSectNum: 0x0 375; SYM-NEXT: SymbolAlignmentLog2: 2 376; SYM-NEXT: SymbolType: XTY_SD (0x1) 377; SYM-NEXT: StorageMappingClass: XMC_DS (0xA) 378; SYM-NEXT: StabInfoIndex: 0x0 379; SYM-NEXT: StabSectNum: 0x0 380; SYM-NEXT: } 381; SYM-NEXT: } 382; SYM-NEXT: Symbol { 383; SYM-NEXT: Index: [[#NFA+21]] 384; SYM-NEXT: Name: loadsTGInit 385; SYM-NEXT: Value (RelocatableAddress): 0x7C 386; SYM-NEXT: Section: .data 387; SYM-NEXT: Type: 0x0 388; SYM-NEXT: StorageClass: C_EXT (0x2) 389; SYM-NEXT: NumberOfAuxEntries: 1 390; SYM-NEXT: CSECT Auxiliary Entry { 391; SYM-NEXT: Index: [[#NFA+22]] 392; SYM-NEXT: SectionLen: 12 393; SYM-NEXT: ParameterHashIndex: 0x0 394; SYM-NEXT: TypeChkSectNum: 0x0 395; SYM-NEXT: SymbolAlignmentLog2: 2 396; SYM-NEXT: SymbolType: XTY_SD (0x1) 397; SYM-NEXT: StorageMappingClass: XMC_DS (0xA) 398; SYM-NEXT: StabInfoIndex: 0x0 399; SYM-NEXT: StabSectNum: 0x0 400; SYM-NEXT: } 401; SYM-NEXT: } 402; SYM-NEXT: Symbol { 403; SYM-NEXT: Index: [[#NFA+23]] 404; SYM-NEXT: Name: TOC 405; SYM-NEXT: Value (RelocatableAddress): 0x88 406; SYM-NEXT: Section: .data 407; SYM-NEXT: Type: 0x0 408; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 409; SYM-NEXT: NumberOfAuxEntries: 1 410; SYM-NEXT: CSECT Auxiliary Entry { 411; SYM-NEXT: Index: [[#NFA+24]] 412; SYM-NEXT: SectionLen: 0 413; SYM-NEXT: ParameterHashIndex: 0x0 414; SYM-NEXT: TypeChkSectNum: 0x0 415; SYM-NEXT: SymbolAlignmentLog2: 2 416; SYM-NEXT: SymbolType: XTY_SD (0x1) 417; SYM-NEXT: StorageMappingClass: XMC_TC0 (0xF) 418; SYM-NEXT: StabInfoIndex: 0x0 419; SYM-NEXT: StabSectNum: 0x0 420; SYM-NEXT: } 421; SYM-NEXT: } 422; SYM-NEXT: Symbol { 423; SYM-NEXT: Index: [[#NFA+25]] 424; SYM-NEXT: Name: _$TLSML 425; SYM-NEXT: Value (RelocatableAddress): 0x88 426; SYM-NEXT: Section: .data 427; SYM-NEXT: Type: 0x0 428; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 429; SYM-NEXT: NumberOfAuxEntries: 1 430; SYM-NEXT: CSECT Auxiliary Entry { 431; SYM-NEXT: Index: [[#NFA+26]] 432; SYM-NEXT: SectionLen: 4 433; SYM-NEXT: ParameterHashIndex: 0x0 434; SYM-NEXT: TypeChkSectNum: 0x0 435; SYM-NEXT: SymbolAlignmentLog2: 2 436; SYM-NEXT: SymbolType: XTY_SD (0x1) 437; SYM-NEXT: StorageMappingClass: XMC_TC (0x3) 438; SYM-NEXT: StabInfoIndex: 0x0 439; SYM-NEXT: StabSectNum: 0x0 440; SYM-NEXT: } 441; SYM-NEXT: } 442; SYM-NEXT: Symbol { 443; SYM-NEXT: Index: [[#NFA+27]] 444; SYM-NEXT: Name: TIUninit 445; SYM-NEXT: Value (RelocatableAddress): 0x8C 446; SYM-NEXT: Section: .data 447; SYM-NEXT: Type: 0x0 448; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 449; SYM-NEXT: NumberOfAuxEntries: 1 450; SYM-NEXT: CSECT Auxiliary Entry { 451; SYM-NEXT: Index: [[#NFA+28]] 452; SYM-NEXT: SectionLen: 4 453; SYM-NEXT: ParameterHashIndex: 0x0 454; SYM-NEXT: TypeChkSectNum: 0x0 455; SYM-NEXT: SymbolAlignmentLog2: 2 456; SYM-NEXT: SymbolType: XTY_SD (0x1) 457; SYM-NEXT: StorageMappingClass: XMC_TC (0x3) 458; SYM-NEXT: StabInfoIndex: 0x0 459; SYM-NEXT: StabSectNum: 0x0 460; SYM-NEXT: } 461; SYM-NEXT: } 462; SYM-NEXT: Symbol { 463; SYM-NEXT: Index: [[#NFA+29]] 464; SYM-NEXT: Name: .TGInit 465; SYM-NEXT: Value (RelocatableAddress): 0x90 466; SYM-NEXT: Section: .data 467; SYM-NEXT: Type: 0x0 468; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 469; SYM-NEXT: NumberOfAuxEntries: 1 470; SYM-NEXT: CSECT Auxiliary Entry { 471; SYM-NEXT: Index: [[#NFA+30]] 472; SYM-NEXT: SectionLen: 4 473; SYM-NEXT: ParameterHashIndex: 0x0 474; SYM-NEXT: TypeChkSectNum: 0x0 475; SYM-NEXT: SymbolAlignmentLog2: 2 476; SYM-NEXT: SymbolType: XTY_SD (0x1) 477; SYM-NEXT: StorageMappingClass: XMC_TC (0x3) 478; SYM-NEXT: StabInfoIndex: 0x0 479; SYM-NEXT: StabSectNum: 0x0 480; SYM-NEXT: } 481; SYM-NEXT: } 482; SYM-NEXT: Symbol { 483; SYM-NEXT: Index: [[#NFA+31]] 484; SYM-NEXT: Name: TGInit 485; SYM-NEXT: Value (RelocatableAddress): 0x94 486; SYM-NEXT: Section: .data 487; SYM-NEXT: Type: 0x0 488; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 489; SYM-NEXT: NumberOfAuxEntries: 1 490; SYM-NEXT: CSECT Auxiliary Entry { 491; SYM-NEXT: Index: [[#NFA+32]] 492; SYM-NEXT: SectionLen: 4 493; SYM-NEXT: ParameterHashIndex: 0x0 494; SYM-NEXT: TypeChkSectNum: 0x0 495; SYM-NEXT: SymbolAlignmentLog2: 2 496; SYM-NEXT: SymbolType: XTY_SD (0x1) 497; SYM-NEXT: StorageMappingClass: XMC_TC (0x3) 498; SYM-NEXT: StabInfoIndex: 0x0 499; SYM-NEXT: StabSectNum: 0x0 500; SYM-NEXT: } 501; SYM-NEXT: } 502; SYM-NEXT: Symbol { 503; SYM-NEXT: Index: [[#NFA+33]] 504; SYM-NEXT: Name: GInit 505; SYM-NEXT: Value (RelocatableAddress): 0x98 506; SYM-NEXT: Section: .data 507; SYM-NEXT: Type: 0x0 508; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 509; SYM-NEXT: NumberOfAuxEntries: 1 510; SYM-NEXT: CSECT Auxiliary Entry { 511; SYM-NEXT: Index: [[#NFA+34]] 512; SYM-NEXT: SectionLen: 4 513; SYM-NEXT: ParameterHashIndex: 0x0 514; SYM-NEXT: TypeChkSectNum: 0x0 515; SYM-NEXT: SymbolAlignmentLog2: 2 516; SYM-NEXT: SymbolType: XTY_SD (0x1) 517; SYM-NEXT: StorageMappingClass: XMC_TC (0x3) 518; SYM-NEXT: StabInfoIndex: 0x0 519; SYM-NEXT: StabSectNum: 0x0 520; SYM-NEXT: } 521; SYM-NEXT: } 522; SYM-NEXT: Symbol { 523; SYM-NEXT: Index: [[#NFA+35]] 524; SYM-NEXT: Name: .tdata 525; SYM-NEXT: Value (RelocatableAddress): 0x0 526; SYM-NEXT: Section: .tdata 527; SYM-NEXT: Type: 0x0 528; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 529; SYM-NEXT: NumberOfAuxEntries: 1 530; SYM-NEXT: CSECT Auxiliary Entry { 531; SYM-NEXT: Index: [[#NFA+36]] 532; SYM-NEXT: SectionLen: 4 533; SYM-NEXT: ParameterHashIndex: 0x0 534; SYM-NEXT: TypeChkSectNum: 0x0 535; SYM-NEXT: SymbolAlignmentLog2: 2 536; SYM-NEXT: SymbolType: XTY_SD (0x1) 537; SYM-NEXT: StorageMappingClass: XMC_TL (0x14) 538; SYM-NEXT: StabInfoIndex: 0x0 539; SYM-NEXT: StabSectNum: 0x0 540; SYM-NEXT: } 541; SYM-NEXT: } 542; SYM-NEXT: Symbol { 543; SYM-NEXT: Index: [[#NFA+37]] 544; SYM-NEXT: Name: TGInit 545; SYM-NEXT: Value (RelocatableAddress): 0x0 546; SYM-NEXT: Section: .tdata 547; SYM-NEXT: Type: 0x0 548; SYM-NEXT: StorageClass: C_EXT (0x2) 549; SYM-NEXT: NumberOfAuxEntries: 1 550; SYM-NEXT: CSECT Auxiliary Entry { 551; SYM-NEXT: Index: [[#NFA+38]] 552; SYM-NEXT: ContainingCsectSymbolIndex: [[#NFA+35]] 553; SYM-NEXT: ParameterHashIndex: 0x0 554; SYM-NEXT: TypeChkSectNum: 0x0 555; SYM-NEXT: SymbolAlignmentLog2: 0 556; SYM-NEXT: SymbolType: XTY_LD (0x2) 557; SYM-NEXT: StorageMappingClass: XMC_TL (0x14) 558; SYM-NEXT: StabInfoIndex: 0x0 559; SYM-NEXT: StabSectNum: 0x0 560; SYM-NEXT: } 561; SYM-NEXT: } 562; SYM-NEXT: Symbol { 563; SYM-NEXT: Index: [[#NFA+39]] 564; SYM-NEXT: Name: TIUninit 565; SYM-NEXT: Value (RelocatableAddress): 0x4 566; SYM-NEXT: Section: .tbss 567; SYM-NEXT: Type: 0x0 568; SYM-NEXT: StorageClass: C_HIDEXT (0x6B) 569; SYM-NEXT: NumberOfAuxEntries: 1 570; SYM-NEXT: CSECT Auxiliary Entry { 571; SYM-NEXT: Index: [[#NFA+40]] 572; SYM-NEXT: SectionLen: 4 573; SYM-NEXT: ParameterHashIndex: 0x0 574; SYM-NEXT: TypeChkSectNum: 0x0 575; SYM-NEXT: SymbolAlignmentLog2: 2 576; SYM-NEXT: SymbolType: XTY_CM (0x3) 577; SYM-NEXT: StorageMappingClass: XMC_UL (0x15) 578; SYM-NEXT: StabInfoIndex: 0x0 579; SYM-NEXT: StabSectNum: 0x0 580; SYM-NEXT: } 581; SYM-NEXT: } 582; SYM-NEXT: ] 583 584; DIS: {{.*}}aix-tls-xcoff-reloc.ll.tmp.o: file format aixcoff-rs6000 585; DIS: Disassembly of section .text: 586; DIS: 00000000 (idx: [[#NFA+7]]) .storesTIUninit: 587; DIS-NEXT: mflr 0 588; DIS-NEXT: stwu 1, -32(1) 589; DIS-NEXT: mr 6, 3 590; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} lwz 3, 0(2) 591; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+25]]) _$TLSML[TC] 592; DIS-NEXT: stw 0, 40(1) 593; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0x0 594; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+1]]) .__tls_get_mod[PR] 595; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} lwz 4, 4(2) 596; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+27]]) TIUninit[TC] 597; DIS-NEXT: stwx 6, 3, 4 598; DIS-NEXT: addi 1, 1, 32 599; DIS-NEXT: lwz 0, 8(1) 600; DIS-NEXT: mtlr 0 601; DIS-NEXT: blr 602; DIS: 00000030 (idx: [[#NFA+9]]) .loadsTGInit: 603; DIS-NEXT: mflr 0 604; DIS-NEXT: stwu 1, -32(1) 605; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} lwz 3, 8(2) 606; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+29]]) .TGInit[TC] 607; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} lwz 4, 12(2) 608; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+31]]) TGInit[TC] 609; DIS-NEXT: stw 0, 40(1) 610; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} bla 0 611; DIS-NEXT: {{0*}}[[#ADDR]]: R_RBA (idx: [[#NFA+3]]) .__tls_get_addr[PR] 612; DIS-NEXT: [[#%x, ADDR:]]: {{.*}} lwz 4, 16(2) 613; DIS-NEXT: {{0*}}[[#ADDR + 2]]: R_TOC (idx: [[#NFA+33]]) GInit[TC] 614; DIS-NEXT: lwz 3, 0(3) 615; DIS-NEXT: lwz 4, 0(4) 616; DIS-NEXT: add 3, 4, 3 617; DIS-NEXT: addi 1, 1, 32 618; DIS-NEXT: lwz 0, 8(1) 619; DIS-NEXT: mtlr 0 620; DIS-NEXT: blr 621; DIS: 00000068 (idx: [[#NFA+13]]) const_ivar: 622; DIS-NEXT: 68: 00 00 00 06 623 624; DIS: Disassembly of section .data: 625; DIS: 0000006c (idx: [[#NFA+17]]) GInit: 626; DIS-NEXT: 6c: 00 00 00 01 627; DIS: 00000070 (idx: [[#NFA+19]]) storesTIUninit[DS]: 628; DIS-NEXT: 70: 00 00 00 00 629; DIS-NEXT: 00000070: R_POS (idx: [[#NFA+7]]) .storesTIUninit 630; DIS-NEXT: 74: 00 00 00 88 631; DIS-NEXT: 00000074: R_POS (idx: [[#NFA+23]]) TOC[TC0] 632; DIS-NEXT: 78: 00 00 00 00 633; DIS: 0000007c (idx: [[#NFA+21]]) loadsTGInit[DS]: 634; DIS-NEXT: 7c: 00 00 00 30 635; DIS-NEXT: 0000007c: R_POS (idx: [[#NFA+9]]) .loadsTGInit 636; DIS-NEXT: 80: 00 00 00 88 637; DIS-NEXT: 00000080: R_POS (idx: [[#NFA+23]]) TOC[TC0] 638; DIS-NEXT: 84: 00 00 00 00 639; DIS: 00000088 (idx: [[#NFA+25]]) _$TLSML[TC]: 640; DIS-NEXT: 88: 00 00 00 00 641; DIS-NEXT: 00000088: R_TLSML (idx: [[#NFA+25]]) _$TLSML[TC] 642; DIS: 0000008c (idx: [[#NFA+27]]) TIUninit[TC]: 643; DIS-NEXT: 8c: 00 00 00 04 644; DIS-NEXT: 0000008c: R_TLS_LD (idx: [[#NFA+39]]) TIUninit[UL] 645; DIS: 00000090 (idx: [[#NFA+29]]) .TGInit[TC]: 646; DIS-NEXT: 90: 00 00 00 00 647; DIS-NEXT: 00000090: R_TLSM (idx: [[#NFA+37]]) TGInit 648; DIS: 00000094 (idx: [[#NFA+31]]) TGInit[TC]: 649; DIS-NEXT: 94: 00 00 00 00 650; DIS-NEXT: 00000094: R_TLS (idx: [[#NFA+37]]) TGInit 651; DIS: 00000098 (idx: [[#NFA+33]]) GInit[TC]: 652; DIS-NEXT: 98: 00 00 00 6c 653; DIS-NEXT: 00000098: R_POS (idx: [[#NFA+17]]) GInit 654 655; DIS: Disassembly of section .tdata: 656; DIS: 00000000 (idx: [[#NFA+37]]) TGInit: 657; DIS-NEXT: 0: 00 00 00 01 658 659; DIS: Disassembly of section .tbss: 660; DIS: 00000004 (idx: [[#NFA+39]]) TIUninit[UL]: 661; DIS-NEXT: ... 662 663attributes #0 = { nofree norecurse nounwind willreturn writeonly "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="pwr4" "target-features"="-altivec,-bpermd,-crypto,-direct-move,-extdiv,-float128,-htm,-mma,-paired-vector-memops,-power10-vector,-power8-vector,-power9-vector,-spe,-vsx" } 664attributes #1 = { norecurse nounwind readonly willreturn "frame-pointer"="none" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="pwr4" "target-features"="-altivec,-bpermd,-crypto,-direct-move,-extdiv,-float128,-htm,-mma,-paired-vector-memops,-power10-vector,-power8-vector,-power9-vector,-spe,-vsx" } 665