xref: /aosp_15_r20/external/elfutils/debuginfod/ChangeLog (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
12023-04-21  Frank Ch. Eigler <[email protected]>
2
3	* debuginfod.cxx (groom): Fix -r / -X logic.
4
52023-04-13  Frank Ch. Eigler <[email protected]>
6
7	* debuginfod.cxx (archive_classify, scan_archive_file): Catch and
8	propagate exceptions during archive scans.
9
102023-03-30  Jan Alexander Steffens (heftig) <[email protected]>
11
12	* debuginfod-client.c (update_atime): New function.
13	(extract_section, debuginfod_query_server): Call it.
14
152023-03-30  Jan Alexander Steffens (heftig) <[email protected]>
16
17	* debuginfod-client.c (debuginfod_query_server): Don't modify
18	atime unintentionally.
19	* debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto.
20
212023-03-30  Aaron Merey  <[email protected]>
22
23	* debuginfod-client.c (debuginfod_query_server): Avoid sscanf on
24	mixed-case component of string.
25
262023-03-29  Jan Alexander Steffens (heftig) <[email protected]>
27
28	* debuginfod-client.c (debuginfod_query_server): s/futimes/futimens/
29	* debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto.
30
312023-03-29  lilydjwg  <[email protected]>
32
33	* debuginfod-client.c (debuginfod_query_server): Handle dl_size in
34	progress to account for possible curl 8.0.1 changes to
35	CURLINFO_CONTENT_LENGTH_DOWNLOAD*.
36
372023-03-17  Aaron Merey  <[email protected]>
38
39	* debuginfod-client.c (debuginfod_query_server): Do not create an
40	empty file in the cache if the query was cancelled by the progressfn.
41
422023-02-07  Aaron Merey  <[email protected]>
43
44	* debuginfod-client.c (cache_find_section): Avoid returning -ENOENT
45	if debuginfo wasn't found.
46
472023-02-06  Mark Wielaard  <[email protected]>
48
49	* debuginfod.h.in: Guard debuginfod_client typedef with
50	_ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF.
51
522023-01-10  Mark Wielaard  <[email protected]>
53
54	* debuginfod-client.c (debuginfod_query_server): Use
55	CURL_AT_LEAST_VERSION(7.85.0) for CURLOPT_PROTOCOLS_STR.
56
572023-01-11  Frank Ch. Eigler  <[email protected]>
58
59	PR29975 & PR29976
60	* debuginfod.cxx (default_concurrency): New function to guess a
61	reasonable default for -c/-C on large but constrained machines.
62
632022-12-21  Mark Wielaard  <[email protected]>
64
65	* debuginfod-client.c: Define CURL_AT_LEAST_VERSION.
66
672022-12-21  Andrew Paprocki  <[email protected]>
68
69	* debuginfod-client.c: Make compilable against newer curl.  PR29926
70
712022-11-15  Mark Wielaard  <[email protected]>
72
73	* debuginfod-client.c (debuginfod_query_server): Initialize
74	response_data early.
75
762022-11-07  Aaron Merey  <[email protected]>
77
78	* debuginfod-client.c (debuginfod_find_section): Don't treat 0 as an
79	error code.
80
812022-11-04  Aaron Merey  <[email protected]>
82
83	* debuginfod-client.c (debuginfod_find_section): Ensure rc
84	is always updated with the most recent error code.
85
862022-11-03  Frank Ch. Eigler <[email protected]>
87
88	* debuginfod.cxx (handle_buildid): Correctly manage lifetime
89	of debuginfod_client federation callout object.
90
912022-11-02  Mark Wielaard  <[email protected]>
92
93	* debuginfod-client.c (extract_section): Mark static.
94
952022-11-01  Aaron Merey  <[email protected]>
96
97	* debuginfod-client.c (path_escape): Add early return.
98
992022-10-31  Aaron Merey  <[email protected]>
100
101	* Makefile.am (libdebuginfod_so_LDLIBS): Add libelf.
102	* debuginfod-client.c (debuginfod_find_section): New function.
103	(path_escape): New function.
104	(extract_section): New function.
105	(cache_find_section): New function.
106	(debuginfod_query_server): Add support for section queries.
107	* debuginfod-find.c (main): Add support for section queries.
108	* debuginfod.cxx (extract_section): New function.
109	(handle_buildid_f_match): Add section parameter.  When non-empty,
110	try to create response from section contents.
111	(handle_buildid_r_match): Add section parameter.  When non-empty,
112	try to create response from section contents.
113	(handle_buildid_match): Add section parameter. Pass to
114	handle_buildid_{f,r}_match.
115	(handle_buildid): Handle section name when artifacttype is set to
116	"section".  Query upstream servers via debuginfod_find_section
117	when necessary.
118	(debuginfod.h.in): Add declaration for debuginfod_find_section.
119	(libdebuginfod.map): Add debuginfod_find_section.
120
1212022-10-18  Daniel Thornburgh <[email protected]>
122
123  * debuginfod-client.c (debuginfod_query_server): Add DEBUGINFOD_HEADERS_FILE
124  setting to supply outgoing HTTP headers.
125
1262022-10-17  Frank Ch. Eigler  <[email protected]>
127
128	* debuginfod.cxx (main): Report libmicrohttpd version.
129
1302022-09-28  Aaron Merey  <[email protected]>
131
132	* debuginfod-client.c (debuginfod_query_server): Switch sign of some
133	error codes from positive to negative.
134
1352022-09-08  Frank Ch. Eigler  <[email protected]>
136
137	* debuginfod-client.c (debuginfod_query_server): Clear
138	->winning_headers along with ->url at the start of any new query.
139
1402022-09-08  Martin Liska  <[email protected]>
141
142	* debuginfod-client.c (debuginfod_get_headers): Add to DUMMY_LIBDEBUGINFOD.
143
1442022-09-06  Frank Ch. Eigler  <[email protected]>
145
146	* debuginfod-client.c (header_callback): Don't copy \r in x-d headers.
147	Print all headers in verbose_fd mode.
148	* debuginfod-find.c (parse_opt): Set verbose_fd only at verbosity >= 2.
149	* debuginfod.cxx (handle_buildid): Clean up header forwarding
150	string processing.
151	* debuginfod.h.in: (debuginfod_get_headers): Tweak wording.
152	* libdebuginfod.map: Use ELFUTILS_0.188 for new function.
153
1542022-07-15  Noah Sanci  <[email protected]>
155
156	* debuginfod-client.c (header_callback): Ignore headers without
157	X-DEBUGINFOD prefix.
158	(debuginfod_query_server): Removed verbose printing headers when
159	undesired.
160	(debuginfod_get_headers): Created.
161	* debuginfod-find.c (main): Verbose printing headers.
162	* debuginfod.cxx (handle_buildid): Add headers prefixed with
163	X-DEBUGINFOD from federated servers to this server's response
164	headers.
165	* debuginfod.h.in (debuginfod_get_headers): Created.
166	* libdebuginfod.map: New elfutils version added.
167
1682022-09-02  Aaron Merey  <[email protected]>
169
170	* debuginfod.cxx (parse_opt): If '-C' is given with no arg, do not
171	update connection_pool since it will be done at a later point.
172	(main): Use auto-sized connection_pool if '-C' isn't given with an
173	arg. Do not use MHD_USE_THREAD_PER_CONNECTION.
174
1752022-08-17  Martin Liska  <[email protected]>
176
177	* debuginfod.cxx (handle_buildid): Update HTTP statistics only if
178	it comes from HTTP request.
179
1802022-08-17  Martin Liska  <[email protected]>
181
182	* debuginfod.cxx: Print filename for "cannot open archive".
183
1842022-08-15  Frank Ch. Eigler <[email protected]>
185
186	PR29474
187	* debuginfod.cxx (handle_buildid_r_match): Don't trigger false-404's
188	for concurrently prefetched target files.
189
1902022-08-02  Josef Cejka <[email protected]>
191
192	* debuginfod.cxx (groom): Don't evaluate regex unless needed.
193
1942022-07-29  Josef Cejka <[email protected]>
195
196	* debuginfod.cxx: Create db indexes for fast delete while grooming.
197
1982022-06-03  Michael Trapp <[email protected]>
199
200	* debuginfod.cxx (scan_source_info): New global.
201	(parse_opt, elf_classify): Use it.
202
2032022-05-09  Mark Wielaard  <[email protected]>
204
205	* debuginfod-client.c (debuginfod_clean_cache): Move utime call to
206	before fts traversal.
207
2082022-05-09  Mark Wielaard  <[email protected]>
209
210	* debuginfod-client.c (debuginfod_init_cache): Remove.
211	(debuginfod_query_server): Don't call debuginfod_init_cache, call
212	mkdir then debuginfod_clean_cache.
213
2142022-05-09  Mark Wielaard  <[email protected]>
215
216	* debuginfod-client.c (debuginfod_config_cache): Always open with
217	O_CREATE first, then use fstat, only write the cache_config_default_s
218	value if st_size == 0, otherwise read value from file.
219
2202022-05-09  Mark Wielaard  <[email protected]>
221
222	* debuginfod.cxx (conninfo): Always provide servname to getnameinfo.
223
2242022-05-09  Mark Wielaard  <[email protected]>
225
226	* debuginfod-client.c (debuginfod_query_server): Add
227	curl_easy_setopt_ck macro, use it for all curl_easy_setopt calls.
228
2292022-05-09  Mark Wielaard  <[email protected]>
230
231	* debuginfod-client.c (debuginfod_write_callback): Check result
232	of curl_easy_getinfo.
233
2342022-05-05  Mark Wielaard  <[email protected]>
235
236	* debuginfod.cxx (main): Define use_epoll. Set to MHD_USE_EPOLL
237	based on MHD_VERSION. Don't use MHD_USE_THREAD_PER_CONNECTION
238	when use_poll is set.
239
2402022-05-05  Mark Wielaard  <[email protected]>
241
242	* debuginfod.cxx (main): Define mhd_flags. Use mhd_flags for
243	MHD_start_daemon. Try again with MHD_USE_DUAL_STACK removed if
244	that fails. Update clog to say either IPV4 or IPV4 and IPV6.
245	stop either ithe d46 or d4 daemonr.
246
2472022-05-09  Noah Sanci  <[email protected]>
248
249	* debuginfod.cxx (main): Set nonzero defaults for fdcache.
250
2512022-05-04  Frank Ch. Eigler <[email protected]>
252	    Mark Wielaard  <[email protected]>
253
254	* debuginfod-client.c (debuginfod_query_server): Correct fd leak
255	for cache negative-hit unlink case.
256	(debuginfod_config_cache, debuginfod_init_cache): Correct
257	minor fd leaks.
258	* debuginfod-find.c  (main): Ditto.
259
2602022-04-22  Mark Wielaard  <[email protected]>
261
262	* Makefile.am (libdebuginfod): Add -lpthread.
263	(libdebuginfod_so_LDLIBS): Likewise.
264	* debuginfod-client.c (init_control): New static pthread_once_t.
265	(libcurl_init): New static function.
266	(debuginfod_begin): Use ptrace_once to call libcurl_init.
267	(libdebuginfod_ctor): Removed.
268	(libdebuginfod_dtor): Likewise.
269
2702022-04-24  Mark Wielaard  <[email protected]>
271
272	* debuginfod.cxx (main): Add MHD_USE_ITC to MHD_start_daemon flags.
273
2742022-04-13  Aaron Merey  <[email protected]>
275
276	* debuginfod-client.c (debuginfod_query_server):
277	Drop st_mode check. Add st_size > 0 check.
278	Save target_mtime before calling
279	debuginfod_config_cache. unlink target_cache_path
280	on EACCESS. Create target_cache_path with DEFFILEMODE.
281
2822022-04-03  Frank Ch. Eigler <[email protected]>
283
284	* debuginfod.cxx (main): Use single dual-stack daemon setup,
285	rather than duplicate ipv4 and ipv6.
286	(conninfo, handle_buildid): Represent ipv4-mapped ipv6 addresses
287	in their native ipv4 form for logging and X-F-F: purposes.
288	* debuginfod-client.c (debuginfod_add_http_header): Tolerate
289	colons in http header values.
290
2912022-04-03  Frank Ch. Eigler <[email protected]>
292
293	* debuginfod.cxx (main): Use MHD_USE_EPOLL for libmicrohttpd, to
294	encourage more round-robin dispatch of incoming connections.
295
2962021-12-09  Alexander Kanavin <[email protected]>
297
298	* debuginfod-client.c (cache_clean_default_interval_s): Change type to
299	long from time_t.
300	(cache_miss_default_s): Likewise.
301	(cache_default_max_unused_age_s): Likewise.
302
3032021-12-09  Mark Wielaard  <[email protected]>
304
305	* debuginfod.cxx (database_stats_report): Don't format clog
306	using 'right' and 'setw(20)'.
307
3082021-12-08  Frank Ch. Eigler  <[email protected]>
309
310	* debuginfod.cxx (connection_pool): New global.
311	(parse_opt): Parse & check -C option to set it.
312	(error_cb): New callback for libmicrohttpd error counting.
313	(main): Activate MHD_OPTION_THREAD_POOL_SIZE if appropriate.
314	Activate error_cb.
315
3162021-12-04  Mark Wielaard  <[email protected]>
317
318	* debuginfod.cxx (main): Call debuginfod_pool_groom before exit.
319
3202021-12-08  Mark Wielaard  <[email protected]>
321
322	* debuginfod.cxx (add_mhd_response_header): New function.
323	(reportable_exception::mhd_send_response): Call
324	MHD_add_response_header.
325	(add_mhd_last_modified): Likewise.
326	(handle_buildid_f_match): Likewise.
327	(handle_buildid_r_match): Likewise.
328	(handle_metrics): Likewise. And check MHD_Response was actually
329	created.
330	(handle_root): Likewise.
331
3322021-12-08  Frank Ch. Eigler  <[email protected]>
333
334	* debuginfod.cxx (intern): Call set_metrics() holding the fdcache mutex.
335
3362021-12-04  Mark Wielaard  <[email protected]>
337
338	* debuginfod-client.c (debuginfod_query_server): Free winning_headers.
339	Reset response_data_size when clearing response_data.
340
3412021-12-01  Mark Wielaard  <[email protected]>
342
343	* debuginfod-client.c (debuginfod_query_server): Free tmp_url on
344	realloc error. curl_free escaped_string on error. Fix error out
345	goto on curl_easy_init failure. Only cleanup data[i] handle and
346	response_data if it was initialized.
347
3482021-12-01  Mark Wielaard  <[email protected]>
349
350	* debuginfod-client.c (timestamp): Use gmtime_r instead of gmtime.
351	(add_mhd_last_modified): Likewise.
352
3532021-11-10  Érico N. Rolim  <[email protected]>
354
355	* debuginfod.cxx: include "system.h" under 'extern "C"' block.
356
3572021-11-05  Frank Ch. Eigler  <[email protected]>
358
359	PR28430
360	* debuginfod.cxx (parse_opt): Add "--passive" flag.  Complain
361	about inconsistent flags.
362	(main): In passive mode, suppress scan/groom/traverse threads and
363	other read-write database ops.
364
3652021-11-04  Frank Ch. Eigler  <[email protected]>
366
367	PR28514
368	* debuginfod.cxx (groom): Rework into separate decision/action
369	phases.  Add new metrics to monitor progress.  Limit indefinite
370	operation times to avoid starving rescan.
371
3722021-10-23  Frank Ch. Eigler  <[email protected]>
373
374	PR28240
375	* debuginfod-client.c (debuginfod_query_server): Correct
376	negative-hit cache check sequence for root user.
377
3782021-10-15  Mark Wielaard  <[email protected]>
379
380	* debuginfod-client.c (debuginfod_query_server): Set
381	CURLOPT_PROTOCOLS.
382
3832021-10-06  Di Chen <[email protected]>
384
385	PR28242
386	* debuginfod.cxx (inc_metrics, add_metrics): Add two-tag variants.
387	(handler_cb): Call it with artifacttype for http_responses_* metrics.
388	(handle_buildid): Sanitize artifacttype if necessary.
389	(dwarf_extract_source_path): Pass sanitizable string param.
390
3912021-09-17  Noah Sanci  <[email protected]>
392
393	* debuginfod-client.c (debuginfod_query_server): curl_multi_perform
394	now occurs before checking if response headers have arrived.
395
3962021-09-14  Frank Ch. Eigler <[email protected]>
397
398	PRPR28339
399	* debuginfod.cxx (waitq::fronters): New field.
400	(waitq::wait_idle): Respect it.
401	(waitq::done_front): New function.
402	(thread_main_scanner): Call it to match wait_front().
403
4042021-09-12  Mark Wielaard  <[email protected]>
405
406	* debuginfod.cxx (libarchive_fdcache::lookup): Add endl after
407	obatched(clog) line.
4082021-09-13  Noah Sanci  <[email protected]>
409
410	* debuginfod-client.c (debuginfod_query_server): Removed constant
411	operations from a loop. curl_free memory.
412
4132021-09-06  Dmitry V. Levin  <[email protected]>
414
415	* debuginfod-client.c (debuginfod_begin): Remove cast of calloc return
416	value.
417
4182021-08-28  Mark Wielaard  <[email protected]>
419
420	* debuginfod.cxx (parse_opt): Turn the -d arg ":memory:" into
421	"file::memory:?cache=shared" for the db_path.
422
4232021-08-20  Di Chen  <[email protected]>
424
425	* debuginfod.cxx (options): Add ARGP_KEY_FORWARDED_TTL_LIMIT.
426	(forwarded_ttl_limit): New static unsigned.
427	(parse_opt): Handle ARGP_KEY_FORWARDED_TTL_LIMIT.
428	(handle_buildid): Check forwarded_ttl_limit.
429	(main): Log forwarded ttl limit.
430
4312021-08-20  Saleem Abdulrasool  <[email protected]>
432
433	* debuginfod.cxx: Remove error.h include.
434
4352021-08-19  Frank Ch. Eigler  <[email protected]>
436
437	PR28249
438	* debuginfod.cxx (handler_cb): Fix after_you unique_set key
439	to the entire incoming URL.
440
4412021-08-02  Noah Sanci  <[email protected]>
442
443	PR27277
444	* debuginfod-client.c (struct debuginfod_client): New field
445	winning_headers.
446	(struct handle_data): New field response_data, response_data_size.
447	(header_callback): Store received headers in response_data.
448	(debuginfod_query_server): Activate CURLOPT_HEADERFUNCTION.
449	Save winning response_data.
450	(debuginfod_end): free client winning headers.
451	* debuginfod.cxx (handle_buildid_f_match): remove X-DEBUGINFOD-FILE
452	path. Add X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE headers.
453	(handle_buildid_r_match): remove X-DEBUGINFOD-FILE path. Add
454	X-DEBUGINFOD-FILE, X-DEBUGINFOD-SIZE
455	headers, and X-ARCHIVE headers.
456
4572021-07-26  Noah Sanci  <[email protected]>
458
459	PR27982
460	* debuginfod-client.c (globals): added default_maxsize and
461	default_maxtime.
462	(debuginfod_query_server): Added DEBUGINFOD_MAXSIZE and
463	DEBUGINFOD_MAXTIME envvar processing.
464	* debuginfod.cxx (handler_cb): If the requested file exceeds
465	maxsize return code 406.
466	* debuginfod.h.in: Added DEBUGINFOD_MAXSIZE_ENV_VAR and
467	DEBUGINFOD_MAXTIME_ENV_VAR.
468
4692021-07-16  Noah Sanci  <[email protected]>
470
471	PR28034
472	* debuginfod-client.c (debuginfod_query_server): % escape filename
473	so the completed url is processed properly.
474
4752021-06-28 Noah Sanci <[email protected]>
476
477	PR25978
478	* debuginfod.cxx (options): Added --fdcache-prefetch-fds/mbs options.
479	(set_metric): Added a condition for fdcache_mintmp to ensure no
480	negative percentages or percentages larger than 100% are given.
481	(globals): Added fdcache_prefetch_mbs/fdcache_prefetch_fds.
482	(set_metrics): Differentiate between lru and prefetch metrics.
483	(intern): Added prefetch functionality for nuking preexisting copies
484	and incrementing prefetch metrics.
485	(lookup): Search prefetch cache and increment associated metrics. Upon
486	finding in the prefetch cache move the element to the lru cache.
487	(limit): Arguments updated. Update size of prefetch cache.
488	(main): Log prefetch and cache fds/mbs
489
4902021-07-06  Alice Zhang  <[email protected]>
491
492	PR27531
493	* debuginfod-client.c (debuginfod_query_server): Retry failed queries
494	if error code is not ENOENT.
495	* debuginfod.h.in: Introduce DEBUGINFOD_RETRY_LIMIT_ENV_VAR.
496
4972021-07-01  Noah Sanci <[email protected]>
498
499	PR27711
500	* debuginfod.cxx (options): Add --regex-groom, -r option.
501	(regex_groom): New static bool defaults to false.
502	(parse_opt): Handle 'r' option by setting regex_groom to true.
503	(groom): Introduce and use reg_include and reg_exclude.
504
5052021-07-09  Noah Sanci  <[email protected]>
506
507	PR27983
508	* debuginfod-client.c (debuginfod_query_server): As full-length
509	urls are generated with standardized formats, ignore duplicates.
510	Created out1 and changed out2 error gotos. Updated url creation print
511	statements.
512	(globals): Removed url_delim_char, as it was no longer used.
513
5142021-06-18  Mark Wielaard  <[email protected]>
515
516	* debuginfod-client.c (debuginfod_begin): Don't use client if
517	calloc call failed.
518
5192021-06-03  Frank Ch. Eigler <[email protected]>
520
521	PR27863
522	* debuginfod.cxx (unique_set, unique_set_reserver): New classes.
523	(handler_cb): Use them to implement "after-you" queueing.
524
5252021-05-14  Frank Ch. Eigler <[email protected]>
526
527	PR27859
528	* debuginfod-client.c (debuginfod_client): Retain only
529	long-lived multi handle from PR27701 work.
530	(debuginfo_begin,debuginfod_end): ctor/dtor for surviving field only.
531	(debuginfod_query_server): Rework to reuse multi handle only.
532
5332021-04-19  Martin Liska  <[email protected]>
534
535	* debuginfod-client.c (debuginfod_query_server): Use startswith.
536	(debuginfod_add_http_header): Likewise.
537	* debuginfod.cxx: Likewise.
538
5392021-05-04  Alice Zhang <[email protected]>
540
541	* debuginfod-client.c (cache_miss_default_s): New static time_t,
542	defaults to 600 (10 minutes).
543	(cache_miss_filename): New static char pointer.
544	(debuginfod_config_cache): New static function.
545	(debuginfod_clean_cache): Use debuginfod_config_cache for
546	interval_path and max_unused_path.
547	(debuginfod_query_server): Check whether target_cache_path exists
548	as negative cache file and create target_cache_path when the server
549	returns ENOENT. Check cache_miss_path fir cache miss time.
550
5512021-04-26  Frank Ch. Eigler <[email protected]>
552
553	PR27571
554	* debuginfod-client.c (debuginfod_query_server): Chmod 0400 files
555	delivered into the cache to prevent accidental modification.
556
5572021-04-26  Frank Ch. Eigler <[email protected]>
558
559	PR26125
560	* debuginfod-client.c (debuginfod_clean_cache): For directory
561	rmdir, check mtime first.
562	(debuginfod_query_server): Try mkdir / mkstemp up to twice,
563	in case of race.
564
5652021-04-23  Frank Ch. Eigler <[email protected]>
566
567	PR27701
568	* debuginfod-client.c (struct debuginfod_client): Add long-lived
569	CURL easy and multi handles.
570	(debuginfo_begin,debuginfod_end): ctor/dtor for these.
571	(debuginfod_query_server): Rework to reuse easy & multi handles.
572	(*_envvar): Just use the DEBUGINFOD_*_ENV_VAR directly instead.
573
574	* debuginfod.cxx (dc_pool): New pile of reusable debuginfod_client
575	objects for upstream federation connections.
576	(debuginfod_pool_{begin,end,groom}): New functions.
577	(handle_buildid): Use them.
578	(handler_cb): Fix keep-alive given libmicrohttpd convention of multiple
579	callbacks.
580
5812021-04-15  Frank Ch. Eigler <[email protected]>
582
583	* debuginfod.cxx (groom): Only update database stats once.
584
5852021-04-15  Frank Ch. Eigler <[email protected]>
586
587	* debuginfod.cxx (elf_classify): Recognize symtab-only stripped files
588	like fedora's libicudata as debuginfo files.
589
5902021-03-30  Frank Ch. Eigler <[email protected]>
591
592	* debuginfod.cxx (main): Set child thread names.
593
5942021-03-07  Timm Bäder <[email protected]>
595
596	* debuginfod-client.c (debuginfod_query_server): Tweak
597	double/long clamping arithmetic to avoid UB and warnings.
598
5992021-02-25  Frank Ch. Eigler <[email protected]>
600
601	* debuginfod.cxx (handler_cb): Filter webapi for bad
602	artifacttype keywords early for metric hygiene.
603
6042021-02-14  Frank Ch. Eigler <[email protected]>
605
606	* debuginfod.cxx (main -U): Use bsdtar unconditionally.  Also map
607	the debian-compatible .ipk (openembedded distro family) to same.
608
6092021-02-04  Frank Ch. Eigler <[email protected]>
610
611	PR27092 low-memory handling
612	* debuginfod.cxx (fdcache_mintmp): New parameter, with cmd-line option.
613	(parse_opt): Parse it.
614	(main): Default it.
615	(statfs_free_enough_p): New function.
616	(libarchive_fdcache::*): Call it to trigger emergency fdcache flush.
617	(thread_main_scanner): Call it to report filesystem fullness metrics.
618	(groom): Ditto.
619	(set/add_metric): Take double rather than int64_t values.
620	(archive_exception): Propagate suberror to metric label.
621	(main): Detect pthread creation fatal errors properly.
622
6232021-02-02  Frank Ch. Eigler <[email protected]>
624
625	PR27323
626	* debuginfod.cxx (dbq): New read-only database connection for queries
627	only.
628	(signal_handler): Interrupt it.
629	(main): Open / close it.
630	(handle_buildid): Use it for webapi queries only.
631	(database_stats_report): Make more interruptible.  Report sqlite3
632	operation times to the prometheus metrics.
633	(groom): Make more interruptible.
634	(thread_main_fts_source_paths, thread_main_groom): Ensure
635	state/progress metrics are fresh even in case of exceptions.
636
6372020-12-20  Dmitry V. Levin  <[email protected]>
638
639	* .gitignore: New file.
640
6412020-12-12  Dmitry V. Levin  <[email protected]>
642
643	* debuginfod-client.c (debuginfod_query_server): Fix spelling typos in
644	comments.
645	* debuginfod.cxx: Likewise.
646	(parse_opt): Fix spelling typos in error diagnostics.
647
6482020-12-08  Dmitry V. Levin  <[email protected]>
649
650	* Makefile.am [LIBDEBUGINFOD]: Create libdebuginfod.so.1 first, turn
651	libdebuginfod.so into symlink.
652
6532020-11-30  Dmitry V. Levin  <[email protected]>
654
655	* Makefile.am (libdebuginfod.so): Replace $@.$(VERSION) with
656	$(LIBDEBUGINFOD_SONAME).
657	(install, uninstall, MOSTLYCLEANFILES): Replace
658	libdebuginfod.so.$(VERSION) with $(LIBDEBUGINFOD_SONAME).
659	(VERSION): Remove.
660	* debuginfod.h: Rename to ...
661	* debuginfod.h.in ... this.
662	(DEBUGINFOD_SONAME): New macro.
663
6642020-11-30  Dmitry V. Levin  <[email protected]>
665
666	* Makefile.am (libdebuginfod.so$(EXEEXT)): Drop $(EXEEXT) suffix.
667
6682020-11-25  Frank Ch. Eigler  <[email protected]>
669
670	* debuginfod.cxx (step_ok_done): Correct typo in prom metric label.
671
6722020-11-25  Frank Ch. Eigler  <[email protected]>
673
674	* debuginfod.cxx (tmp_ms_metric): Switch from gettimeofday to
675	clock_gettime(CLOCK_MONOTONIC) for time-interval measurements.
676	(handler_cb, scan_source_paths, groom): Ditto.
677
6782020-11-23  Frank Ch. Eigler  <[email protected]>
679
680	* debuginfod.cxx (tmp_ms_metric): New class for RAII timing metrics.
681	(sqlite_ps::reset, step*): Call it to track sqlite3 performance.
682	(sqlite_exception ctor): Increment sqlite3 error_count.
683
6842020-11-23  Mark Wielaard  <[email protected]>
685
686	* debuginfod-client.c (debuginfod_query_server): Initialize
687	struct handle_data errbuf to the empty string.
688
6892020-11-11  Mark Wielaard  <[email protected]>
690
691	* debuginfod-client.c (debuginfod_set_verbose_fd): New function.
692	(struct debuginfod_client): Add verbose_fd.
693	(struct handle_data): Add errbuf.
694	(debuginfod_query_server): Produce verbose output when
695	debuginfod_client verbose_fd is set. Only clear old data and set
696	default_headers when any work is done. Always goto out when setting
697	rc to an error value. Use CURLOPT_ERRORBUFFER to get more error
698	output when verbose output is requested.
699	* debuginfod.h (DEBUGINFOD_VERBOSE_ENV_VAR): New.
700	(debuginfod_set_verbose_fd): Added.
701	* debuginfod-find.c (parse_opt): Set debuginfod_set_verbose_fd on -v.
702	* bdebuginfod.map (ELFUTILS_0.183): New section, add
703	debuginfod_set_verbose_fd.
704
7052020-11-21  Mark Wielaard  <[email protected]>
706
707	* debuginfod.cxx (handle_root): New function.
708	(handler_cb): Handle "/" and report url1 in webapi error.
709
7102020-11-11  Mark Wielaard  <[email protected]>
711
712	* debuginfod-find.c (progressfn): Use clock_gettime to print Progress
713	at most 5 times a second.
714
7152020-11-19  Frank Ch. Eigler  <[email protected]>
716
717	* debuginfod.cxx (tmp_inc_metric): New class.
718	(handler_cb): Use it to track webapi operations.
719
7202020-11-01  Érico N. Rolim  <[email protected]>
721
722	* debuginfod-client.c (debuginfod_init_cache): Use ACCESSPERMS for
723	mkdir, DEFFILEMODE for open with O_CREAT.
724
7252020-11-01  Érico N. Rolim  <[email protected]>
726
727	* debuginfod.cxx: include libintl.h.
728
7292020-11-01  Érico N. Rolim  <[email protected]>
730
731	* Makefile.am (debuginfod_LDADD): Add argp_LDADD and fts_LIBS.
732	(debuginfod_find_LDADD): Likewise.
733	(libdebuginfod_so_LDLIBS): Add fts_LIBS.
734
7352020-10-31  Frank Ch. Eigler  <[email protected]>
736
737	* debuginfod.cxx (scan_source_file, scan_archive_file): Add new scanned_bytes_total,
738	scanned_files_total metrics.
739	(archive_classify): Exit early if interrupted.
740	(scan_source_paths): Perform realpath/regex checks only on FTS_F files.
741	Tweak metrics.
742
7432020-10-30  Frank Ch. Eigler  <[email protected]>
744
745	PR26775 cont'd.
746	* debuginfod.cxx (thread_main_scanner): Ensure control doesn't
747	leave infinite loop until program exit, even if SIGUSR2.
748	(scan_source_paths): Have traverser clean scanq on
749	SIGUSR2.  Emit additional traversed_total metrics.
750	(groom): Emit additional groomed_total metrics.
751	(thread_main_groom): Restore previous thread_work_total
752	metric.
753
7542020-10-29  Frank Ch. Eigler  <[email protected]>
755
756	PR26775
757	* debuginfod.cxx (forced_*_count): Make these global.
758	(runq::clear): New function.
759	(thread_main_scanner): Check for pending SIGUSR2; interrupt.
760	(scan_source_paths): Check for pending SIGUSR2; interrupt.
761	(groom): Report prometheus stats before groom also.  Check for
762	pending SIGUSR1; interrupt.  Increment thread_work_total for
763	each file scanned, not the entire cycle.
764
7652020-10-29  Frank Ch. Eigler  <[email protected]>
766
767	PR26810
768	* debuginfod.cxx (handle_buildid_*_match): Throw exceptions for
769	more lower level libc errors.
770	(handle_buildid_match): Catch & report exceptions but return 0
771	for continued iteration in the caller.
772
7732020-10-25  Mark Wielaard  <[email protected]>
774
775	* debuginfod-client.c (debuginfod_query_server): Translate
776	CURLE_PEER_FAILED_VERIFICATION to ECONNREFUSED.
777
7782020-10-20  Frank Ch. Eigler  <[email protected]>
779
780	PR26756: more prometheus metrics
781	* debuginfod.cxx (*_exception): Add counters for error occurrences.
782	(fdcache::*): Add counters for fdcache operations and status.
783	(fdcache::set_metric): New fn for overall stat counts.
784	(fdcache::limit): ... allow metric-less use from dtors.
785
7862020-10-20  Frank Ch. Eigler  <[email protected]>
787
788	* debuginfod.cxx (handle_buildid*): Add a parameter for detecting
789	internally-originated lookups for dwz resolution.
790
7912020-09-18  Frank Ch. Eigler <[email protected]>
792
793	* debuginfod.cxx (scan_source_file, archive_classify): Store only
794	canonicalized file names in sdef & sref records in the database.
795
7962020-09-08  Mark Wielaard  <[email protected]>
797
798	* Makefile.am (BUILD_STATIC): Include libcurl_LIBS in libdebuginfod
799	when NOT DUMMY_LIBDEBUGINFOD.
800
8012020-09-16  Mark Wielaard  <[email protected]>
802
803	* debuginfod-find.c: Fix license block comment.
804
8052020-09-15  Mark Wielaard  <[email protected]>
806
807	* debuginfod-find.c (main): Use dwelf_elf_begin.
808
8092020-07-03  Alice Zhang <[email protected]>
810
811	* debuginfod-client.c (debuginfod_query_server): Use strncasecmp
812	to compare effective_url. Try CURLINFO_SCHEME as fallback.
813
8142020-06-19  Mark Wielaard  <[email protected]>
815
816	* Makefile.am (bin_PROGRAMS): Guard with DEBUGINFOD and
817	LIBDEBUGINFOD.
818	(debuginfod_LDADD): Remove libcurl.
819	(libdebuginfod): When static and DUMMY_LIBDEBUGINFO remove libcurl.
820	(noinst_LIBRARIES): Guard with LIBDEBUGINFOD.
821	(AM_CPPFLAGS): Add -Wno-unused-parameter when DUMMY_LIBDEBUGINFOD.
822	(pkginclude_headers): Guard with LIBDEBUGINFOD
823	(libdebuginfod_so_LIBS): Likewise.
824	(+libdebuginfod_so_LDLIBS): Likewise.
825	(install): Likewise.
826	(uninstall): Likewise.
827	* debuginfod-client.c: Include dummy functions when
828	DUMMY_LIBDEBUGINFOD.
829	* debuginfod.cxx: Remove curl.h include.
830
8312020-06-16  Mark Wielaard  <[email protected]>
832
833	* debuginfod-client.c (debuginfod_query_server): Check malloc.
834	Move curl_multi_init call before handle_data malloc call.
835
8362020-06-16  Mark Wielaard  <[email protected]>
837
838	* debuginfod-client.c (debuginfod_query_server): Replace sizeof
839	build_id_bytes check with strlen build_id check.
840
8412020-06-16  Mark Wielaard  <[email protected]>
842
843	* debuginfod-client.c (debuginfod_query_server): Increase suffix
844	array and prepare having to escape 1 character with 2.
845
8462020-06-16  Mark Wielaard  <[email protected]>
847
848	* debuginfod-client.c (debuginfod_clean_cache): Handle failing
849	fopen (interval_path).
850
8512020-03-29  Mark Wielaard  <[email protected]>
852
853	* debuginfod-client.c (debuginfod_add_http_header): Check header
854	contains precisely one colon that isn't the first or last char.
855
8562020-03-29  Frank Ch. Eigler  <[email protected]>
857
858	* debuginfod-client.c (struct debuginfod_client): Add a flag field
859	for progressfn printing.
860	(default_progressfn): Set it if printing \rsomething.
861	(debuginfod_end): Terminate with \n if flag set, i.e., only if the
862	default_progressfn was actually called.
863
8642020-03-27  Mark Wielaard  <[email protected]>
865
866	* debuginfod.cxx (parse_opt): Check port is not zero.
867
8682020-03-28  Frank Ch. Eigler  <[email protected]>
869
870	* debuginfod.cxx (handle_buildid_r_match): During archive
871	extraction / fdcache prefetching, set the mtime of each
872	file in the cache.
873
8742020-03-27  Frank Ch. Eigler  <[email protected]>
875
876	* debuginfod-find.c (main): Extract buildid from /binary/ if
877	given instead of hex string.
878	* Makefile.am: Add elfutils library prereqs for debuginfod-find.
879
8802020-03-24  Frank Ch. Eigler  <[email protected]>
881
882	* debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
883	* debuginfod-client.c (struct debuginfod_client): Add headers fields.
884	(debuginfod_add_http_header): New client api to add outgoing headers.
885	(add_default_headers): Renamed from add_extra_headers, skip if flag.
886	(debuginfod_query_server): Pass accumulated headers to libcurl.
887	(debuginfod_end): Clean accumulated headers.
888	(debuginfod_find_*): Add default headers at this point.
889	* debuginfod.cxx (handle_buildid): Add conn pointer.  Use it to relay
890	incoming UA and XFF headers to federated upstream debuginfods.
891
8922020-03-26  Frank Ch. Eigler <[email protected]>
893
894	* debuginfod.cxx (handler_cb): Export two families of metrics for
895	prometheus traffic analysis: response times and data amounts.
896
8972020-03-26  Frank Ch. Eigler <[email protected]>
898
899	* debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb
900	after all if access(3)-able, fallback to bsdtar.
901
9022020-03-25  Frank Ch. Eigler <[email protected]>
903
904	* debuginfod.cxx (parse_opt): Associate a bsdtar subshell with
905	the .deb & .ddeb extensions, instead of dpkg-deb.
906
9072020-03-26  Frank Ch. Eigler  <[email protected]>
908
909	* debuginfod-client.c (debuginfod_query_server): Don't
910	set CURLOPT_PATH_AS_IS on old curl.  Mostly harmless.
911
9122020-03-24  Frank Ch. Eigler  <[email protected]>
913
914	* debuginfod-client.c (debuginfod_query_server): Set
915	CURLOPT_PATH_AS_IS, to propagate file names verbatim.
916	* debuginfod.cxx (canon_pathname): Implement RFC3986
917	style pathname canonicalization.
918	(handle_buildid): Canonicalize incoming webapi source
919	paths, accept either one.
920	(scan_source_file, archive_classify): Store both
921	original and canonicalized dwarf-source file names.
922
9232020-03-24  Frank Ch. Eigler  <[email protected]>
924
925	* debuginfod.cxx (handle_buildid): In case of federated fallback
926	queries, handle errors analogously to local ENOENT/404.
927	(handle_metrics): Return a size-of-response value.
928	(handler_cb): Add code to time entire application-side processing
929	stage + response sizes + http codes, so as to emit a complete
930	httpd-flavoured log line for each webapi request.
931
9322020-03-24  Frank Ch. Eigler  <[email protected]>
933
934	* debuginfod-client.c (debuginfod_query_server): Print the
935	default_progressfn terminating \n message only if that progressfn
936	is actually set.
937
9382020-03-24  Frank Ch. Eigler  <[email protected]>
939
940	* debuginfod-find.c (main): Correct /source full-pathness check for
941	"debuginfod-find -v source deadbeef /pathname" case.
942
9432020-03-22  Frank Ch. Eigler  <[email protected]>
944
945	* debuginfod-client.c (struct debuginfod_client): Add url field.
946	(struct handle_data): Add client field as backpointer.
947	(debuginfod_write_callback): Compute & save URL.
948	(default_progressfn): Print front pieces of the URL.
949	(debuginfod_query_server): Clear URL and cleanup after progressfn.
950	* debuginfod-find.c (main): Print URL at transfer conclusion.
951
9522020-03-22  Frank Ch. Eigler  <[email protected]>
953
954	* debuginfod.h, libdebuginfod.map: New functions for _get/set_user().
955	* debuginfod-client.c: Implement them.
956	* debuginfod-find.c: Include a token call just for testing them.
957
9582020-03-03  Aaron Merey  <[email protected]>
959
960	* debuginfod-client.c (debuginfod_query_server): Update
961	cache_path even when new default path already exists.
962
9632020-02-27  Aaron Merey  <[email protected]>
964
965	* debuginfod-client.c (xalloc_str): New macro. Call
966	asprintf with error checking.
967	(debuginfod_query_server): Use XDG_CACHE_HOME as a default
968	cache location if it is set. Replace snprintf with xalloc_str.
969
9702020-02-26  Konrad Kleine <[email protected]>
971
972	* debuginfod-client.c (debuginfod_query_server): Handle curl's
973	response code correctly when DEBUGINFOD_URLS begin with file://
974
9752020-02-25  Frank Ch. Eigler  <[email protected]>
976
977	* debuginfod.cxx (parse_opt): Treat -R as if -Z.rpm .
978
9792020-02-25  Frank Ch. Eigler  <[email protected]>
980
981	* debuginfod.cxx (fdcache_prefetch): New parameter.
982	(parse_opt): Parse it.
983	(main): Default it.
984	(fdcache::fd_size_mb): Change to double for accuracy.
985	(fdcache::probe): New function.
986	(fdcache::intern): New option to intern at end of LRU.
987	(fdcache::lookup): Clean fdcache.
988	(handle_buildid_r_match): Implement multi-stage archive
989	parsing, with optional prefetching of extracted contents
990	into the fdcache.
991
9922020-02-19  Aaron Merey  <[email protected]>
993
994	* debuginfod-client.c (debuginfod_clean_cache): Restrict
995	cleanup to client-pattern files.
996
9972020-02-05  Frank Ch. Eigler  <[email protected]>
998
999	* debuginfod.cxx (argp options): Add -Z option.
1000	(canonicalized_archive_entry_pathname): New function for
1001	distro-agnostic file name matching/storage.
1002
10032020-01-22  Frank Ch. Eigler  <[email protected]>
1004
1005	* debuginfod.cxx (dwarf_extract_source_paths): Don't print
1006	"skipping hat" messages at verbosity <=3, too noisy.
1007
10082020-01-19  Frank Ch. Eigler  <[email protected]>
1009
1010	* debuginfod.cxx (scanq): Rework to let groomer/fts threads
1011	synchronize with an empty workqueue, and lock out workqueue
1012	consumers.
1013	(thread_groom): Adopt new scanq idle APIs to lock out scanners.
1014	(thread_main_fts_source_paths): Adopt new scanq idler API to
1015	avoid being restarted while scanners haven't even finished yet.
1016	(thread_main_*): Increment thread_work_total metric only after
1017	a work cycle is completed, not when it begins.
1018
10192020-01-18  Frank Ch. Eigler  <[email protected]>
1020
1021	* debuginfod.cxx (thread_main_scanner): Handle empty source_paths[].
1022
10232020-01-11  Frank Ch. Eigler  <[email protected]>
1024
1025	* debuginfod.cxx (libarchive_fdcache): New class/facility to own a
1026	cache of temporary files that were previously extracted from an
1027	archive.  If only it could store just unlinked fd's instead of
1028	filenames.
1029	(handle_buildid_r_match): Use it to answer dwz/altdebug and webapi
1030	requests.
1031	(groom): Clean it.
1032	(main): Initialize the cache control parameters from heuristics.
1033	Use a consistent tmpdir for these and tmp files elsewhere.
1034
10352020-01-11  Frank Ch. Eigler  <[email protected]>
1036
1037	* debuginfod.cxx (conninfo): Print User-Agent and X-Forwarded-For
1038	request headers, after mild safety-censorship (for easier machine
1039	processing).
1040
10412020-01-11  Frank Ch. Eigler  <[email protected]>
1042
1043	* debuginfod.cxx: Rework threading model.
1044	(workq): New class for concurrent work-queue.
1045	(semaphore): Removed class, now unused.
1046	(scan_source_file_path): Rework into ...
1047	(scan_source_file): New function.
1048	(thread_main_scan_source_file_path): Nuke.
1049	(scan_source_archive_path): Rework into ...
1050	(scan_archive_file): New function.
1051	(thread_main_scanner): New function for scanner threads.
1052	(thread_main_fts_source_paths): New function for traversal thread.
1053	(scan_source_paths): ... doing this.
1054	(thread_groom): Tweak metrics for consistency.
1055	(main): Start 1 traversal and N scanner threads if needed.
1056
10572019-01-02  Mark Wielaard  <[email protected]>
1058
1059	* debuginfod.cxx (default_connect_timeout): Removed.
1060	(default_transfer_timeout): Removed.
1061	(default_timeout): New. Default to 90 seconds.
1062	(debuginfod_query_server): Parse server_timeout_envvar as one number.
1063	Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
1064
10652020-01-09  Frank Ch. Eigler  <[email protected]>
1066
1067	* debuginfod-client.c (add_extra_headers): New function,
1068	based on mjw's draft.
1069	(debuginfod_query_server): Call it.
1070
10712019-12-22  Frank Ch. Eigler  <[email protected]>
1072
1073	* debuginfod.cxx (*_rpm_*): Rename to *_archive_* throughout.
1074	(scan_archives): New read-mostly global to identify archive
1075	file extensions and corresponding extractor commands.
1076	(parse_opt): Handle new -U flag.
1077
10782019-12-19  Frank Ch. Eigler  <[email protected]>
1079
1080	* debuginfod-client.c (default_progressfn): New function.
1081	(debuginfod_begin): Use it if $DEBUGINFOD_PROGRESS set.
1082	(server_timeout): Bump to 30 seconds.
1083	(debuginfod_query_server): Call progressfn -after- rather than
1084	before curl ops, to make it likely that a successful transfer
1085	results in final a=b call.  Tweak cleanup sequence.
1086	* debuginfod.h: Document $DEBUGINFOD_PROGRESS name.
1087
10882019-12-09  Mark Wielaard  <[email protected]>
1089
1090	* debuginfod-client.c (debuginfod_query_server): Check
1091	server_urls_envvar early.
1092
10932019-12-03  Mark Wielaard  <[email protected]>
1094
1095	* debuginfod-client.c (debuginfod_query_server): Use separate
1096	local variables for CURLcode curl_res and CURLMcode curlm_res.
1097
10982019-11-26  Mark Wielaard  <[email protected]>
1099
1100	* Makefile.am (BUILD_STATIC): Add needed libraries for libdw and
1101	libdebuginfod.
1102
11032019-11-25  Frank Ch. Eigler  <[email protected]>
1104
1105	* debuginfod.cxx (groom): Add a sqlite3_db_release_memory()
1106	at the end of periodic grooming to try to shrink the process.
1107
11082019-11-24  Mark Wielaard  <[email protected]>
1109
1110	* debuginfod.cxx (test_webapi_sleep): Removed.
1111	(handler_cb): Don't check test_webapi_sleep and sleep.
1112	(main): Don't set test_webapi_sleep.
1113
11142019-11-24  Mark Wielaard  <[email protected]>
1115
1116	* debuginfod.cxx (add_metric): New function.
1117	(scan_source_file_path): Record metrics for
1118	found_executable_total, found_debuginfo_total and
1119	found_sourcerefs_total.
1120	(scan_source_rpm_path): Likewise.
1121
11222019-11-07  Frank Ch. Eigler  <[email protected]>
1123
1124	* debuginfod.cxx: Add /metrics endpoint.  Add numerous
1125	calls to new functions inc_metric/set_metric to populate
1126	threadsafe map containing stats.  Add http content-type
1127	response headers throughout.
1128	(thread_main_*): Simplify counter/timer flow.
1129	(main): Reorder web service shutdown to leave http running
1130	as long as possible.
1131	* debuginfod.8: Document it, add security caution.
1132
11332019-11-06  Frank Ch. Eigler  <[email protected]>
1134
1135	* debuginfod.cxx: Add new -L (symlink-following) mode.
1136	* debuginfod.8: Document it.
1137
11382019-11-04  Frank Ch. Eigler  <[email protected]>
1139
1140	* debuginfo-client.c (debuginfod_set_progressfn): New function
1141	for progress/interrupt callback.
1142	(debuginfod_clean_cache, debuginfod_query_server): Call it.
1143	* debuginfo.h: Declare it.
1144	* debuginfod_set_progressfn.3, *_find_debuginfo.3: Document it.
1145	* Makefile.am: Install it.
1146	* libdebuginfod.map: Export it all under ELFUTILS_0.178 symversion.
1147
1148	* debuginfod-find.c: Add -v option to activate progress cb.
1149	* debuginfod-find.1: Document it.
1150	* debuginfod.cxx: Add $DEBUGINFOD_TEST_WEBAPI_SLEEP env var
1151	to insert sleep in webapi callbacks, to help manual testing.
1152
11532019-10-28  Frank Ch. Eigler  <[email protected]>
1154
1155	* debuginfod.cxx: New file: debuginfod server.
1156	* debuginfod.8: New file: man page.
1157	* Makefile.am: Build it.
1158
11592019-10-28  Aaron Merey  <[email protected]>
1160
1161	* debuginfod-client.c: New file: debuginfod client library.
1162	* debuginfod.h: New file: header for same.
1163	* libdebuginfod.map: New file: govern its solib exports.
1164	* debuginfod-find.c: New file: command line frontend.
1165	* debuginfod-find.1, debuginfod_find_source.3,
1166	debuginfod_find_executable.3, debuginfod_find_debuginfo.3:
1167	New man pages.
1168