diff options
| author | Ingo Molnar <[email protected]> | 2017-11-08 10:17:15 +0100 |
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2017-11-08 10:17:15 +0100 |
| commit | 8a103df440afea30c91ebd42e61dc644e647f4bd (patch) | |
| tree | 2cfa99e9c6e1e138e1404bce4294e46cb0034cce /scripts/faddr2line | |
| parent | a9903f04e0a4ea522d959c2f287cdf0ab029e324 (diff) | |
| parent | fbc3edf7d7731d7a22c483c679700589bab936a3 (diff) | |
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'scripts/faddr2line')
| -rwxr-xr-x | scripts/faddr2line | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scripts/faddr2line b/scripts/faddr2line index 29df825d375c..1f5ce959f596 100755 --- a/scripts/faddr2line +++ b/scripts/faddr2line @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: GPL-2.0 # # Translate stack dump function offsets. # @@ -103,11 +104,12 @@ __faddr2line() { # Go through each of the object's symbols which match the func name. # In rare cases there might be duplicates. + file_end=$(size -Ax $objfile | awk '$1 == ".text" {print $2}') while read symbol; do local fields=($symbol) local sym_base=0x${fields[0]} local sym_type=${fields[1]} - local sym_end=0x${fields[3]} + local sym_end=${fields[3]} # calculate the size local sym_size=$(($sym_end - $sym_base)) @@ -157,7 +159,7 @@ __faddr2line() { addr2line -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;" DONE=1 - done < <(nm -n $objfile | awk -v fn=$func '$3 == fn { found=1; line=$0; start=$1; next } found == 1 { found=0; print line, $1 }') + done < <(nm -n $objfile | awk -v fn=$func -v end=$file_end '$3 == fn { found=1; line=$0; start=$1; next } found == 1 { found=0; print line, "0x"$1 } END {if (found == 1) print line, end; }') } [[ $# -lt 2 ]] && usage |