summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Trapp <michael.trapp@sap.com>2022-06-03 12:54:17 -0400
committerFrank Ch. Eigler <fche@redhat.com>2022-06-03 12:54:17 -0400
commit0da87b51104782dada7fa924f9f92d0ee802edb8 (patch)
treee0ce9f018dea7f8d8551ce403c33baa69a235da7
parent48c37efa32009cafcbf57dc1ca256715df2980c9 (diff)
downloadelfutils-0da87b51104782dada7fa924f9f92d0ee802edb8.tar.gz
debuginfod: add --disable-source-scan option
--disable-source-scan disables scanning of the dwarf source info of debuginfo sections. The source info is not required in setups without source code access. Signed-off-by: Michael Trapp <michael.trapp@sap.com>
-rw-r--r--debuginfod/debuginfod.cxx9
-rw-r--r--doc/debuginfod.86
2 files changed, 14 insertions, 1 deletions
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 13980ced..51f4302b 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -381,6 +381,8 @@ static const struct argp_option options[] =
{"forwarded-ttl-limit", ARGP_KEY_FORWARDED_TTL_LIMIT, "NUM", 0, "Limit of X-Forwarded-For hops, default 8.", 0},
#define ARGP_KEY_PASSIVE 0x1008
{ "passive", ARGP_KEY_PASSIVE, NULL, 0, "Do not scan or groom, read-only database.", 0 },
+#define ARGP_KEY_DISABLE_SOURCE_SCAN 0x1009
+ { "disable-source-scan", ARGP_KEY_DISABLE_SOURCE_SCAN, NULL, 0, "Do not scan dwarf source info.", 0 },
{ NULL, 0, NULL, 0, NULL, 0 },
};
@@ -430,6 +432,7 @@ static long fdcache_mintmp;
static long fdcache_prefetch_mbs;
static long fdcache_prefetch_fds;
static unsigned forwarded_ttl_limit = 8;
+static bool scan_source_info = true;
static string tmpdir;
static bool passive_p = false;
@@ -632,6 +635,9 @@ parse_opt (int key, char *arg,
// other conflicting options tricky to check
argp_failure(state, 1, EINVAL, "inconsistent options with passive mode");
break;
+ case ARGP_KEY_DISABLE_SOURCE_SCAN:
+ scan_source_info = false;
+ break;
// case 'h': argp_state_help (state, stderr, ARGP_HELP_LONG|ARGP_HELP_EXIT_OK);
default: return ARGP_ERR_UNKNOWN;
}
@@ -2705,7 +2711,8 @@ elf_classify (int fd, bool &executable_p, bool &debuginfo_p, string &buildid, se
startswith (section_name, ".zdebug_line"))
{
debuginfo_p = true;
- dwarf_extract_source_paths (elf, debug_sourcefiles);
+ if (scan_source_info)
+ dwarf_extract_source_paths (elf, debug_sourcefiles);
break; // expecting only one .*debug_line, so no need to look for others
}
else if (startswith (section_name, ".debug_") ||
diff --git a/doc/debuginfod.8 b/doc/debuginfod.8
index 95b827e9..a94315ad 100644
--- a/doc/debuginfod.8
+++ b/doc/debuginfod.8
@@ -274,6 +274,12 @@ exceeds N hops, it will not delegate a local lookup miss to
upstream debuginfods. The default limit is 8.
.TP
+.B "\-\-disable\-source\-scan"
+Disable scan of the dwarf source info of debuginfo sections.
+If a setup has no access to source code, the source info is not
+required.
+
+.TP
.B "\-v"
Increase verbosity of logging to the standard error file descriptor.
May be repeated to increase details. The default verbosity is 0.