Merge tag 'for-linus-6.9-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / scripts / relocs_check.sh
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0-or-later
3
4 # Get a list of all the relocations, remove from it the relocations
5 # that are known to be legitimate and return this list to arch specific
6 # script that will look for suspicious relocations.
7
8 objdump="$1"
9 nm="$2"
10 vmlinux="$3"
11
12 # Remove from the possible bad relocations those that match an undefined
13 # weak symbol which will result in an absolute relocation to 0.
14 # Weak unresolved symbols are of that form in nm output:
15 # "                  w _binary__btf_vmlinux_bin_end"
16 undef_weak_symbols=$($nm "$vmlinux" | awk '$1 ~ /w/ { print $2 }')
17
18 $objdump -R "$vmlinux" |
19         grep -E '\<R_' |
20         ([ "$undef_weak_symbols" ] && grep -F -w -v "$undef_weak_symbols" || cat)