pf2 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -2
  3. data/Cargo.lock +650 -0
  4. data/Cargo.toml +3 -0
  5. data/README.md +110 -13
  6. data/Rakefile +8 -0
  7. data/crates/backtrace-sys2/.gitignore +1 -0
  8. data/crates/backtrace-sys2/Cargo.toml +9 -0
  9. data/crates/backtrace-sys2/build.rs +48 -0
  10. data/crates/backtrace-sys2/src/lib.rs +5 -0
  11. data/crates/backtrace-sys2/src/libbacktrace/.gitignore +15 -0
  12. data/crates/backtrace-sys2/src/libbacktrace/Isaac.Newton-Opticks.txt +9286 -0
  13. data/crates/backtrace-sys2/src/libbacktrace/LICENSE +29 -0
  14. data/crates/backtrace-sys2/src/libbacktrace/Makefile.am +623 -0
  15. data/crates/backtrace-sys2/src/libbacktrace/Makefile.in +2666 -0
  16. data/crates/backtrace-sys2/src/libbacktrace/README.md +36 -0
  17. data/crates/backtrace-sys2/src/libbacktrace/aclocal.m4 +864 -0
  18. data/crates/backtrace-sys2/src/libbacktrace/alloc.c +167 -0
  19. data/crates/backtrace-sys2/src/libbacktrace/allocfail.c +136 -0
  20. data/crates/backtrace-sys2/src/libbacktrace/allocfail.sh +104 -0
  21. data/crates/backtrace-sys2/src/libbacktrace/atomic.c +113 -0
  22. data/crates/backtrace-sys2/src/libbacktrace/backtrace-supported.h.in +66 -0
  23. data/crates/backtrace-sys2/src/libbacktrace/backtrace.c +129 -0
  24. data/crates/backtrace-sys2/src/libbacktrace/backtrace.h +189 -0
  25. data/crates/backtrace-sys2/src/libbacktrace/btest.c +501 -0
  26. data/crates/backtrace-sys2/src/libbacktrace/compile +348 -0
  27. data/crates/backtrace-sys2/src/libbacktrace/config/enable.m4 +38 -0
  28. data/crates/backtrace-sys2/src/libbacktrace/config/lead-dot.m4 +31 -0
  29. data/crates/backtrace-sys2/src/libbacktrace/config/libtool.m4 +7436 -0
  30. data/crates/backtrace-sys2/src/libbacktrace/config/ltoptions.m4 +369 -0
  31. data/crates/backtrace-sys2/src/libbacktrace/config/ltsugar.m4 +123 -0
  32. data/crates/backtrace-sys2/src/libbacktrace/config/ltversion.m4 +23 -0
  33. data/crates/backtrace-sys2/src/libbacktrace/config/lt~obsolete.m4 +98 -0
  34. data/crates/backtrace-sys2/src/libbacktrace/config/multi.m4 +68 -0
  35. data/crates/backtrace-sys2/src/libbacktrace/config/override.m4 +117 -0
  36. data/crates/backtrace-sys2/src/libbacktrace/config/unwind_ipinfo.m4 +37 -0
  37. data/crates/backtrace-sys2/src/libbacktrace/config/warnings.m4 +227 -0
  38. data/crates/backtrace-sys2/src/libbacktrace/config.guess +1700 -0
  39. data/crates/backtrace-sys2/src/libbacktrace/config.h.in +182 -0
  40. data/crates/backtrace-sys2/src/libbacktrace/config.sub +1885 -0
  41. data/crates/backtrace-sys2/src/libbacktrace/configure +15740 -0
  42. data/crates/backtrace-sys2/src/libbacktrace/configure.ac +613 -0
  43. data/crates/backtrace-sys2/src/libbacktrace/dwarf.c +4402 -0
  44. data/crates/backtrace-sys2/src/libbacktrace/edtest.c +120 -0
  45. data/crates/backtrace-sys2/src/libbacktrace/edtest2.c +43 -0
  46. data/crates/backtrace-sys2/src/libbacktrace/elf.c +7443 -0
  47. data/crates/backtrace-sys2/src/libbacktrace/fileline.c +407 -0
  48. data/crates/backtrace-sys2/src/libbacktrace/filenames.h +52 -0
  49. data/crates/backtrace-sys2/src/libbacktrace/filetype.awk +13 -0
  50. data/crates/backtrace-sys2/src/libbacktrace/install-debuginfo-for-buildid.sh.in +65 -0
  51. data/crates/backtrace-sys2/src/libbacktrace/install-sh +501 -0
  52. data/crates/backtrace-sys2/src/libbacktrace/instrumented_alloc.c +114 -0
  53. data/crates/backtrace-sys2/src/libbacktrace/internal.h +389 -0
  54. data/crates/backtrace-sys2/src/libbacktrace/libtool.m4 +7436 -0
  55. data/crates/backtrace-sys2/src/libbacktrace/ltmain.sh +8636 -0
  56. data/crates/backtrace-sys2/src/libbacktrace/ltoptions.m4 +369 -0
  57. data/crates/backtrace-sys2/src/libbacktrace/ltsugar.m4 +123 -0
  58. data/crates/backtrace-sys2/src/libbacktrace/ltversion.m4 +23 -0
  59. data/crates/backtrace-sys2/src/libbacktrace/lt~obsolete.m4 +98 -0
  60. data/crates/backtrace-sys2/src/libbacktrace/macho.c +1355 -0
  61. data/crates/backtrace-sys2/src/libbacktrace/missing +215 -0
  62. data/crates/backtrace-sys2/src/libbacktrace/mmap.c +331 -0
  63. data/crates/backtrace-sys2/src/libbacktrace/mmapio.c +110 -0
  64. data/crates/backtrace-sys2/src/libbacktrace/move-if-change +83 -0
  65. data/crates/backtrace-sys2/src/libbacktrace/mtest.c +410 -0
  66. data/crates/backtrace-sys2/src/libbacktrace/nounwind.c +66 -0
  67. data/crates/backtrace-sys2/src/libbacktrace/pecoff.c +957 -0
  68. data/crates/backtrace-sys2/src/libbacktrace/posix.c +104 -0
  69. data/crates/backtrace-sys2/src/libbacktrace/print.c +92 -0
  70. data/crates/backtrace-sys2/src/libbacktrace/read.c +110 -0
  71. data/crates/backtrace-sys2/src/libbacktrace/simple.c +108 -0
  72. data/crates/backtrace-sys2/src/libbacktrace/sort.c +108 -0
  73. data/crates/backtrace-sys2/src/libbacktrace/state.c +72 -0
  74. data/crates/backtrace-sys2/src/libbacktrace/stest.c +137 -0
  75. data/crates/backtrace-sys2/src/libbacktrace/test-driver +148 -0
  76. data/crates/backtrace-sys2/src/libbacktrace/test_format.c +55 -0
  77. data/crates/backtrace-sys2/src/libbacktrace/testlib.c +234 -0
  78. data/crates/backtrace-sys2/src/libbacktrace/testlib.h +110 -0
  79. data/crates/backtrace-sys2/src/libbacktrace/ttest.c +161 -0
  80. data/crates/backtrace-sys2/src/libbacktrace/unittest.c +92 -0
  81. data/crates/backtrace-sys2/src/libbacktrace/unknown.c +65 -0
  82. data/crates/backtrace-sys2/src/libbacktrace/xcoff.c +1606 -0
  83. data/crates/backtrace-sys2/src/libbacktrace/xztest.c +508 -0
  84. data/crates/backtrace-sys2/src/libbacktrace/zstdtest.c +523 -0
  85. data/crates/backtrace-sys2/src/libbacktrace/ztest.c +541 -0
  86. data/ext/pf2/Cargo.toml +25 -0
  87. data/ext/pf2/build.rs +3 -0
  88. data/ext/pf2/extconf.rb +6 -1
  89. data/ext/pf2/src/backtrace.rs +126 -0
  90. data/ext/pf2/src/lib.rs +15 -0
  91. data/ext/pf2/src/profile.rs +65 -0
  92. data/ext/pf2/src/profile_serializer.rs +204 -0
  93. data/ext/pf2/src/ringbuffer.rs +152 -0
  94. data/ext/pf2/src/ruby_init.rs +74 -0
  95. data/ext/pf2/src/sample.rs +66 -0
  96. data/ext/pf2/src/siginfo_t.c +5 -0
  97. data/ext/pf2/src/signal_scheduler/configuration.rs +31 -0
  98. data/ext/pf2/src/signal_scheduler/timer_installer.rs +199 -0
  99. data/ext/pf2/src/signal_scheduler.rs +311 -0
  100. data/ext/pf2/src/timer_thread_scheduler.rs +319 -0
  101. data/ext/pf2/src/util.rs +30 -0
  102. data/lib/pf2/cli.rb +1 -1
  103. data/lib/pf2/reporter.rb +48 -16
  104. data/lib/pf2/version.rb +1 -1
  105. data/lib/pf2.rb +20 -5
  106. metadata +128 -5
  107. data/ext/pf2/pf2.c +0 -246
@@ -0,0 +1,29 @@
1
+ # Copyright (C) 2012-2016 Free Software Foundation, Inc.
2
+
3
+ # Redistribution and use in source and binary forms, with or without
4
+ # modification, are permitted provided that the following conditions are
5
+ # met:
6
+
7
+ # (1) Redistributions of source code must retain the above copyright
8
+ # notice, this list of conditions and the following disclaimer.
9
+
10
+ # (2) Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in
12
+ # the documentation and/or other materials provided with the
13
+ # distribution.
14
+
15
+ # (3) The name of the author may not be used to
16
+ # endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+
19
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20
+ # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
23
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
+ # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,623 @@
1
+ # Makefile.am -- Backtrace Makefile.
2
+ # Copyright (C) 2012-2021 Free Software Foundation, Inc.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are
6
+ # met:
7
+
8
+ # (1) Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # (2) Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # (3) The name of the author may not be used to
17
+ # endorse or promote products derived from this software without
18
+ # specific prior written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21
+ # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
24
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
+ # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29
+ # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ # POSSIBILITY OF SUCH DAMAGE.
31
+
32
+ ACLOCAL_AMFLAGS = -I config
33
+
34
+ AM_CPPFLAGS =
35
+
36
+ AM_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) $(PIC_FLAG)
37
+
38
+ include_HEADERS = backtrace.h backtrace-supported.h
39
+
40
+ lib_LTLIBRARIES = libbacktrace.la
41
+
42
+ libbacktrace_la_SOURCES = \
43
+ backtrace.h \
44
+ atomic.c \
45
+ dwarf.c \
46
+ fileline.c \
47
+ internal.h \
48
+ posix.c \
49
+ print.c \
50
+ sort.c \
51
+ state.c
52
+
53
+ BACKTRACE_FILES = \
54
+ backtrace.c \
55
+ simple.c \
56
+ nounwind.c
57
+
58
+ FORMAT_FILES = \
59
+ elf.c \
60
+ macho.c \
61
+ pecoff.c \
62
+ unknown.c \
63
+ xcoff.c
64
+
65
+ VIEW_FILES = \
66
+ read.c \
67
+ mmapio.c
68
+
69
+ ALLOC_FILES = \
70
+ alloc.c \
71
+ mmap.c
72
+
73
+ EXTRA_libbacktrace_la_SOURCES = \
74
+ $(BACKTRACE_FILES) \
75
+ $(FORMAT_FILES) \
76
+ $(VIEW_FILES) \
77
+ $(ALLOC_FILES)
78
+
79
+ libbacktrace_la_LIBADD = \
80
+ $(BACKTRACE_FILE) \
81
+ $(FORMAT_FILE) \
82
+ $(VIEW_FILE) \
83
+ $(ALLOC_FILE)
84
+
85
+ libbacktrace_la_DEPENDENCIES = $(libbacktrace_la_LIBADD)
86
+
87
+ # Testsuite.
88
+
89
+ # Add a test to this variable if you want it to be built as a program,
90
+ # with SOURCES, etc.
91
+ check_PROGRAMS =
92
+
93
+ # Add a test to this variable if you want it to be run.
94
+ TESTS =
95
+
96
+ # Add a test to this variable if you want it to be built as a Makefile
97
+ # target and run.
98
+ MAKETESTS =
99
+
100
+ # Add a test to this variable if you want it to be built as a program,
101
+ # with SOURCES, etc., and run.
102
+ BUILDTESTS =
103
+
104
+ # Add a file to this variable if you want it to be built for testing.
105
+ check_DATA =
106
+
107
+ # Flags to use when compiling test programs.
108
+ libbacktrace_TEST_CFLAGS = $(EXTRA_FLAGS) $(WARN_FLAGS) -g
109
+
110
+ if USE_DSYMUTIL
111
+
112
+ %.dSYM: %
113
+ $(DSYMUTIL) $<
114
+
115
+ endif USE_DSYMUTIL
116
+
117
+ if NATIVE
118
+ check_LTLIBRARIES = libbacktrace_alloc.la
119
+
120
+ libbacktrace_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
121
+ libbacktrace_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) read.lo alloc.lo
122
+
123
+ libbacktrace_alloc_la_DEPENDENCIES = $(libbacktrace_alloc_la_LIBADD)
124
+
125
+ check_LTLIBRARIES += libbacktrace_noformat.la
126
+
127
+ libbacktrace_noformat_la_SOURCES = $(libbacktrace_la_SOURCES)
128
+ libbacktrace_noformat_la_LIBADD = $(BACKTRACE_FILE) $(VIEW_FILE) $(ALLOC_FILE)
129
+
130
+ libbacktrace_noformat_la_DEPENDENCIES = $(libbacktrace_noformat_la_LIBADD)
131
+
132
+ if HAVE_ELF
133
+ if HAVE_OBJCOPY_DEBUGLINK
134
+
135
+ TEST_BUILD_ID_DIR=$(abs_builddir)/usr/lib/debug/.build-id/
136
+
137
+ check_LTLIBRARIES += libbacktrace_elf_for_test.la
138
+
139
+ libbacktrace_elf_for_test_la_SOURCES = $(libbacktrace_la_SOURCES)
140
+ libbacktrace_elf_for_test_la_LIBADD = $(BACKTRACE_FILE) elf_for_test.lo \
141
+ $(VIEW_FILE) $(ALLOC_FILE)
142
+
143
+ elf_for_test.c: elf.c
144
+ SEARCH='^#define SYSTEM_BUILD_ID_DIR.*$$'; \
145
+ REPLACE="#define SYSTEM_BUILD_ID_DIR \"$(TEST_BUILD_ID_DIR)\""; \
146
+ $(SED) "s%$$SEARCH%$$REPLACE%" \
147
+ $< \
148
+ > $@.tmp
149
+ mv $@.tmp $@
150
+
151
+ endif HAVE_OBJCOPY_DEBUGLINK
152
+ endif HAVE_ELF
153
+
154
+ elf_%.c: elf.c
155
+ SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \
156
+ REPLACE='#undef BACKTRACE_ELF_SIZE\
157
+ #define BACKTRACE_ELF_SIZE'; \
158
+ $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
159
+ $< \
160
+ > $@.tmp
161
+ mv $@.tmp $@
162
+
163
+ xcoff_%.c: xcoff.c
164
+ SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \
165
+ REPLACE='#undef BACKTRACE_XCOFF_SIZE\
166
+ #define BACKTRACE_XCOFF_SIZE'; \
167
+ $(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
168
+ $< \
169
+ > $@.tmp
170
+ mv $@.tmp $@
171
+
172
+ test_elf_32_SOURCES = test_format.c testlib.c
173
+ test_elf_32_CFLAGS = $(libbacktrace_TEST_CFLAGS)
174
+ test_elf_32_LDADD = libbacktrace_noformat.la elf_32.lo
175
+
176
+ BUILDTESTS += test_elf_32
177
+
178
+ test_elf_64_SOURCES = test_format.c testlib.c
179
+ test_elf_64_CFLAGS = $(libbacktrace_TEST_CFLAGS)
180
+ test_elf_64_LDADD = libbacktrace_noformat.la elf_64.lo
181
+
182
+ BUILDTESTS += test_elf_64
183
+
184
+ test_macho_SOURCES = test_format.c testlib.c
185
+ test_macho_CFLAGS = $(libbacktrace_TEST_CFLAGS)
186
+ test_macho_LDADD = libbacktrace_noformat.la macho.lo
187
+
188
+ BUILDTESTS += test_macho
189
+
190
+ test_xcoff_32_SOURCES = test_format.c testlib.c
191
+ test_xcoff_32_CFLAGS = $(libbacktrace_TEST_CFLAGS)
192
+ test_xcoff_32_LDADD = libbacktrace_noformat.la xcoff_32.lo
193
+
194
+ BUILDTESTS += test_xcoff_32
195
+
196
+ test_xcoff_64_SOURCES = test_format.c testlib.c
197
+ test_xcoff_64_CFLAGS = $(libbacktrace_TEST_CFLAGS)
198
+ test_xcoff_64_LDADD = libbacktrace_noformat.la xcoff_64.lo
199
+
200
+ BUILDTESTS += test_xcoff_64
201
+
202
+ test_pecoff_SOURCES = test_format.c testlib.c
203
+ test_pecoff_CFLAGS = $(libbacktrace_TEST_CFLAGS)
204
+ test_pecoff_LDADD = libbacktrace_noformat.la pecoff.lo
205
+
206
+ BUILDTESTS += test_pecoff
207
+
208
+ test_unknown_SOURCES = test_format.c testlib.c
209
+ test_unknown_CFLAGS = $(libbacktrace_TEST_CFLAGS)
210
+ test_unknown_LDADD = libbacktrace_noformat.la unknown.lo
211
+
212
+ BUILDTESTS += test_unknown
213
+
214
+ unittest_SOURCES = unittest.c testlib.c
215
+ unittest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
216
+ unittest_LDADD = libbacktrace.la
217
+
218
+ BUILDTESTS += unittest
219
+
220
+ unittest_alloc_SOURCES = $(unittest_SOURCES)
221
+ unittest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
222
+ unittest_alloc_LDADD = libbacktrace_alloc.la
223
+
224
+ BUILDTESTS += unittest_alloc
225
+
226
+ check_LTLIBRARIES += libbacktrace_instrumented_alloc.la
227
+
228
+ libbacktrace_instrumented_alloc_la_SOURCES = $(libbacktrace_la_SOURCES)
229
+ libbacktrace_instrumented_alloc_la_LIBADD = $(BACKTRACE_FILE) $(FORMAT_FILE) \
230
+ read.lo instrumented_alloc.lo
231
+
232
+ libbacktrace_instrumented_alloc_la_DEPENDENCIES = \
233
+ $(libbacktrace_instrumented_alloc_la_LIBADD)
234
+
235
+ instrumented_alloc.lo: alloc.c
236
+
237
+ allocfail_SOURCES = allocfail.c testlib.c
238
+ allocfail_CFLAGS = $(libbacktrace_TEST_CFLAGS)
239
+ allocfail_LDADD = libbacktrace_instrumented_alloc.la
240
+
241
+ check_PROGRAMS += allocfail
242
+
243
+ allocfail.sh: allocfail
244
+
245
+ TESTS += allocfail.sh
246
+
247
+ if USE_DSYMUTIL
248
+ check_DATA += allocfail.dSYM
249
+ endif USE_DSYMUTIL
250
+
251
+ if HAVE_ELF
252
+ if HAVE_BUILDID
253
+ if HAVE_OBJCOPY_DEBUGLINK
254
+
255
+ b2test_SOURCES = $(btest_SOURCES)
256
+ b2test_CFLAGS = $(libbacktrace_TEST_CFLAGS)
257
+ b2test_LDFLAGS = -Wl,--build-id
258
+ b2test_LDADD = libbacktrace_elf_for_test.la
259
+
260
+ check_PROGRAMS += b2test
261
+ MAKETESTS += b2test_buildid
262
+
263
+ if HAVE_DWZ
264
+
265
+ b3test_SOURCES = $(btest_SOURCES)
266
+ b3test_CFLAGS = $(libbacktrace_TEST_CFLAGS)
267
+ b3test_LDFLAGS = -Wl,--build-id
268
+ b3test_LDADD = libbacktrace_elf_for_test.la
269
+
270
+ check_PROGRAMS += b3test
271
+ MAKETESTS += b3test_dwz_buildid
272
+
273
+ endif HAVE_DWZ
274
+
275
+ endif HAVE_OBJCOPY_DEBUGLINK
276
+ endif HAVE_BUILDID
277
+ endif HAVE_ELF
278
+
279
+ btest_SOURCES = btest.c testlib.c
280
+ btest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
281
+ btest_LDADD = libbacktrace.la
282
+
283
+ BUILDTESTS += btest
284
+
285
+ if USE_DSYMUTIL
286
+ check_DATA += btest.dSYM
287
+ endif USE_DSYMUTIL
288
+
289
+ if HAVE_ELF
290
+
291
+ btest_lto_SOURCES = btest.c testlib.c
292
+ btest_lto_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O -flto
293
+ btest_lto_LDADD = libbacktrace.la
294
+
295
+ BUILDTESTS += btest_lto
296
+
297
+ endif HAVE_ELF
298
+
299
+ btest_alloc_SOURCES = $(btest_SOURCES)
300
+ btest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
301
+ btest_alloc_LDADD = libbacktrace_alloc.la
302
+
303
+ BUILDTESTS += btest_alloc
304
+
305
+ if USE_DSYMUTIL
306
+ check_DATA += btest_alloc.dSYM
307
+ endif USE_DSYMUTIL
308
+
309
+ if HAVE_DWZ
310
+
311
+ %_dwz: %
312
+ rm -f $@ $@_common.debug
313
+ cp $< $@_1
314
+ cp $< $@_2
315
+ if $(DWZ) -m $@_common.debug $@_1 $@_2; then \
316
+ rm -f $@_2; \
317
+ mv $@_1 $@; \
318
+ else \
319
+ echo "Ignoring dwz errors, assuming that test passes"; \
320
+ cp $< $@; \
321
+ fi
322
+
323
+ MAKETESTS += btest_dwz
324
+
325
+ if HAVE_OBJCOPY_DEBUGLINK
326
+
327
+ MAKETESTS += btest_dwz_gnudebuglink
328
+
329
+ endif HAVE_OBJCOPY_DEBUGLINK
330
+
331
+ endif HAVE_DWZ
332
+
333
+ stest_SOURCES = stest.c
334
+ stest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
335
+ stest_LDADD = libbacktrace.la
336
+
337
+ BUILDTESTS += stest
338
+
339
+ if USE_DSYMUTIL
340
+ check_DATA += stest.dSYM
341
+ endif USE_DSYMUTIL
342
+
343
+ stest_alloc_SOURCES = $(stest_SOURCES)
344
+ stest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
345
+ stest_alloc_LDADD = libbacktrace_alloc.la
346
+
347
+ BUILDTESTS += stest_alloc
348
+
349
+ if USE_DSYMUTIL
350
+ check_DATA += stest_alloc.dSYM
351
+ endif USE_DSYMUTIL
352
+
353
+ if HAVE_ELF
354
+
355
+ ztest_SOURCES = ztest.c testlib.c
356
+ ztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
357
+ ztest_LDADD = libbacktrace.la
358
+ ztest_alloc_LDADD = libbacktrace_alloc.la
359
+
360
+ if HAVE_ZLIB
361
+ ztest_LDADD += -lz
362
+ ztest_alloc_LDADD += -lz
363
+ endif
364
+ ztest_LDADD += $(CLOCK_GETTIME_LINK)
365
+ ztest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
366
+
367
+ BUILDTESTS += ztest
368
+
369
+ ztest_alloc_SOURCES = $(ztest_SOURCES)
370
+ ztest_alloc_CFLAGS = $(ztest_CFLAGS)
371
+
372
+ BUILDTESTS += ztest_alloc
373
+
374
+ zstdtest_SOURCES = zstdtest.c testlib.c
375
+ zstdtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
376
+ zstdtest_LDADD = libbacktrace.la
377
+ zstdtest_alloc_LDADD = libbacktrace_alloc.la
378
+
379
+ if HAVE_ZSTD
380
+ zstdtest_LDADD += -lzstd
381
+ zstdtest_alloc_LDADD += -lzstd
382
+ endif
383
+ zstdtest_LDADD += $(CLOCK_GETTIME_LINK)
384
+ zstdtest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
385
+
386
+ BUILDTESTS += zstdtest
387
+
388
+ zstdtest_alloc_SOURCES = $(zstdtest_SOURCES)
389
+ zstdtest_alloc_CFLAGS = $(zstdtest_CFLAGS)
390
+
391
+ BUILDTESTS += zstdtest_alloc
392
+
393
+ endif HAVE_ELF
394
+
395
+ edtest_SOURCES = edtest.c edtest2_build.c testlib.c
396
+ edtest_CFLAGS = $(libbacktrace_TEST_CFLAGS)
397
+ edtest_LDADD = libbacktrace.la
398
+
399
+ BUILDTESTS += edtest
400
+
401
+ if USE_DSYMUTIL
402
+ check_DATA += edtest.dSYM
403
+ endif USE_DSYMUTIL
404
+
405
+ edtest_alloc_SOURCES = $(edtest_SOURCES)
406
+ edtest_alloc_CFLAGS = $(libbacktrace_TEST_CFLAGS)
407
+ edtest_alloc_LDADD = libbacktrace_alloc.la
408
+
409
+ if USE_DSYMUTIL
410
+ check_DATA += edtest_alloc.dSYM
411
+ endif USE_DSYMUTIL
412
+
413
+ BUILDTESTS += edtest_alloc
414
+
415
+ edtest2_build.c: gen_edtest2_build; @true
416
+ gen_edtest2_build: $(srcdir)/edtest2.c
417
+ cat $(srcdir)/edtest2.c > tmp-edtest2_build.c
418
+ $(SHELL) $(srcdir)/move-if-change tmp-edtest2_build.c edtest2_build.c
419
+ echo timestamp > $@
420
+
421
+ if HAVE_PTHREAD
422
+
423
+ BUILDTESTS += ttest
424
+
425
+ ttest_SOURCES = ttest.c testlib.c
426
+ ttest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -pthread
427
+ ttest_LDADD = libbacktrace.la
428
+
429
+ if USE_DSYMUTIL
430
+ check_DATA += ttest.dSYM
431
+ endif USE_DSYMUTIL
432
+
433
+ BUILDTESTS += ttest_alloc
434
+
435
+ ttest_alloc_SOURCES = $(ttest_SOURCES)
436
+ ttest_alloc_CFLAGS = $(ttest_CFLAGS)
437
+ ttest_alloc_LDADD = libbacktrace_alloc.la
438
+
439
+ if USE_DSYMUTIL
440
+ check_DATA += ttest_alloc.dSYM
441
+ endif USE_DSYMUTIL
442
+
443
+ endif HAVE_PTHREAD
444
+
445
+ if HAVE_OBJCOPY_DEBUGLINK
446
+
447
+ MAKETESTS += btest_gnudebuglink
448
+
449
+ %_gnudebuglink: %
450
+ $(OBJCOPY) --only-keep-debug $< $@.debug
451
+ $(OBJCOPY) --strip-debug --add-gnu-debuglink=$@.debug $< $@
452
+
453
+ endif HAVE_OBJCOPY_DEBUGLINK
454
+
455
+ %_buildid: %
456
+ ./install-debuginfo-for-buildid.sh \
457
+ "$(TEST_BUILD_ID_DIR)" \
458
+ $<
459
+ $(OBJCOPY) --strip-debug $< $@
460
+
461
+ if HAVE_COMPRESSED_DEBUG
462
+
463
+ ctestg_SOURCES = btest.c testlib.c
464
+ ctestg_CFLAGS = $(libbacktrace_TEST_CFLAGS)
465
+ ctestg_LDFLAGS = -Wl,--compress-debug-sections=zlib-gnu
466
+ ctestg_LDADD = libbacktrace.la
467
+
468
+ ctesta_SOURCES = btest.c testlib.c
469
+ ctesta_CFLAGS = $(libbacktrace_TEST_CFLAGS)
470
+ ctesta_LDFLAGS = -Wl,--compress-debug-sections=zlib-gabi
471
+ ctesta_LDADD = libbacktrace.la
472
+
473
+ BUILDTESTS += ctestg ctesta
474
+
475
+ if HAVE_COMPRESSED_DEBUG_ZSTD
476
+
477
+ ctestzstd_SOURCES = btest.c testlib.c
478
+ ctestzstd_CFLAGS = $(libbacktrace_TEST_CFLAGS)
479
+ ctestzstd_LDFLAGS = -Wl,--compress-debug-sections=zstd
480
+ ctestzstd_LDADD = libbacktrace.la
481
+
482
+ BUILDTESTS += ctestzstd
483
+
484
+ endif
485
+
486
+ ctestg_alloc_SOURCES = $(ctestg_SOURCES)
487
+ ctestg_alloc_CFLAGS = $(ctestg_CFLAGS)
488
+ ctestg_alloc_LDFLAGS = $(ctestg_LDFLAGS)
489
+ ctestg_alloc_LDADD = libbacktrace_alloc.la
490
+
491
+ ctesta_alloc_SOURCES = $(ctesta_SOURCES)
492
+ ctesta_alloc_CFLAGS = $(ctesta_CFLAGS)
493
+ ctesta_alloc_LDFLAGS = $(ctesta_LDFLAGS)
494
+ ctesta_alloc_LDADD = libbacktrace_alloc.la
495
+
496
+ BUILDTESTS += ctestg_alloc ctesta_alloc
497
+
498
+ endif
499
+
500
+ if HAVE_DWARF5
501
+
502
+ dwarf5_SOURCES = btest.c testlib.c
503
+ dwarf5_CFLAGS = $(libbacktrace_TEST_CFLAGS) -gdwarf-5
504
+ dwarf5_LDADD = libbacktrace.la
505
+
506
+ BUILDTESTS += dwarf5
507
+
508
+ if USE_DSYMUTIL
509
+ check_DATA += dwarf5.dSYM
510
+ endif USE_DSYMUTIL
511
+
512
+ dwarf5_alloc_SOURCES = $(dwarf5_SOURCES)
513
+ dwarf5_alloc_CFLAGS = $(dwarf5_CFLAGS)
514
+ dwarf5_alloc_LDADD = libbacktrace_alloc.la
515
+
516
+ BUILDTESTS += dwarf5_alloc
517
+
518
+ if USE_DSYMUTIL
519
+ check_DATA += dwarf5_alloc.dSYM
520
+ endif USE_DSYMUTIL
521
+
522
+ endif
523
+
524
+ mtest_SOURCES = mtest.c testlib.c
525
+ mtest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -O
526
+ mtest_LDADD = libbacktrace.la
527
+
528
+ BUILDTESTS += mtest
529
+
530
+ if USE_DSYMUTIL
531
+ check_DATA += mtest.dSYM
532
+ endif USE_DSYMUTIL
533
+
534
+ if HAVE_MINIDEBUG
535
+
536
+ MAKETESTS += mtest_minidebug
537
+
538
+ %_minidebug: %
539
+ $(NM) -D $< -P --defined-only | $(AWK) '{ print $$1 }' | sort > $<.dsyms
540
+ $(NM) $< -P --defined-only | $(AWK) '{ if ($$2 == "T" || $$2 == "t" || $$2 == "D") print $$1 }' | sort > $<.fsyms
541
+ $(COMM) -13 $<.dsyms $<.fsyms > $<.keepsyms
542
+ $(OBJCOPY) --only-keep-debug $< $<.dbg
543
+ $(OBJCOPY) -S --remove-section .gdb_index --remove-section .comment --keep-symbols=$<.keepsyms $<.dbg $<.mdbg
544
+ $(OBJCOPY) --strip-all --remove-section ..comment $< $<.strip
545
+ rm -f $<.mdbg.xz
546
+ $(XZ) $<.mdbg
547
+ $(OBJCOPY) --add-section .gnu_debugdata=$<.mdbg.xz $<.strip
548
+ mv $<.strip $@
549
+
550
+ endif HAVE_MINIDEBUG
551
+
552
+ endif NATIVE
553
+
554
+ if HAVE_ELF
555
+
556
+ xztest_SOURCES = xztest.c testlib.c
557
+ xztest_CFLAGS = $(libbacktrace_TEST_CFLAGS) -DSRCDIR=\"$(srcdir)\"
558
+ xztest_LDADD = libbacktrace.la
559
+
560
+ xztest_alloc_SOURCES = $(xztest_SOURCES)
561
+ xztest_alloc_CFLAGS = $(xztest_CFLAGS)
562
+ xztest_alloc_LDADD = libbacktrace_alloc.la
563
+
564
+ if HAVE_LIBLZMA
565
+ xztest_LDADD += -llzma
566
+ xztest_alloc_LDADD += -llzma
567
+ endif
568
+
569
+ xztest_LDADD += $(CLOCK_GETTIME_LINK)
570
+ xztest_alloc_LDADD += $(CLOCK_GETTIME_LINK)
571
+
572
+ BUILDTESTS += xztest xztest_alloc
573
+
574
+ endif HAVE_ELF
575
+
576
+ check_PROGRAMS += $(BUILDTESTS)
577
+
578
+ TESTS += $(MAKETESTS) $(BUILDTESTS)
579
+
580
+ CLEANFILES = \
581
+ $(MAKETESTS) $(BUILDTESTS) *.debug elf_for_test.c edtest2_build.c \
582
+ gen_edtest2_build \
583
+ *.dsyms *.fsyms *.keepsyms *.dbg *.mdbg *.mdbg.xz *.strip
584
+
585
+ clean-local:
586
+ -rm -rf usr
587
+
588
+ # We can't use automake's automatic dependency tracking, because it
589
+ # breaks when using bootstrap-lean. Automatic dependency tracking
590
+ # with GCC bootstrap will cause some of the objects to depend on
591
+ # header files in prev-gcc/include, e.g., stddef.h and stdarg.h. When
592
+ # using bootstrap-lean, prev-gcc is removed after each stage. When
593
+ # running "make install", those header files will be gone, causing the
594
+ # library to be rebuilt at install time. That may not succeed.
595
+
596
+ # These manual dependencies do not include dependencies on unwind.h,
597
+ # even though that is part of GCC, because where to find it depends on
598
+ # whether we are being built as a host library or a target library.
599
+
600
+ alloc.lo: config.h backtrace.h internal.h
601
+ backtrace.lo: config.h backtrace.h internal.h
602
+ btest.lo: filenames.h backtrace.h backtrace-supported.h
603
+ dwarf.lo: config.h filenames.h backtrace.h internal.h
604
+ elf.lo: config.h backtrace.h internal.h
605
+ fileline.lo: config.h backtrace.h internal.h
606
+ macho.lo: config.h backtrace.h internal.h
607
+ mmap.lo: config.h backtrace.h internal.h
608
+ mmapio.lo: config.h backtrace.h internal.h
609
+ mtest.lo: backtrace.h backtrace-supported.h
610
+ nounwind.lo: config.h internal.h
611
+ pecoff.lo: config.h backtrace.h internal.h
612
+ posix.lo: config.h backtrace.h internal.h
613
+ print.lo: config.h backtrace.h internal.h
614
+ read.lo: config.h backtrace.h internal.h
615
+ simple.lo: config.h backtrace.h internal.h
616
+ sort.lo: config.h backtrace.h internal.h
617
+ stest.lo: config.h backtrace.h internal.h
618
+ state.lo: config.h backtrace.h backtrace-supported.h internal.h
619
+ unknown.lo: config.h backtrace.h internal.h
620
+ xcoff.lo: config.h backtrace.h internal.h
621
+ xztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h
622
+ ztest.lo: config.h backtrace.h backtrace-supported.h internal.h testlib.h
623
+