Commit 7fadce0d authored by Linus Torvalds's avatar Linus Torvalds

scripts/faddr2line: improve on base path filtering a bit

Due to our compiler include directives, the build pathnames for header
files often end up being of the form "$srcdir/./include/linux/xyz.h",
which ends up having that extra "." path component after the build base
in it.

Teach faddr2line to skip that too, to make code generated in inline
functions in header files match the filename for the regular C files.

Rabin Vincent pointed out that I can't make a stricter regexp match by
using the " at " prefix for the pathname, because that ends up being
locale-dependent.  But this does require that the path match be preceded
by a space, to make it a bit more strict (that matters mainly if we
didn't find any base_dir at all, and we only end up with the "./" part
of the match)
Acked-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
Cc: Rabin Vincent <rabin@rab.in>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7bb91e06
...@@ -145,7 +145,7 @@ __faddr2line() { ...@@ -145,7 +145,7 @@ __faddr2line() {
local hexsize=0x$(printf %x $sym_size) local hexsize=0x$(printf %x $sym_size)
echo "$func+$offset/$hexsize:" echo "$func+$offset/$hexsize:"
addr2line -fpie $objfile $hexaddr | sed "s;$dir_prefix;;" addr2line -fpie $objfile $hexaddr | sed "s; $dir_prefix\(\./\)*; ;"
DONE=1 DONE=1
done < <(readelf -sW $objfile | awk -v f=$func '$8 == f {print}') done < <(readelf -sW $objfile | awk -v f=$func '$8 == f {print}')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment