2020-07-20 08:31:34

by Pi-Hsun Shih

[permalink] [raw]
Subject: [PATCH] scripts/decode_stacktrace: Strip basepath from all paths.

Currently the basepath is removed only from the beginning of the string.
When the symbol is inlined and there's multiple line outputs of
addr2line, only the first line would have basepath removed.

Change to remove the basepath prefix from all lines.

Fixes: 31013836a71e ("scripts/decode_stacktrace: match basepath using shell prefix operator, not regex")
Signed-off-by: Pi-Hsun Shih <[email protected]>
Co-developed-by: Shik Chen <[email protected]>
Signed-off-by: Shik Chen <[email protected]>
---
scripts/decode_stacktrace.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
index 66a6d511b524..0869def435ee 100755
--- a/scripts/decode_stacktrace.sh
+++ b/scripts/decode_stacktrace.sh
@@ -87,8 +87,8 @@ parse_symbol() {
return
fi

- # Strip out the base of the path
- code=${code#$basepath/}
+ # Strip out the base of the path on each line
+ code=$(while read -r line; do echo "${line#$basepath/}"; done <<< "$code")

# In the case of inlines, move everything to same line
code=${code//$'\n'/' '}

base-commit: 5714ee50bb4375bd586858ad800b1d9772847452
--
2.28.0.rc0.105.gf9edc3c819-goog


2020-07-20 23:04:40

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH] scripts/decode_stacktrace: Strip basepath from all paths.

Quoting Pi-Hsun Shih (2020-07-20 01:27:07)
> Currently the basepath is removed only from the beginning of the string.
> When the symbol is inlined and there's multiple line outputs of
> addr2line, only the first line would have basepath removed.
>
> Change to remove the basepath prefix from all lines.
>
> Fixes: 31013836a71e ("scripts/decode_stacktrace: match basepath using shell prefix operator, not regex")
> Signed-off-by: Pi-Hsun Shih <[email protected]>
> Co-developed-by: Shik Chen <[email protected]>
> Signed-off-by: Shik Chen <[email protected]>

I thought Co-developed-by and the other SoB came before your SoB.

> ---
> scripts/decode_stacktrace.sh | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Stephen Boyd <[email protected]>

>
> diff --git a/scripts/decode_stacktrace.sh b/scripts/decode_stacktrace.sh
> index 66a6d511b524..0869def435ee 100755
> --- a/scripts/decode_stacktrace.sh
> +++ b/scripts/decode_stacktrace.sh
> @@ -87,8 +87,8 @@ parse_symbol() {
> return
> fi
>
> - # Strip out the base of the path
> - code=${code#$basepath/}
> + # Strip out the base of the path on each line
> + code=$(while read -r line; do echo "${line#$basepath/}"; done <<< "$code")
>
> # In the case of inlines, move everything to same line
> code=${code//$'\n'/' '}

Given that there's a while loop now maybe this line above could be
removed and the echo above replaced with a printf.