From: Iain Sandoe Date: Sun, 24 May 2020 11:18:19 +0000 (+0100) Subject: Darwin: Make sanitizer local vars linker-visible. X-Git-Tag: misc/first-auto-changelog-10~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25a9db6c6d02437fe025a14323675a5128b4ed42;p=thirdparty%2Fgcc.git Darwin: Make sanitizer local vars linker-visible. Another case where we need a linker-visible symbol in order to preserve the ld64 atom model. If these symbols are emitted as 'local' the linker cannot see that they are separate from any global weak entry that precedes them. This will cause the linker to complain that there is (apparently) direct access to such a weak global. This is a short-term fix for the problem - ideally we need a more generic handling for all the relevant cases. Backport 804254edb48f87d726a1bc9e95af04076c030e35 gcc/ChangeLog: * config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Make ubsan_{data,type},ASAN linker-visible. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d848d3f1cece..c047aaf9f11c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2020-05-24 Iain Sandoe + + Backported from master. + 2020-05-22 Iain Sandoe + + * config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): + Make ubsan_{data,type},ASAN linker-visible. + 2020-05-24 H.J. Lu PR target/95258 diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 27665b34a186..f528b1766bf2 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -808,6 +808,12 @@ extern GTY(()) section * darwin_sections[NUM_DARWIN_SECTIONS]; do { \ if (strcmp ("LC", PREFIX) == 0) \ sprintf (LABEL, "*%s%ld", "lC", (long)(NUM)); \ + else if (strcmp ("Lubsan_data", PREFIX) == 0) \ + sprintf (LABEL, "*%s%ld", "lubsan_data", (long)(NUM));\ + else if (strcmp ("Lubsan_type", PREFIX) == 0) \ + sprintf (LABEL, "*%s%ld", "lubsan_type", (long)(NUM));\ + else if (strcmp ("LASAN", PREFIX) == 0) \ + sprintf (LABEL, "*%s%ld", "lASAN", (long)(NUM));\ else \ sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \ } while (0)