xref: /llvm-project/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker=parallel -f -o %t1.o -oso-prepend-path=%p/../ -y %s
2b61ac4a8Savl-llvm# RUN: llvm-dwarfdump --verify %t1.o | FileCheck -check-prefixes=VERIFY %s
3*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker=parallel -f -o %t2.o -oso-prepend-path=%p/../ -y %s
4*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker=parallel -f -o %t3.o -oso-prepend-path=%p/../ -y %s \
5b61ac4a8Savl-llvm# RUN:   --num-threads 1
6*f1fdfe68SAlexey Lapshin# RUN: dsymutil --linker=parallel -f -o %t4.o -oso-prepend-path=%p/../ -y %s \
7b61ac4a8Savl-llvm# RUN:   --num-threads 3
8b61ac4a8Savl-llvm# ### Following comparision will fail if files do not match
9b61ac4a8Savl-llvm# RUN: diff %t1.o %t2.o
10b61ac4a8Savl-llvm# RUN: diff %t1.o %t3.o
11b61ac4a8Savl-llvm# RUN: diff %t1.o %t4.o
12b61ac4a8Savl-llvm
13b61ac4a8Savl-llvm# This test checks that generated output does not differ between runs.
14b61ac4a8Savl-llvm#
15b61ac4a8Savl-llvm# To recreate a test compile following example:
16b61ac4a8Savl-llvm#
17b61ac4a8Savl-llvm# main.cpp:
18b61ac4a8Savl-llvm#
19b61ac4a8Savl-llvm# include <string>
20b61ac4a8Savl-llvm#
21b61ac4a8Savl-llvm# void PrintSize ( const std::string& String );
22b61ac4a8Savl-llvm# void PrintNewString ( const std::string& String );
23b61ac4a8Savl-llvm# void PrintNewString2 ( const char* String );
24b61ac4a8Savl-llvm#
25b61ac4a8Savl-llvm# int main ( void ) {
26b61ac4a8Savl-llvm#
27b61ac4a8Savl-llvm#   PrintSize("hello");
28b61ac4a8Savl-llvm#   PrintNewString("hello");
29b61ac4a8Savl-llvm#   PrintNewString2("hello");
30b61ac4a8Savl-llvm#   printf("\n");
31b61ac4a8Savl-llvm#
32b61ac4a8Savl-llvm#   return 0;
33b61ac4a8Savl-llvm# }
34b61ac4a8Savl-llvm#
35b61ac4a8Savl-llvm# foo1.cpp:
36b61ac4a8Savl-llvm#
37b61ac4a8Savl-llvm# #include <string>
38b61ac4a8Savl-llvm#
39b61ac4a8Savl-llvm# void PrintSize ( const std::string& String ) {
40b61ac4a8Savl-llvm#   printf("\n String size %lu", String.size() );
41b61ac4a8Savl-llvm# };
42b61ac4a8Savl-llvm#
43b61ac4a8Savl-llvm# foo2.cpp:
44b61ac4a8Savl-llvm#
45b61ac4a8Savl-llvm# #include <string>
46b61ac4a8Savl-llvm#
47b61ac4a8Savl-llvm# void PrintNewString ( const std::string& String ) {
48b61ac4a8Savl-llvm#  std::string NewString(String);
49b61ac4a8Savl-llvm#  NewString += "++";
50b61ac4a8Savl-llvm#  printf("\n String %s", NewString.c_str());
51b61ac4a8Savl-llvm#};
52b61ac4a8Savl-llvm#
53b61ac4a8Savl-llvm# foo3.cpp:
54b61ac4a8Savl-llvm# #include <string>
55b61ac4a8Savl-llvm#
56b61ac4a8Savl-llvm# void PrintNewString2 ( const char* String ) {
57b61ac4a8Savl-llvm#   std::string NewString(String);
58b61ac4a8Savl-llvm#   NewString += "++";
59b61ac4a8Savl-llvm#   printf("\n String2 %s", NewString.c_str());
60b61ac4a8Savl-llvm# };
61b61ac4a8Savl-llvm#
62b61ac4a8Savl-llvm# with clang++ -O -fno-inline -g -std=c++11
63b61ac4a8Savl-llvm
64b61ac4a8Savl-llvm---
65b61ac4a8Savl-llvmtriple:          'x86_64-apple-darwin'
66b61ac4a8Savl-llvmobjects:
67b61ac4a8Savl-llvm  - filename:        'Inputs/String/foo1.o'
68b61ac4a8Savl-llvm    timestamp:       1638904719
69b61ac4a8Savl-llvm    symbols:
70b61ac4a8Savl-llvm      - { sym: __ZNKSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EE5__getEv, objAddr: 0x00000000000000A0, binAddr: 0x0000000100000B10, size: 0x00000009 }
71b61ac4a8Savl-llvm      - { sym: __ZNKSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_E5firstEv, objAddr: 0x0000000000000090, binAddr: 0x0000000100000B00, size: 0x00000010 }
72b61ac4a8Savl-llvm      - { sym: __Z9PrintSizeRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE, objAddr: 0x0000000000000000, binAddr: 0x0000000100000A70, size: 0x00000020 }
73b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE15__get_long_sizeEv, objAddr: 0x0000000000000060, binAddr: 0x0000000100000AD0, size: 0x00000010 }
74b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4sizeEv, objAddr: 0x0000000000000020, binAddr: 0x0000000100000A90, size: 0x00000030 }
75b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE16__get_short_sizeEv, objAddr: 0x0000000000000070, binAddr: 0x0000000100000AE0, size: 0x00000020 }
76b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__is_longEv, objAddr: 0x0000000000000050, binAddr: 0x0000000100000AC0, size: 0x00000010 }
77b61ac4a8Savl-llvm  - filename:        'Inputs/String/foo2.o'
78b61ac4a8Savl-llvm    timestamp:       1638904723
79b61ac4a8Savl-llvm    symbols:
80b61ac4a8Savl-llvm      - { sym: __ZNSt3__112__to_addressIKcEEPT_S3_, objAddr: 0x00000000000000E0, binAddr: 0x0000000100000BD0, size: 0x00000010 }
81b61ac4a8Savl-llvm      - { sym: GCC_except_table0, objAddr: 0x000000000000016C, binAddr: 0x0000000100000F24, size: 0x00000000 }
82b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE18__get_long_pointerEv, objAddr: 0x0000000000000120, binAddr: 0x0000000100000C10, size: 0x00000010 }
83b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE19__get_short_pointerEv, objAddr: 0x0000000000000130, binAddr: 0x0000000100000C20, size: 0x00000020 }
84b61ac4a8Savl-llvm      - { sym: __ZNSt3__114pointer_traitsIPKcE10pointer_toERS1_, objAddr: 0x0000000000000150, binAddr: 0x0000000100000C40, size: 0x00000010 }
85b61ac4a8Savl-llvm      - { sym: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEpLEPKc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000B90, size: 0x00000010 }
86b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv, objAddr: 0x00000000000000C0, binAddr: 0x0000000100000BB0, size: 0x00000020 }
87b61ac4a8Savl-llvm      - { sym: __Z14PrintNewStringRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE, objAddr: 0x0000000000000000, binAddr: 0x0000000100000B20, size: 0x00000070 }
88b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv, objAddr: 0x0000000000000080, binAddr: 0x0000000100000BA1, size: 0x00000010 }
89b61ac4a8Savl-llvm      - { sym: __ZNSt3__19addressofIKcEEPT_RS2_, objAddr: 0x0000000000000160, binAddr: 0x0000000100000C50, size: 0x00000009 }
90b61ac4a8Savl-llvm      - { sym: __ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE13__get_pointerEv, objAddr: 0x00000000000000F0, binAddr: 0x0000000100000BE0, size: 0x00000030 }
91b61ac4a8Savl-llvm  - filename:        'Inputs/String/foo3.o'
92b61ac4a8Savl-llvm    timestamp:       1638904727
93b61ac4a8Savl-llvm    symbols:
94b61ac4a8Savl-llvm      - { sym: __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC2INS_18__default_init_tagESA_EEOT_OT0_, objAddr: 0x0000000000000130, binAddr: 0x0000000100000D40, size: 0x00000040 }
95b61ac4a8Savl-llvm      - { sym: __ZNSt3__117__compressed_pairINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repES5_EC1INS_18__default_init_tagESA_EEOT_OT0_, objAddr: 0x0000000000000110, binAddr: 0x0000000100000D20, size: 0x00000010 }
96b61ac4a8Savl-llvm      - { sym: __ZNSt3__111char_traitsIcE6lengthEPKc, objAddr: 0x0000000000000120, binAddr: 0x0000000100000D50, size: 0x00000010 }
97b61ac4a8Savl-llvm      - { sym: __ZNSt3__116__non_trivial_ifILb1ENS_9allocatorIcEEEC2Ev, objAddr: 0x00000000000001B0, binAddr: 0x0000000100000DC0, size: 0x00000010 }
98b61ac4a8Savl-llvm      - { sym: __ZNSt3__17forwardINS_18__default_init_tagEEEOT_RNS_16remove_referenceIS2_E4typeE, objAddr: 0x0000000000000170, binAddr: 0x0000000100000D80, size: 0x00000010 }
99b61ac4a8Savl-llvm      - { sym: __ZNSt3__122__compressed_pair_elemINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5__repELi0ELb0EEC2ENS_18__default_init_tagE, objAddr: 0x0000000000000180, binAddr: 0x0000000100000D90, size: 0x00000010 }
100b61ac4a8Savl-llvm      - { sym: __ZNSt3__122__compressed_pair_elemINS_9allocatorIcEELi1ELb1EEC2ENS_18__default_init_tagE, objAddr: 0x0000000000000190, binAddr: 0x0000000100000DA0, size: 0x00000010 }
101b61ac4a8Savl-llvm      - { sym: __ZNSt3__19allocatorIcEC2Ev, objAddr: 0x00000000000001A0, binAddr: 0x0000000100000DB0, size: 0x00000010 }
102b61ac4a8Savl-llvm      - { sym: __Z15PrintNewString2PKc, objAddr: 0x0000000000000000, binAddr: 0x0000000100000C60, size: 0x00000070 }
103b61ac4a8Savl-llvm      - { sym: GCC_except_table0, objAddr: 0x000000000000026C, binAddr: 0x0000000100000F34, size: 0x00000000 }
104b61ac4a8Savl-llvm      - { sym: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1IDnEEPKc, objAddr: 0x0000000000000070, binAddr: 0x0000000100000CD0, size: 0x00000010 }
105b61ac4a8Savl-llvm      - { sym: __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2IDnEEPKc, objAddr: 0x00000000000000D0, binAddr: 0x0000000100000CE0, size: 0x00000040 }
106b61ac4a8Savl-llvm  - filename:        'Inputs/String/main.o'
107b61ac4a8Savl-llvm    timestamp:       1638904734
108b61ac4a8Savl-llvm    symbols:
109b61ac4a8Savl-llvm      - { sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000DD0, size: 0x00000090 }
110b61ac4a8Savl-llvm      - { sym: GCC_except_table0, objAddr: 0x0000000000000188, binAddr: 0x0000000100000F44, size: 0x00000000 }
111b61ac4a8Savl-llvm...
112b61ac4a8Savl-llvm
113b61ac4a8Savl-llvmVERIFY: Verifying .debug_abbrev...
114b61ac4a8Savl-llvmVERIFY: Verifying .debug_info Unit Header Chain...
115b61ac4a8Savl-llvmVERIFY: Verifying .debug_types Unit Header Chain...
116b61ac4a8Savl-llvmVERIFY: Verifying .apple_names...
117b61ac4a8Savl-llvmVERIFY: Verifying .apple_types...
118b61ac4a8Savl-llvmVERIFY: Verifying .apple_namespaces...
119b61ac4a8Savl-llvmVERIFY: Verifying .apple_objc...
120b61ac4a8Savl-llvmVERIFY: No errors.
121