Re: [PATCH] scripts/decode_stacktrace.sh: canonicalize basepath and modpath

From: Konstantin Khlebnikov
Date: Mon Nov 21 2016 - 10:57:45 EST


On Mon, Nov 21, 2016 at 2:29 PM, Kirill A. Shutemov
<kirill.shutemov@xxxxxxxxxxxxxxx> wrote:
> I use decode_stacktrace.sh as
>
> $ ./scripts/decode_stacktrace.sh vmlinux . .
>
> It means basepath is equal to "." and decode_stacktrace stips dot from
> the filepath instead of actual basepath. Not very helpful.

This doesn't work if basepath is some non-existenting directory.
In my case this usually path in pbulder container.

You could try to replace only "." to "$PWD/"

>
> Let's fix this.
>
> Canonicalize modepath too while I'm there.

This is redundant. =)

>
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Cc: Sasha Levin <alexander.levin@xxxxxxxxxxx>
> Cc: Konstantin Khlebnikov <koct9i@xxxxxxxxx>
> ---
> scripts/decode_stacktrace.sh | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
> index c332684e1b5a..27e3cb7a14e8 100755
> --- a/scripts/decode_stacktrace.sh
> +++ b/scripts/decode_stacktrace.sh
> @@ -9,8 +9,8 @@ if [[ $# < 2 ]]; then
> fi
>
> vmlinux=$1
> -basepath=$2
> -modpath=$3
> +basepath=$(readlink -ev "$2")
> +modpath=$(readlink -ev "$3")
> declare -A cache
> declare -A modcache
>
> @@ -77,7 +77,7 @@ parse_symbol() {
> fi
>
> # Strip out the base of the path
> - code=${code//$basepath/""}
> + code=${code//$basepath\//""}
>
> # In the case of inlines, move everything to same line
> code=${code//$'\n'/' '}
> --
> 2.10.2
>