On Thu, 2015-03-12 at 15:10 +1100, Stephen Rothwell wrote: > This runs a bit faster and removes another use of perl from > the kernel build. > > Signed-off-by: Stephen Rothwell <s...@canb.auug.org.au> > --- > arch/powerpc/Makefile | 4 +-- > arch/powerpc/relocs_check.pl | 66 > -------------------------------------------- > arch/powerpc/relocs_check.sh | 58 ++++++++++++++++++++++++++++++++++++++
Always good to see less Perl! ShellCheck says: 1 #!/bin/sh 2 3 # Copyright © 2015 IBM Corporation 4 5 # This program is free software; you can redistribute it and/or 6 # modify it under the terms of the GNU General Public License 7 # as published by the Free Software Foundation; either version 8 # 2 of the License, or (at your option) any later version. 9 10 # This script checks the relocations of a vmlinux for "suspicious" 11 # relocations. 12 13 # based on relocs_check.pl 14 # Copyright © 2009 IBM Corporation 15 16 if [ ${#*} -lt 2 ]; then 17 printf "%s [path to objdump] [path to vmlinux]\n" $0 1>&2 ^––SC2086 Double quote to prevent globbing and word splitting. https://github.com/koalaman/shellcheck/wiki/SC2086 18 exit 1 19 fi 20 21 # Have Kbuild supply the path to objdump so we handle cross compilation. 22 objdump="$1" 23 vmlinux="$2" 24 25 bad_relocs=$( 26 "$objdump" -R "$vmlinux" | 27 # Only look at relocation lines. 28 grep -E '\<R_' | 29 # These relocations are okay 30 # On PPC64: 31 # R_PPC64_RELATIVE, R_PPC64_NONE 32 # R_PPC64_ADDR64 mach_<name> 33 # On PPC: 34 # R_PPC_RELATIVE, R_PPC_ADDR16_HI, 35 # R_PPC_ADDR16_HA,R_PPC_ADDR16_LO, 36 # R_PPC_NONE 37 grep -F -w -v 'R_PPC64_RELATIVE 38 R_PPC64_NONE 39 R_PPC_ADDR16_LO 40 R_PPC_ADDR16_HI 41 R_PPC_ADDR16_HA 42 R_PPC_RELATIVE 43 R_PPC_NONE' | 44 grep -E -v '\<R_PPC64_ADDR64[[:space:]]+mach_' 45 ) 46 47 if [ -z "$bad_relocs" ]; then 48 exit 0 49 fi 50 51 printf "WARNING: %d bad relocations\n" $(printf "$bad_relocs\n" | wc -l) ^––SC2046 Quote this to prevent word splitting. https://github.com/koalaman/shellcheck/wiki/SC2046 ^––SC2059 Don't use variables in the printf format string. Use printf "..%s.." "$foo". https://github.com/koalaman/shellcheck/wiki/SC2059 52 printf "$bad_relocs\n" ^––SC2059 Don't use variables in the printf format string. Use printf "..%s.." "$foo". https://github.com/koalaman/shellcheck/wiki/SC2059 53 54 # If we see this type of relocation it's an idication that 55 # we /may/ be using an old version of binutils. 56 if echo "$bad_relocs\n" | grep -q -F -w R_PPC64_UADDR64; then ^––SC2028 echo won't expand escape sequences. Consider printf. https://github.com/koalaman/shellcheck/wiki/SC2028 57 printf "WARNING: You need at least binutils >= 2.19 to build a CONFIG_RELOCATABLE kernel\n" 58 fi 59 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev