Make --absolute (including the compilation directory in file names) the default and add a new option --relative to get the previous default behavior.
https://www.sourceware.org/bugzilla/show_bug.cgi?id=28951 Signed-off-by: Mark Wielaard <m...@klomp.org> --- ChangeLog | 4 ++++ NEWS | 3 +++ src/ChangeLog | 7 +++++++ src/addr2line.c | 14 +++++++++++--- 4 files changed, 25 insertions(+), 3 deletions(-) https://code.wildebeest.org/git/user/mjw/elfutils/commit/?h=addr2line-relative diff --git a/ChangeLog b/ChangeLog index f00db17b..4035dffb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2021-03-11 Mark Wielaard <m...@klomp.org> + + * NEWS: Document new --relative option for addr2line. + 2021-12-04 Mark Wielaard <m...@klomp.org> * configure.ac: Add --enable-sanitize-address. diff --git a/NEWS b/NEWS index 6be58866..ea74c019 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ Version 0.187 after 0.186 debuginfod: Support -C option for connection thread pooling. +addr2line: The -A, --absolute option, which shows file names including + the full compilation directory is now the default. To get the + old behavior use the new option --relative. Version 0.186 diff --git a/src/ChangeLog b/src/ChangeLog index 263e9faa..0e705b7d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2022-03-11 Mark Wielaard <m...@klomp.org> + + * addr2line.c (OPT_RELATIVE): New constant. + (options): Add --relative. + (use_comp_dir): Initialize to true. + (parse_opt): Handle OPT_RELATIVE. + 2021-12-04 Mark Wielaard <m...@klomp.org> * readelf.c (print_ehdr): Pass sizeof (buf) - 1 to strncpy. diff --git a/src/addr2line.c b/src/addr2line.c index 34945046..7c8d3a72 100644 --- a/src/addr2line.c +++ b/src/addr2line.c @@ -1,5 +1,6 @@ /* Locate source files and line information for given addresses Copyright (C) 2005-2010, 2012, 2013, 2015 Red Hat, Inc. + Copyright (C) 2022 Mark J. Wielaard <m...@klomp.org> This file is part of elfutils. Written by Ulrich Drepper <drep...@redhat.com>, 2005. @@ -49,7 +50,8 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; /* Values for the parameters which have no short form. */ #define OPT_DEMANGLER 0x100 -#define OPT_PRETTY 0x101 /* 'p' is already used to select the process. */ +#define OPT_PRETTY 0x101 /* 'p' is already used to select the process. */ +#define OPT_RELATIVE 0x102 /* 'r' is something else in binutils addr2line. */ /* Definitions of arguments for argp functions. */ static const struct argp_option options[] = @@ -62,7 +64,7 @@ static const struct argp_option options[] = { "addresses", 'a', NULL, 0, N_("Print address before each entry"), 0 }, { "basenames", 's', NULL, 0, N_("Show only base names of source files"), 0 }, { "absolute", 'A', NULL, 0, - N_("Show absolute file names using compilation directory"), 0 }, + N_("Show absolute file names using compilation directory (default)"), 0 }, { "functions", 'f', NULL, 0, N_("Also show function names"), 0 }, { "symbols", 'S', NULL, 0, N_("Also show symbol or section names"), 0 }, { "symbols-sections", 'x', NULL, 0, N_("Also show symbol and the section names"), 0 }, @@ -74,6 +76,8 @@ static const struct argp_option options[] = N_("Show demangled symbols (ARG is always ignored)"), 0 }, { "pretty-print", OPT_PRETTY, NULL, 0, N_("Print all information on one line, and indent inlines"), 0 }, + { "relative", OPT_RELATIVE, NULL, 0, + N_("Show relative file names without compilation directory"), 0 }, { NULL, 0, NULL, 0, N_("Miscellaneous:"), 0 }, /* Unsupported options. */ @@ -111,7 +115,7 @@ static bool print_addresses; static bool only_basenames; /* True if absolute file names based on DW_AT_comp_dir should be shown. */ -static bool use_comp_dir; +static bool use_comp_dir = true; /* True if line flags should be shown. */ static bool show_flags; @@ -236,6 +240,10 @@ parse_opt (int key, char *arg, struct argp_state *state) use_comp_dir = true; break; + case OPT_RELATIVE: + use_comp_dir = false; + break; + case 'f': show_functions = true; break; -- 2.18.4