Re: [PATCH 2/2] scripts/decode_stacktrace: Only strip base path when a prefix of the path

From: Mark Rutland
Date: Thu Nov 22 2018 - 08:11:53 EST


On Thu, Nov 22, 2018 at 12:14:40PM +0000, Marc Zyngier wrote:
> Running something like:
>
> decodecode vmlinux .
>
> leads to interested results where not only the leading "." gets stripped
> from the displayed paths, but also anywhere in the string, displaying
> something like:
>
> kvm_vcpu_check_block (arch/arm64/kvm/virt/kvm/kvm_mainc:2141)
>
> which doesn't help further processing.
>
> Fix it by only stripping the base path if it is a prefix of the path.
>
> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx>
> ---
> scripts/decode_stacktrace.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
> index 64220e36ce3b..98a7d63a723e 100755
> --- a/scripts/decode_stacktrace.sh
> +++ b/scripts/decode_stacktrace.sh
> @@ -78,7 +78,7 @@ parse_symbol() {
> fi
>
> # Strip out the base of the path
> - code=${code//$basepath/""}
> + code=${code//^$basepath/""}

FWIW, you can do this using the usual POSIX shell string substitution:

code=${code##$basepath}

[1] http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02

Mark.