# Source file compiled:
##include <iostream>
# #include <typeinfo>
#template <class A>
#void foo(A variable) {
#  std::cout << "foo is " << typeid(A).name() << "\n";
#}
#int main () {
#  char x = 'x';
#  int y = 1;
#  foo(x);
#  foo(y);
#  return 0;
#}

RUN: llvm-readobj -g %p/Inputs/elf-groups.x86_64 \
RUN:   | FileCheck %s
RUN: llvm-readobj -g -elf-output-style=GNU %p/Inputs/elf-groups.x86_64 \
RUN:   | FileCheck --check-prefix="GNU" %s
CHECK:         Groups {
CHECK-NEXT:      Group {
CHECK-NEXT:        Name: .group (92)
CHECK-NEXT:        Index: 1
CHECK-NEXT:        Type: COMDAT (0x1)
CHECK-NEXT:        Signature: _Z3fooIcEvT_
CHECK-NEXT:        Section(s) in group [
CHECK-NEXT:          .text._Z3fooIcEvT_ (10)
CHECK-NEXT:          .rela.text._Z3fooIcEvT_ (11)
CHECK-NEXT:        ]
CHECK-NEXT:      }
CHECK-NEXT:      Group {
CHECK-NEXT:        Name: .group (92)
CHECK-NEXT:        Index: 2
CHECK-NEXT:        Type: COMDAT (0x1)
CHECK-NEXT:        Signature: _Z3fooIiEvT_
CHECK-NEXT:        Section(s) in group [
CHECK-NEXT:          .text._Z3fooIiEvT_ (12)
CHECK-NEXT:          .rela.text._Z3fooIiEvT_ (13)
CHECK-NEXT:        ]
CHECK-NEXT:      }

GNU:COMDAT group section [    1] `.group' [_Z3fooIcEvT_] contains 2 sections:
GNU-NEXT:   [Index]    Name
GNU-NEXT:   [   10]   .text._Z3fooIcEvT_
GNU-NEXT:   [   11]   .rela.text._Z3fooIcEvT_
GNU:COMDAT group section [    2] `.group' [_Z3fooIiEvT_] contains 2 sections:
GNU-NEXT:   [Index]    Name
GNU-NEXT:   [   12]   .text._Z3fooIiEvT_
GNU-NEXT:   [   13]   .rela.text._Z3fooIiEvT_
GNU:COMDAT group section [    3] `.group' [_ZNKSt9type_info4nameEv] contains 1 sections:
GNU-NEXT:   [Index]    Name
GNU-NEXT:   [   14]   .text._ZNKSt9type_info4nameEv
