You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Add assembly support for -fsanitize=hwaddress tagged globals.
As of LLVM r368102, Clang will set a pointer tag in bits 56-63 of the address of a global when compiling with -fsanitize=hwaddress. This requires an adjustment to assembly code that takes the address of such globals: the code cannot use the regular R_AARCH64_ADR_PREL_PG_HI21 relocation to refer to the global, since the tag would take the address out of range. Instead, the code must use the non-checking (_NC) variant of the relocation (the link-time check is substituted by a runtime check). This change makes the necessary adjustment in the movrel macro, where it is needed when compiling with -fsanitize=hwaddress. Signed-off-by: Peter Collingbourne <pcc@google.com> Reviewed-by: Martin Storsjö Reviewed-by: Janne Grunau
This commit is contained in:
		
				
					committed by
					
						 Carl Eugen Hoyos
						Carl Eugen Hoyos
					
				
			
			
				
	
			
			
			
						parent
						
							c87237d105
						
					
				
				
					commit
					9bcb1cb6ed
				
			| @@ -32,6 +32,10 @@ | ||||
| #   define FUNC # | ||||
| #endif | ||||
|  | ||||
| #ifndef __has_feature | ||||
| #   define __has_feature(x) 0 | ||||
| #endif | ||||
|  | ||||
| .macro  function name, export=0, align=2 | ||||
|     .macro endfunc | ||||
| ELF     .size   \name, . - \name | ||||
| @@ -94,7 +98,11 @@ ELF     .size   \name, . - \name | ||||
|         add             \rd, \rd, :lo12:\val+(\offset) | ||||
|     .endif | ||||
| #elif CONFIG_PIC | ||||
| #   if __has_feature(hwaddress_sanitizer) | ||||
|         adrp            \rd, :pg_hi21_nc:\val+(\offset) | ||||
| #   else | ||||
|         adrp            \rd, \val+(\offset) | ||||
| #   endif | ||||
|         add             \rd, \rd, :lo12:\val+(\offset) | ||||
| #else | ||||
|         ldr             \rd, =\val+\offset | ||||
|   | ||||
		Reference in New Issue
	
	Block a user