blob: 9d13900a214b71f2d7426d5370a5f2e174c46093 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# 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: Link: 23
CHECK-NEXT: Info: 17
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: Link: 23
CHECK-NEXT: Info: 18
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
|