Skip to content

Commit

Permalink
powerpc: unrel_branch_check.sh: use nm to find symbol value
Browse files Browse the repository at this point in the history
This is considerably faster then parsing the objdump asm output.  It will
also make the enabling of llvm-objdump a little easier.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200812081036.7969-2-sfr@canb.auug.org.au
  • Loading branch information
Stephen Rothwell authored and Michael Ellerman committed Sep 2, 2020
1 parent af13a22 commit b71dca9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 9 deletions.
2 changes: 1 addition & 1 deletion arch/powerpc/Makefile.postlink
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ quiet_cmd_relocs_check = CHKREL $@
ifdef CONFIG_PPC_BOOK3S_64
cmd_relocs_check = \
$(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@" ; \
$(BASH) $(srctree)/arch/powerpc/tools/unrel_branch_check.sh "$(OBJDUMP)" "$@"
$(BASH) $(srctree)/arch/powerpc/tools/unrel_branch_check.sh "$(OBJDUMP)" "$(NM)" "$@"
else
cmd_relocs_check = \
$(CONFIG_SHELL) $(srctree)/arch/powerpc/tools/relocs_check.sh "$(OBJDUMP)" "$(NM)" "$@"
Expand Down
13 changes: 5 additions & 8 deletions arch/powerpc/tools/unrel_branch_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,15 @@
# This script checks the unrelocated code of a vmlinux for "suspicious"
# branches to relocated code (head_64.S code).

# Have Kbuild supply the path to objdump so we handle cross compilation.
# Have Kbuild supply the path to objdump and nm so we handle cross compilation.
objdump="$1"
vmlinux="$2"
nm="$2"
vmlinux="$3"

#__end_interrupts should be located within the first 64K
kstart=0xc000000000000000
printf -v kend '0x%x' $(( kstart + 0x10000 ))

end_intr=0x$(
$objdump -R -d --start-address="$kstart" --stop-address="$kend" "$vmlinux" 2>/dev/null |
awk '$2 == "<__end_interrupts>:" { print $1 }'
)
end_intr=0x$($nm -p "$vmlinux" |
sed -E -n '/\s+[[:alpha:]]\s+__end_interrupts\s*$/{s///p;q}')
if [ "$end_intr" = "0x" ]; then
exit 0
fi
Expand Down

0 comments on commit b71dca9

Please sign in to comment.