1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s 2 3// Test that we produce the group sections and that they are a the beginning 4// of the file. 5 6// CHECK: # Section 1 7// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' 8// CHECK-NEXT: ('sh_type', 0x00000011) 9// CHECK-NEXT: ('sh_flags', 0x0000000000000000) 10// CHECK-NEXT: ('sh_addr', 0x0000000000000000) 11// CHECK-NEXT: ('sh_offset', 0x0000000000000040) 12// CHECK-NEXT: ('sh_size', 0x000000000000000c) 13// CHECK-NEXT: ('sh_link', 0x0000000d) 14// CHECK-NEXT: ('sh_info', 0x00000001) 15// CHECK-NEXT: ('sh_addralign', 0x0000000000000004) 16// CHECK-NEXT: ('sh_entsize', 0x0000000000000004) 17// CHECK-NEXT: ), 18// CHECK-NEXT: # Section 2 19// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' 20// CHECK-NEXT: ('sh_type', 0x00000011) 21// CHECK-NEXT: ('sh_flags', 0x0000000000000000) 22// CHECK-NEXT: ('sh_addr', 0x0000000000000000) 23// CHECK-NEXT: ('sh_offset', 0x000000000000004c) 24// CHECK-NEXT: ('sh_size', 0x0000000000000008) 25// CHECK-NEXT: ('sh_link', 0x0000000d) 26// CHECK-NEXT: ('sh_info', 0x00000002) 27// CHECK-NEXT: ('sh_addralign', 0x0000000000000004) 28// CHECK-NEXT: ('sh_entsize', 0x0000000000000004) 29// CHECK-NEXT: ), 30// CHECK-NEXT: # Section 3 31// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' 32// CHECK-NEXT: ('sh_type', 0x00000011) 33// CHECK-NEXT: ('sh_flags', 0x0000000000000000) 34// CHECK-NEXT: ('sh_addr', 0x0000000000000000) 35// CHECK-NEXT: ('sh_offset', 0x0000000000000054) 36// CHECK-NEXT: ('sh_size', 0x0000000000000008) 37// CHECK-NEXT: ('sh_link', 0x0000000d) 38// CHECK-NEXT: ('sh_info', 0x0000000d) 39// CHECK-NEXT: ('sh_addralign', 0x0000000000000004) 40// CHECK-NEXT: ('sh_entsize', 0x0000000000000004) 41// CHECK-NEXT: ), 42 43// Test that g1 and g2 are local, but g3 is an undefined global. 44 45// CHECK: # Symbol 1 46// CHECK-NEXT: (('st_name', 0x00000001) # 'g1' 47// CHECK-NEXT: ('st_bind', 0x0) 48// CHECK-NEXT: ('st_type', 0x0) 49// CHECK-NEXT: ('st_other', 0x00) 50// CHECK-NEXT: ('st_shndx', 0x0007) 51// CHECK-NEXT: ('st_value', 0x0000000000000000) 52// CHECK-NEXT: ('st_size', 0x0000000000000000) 53// CHECK-NEXT: ), 54// CHECK-NEXT: # Symbol 2 55// CHECK-NEXT: (('st_name', 0x00000004) # 'g2' 56// CHECK-NEXT: ('st_bind', 0x0) 57// CHECK-NEXT: ('st_type', 0x0) 58// CHECK-NEXT: ('st_other', 0x00) 59// CHECK-NEXT: ('st_shndx', 0x0002) 60// CHECK-NEXT: ('st_value', 0x0000000000000000) 61// CHECK-NEXT: ('st_size', 0x0000000000000000) 62// CHECK-NEXT: ), 63 64// CHECK: # Symbol 13 65// CHECK-NEXT: (('st_name', 0x00000007) # 'g3' 66// CHECK-NEXT: ('st_bind', 0x1) 67// CHECK-NEXT: ('st_type', 0x0) 68// CHECK-NEXT: ('st_other', 0x00) 69// CHECK-NEXT: ('st_shndx', 0x0000) 70// CHECK-NEXT: ('st_value', 0x0000000000000000) 71// CHECK-NEXT: ('st_size', 0x0000000000000000) 72// CHECK-NEXT: ), 73 74 75 .section .foo,"axG",@progbits,g1,comdat 76g1: 77 nop 78 79 .section .bar,"axG",@progbits,g1,comdat 80 nop 81 82 .section .zed,"axG",@progbits,g2,comdat 83 nop 84 85 .section .baz,"axG",@progbits,g3,comdat 86 .long g3 87