summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2015-05-19 23:08:00 +0200
committerMark Wielaard <mjw@redhat.com>2015-05-27 17:17:51 +0200
commitd76d73f490b1e097e650bb77277ae9ed1efd5b1a (patch)
tree03ddb833b702c1b0f4a42ad78a08a40d51820a76
parent472890f580a83f1511e1ad83c10ea2b1d364cc8d (diff)
downloadelfutils-d76d73f490b1e097e650bb77277ae9ed1efd5b1a.tar.gz
addr2line: Always parse addresses as hex numbers.
We would sometimes interpret input addresses as decimal or octal. That could be confusing and isn't what binutils addr2line does. Be consistent and always treat input addresses as hex. Signed-off-by: Mark Wielaard <mjw@redhat.com>
-rw-r--r--NEWS3
-rw-r--r--src/ChangeLog5
-rw-r--r--src/addr2line.c4
-rw-r--r--tests/ChangeLog4
-rwxr-xr-xtests/run-addrname-test.sh2
5 files changed, 15 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 60aa995d..8cc184a2 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ Version 0.162
libdw: Install new header elfutils/known-dwarf.h.
+addr2line: Input addresses are now always interpreted as hexadecimal
+ numbers, never as octal or decimal numbers.
+
Version 0.161
libdw: New function dwarf_peel_type. dwarf_aggregate_size now uses
diff --git a/src/ChangeLog b/src/ChangeLog
index f4ff1fb5..284b8860 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,10 @@
2015-05-20 Mark Wielaard <mjw@redhat.com>
+ * addr2line.c (handle_address): Call strtoumax with base 16. Make
+ sure all input has been processed.
+
+2015-05-20 Mark Wielaard <mjw@redhat.com>
+
* addr2line (argp_option): Group 'section' under "Input format
options".
diff --git a/src/addr2line.c b/src/addr2line.c
index c7ff7f71..b1ff3680 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -532,8 +532,8 @@ static int
handle_address (const char *string, Dwfl *dwfl)
{
char *endp;
- uintmax_t addr = strtoumax (string, &endp, 0);
- if (endp == string)
+ uintmax_t addr = strtoumax (string, &endp, 16);
+ if (endp == string || *endp != '\0')
{
bool parsed = false;
int i, j;
diff --git a/tests/ChangeLog b/tests/ChangeLog
index a899947e..0e310121 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2015-05-20 Mark Wielaard <mjw@redhat.com>
+
+ * run-addrname-test.sh: Make sure all input addresses are hex.
+
2015-05-04 Max Filippov <jcmvbkbc@gmail.com>
* backtrace-child.c (stdarg, main): Replace assert_perror with assert.
diff --git a/tests/run-addrname-test.sh b/tests/run-addrname-test.sh
index f954ee45..90e19df7 100755
--- a/tests/run-addrname-test.sh
+++ b/tests/run-addrname-test.sh
@@ -277,7 +277,7 @@ EOF
# local l0local2, 0
# offset 12
testfiles testfile64
-testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile64 1 4 5 8 9 12 <<\EOF
+testrun_compare ${abs_top_builddir}/src/addr2line -S -e testfile64 1 4 5 8 9 c <<\EOF
gglobal2
??:0
g0global2