Re: [FFmpeg-devel] [PATCH] Add assembly support for -fsanitize=hwaddress tagged globals.

2019-08-21 Thread Peter Collingbourne
On Thu, Aug 15, 2019 at 11:00 AM Peter Collingbourne  wrote:
>
> 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.

It came to my attention that this patch was sent without a
Signed-off-by line. Will send a v2 with the Signed-off-by.

Peter
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-devel] [PATCH] Add assembly support for -fsanitize=hwaddress tagged globals.

2019-08-15 Thread Peter Collingbourne
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.
---
 libavutil/aarch64/asm.S | 8 
 1 file changed, 8 insertions(+)

diff --git a/libavutil/aarch64/asm.S b/libavutil/aarch64/asm.S
index 5c329430fd..3ac2ba0d52 100644
--- a/libavutil/aarch64/asm.S
+++ b/libavutil/aarch64/asm.S
@@ -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
-- 
2.23.0.rc1.153.gdeed80330f-goog

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".