mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	On powerpc, stack protector expects a function called
__stack_chk_fail_local() instead of __stack_chk_fail()
And some versions of GCC for powerpc default to TLS canary
instead of global canary, so always force GCC to use global
canary with -mstack-protector-guard=global
Cc: Joel Peshkin <joel.peshkin@broadcom.com>
Fixes: 4e9bce12432 ("Add support for stack-protector")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
		
	
			
		
			
				
	
	
		
			26 lines
		
	
	
		
			499 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			499 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0+
 | 
						|
/*
 | 
						|
 *  Copyright 2021 Broadcom
 | 
						|
 */
 | 
						|
 | 
						|
#include <common.h>
 | 
						|
#include <asm/global_data.h>
 | 
						|
 | 
						|
DECLARE_GLOBAL_DATA_PTR;
 | 
						|
 | 
						|
unsigned long __stack_chk_guard = (unsigned long)(0xfeedf00ddeadbeef & ~0UL);
 | 
						|
 | 
						|
void __stack_chk_fail(void)
 | 
						|
{
 | 
						|
	void *ra;
 | 
						|
 | 
						|
	ra = __builtin_extract_return_addr(__builtin_return_address(0));
 | 
						|
	panic("Stack smashing detected in function:\n%p relocated from %p",
 | 
						|
	      ra, ra - gd->reloc_off);
 | 
						|
}
 | 
						|
 | 
						|
void __stack_chk_fail_local(void)
 | 
						|
{
 | 
						|
	__stack_chk_fail();
 | 
						|
}
 |