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 <[email protected]> --- src/ChangeLog | 5 +++++ src/addr2line.c | 4 ++-- tests/ChangeLog | 4 ++++ tests/run-addrname-test.sh | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index f4ff1fb..284b886 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2015-05-20 Mark Wielaard <[email protected]> + * addr2line.c (handle_address): Call strtoumax with base 16. Make + sure all input has been processed. + +2015-05-20 Mark Wielaard <[email protected]> + * addr2line (argp_option): Group 'section' under "Input format options". diff --git a/src/addr2line.c b/src/addr2line.c index c7ff7f7..b1ff368 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 a899947..0e31012 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +2015-05-20 Mark Wielaard <[email protected]> + + * run-addrname-test.sh: Make sure all input addresses are hex. + 2015-05-04 Max Filippov <[email protected]> * 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 f954ee4..90e19df 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 -- 1.8.3.1
