mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-30 16:18:41 +02:00 
			
		
		
		
	 47981b5cc6
			
		
	
	
		47981b5cc6
		
			
		
	
	
	
	
		
			
			Relocating kernel at runtime is done very early in the boot process, so it is not convenient to check for relocations there and react in case a relocation was not expected. Powerpc architecture has a script that allows to check at compile time for such unexpected relocations: extract the common logic to scripts/ so that other architectures can take advantage of it. Signed-off-by: Alexandre Ghiti <alex@ghiti.fr> Reviewed-by: Anup Patel <anup@brainfault.org> Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Link: https://lore.kernel.org/r/20230329045329.64565-5-alexghiti@rivosinc.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
		
			
				
	
	
		
			20 lines
		
	
	
	
		
			717 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
	
		
			717 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | ||
| # SPDX-License-Identifier: GPL-2.0-or-later
 | ||
| 
 | ||
| # Get a list of all the relocations, remove from it the relocations
 | ||
| # that are known to be legitimate and return this list to arch specific
 | ||
| # script that will look for suspicious relocations.
 | ||
| 
 | ||
| objdump="$1"
 | ||
| nm="$2"
 | ||
| vmlinux="$3"
 | ||
| 
 | ||
| # Remove from the possible bad relocations those that match an undefined
 | ||
| # weak symbol which will result in an absolute relocation to 0.
 | ||
| # Weak unresolved symbols are of that form in nm output:
 | ||
| # "                  w _binary__btf_vmlinux_bin_end"
 | ||
| undef_weak_symbols=$($nm "$vmlinux" | awk '$1 ~ /w/ { print $2 }')
 | ||
| 
 | ||
| $objdump -R "$vmlinux" |
 | ||
| 	grep -E '\<R_' |
 | ||
| 	([ "$undef_weak_symbols" ] && grep -F -w -v "$undef_weak_symbols" || cat)
 |