• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
12021-02-04  Frank Ch. Eigler <fche@redhat.com>
2
3	PR27092 low-memory handling
4	* debuginfod.cxx (fdcache_mintmp): New parameter, with cmd-line option.
5	(parse_opt): Parse it.
6	(main): Default it.
7	(statfs_free_enough_p): New function.
8	(libarchive_fdcache::*): Call it to trigger emergency fdcache flush.
9	(thread_main_scanner): Call it to report filesystem fullness metrics.
10	(groom): Ditto.
11	(set/add_metric): Take double rather than int64_t values.
12	(archive_exception): Propagate suberror to metric label.
13	(main): Detect pthread creation fatal errors properly.
14
152021-02-02  Frank Ch. Eigler <fche@redhat.com>
16
17	PR27323
18	* debuginfod.cxx (dbq): New read-only database connection for queries
19	only.
20	(signal_handler): Interrupt it.
21	(main): Open / close it.
22	(handle_buildid): Use it for webapi queries only.
23	(database_stats_report): Make more interruptible.  Report sqlite3
24	operation times to the prometheus metrics.
25	(groom): Make more interruptible.
26	(thread_main_fts_source_paths, thread_main_groom): Ensure
27	state/progress metrics are fresh even in case of exceptions.
28
292020-12-20  Dmitry V. Levin  <ldv@altlinux.org>
30
31	* .gitignore: New file.
32
332020-12-12  Dmitry V. Levin  <ldv@altlinux.org>
34
35	* debuginfod-client.c (debuginfod_query_server): Fix spelling typos in
36	comments.
37	* debuginfod.cxx: Likewise.
38	(parse_opt): Fix spelling typos in error diagnostics.
39
402020-12-08  Dmitry V. Levin  <ldv@altlinux.org>
41
42	* Makefile.am [LIBDEBUGINFOD]: Create libdebuginfod.so.1 first, turn
43	libdebuginfod.so into symlink.
44
452020-11-30  Dmitry V. Levin  <ldv@altlinux.org>
46
47	* Makefile.am (libdebuginfod.so): Replace $@.$(VERSION) with
48	$(LIBDEBUGINFOD_SONAME).
49	(install, uninstall, MOSTLYCLEANFILES): Replace
50	libdebuginfod.so.$(VERSION) with $(LIBDEBUGINFOD_SONAME).
51	(VERSION): Remove.
52	* debuginfod.h: Rename to ...
53	* debuginfod.h.in ... this.
54	(DEBUGINFOD_SONAME): New macro.
55
562020-11-30  Dmitry V. Levin  <ldv@altlinux.org>
57
58	* Makefile.am (libdebuginfod.so$(EXEEXT)): Drop $(EXEEXT) suffix.
59
602020-11-25  Frank Ch. Eigler  <fche@redhat.com>
61
62	* debuginfod.cxx (step_ok_done): Correct typo in prom metric label.
63
642020-11-25  Frank Ch. Eigler  <fche@redhat.com>
65
66	* debuginfod.cxx (tmp_ms_metric): Switch from gettimeofday to
67	clock_gettime(CLOCK_MONOTONIC) for time-interval measurements.
68	(handler_cb, scan_source_paths, groom): Ditto.
69
702020-11-23  Frank Ch. Eigler  <fche@redhat.com>
71
72	* debuginfod.cxx (tmp_ms_metric): New class for RAII timing metrics.
73	(sqlite_ps::reset, step*): Call it to track sqlite3 performance.
74	(sqlite_exception ctor): Increment sqlite3 error_count.
75
762020-11-23  Mark Wielaard  <mark@klomp.org>
77
78	* debuginfod-client.c (debuginfod_query_server): Initialize
79	struct handle_data errbuf to the empty string.
80
812020-11-11  Mark Wielaard  <mark@klomp.org>
82
83	* debuginfod-client.c (debuginfod_set_verbose_fd): New function.
84	(struct debuginfod_client): Add verbose_fd.
85	(struct handle_data): Add errbuf.
86	(debuginfod_query_server): Produce verbose output when
87	debuginfod_client verbose_fd is set. Only clear old data and set
88	default_headers when any work is done. Always goto out when setting
89	rc to an error value. Use CURLOPT_ERRORBUFFER to get more error
90	output when verbose output is requested.
91	* debuginfod.h (DEBUGINFOD_VERBOSE_ENV_VAR): New.
92	(debuginfod_set_verbose_fd): Added.
93	* debuginfod-find.c (parse_opt): Set debuginfod_set_verbose_fd on -v.
94	* bdebuginfod.map (ELFUTILS_0.183): New section, add
95	debuginfod_set_verbose_fd.
96
972020-11-21  Mark Wielaard  <mark@klomp.org>
98
99	* debuginfod.cxx (handle_root): New function.
100	(handler_cb): Handle "/" and report url1 in webapi error.
101
1022020-11-11  Mark Wielaard  <mark@klomp.org>
103
104	* debuginfod-find.c (progressfn): Use clock_gettime to print Progress
105	at most 5 times a second.
106
1072020-11-19  Frank Ch. Eigler  <fche@redhat.com>
108
109	* debuginfod.cxx (tmp_inc_metric): New class.
110	(handler_cb): Use it to track webapi operations.
111
1122020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
113
114	* debuginfod-client.c (debuginfod_init_cache): Use ACCESSPERMS for
115	mkdir, DEFFILEMODE for open with O_CREAT.
116
1172020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
118
119	* debuginfod.cxx: include libintl.h.
120
1212020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
122
123	* Makefile.am (debuginfod_LDADD): Add argp_LDADD and fts_LIBS.
124	(debuginfod_find_LDADD): Likewise.
125	(libdebuginfod_so_LDLIBS): Add fts_LIBS.
126
1272020-10-31  Frank Ch. Eigler  <fche@redhat.com>
128
129	* debuginfod.cxx (scan_source_file, scan_archive_file): Add new scanned_bytes_total,
130	scanned_files_total metrics.
131	(archive_classify): Exit early if interrupted.
132	(scan_source_paths): Perform realpath/regex checks only on FTS_F files.
133	Tweak metrics.
134
1352020-10-30  Frank Ch. Eigler  <fche@redhat.com>
136
137	PR26775 cont'd.
138	* debuginfod.cxx (thread_main_scanner): Ensure control doesn't
139	leave infinite loop until program exit, even if SIGUSR2.
140	(scan_source_paths): Have traverser clean scanq on
141	SIGUSR2.  Emit additional traversed_total metrics.
142	(groom): Emit additional groomed_total metrics.
143	(thread_main_groom): Restore previous thread_work_total
144	metric.
145
1462020-10-29  Frank Ch. Eigler  <fche@redhat.com>
147
148	PR26775
149	* debuginfod.cxx (forced_*_count): Make these global.
150	(runq::clear): New function.
151	(thread_main_scanner): Check for pending SIGUSR2; interrupt.
152	(scan_source_paths): Check for pending SIGUSR2; interrupt.
153	(groom): Report prometheus stats before groom also.  Check for
154	pending SIGUSR1; interrupt.  Increment thread_work_total for
155	each file scanned, not the entire cycle.
156
1572020-10-29  Frank Ch. Eigler  <fche@redhat.com>
158
159	PR26810
160	* debuginfod.cxx (handle_buildid_*_match): Throw exceptions for
161	more lower level libc errors.
162	(handle_buildid_match): Catch & report exceptions but return 0
163	for continued iteration in the caller.
164
1652020-10-25  Mark Wielaard  <mark@klomp.org>
166
167	* debuginfod-client.c (debuginfod_query_server): Translate
168	CURLE_PEER_FAILED_VERIFICATION to ECONNREFUSED.
169
1702020-10-20  Frank Ch. Eigler  <fche@redhat.com>
171
172	PR26756: more prometheus metrics
173	* debuginfod.cxx (*_exception): Add counters for error occurrences.
174	(fdcache::*): Add counters for fdcache operations and status.
175	(fdcache::set_metric): New fn for overall stat counts.
176	(fdcache::limit): ... allow metric-less use from dtors.
177
1782020-10-20  Frank Ch. Eigler  <fche@redhat.com>
179
180	* debuginfod.cxx (handle_buildid*): Add a parameter for detecting
181	internally-originated lookups for dwz resolution.
182
1832020-09-18  Frank Ch. Eigler <fche@redhat.com>
184
185	* debuginfod.cxx (scan_source_file, archive_classify): Store only
186	canonicalized file names in sdef & sref records in the database.
187
1882020-09-08  Mark Wielaard  <mark@klomp.org>
189
190	* Makefile.am (BUILD_STATIC): Include libcurl_LIBS in libdebuginfod
191	when NOT DUMMY_LIBDEBUGINFOD.
192
1932020-09-16  Mark Wielaard  <mark@klomp.org>
194
195	* debuginfod-find.c: Fix license block comment.
196
1972020-09-15  Mark Wielaard  <mark@klomp.org>
198
199	* debuginfod-find.c (main): Use dwelf_elf_begin.
200
2012020-07-03  Alice Zhang <alizhang@redhat.com>
202
203	* debuginfod-client.c (debuginfod_query_server): Use strncasecmp
204	to compare effective_url. Try CURLINFO_SCHEME as fallback.
205
2062020-06-19  Mark Wielaard  <mark@klomp.org>
207
208	* Makefile.am (bin_PROGRAMS): Guard with DEBUGINFOD and
209	LIBDEBUGINFOD.
210	(debuginfod_LDADD): Remove libcurl.
211	(libdebuginfod): When static and DUMMY_LIBDEBUGINFO remove libcurl.
212	(noinst_LIBRARIES): Guard with LIBDEBUGINFOD.
213	(AM_CPPFLAGS): Add -Wno-unused-parameter when DUMMY_LIBDEBUGINFOD.
214	(pkginclude_headers): Guard with LIBDEBUGINFOD
215	(libdebuginfod_so_LIBS): Likewise.
216	(+libdebuginfod_so_LDLIBS): Likewise.
217	(install): Likewise.
218	(uninstall): Likewise.
219	* debuginfod-client.c: Include dummy functions when
220	DUMMY_LIBDEBUGINFOD.
221	* debuginfod.cxx: Remove curl.h include.
222
2232020-06-16  Mark Wielaard  <mark@klomp.org>
224
225	* debuginfod-client.c (debuginfod_query_server): Check malloc.
226	Move curl_multi_init call before handle_data malloc call.
227
2282020-06-16  Mark Wielaard  <mark@klomp.org>
229
230	* debuginfod-client.c (debuginfod_query_server): Replace sizeof
231	build_id_bytes check with strlen build_id check.
232
2332020-06-16  Mark Wielaard  <mark@klomp.org>
234
235	* debuginfod-client.c (debuginfod_query_server): Increase suffix
236	array and prepare having to escape 1 character with 2.
237
2382020-06-16  Mark Wielaard  <mark@klomp.org>
239
240	* debuginfod-client.c (debuginfod_clean_cache): Handle failing
241	fopen (interval_path).
242
2432020-03-29  Mark Wielaard  <mark@klomp.org>
244
245	* debuginfod-client.c (debuginfod_add_http_header): Check header
246	contains precisely one colon that isn't the first or last char.
247
2482020-03-29  Frank Ch. Eigler  <fche@redhat.com>
249
250	* debuginfod-client.c (struct debuginfod_client): Add a flag field
251	for progressfn printing.
252	(default_progressfn): Set it if printing \rsomething.
253	(debuginfod_end): Terminate with \n if flag set, i.e., only if the
254	default_progressfn was actually called.
255
2562020-03-27  Mark Wielaard  <mark@klomp.org>
257
258	* debuginfod.cxx (parse_opt): Check port is not zero.
259
2602020-03-28  Frank Ch. Eigler  <fche@redhat.com>
261
262	* debuginfod.cxx (handle_buildid_r_match): During archive
263	extraction / fdcache prefetching, set the mtime of each
264	file in the cache.
265
2662020-03-27  Frank Ch. Eigler  <fche@redhat.com>
267
268	* debuginfod-find.c (main): Extract buildid from /binary/ if
269	given instead of hex string.
270	* Makefile.am: Add elfutils library prereqs for debuginfod-find.
271
2722020-03-24  Frank Ch. Eigler  <fche@redhat.com>
273
274	* debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
275	* debuginfod-client.c (struct debuginfod_client): Add headers fields.
276	(debuginfod_add_http_header): New client api to add outgoing headers.
277	(add_default_headers): Renamed from add_extra_headers, skip if flag.
278	(debuginfod_query_server): Pass accumulated headers to libcurl.
279	(debuginfod_end): Clean accumulated headers.
280	(debuginfod_find_*): Add default headers at this point.
281	* debuginfod.cxx (handle_buildid): Add conn pointer.  Use it to relay
282	incoming UA and XFF headers to federated upstream debuginfods.
283
2842020-03-26  Frank Ch. Eigler <fche@redhat.com>
285
286	* debuginfod.cxx (handler_cb): Export two families of metrics for
287	prometheus traffic analysis: response times and data amounts.
288
2892020-03-26  Frank Ch. Eigler <fche@redhat.com>
290
291	* debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb
292	after all if access(3)-able, fallback to bsdtar.
293
2942020-03-25  Frank Ch. Eigler <fche@redhat.com>
295
296	* debuginfod.cxx (parse_opt): Associate a bsdtar subshell with
297	the .deb & .ddeb extensions, instead of dpkg-deb.
298
2992020-03-26  Frank Ch. Eigler  <fche@redhat.com>
300
301	* debuginfod-client.c (debuginfod_query_server): Don't
302	set CURLOPT_PATH_AS_IS on old curl.  Mostly harmless.
303
3042020-03-24  Frank Ch. Eigler  <fche@redhat.com>
305
306	* debuginfod-client.c (debuginfod_query_server): Set
307	CURLOPT_PATH_AS_IS, to propagate file names verbatim.
308	* debuginfod.cxx (canon_pathname): Implement RFC3986
309	style pathname canonicalization.
310	(handle_buildid): Canonicalize incoming webapi source
311	paths, accept either one.
312	(scan_source_file, archive_classify): Store both
313	original and canonicalized dwarf-source file names.
314
3152020-03-24  Frank Ch. Eigler  <fche@redhat.com>
316
317	* debuginfod.cxx (handle_buildid): In case of federated fallback
318	queries, handle errors analogously to local ENOENT/404.
319	(handle_metrics): Return a size-of-response value.
320	(handler_cb): Add code to time entire application-side processing
321	stage + response sizes + http codes, so as to emit a complete
322	httpd-flavoured log line for each webapi request.
323
3242020-03-24  Frank Ch. Eigler  <fche@redhat.com>
325
326	* debuginfod-client.c (debuginfod_query_server): Print the
327	default_progressfn terminating \n message only if that progressfn
328	is actually set.
329
3302020-03-24  Frank Ch. Eigler  <fche@redhat.com>
331
332	* debuginfod-find.c (main): Correct /source full-pathness check for
333	"debuginfod-find -v source deadbeef /pathname" case.
334
3352020-03-22  Frank Ch. Eigler  <fche@redhat.com>
336
337	* debuginfod-client.c (struct debuginfod_client): Add url field.
338	(struct handle_data): Add client field as backpointer.
339	(debuginfod_write_callback): Compute & save URL.
340	(default_progressfn): Print front pieces of the URL.
341	(debuginfod_query_server): Clear URL and cleanup after progressfn.
342	* debuginfod-find.c (main): Print URL at transfer conclusion.
343
3442020-03-22  Frank Ch. Eigler  <fche@redhat.com>
345
346	* debuginfod.h, libdebuginfod.map: New functions for _get/set_user().
347	* debuginfod-client.c: Implement them.
348	* debuginfod-find.c: Include a token call just for testing them.
349
3502020-03-03  Aaron Merey  <amerey@redhat.com>
351
352	* debuginfod-client.c (debuginfod_query_server): Update
353	cache_path even when new default path already exists.
354
3552020-02-27  Aaron Merey  <amerey@redhat.com>
356
357	* debuginfod-client.c (xalloc_str): New macro. Call
358	asprintf with error checking.
359	(debuginfod_query_server): Use XDG_CACHE_HOME as a default
360	cache location if it is set. Replace snprintf with xalloc_str.
361
3622020-02-26  Konrad Kleine <kkleine@redhat.com>
363
364	* debuginfod-client.c (debuginfod_query_server): Handle curl's
365	response code correctly when DEBUGINFOD_URLS begin with file://
366
3672020-02-25  Frank Ch. Eigler  <fche@redhat.com>
368
369	* debuginfod.cxx (parse_opt): Treat -R as if -Z.rpm .
370
3712020-02-25  Frank Ch. Eigler  <fche@redhat.com>
372
373	* debuginfod.cxx (fdcache_prefetch): New parameter.
374	(parse_opt): Parse it.
375	(main): Default it.
376	(fdcache::fd_size_mb): Change to double for accuracy.
377	(fdcache::probe): New function.
378	(fdcache::intern): New option to intern at end of LRU.
379	(fdcache::lookup): Clean fdcache.
380	(handle_buildid_r_match): Implement multi-stage archive
381	parsing, with optional prefetching of extracted contents
382	into the fdcache.
383
3842020-02-19  Aaron Merey  <amerey@redhat.com>
385
386	* debuginfod-client.c (debuginfod_clean_cache): Restrict
387	cleanup to client-pattern files.
388
3892020-02-05  Frank Ch. Eigler  <fche@redhat.com>
390
391	* debuginfod.cxx (argp options): Add -Z option.
392	(canonicalized_archive_entry_pathname): New function for
393	distro-agnostic file name matching/storage.
394
3952020-01-22  Frank Ch. Eigler  <fche@redhat.com>
396
397	* debuginfod.cxx (dwarf_extract_source_paths): Don't print
398	"skipping hat" messages at verbosity <=3, too noisy.
399
4002020-01-19  Frank Ch. Eigler  <fche@redhat.com>
401
402	* debuginfod.cxx (scanq): Rework to let groomer/fts threads
403	synchronize with an empty workqueue, and lock out workqueue
404	consumers.
405	(thread_groom): Adopt new scanq idle APIs to lock out scanners.
406	(thread_main_fts_source_paths): Adopt new scanq idler API to
407	avoid being restarted while scanners haven't even finished yet.
408	(thread_main_*): Increment thread_work_total metric only after
409	a work cycle is completed, not when it begins.
410
4112020-01-18  Frank Ch. Eigler  <fche@redhat.com>
412
413	* debuginfod.cxx (thread_main_scanner): Handle empty source_paths[].
414
4152020-01-11  Frank Ch. Eigler  <fche@redhat.com>
416
417	* debuginfod.cxx (libarchive_fdcache): New class/facility to own a
418	cache of temporary files that were previously extracted from an
419	archive.  If only it could store just unlinked fd's instead of
420	filenames.
421	(handle_buildid_r_match): Use it to answer dwz/altdebug and webapi
422	requests.
423	(groom): Clean it.
424	(main): Initialize the cache control parameters from heuristics.
425	Use a consistent tmpdir for these and tmp files elsewhere.
426
4272020-01-11  Frank Ch. Eigler  <fche@redhat.com>
428
429	* debuginfod.cxx (conninfo): Print User-Agent and X-Forwarded-For
430	request headers, after mild safety-censorship (for easier machine
431	processing).
432
4332020-01-11  Frank Ch. Eigler  <fche@redhat.com>
434
435	* debuginfod.cxx: Rework threading model.
436	(workq): New class for concurrent work-queue.
437	(semaphore): Removed class, now unused.
438	(scan_source_file_path): Rework into ...
439	(scan_source_file): New function.
440	(thread_main_scan_source_file_path): Nuke.
441	(scan_source_archive_path): Rework into ...
442	(scan_archive_file): New function.
443	(thread_main_scanner): New function for scanner threads.
444	(thread_main_fts_source_paths): New function for traversal thread.
445	(scan_source_paths): ... doing this.
446	(thread_groom): Tweak metrics for consistency.
447	(main): Start 1 traversal and N scanner threads if needed.
448
4492019-01-02  Mark Wielaard  <mark@klomp.org>
450
451	* debuginfod.cxx (default_connect_timeout): Removed.
452	(default_transfer_timeout): Removed.
453	(default_timeout): New. Default to 90 seconds.
454	(debuginfod_query_server): Parse server_timeout_envvar as one number.
455	Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
456
4572020-01-09  Frank Ch. Eigler  <fche@redhat.com>
458
459	* debuginfod-client.c (add_extra_headers): New function,
460	based on mjw's draft.
461	(debuginfod_query_server): Call it.
462
4632019-12-22  Frank Ch. Eigler  <fche@redhat.com>
464
465	* debuginfod.cxx (*_rpm_*): Rename to *_archive_* throughout.
466	(scan_archives): New read-mostly global to identify archive
467	file extensions and corresponding extractor commands.
468	(parse_opt): Handle new -U flag.
469
4702019-12-19  Frank Ch. Eigler  <fche@redhat.com>
471
472	* debuginfod-client.c (default_progressfn): New function.
473	(debuginfod_begin): Use it if $DEBUGINFOD_PROGRESS set.
474	(server_timeout): Bump to 30 seconds.
475	(debuginfod_query_server): Call progressfn -after- rather than
476	before curl ops, to make it likely that a successful transfer
477	results in final a=b call.  Tweak cleanup sequence.
478	* debuginfod.h: Document $DEBUGINFOD_PROGRESS name.
479
4802019-12-09  Mark Wielaard  <mark@klomp.org>
481
482	* debuginfod-client.c (debuginfod_query_server): Check
483	server_urls_envvar early.
484
4852019-12-03  Mark Wielaard  <mark@klomp.org>
486
487	* debuginfod-client.c (debuginfod_query_server): Use separate
488	local variables for CURLcode curl_res and CURLMcode curlm_res.
489
4902019-11-26  Mark Wielaard  <mark@klomp.org>
491
492	* Makefile.am (BUILD_STATIC): Add needed libraries for libdw and
493	libdebuginfod.
494
4952019-11-25  Frank Ch. Eigler  <fche@redhat.com>
496
497	* debuginfod.cxx (groom): Add a sqlite3_db_release_memory()
498	at the end of periodic grooming to try to shrink the process.
499
5002019-11-24  Mark Wielaard  <mark@klomp.org>
501
502	* debuginfod.cxx (test_webapi_sleep): Removed.
503	(handler_cb): Don't check test_webapi_sleep and sleep.
504	(main): Don't set test_webapi_sleep.
505
5062019-11-24  Mark Wielaard  <mark@klomp.org>
507
508	* debuginfod.cxx (add_metric): New function.
509	(scan_source_file_path): Record metrics for
510	found_executable_total, found_debuginfo_total and
511	found_sourcerefs_total.
512	(scan_source_rpm_path): Likewise.
513
5142019-11-07  Frank Ch. Eigler  <fche@redhat.com>
515
516	* debuginfod.cxx: Add /metrics endpoint.  Add numerous
517	calls to new functions inc_metric/set_metric to populate
518	threadsafe map containing stats.  Add http content-type
519	response headers throughout.
520	(thread_main_*): Simplify counter/timer flow.
521	(main): Reorder web service shutdown to leave http running
522	as long as possible.
523	* debuginfod.8: Document it, add security caution.
524
5252019-11-06  Frank Ch. Eigler  <fche@redhat.com>
526
527	* debuginfod.cxx: Add new -L (symlink-following) mode.
528	* debuginfod.8: Document it.
529
5302019-11-04  Frank Ch. Eigler  <fche@redhat.com>
531
532	* debuginfo-client.c (debuginfod_set_progressfn): New function
533	for progress/interrupt callback.
534	(debuginfod_clean_cache, debuginfod_query_server): Call it.
535	* debuginfo.h: Declare it.
536	* debuginfod_set_progressfn.3, *_find_debuginfo.3: Document it.
537	* Makefile.am: Install it.
538	* libdebuginfod.map: Export it all under ELFUTILS_0.178 symversion.
539
540	* debuginfod-find.c: Add -v option to activate progress cb.
541	* debuginfod-find.1: Document it.
542	* debuginfod.cxx: Add $DEBUGINFOD_TEST_WEBAPI_SLEEP env var
543	to insert sleep in webapi callbacks, to help manual testing.
544
5452019-10-28  Frank Ch. Eigler  <fche@redhat.com>
546
547	* debuginfod.cxx: New file: debuginfod server.
548	* debuginfod.8: New file: man page.
549	* Makefile.am: Build it.
550
5512019-10-28  Aaron Merey  <amerey@redhat.com>
552
553	* debuginfod-client.c: New file: debuginfod client library.
554	* debuginfod.h: New file: header for same.
555	* libdebuginfod.map: New file: govern its solib exports.
556	* debuginfod-find.c: New file: command line frontend.
557	* debuginfod-find.1, debuginfod_find_source.3,
558	debuginfod_find_executable.3, debuginfod_find_debuginfo.3:
559	New man pages.
560