* [PATCH] scripts/faddr2line: extend usage on generic arch
@ 2017-11-21 9:29 Liu, Changcheng
2017-12-05 21:30 ` Richard Weinberger
0 siblings, 1 reply; 3+ messages in thread
From: Liu, Changcheng @ 2017-11-21 9:29 UTC (permalink / raw)
To: kstewart, neilb, tglx, gregkh; +Cc: linux-kernel, akpm, changcheng.liu
fadd2line script should use the binary tool
used for the target system.
Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
diff --git a/scripts/faddr2line b/scripts/faddr2line
index 1f5ce95..39e07d8 100755
--- a/scripts/faddr2line
+++ b/scripts/faddr2line
@@ -44,9 +44,16 @@
set -o errexit
set -o nounset
+READELF="${CROSS_COMPILE}readelf"
+ADDR2LINE="${CROSS_COMPILE}addr2line"
+SIZE="${CROSS_COMPILE}size"
+NM="${CROSS_COMPILE}nm"
+
command -v awk >/dev/null 2>&1 || die "awk isn't installed"
-command -v readelf >/dev/null 2>&1 || die "readelf isn't installed"
-command -v addr2line >/dev/null 2>&1 || die "addr2line isn't installed"
+command -v ${READELF} >/dev/null 2>&1 || die "readelf isn't installed"
+command -v ${ADDR2LINE} >/dev/null 2>&1 || die "addr2line isn't installed"
+command -v ${SIZE} >/dev/null 2>&1 || die "size isn't installed"
+command -v ${NM} >/dev/null 2>&1 || die "nm isn't installed"
usage() {
echo "usage: faddr2line <object file> <func+offset> <func+offset>..." >&2
@@ -69,10 +76,10 @@ die() {
find_dir_prefix() {
local objfile=$1
- local start_kernel_addr=$(readelf -sW $objfile | awk '$8 == "start_kernel" {printf "0x%s", $2}')
+ local start_kernel_addr=$(${READELF} -sW $objfile | awk '$8 == "start_kernel" {printf "0x%s", $2}')
[[ -z $start_kernel_addr ]] && return
- local file_line=$(addr2line -e $objfile $start_kernel_addr)
+ local file_line=$(${ADDR2LINE} -e $objfile $start_kernel_addr)
[[ -z $file_line ]] && return
local prefix=${file_line%init/main.c:*}
@@ -104,7 +111,7 @@ __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}')
+ file_end=$(${SIZE} -Ax $objfile | awk '$1 == ".text" {print $2}')
while read symbol; do
local fields=($symbol)
local sym_base=0x${fields[0]}
@@ -156,10 +163,10 @@ __faddr2line() {
# pass real address to addr2line
echo "$func+$offset/$sym_size:"
- addr2line -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;"
+ ${ADDR2LINE} -fpie $objfile $addr | sed "s; $dir_prefix\(\./\)*; ;"
DONE=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; }')
+ 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
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] scripts/faddr2line: extend usage on generic arch
2017-11-21 9:29 [PATCH] scripts/faddr2line: extend usage on generic arch Liu, Changcheng
@ 2017-12-05 21:30 ` Richard Weinberger
2017-12-06 1:35 ` Liu, Changcheng
0 siblings, 1 reply; 3+ messages in thread
From: Richard Weinberger @ 2017-12-05 21:30 UTC (permalink / raw)
To: Liu, Changcheng
Cc: kstewart, Neil Brown, Thomas Gleixner, Greg KH, LKML,
Andrew Morton
On Tue, Nov 21, 2017 at 10:29 AM, Liu, Changcheng
<changcheng.liu@intel.com> wrote:
> fadd2line script should use the binary tool
> used for the target system.
>
> Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
>
> diff --git a/scripts/faddr2line b/scripts/faddr2line
> index 1f5ce95..39e07d8 100755
> --- a/scripts/faddr2line
> +++ b/scripts/faddr2line
> @@ -44,9 +44,16 @@
> set -o errexit
> set -o nounset
>
> +READELF="${CROSS_COMPILE}readelf"
> +ADDR2LINE="${CROSS_COMPILE}addr2line"
> +SIZE="${CROSS_COMPILE}size"
> +NM="${CROSS_COMPILE}nm"
How is this supposed to work when not cross compiling?
When CROSS_COMPILE is not set this script will terminate because of
the "set -o nounset" bash setting...
--
Thanks,
//richard
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] scripts/faddr2line: extend usage on generic arch
2017-12-05 21:30 ` Richard Weinberger
@ 2017-12-06 1:35 ` Liu, Changcheng
0 siblings, 0 replies; 3+ messages in thread
From: Liu, Changcheng @ 2017-12-06 1:35 UTC (permalink / raw)
To: Richard Weinberger; +Cc: neilb, tglx, gregkh, akpm, kstewart, linux-kernel
On 22:30 Tue 05 Dec, Richard Weinberger wrote:
> On Tue, Nov 21, 2017 at 10:29 AM, Liu, Changcheng
> <changcheng.liu@intel.com> wrote:
> > fadd2line script should use the binary tool
> > used for the target system.
> >
> > Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
> >
> > diff --git a/scripts/faddr2line b/scripts/faddr2line
> > index 1f5ce95..39e07d8 100755
> > --- a/scripts/faddr2line
> > +++ b/scripts/faddr2line
> > @@ -44,9 +44,16 @@
> > set -o errexit
> > set -o nounset
> >
> > +READELF="${CROSS_COMPILE}readelf"
> > +ADDR2LINE="${CROSS_COMPILE}addr2line"
> > +SIZE="${CROSS_COMPILE}size"
> > +NM="${CROSS_COMPILE}nm"
>
> How is this supposed to work when not cross compiling?
> When CROSS_COMPILE is not set this script will terminate because of
> the "set -o nounset" bash setting...
[Changcheng]:@Richard. Thx for your check. I've sent the fix patch to
resolve the unbound variable error.
>
> --
> Thanks,
> //richard
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-12-06 1:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-21 9:29 [PATCH] scripts/faddr2line: extend usage on generic arch Liu, Changcheng
2017-12-05 21:30 ` Richard Weinberger
2017-12-06 1:35 ` Liu, Changcheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox