[PATCH] addr2line: Make --absolute the default, add --relative option.

2022-03-11 Thread Mark Wielaard
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 
---
 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  
+
+   * NEWS: Document new --relative option for addr2line.
+
 2021-12-04  Mark Wielaard  
 
* 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  
+
+   * 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  
 
* 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 
This file is part of elfutils.
Written by Ulrich Drepper , 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_PRETTY0x101  /* '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



[Bug tools/28951] eu-addr2line produces relative path names, should be absolute

2022-03-11 Thread mark at klomp dot org via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=28951

Mark Wielaard  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at sourceware dot org   |mark at klomp dot org

--- Comment #3 from Mark Wielaard  ---
(In reply to Frank Ch. Eigler from comment #2)
> Making it default would let it match binutils.
> (Both also have the "-s" option for basename.)

Matching binutils addr2line would be good.
I also added a new --relative option to get the old default back.
(-s, --basenames, isn't exactly the same)

https://sourceware.org/pipermail/elfutils-devel/2022q1/004681.html

-- 
You are receiving this mail because:
You are on the CC list for the bug.