mirror of
				https://github.com/riscv-software-src/opensbi
				synced 2025-11-03 21:48:45 +00:00 
			
		
		
		
	firmware: Only default FW_PIC to y if supported
Bare-metal GNU ld does not support PIE, so if using it this will result in a failure to build. Instead, default to FW_PIC=n if not supported. Note that an explicit FW_PIC=y is not overridden, to ensure the build fails rather than silently producing a position-dependent binary. Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		
							parent
							
								
									a3d328ae33
								
							
						
					
					
						commit
						09ad811ec4
					
				
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							@ -106,6 +106,9 @@ ifndef PLATFORM_RISCV_XLEN
 | 
			
		||||
  endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Check whether the linker supports creating PIEs
 | 
			
		||||
OPENSBI_LD_PIE := $(shell $(CC) -fPIE -nostdlib -Wl,-pie -x c /dev/null -o /dev/null >/dev/null 2>&1 && echo y || echo n)
 | 
			
		||||
 | 
			
		||||
# Setup list of objects.mk files
 | 
			
		||||
ifdef PLATFORM
 | 
			
		||||
platform-object-mks=$(shell if [ -d $(platform_src_dir)/ ]; then find $(platform_src_dir) -iname "objects.mk" | sort -r; fi)
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,7 @@ firmware-asflags-y +=
 | 
			
		||||
firmware-ldflags-y +=
 | 
			
		||||
 | 
			
		||||
ifndef FW_PIC
 | 
			
		||||
FW_PIC := y
 | 
			
		||||
FW_PIC := $(OPENSBI_LD_PIE)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(FW_PIC),y)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user