[compiler-rt] [llvm] [HWASan][Fuchsia] Have Fuchsia use a dynamic shadow start (PR #180881)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 10 21:14:18 PST 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 130757 tests passed
* 2929 tests skipped
* 2 tests failed

## Failed Tests
(click on a test name to see its output)

### LLVM
<details>
<summary>LLVM.Instrumentation/HWAddressSanitizer/fuchsia.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -mtriple=aarch64-unknown-fuchsia < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\fuchsia.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\fuchsia.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -mtriple=aarch64-unknown-fuchsia
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\fuchsia.ll'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\fuchsia.ll:5:10: error: CHECK: expected string not found in input
# | ; CHECK: %.hwasan.shadow = call ptr asm "", "=r,0"(ptr null)
# |          ^
# | <stdin>:1:1: note: scanning from here
# | ; ModuleID = '<stdin>'
# | ^
# | <stdin>:18:2: note: possible intended match here
# | @__hwasan_shadow = external global [0 x i8]
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\fuchsia.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: ; ModuleID = '<stdin>' 
# | check:5'0     X~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |            2: source_filename = "<stdin>" 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            4: target triple = "aarch64-unknown-fuchsia" 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            5:  
# | check:5'0     ~
# |            6: $hwasan.module_ctor = comdat any 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# |           13: @__stop_hwasan_globals = external hidden constant [0 x i8] 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14: @hwasan.note = private constant { i32, i32, i32, [8 x i8], i32, i32 } { i32 8, i32 8, i32 3, [8 x i8] c"LLVM\00\00\00\00", i32 trunc (i64 sub (i64 ptrtoint (ptr @__start_hwasan_globals to i64), i64 ptrtoint (ptr @hwasan.note to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @__stop_hwasan_globals to i64), i64 ptrtoint (ptr @hwasan.note to i64)) to i32) }, section ".note.hwasan.globals", comdat($hwasan.module_ctor), align 4 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           15: @hwasan.dummy.global = private constant [0 x i8] zeroinitializer, section "hwasan_globals", comdat($hwasan.module_ctor), !associated !0 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16: @__hwasan_tls = external thread_local(initialexec) global i64 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           17: @llvm.compiler.used = appending global [3 x ptr] [ptr @hwasan.note, ptr @hwasan.dummy.global, ptr @__hwasan_tls], section "llvm.metadata" 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18: @__hwasan_shadow = external global [0 x i8] 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:5'1      ?                                           possible intended match
# |           19: @__hwasan_shadow_memory_dynamic_address = external global ptr 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           20:  
# | check:5'0     ~
# |           21: ; Function Attrs: sanitize_hwaddress 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           22: define i32 @test_load(ptr %a) #0 { 
# | check:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           23: entry: 
# | check:5'0     ~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>LLVM.Instrumentation/HWAddressSanitizer/prologue.ll</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll'
# note: command had no output on stdout or stderr
# RUN: at line 5
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -hwasan-mapping-offset-dynamic=tls -hwasan-record-stack-history=instr < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll --check-prefixes=NOIFUNC-TLS-HISTORY
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -hwasan-mapping-offset-dynamic=tls -hwasan-record-stack-history=instr
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll' --check-prefixes=NOIFUNC-TLS-HISTORY
# note: command had no output on stdout or stderr
# RUN: at line 6
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -hwasan-mapping-offset-dynamic=tls -hwasan-record-stack-history=none < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll --check-prefixes=NOIFUNC-TLS-NOHISTORY
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -hwasan-mapping-offset-dynamic=tls -hwasan-record-stack-history=none
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll' --check-prefixes=NOIFUNC-TLS-NOHISTORY
# note: command had no output on stdout or stderr
# RUN: at line 7
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -hwasan-mapping-offset-dynamic=global -hwasan-with-frame-record=0 < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll --check-prefixes=NOIFUNC-NOTLS
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -hwasan-mapping-offset-dynamic=global -hwasan-with-frame-record=0
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll' --check-prefixes=NOIFUNC-NOTLS
# note: command had no output on stdout or stderr
# RUN: at line 8
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -hwasan-mapping-offset-dynamic=ifunc -hwasan-with-frame-record=0 < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll --check-prefixes=IFUNC-NOTLS
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -hwasan-mapping-offset-dynamic=ifunc -hwasan-with-frame-record=0
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll' --check-prefixes=IFUNC-NOTLS
# note: command had no output on stdout or stderr
# RUN: at line 9
c:\_work\llvm-project\llvm-project\build\bin\opt.exe -passes=hwasan -S -mtriple=aarch64-fuchsia < C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll --check-prefixes=FUCHSIA
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\opt.exe' -passes=hwasan -S -mtriple=aarch64-fuchsia
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll' --check-prefixes=FUCHSIA
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll:64:17: error: FUCHSIA-NEXT: expected string not found in input
# | ; FUCHSIA-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null)
# |                 ^
# | <stdin>:23:7: note: scanning from here
# | entry:
# |       ^
# | <stdin>:25:54: note: possible intended match here
# |  call void @llvm.hwasan.check.memaccess.shortgranules(ptr %0, ptr %a, i32 2)
# |                                                      ^
# | C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll:276:17: error: FUCHSIA-NEXT: expected string not found in input
# | ; FUCHSIA-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null)
# |                 ^
# | <stdin>:34:7: note: scanning from here
# | entry:
# |       ^
# | <stdin>:94:57: note: possible intended match here
# |  %5 = tail call i32 @__hwasan_personality_wrapper(i32 %0, i32 %1, i64 %2, ptr %3, ptr %4, ptr null, ptr @_Unwind_GetGR, ptr @_Unwind_GetCFA)
# |                                                         ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\llvm\test\Instrumentation\HWAddressSanitizer\prologue.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            18: @__hwasan_shadow = external global [0 x i8] 
# |            19: @__hwasan_shadow_memory_dynamic_address = external global ptr 
# |            20:  
# |            21: ; Function Attrs: sanitize_hwaddress 
# |            22: define i32 @test_load(ptr %a) #0 { 
# |            23: entry: 
# | next:64'0            X error: no match found
# |            24:  %0 = load ptr, ptr @__hwasan_shadow_memory_dynamic_address, align 8 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            25:  call void @llvm.hwasan.check.memaccess.shortgranules(ptr %0, ptr %a, i32 2) 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:64'1                                                           ?                        possible intended match
# |            26:  %x = load i32, ptr %a, align 4 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            27:  ret i32 %x 
# | next:64'0      ~~~~~~~~~~~~
# |            28: } 
# | next:64'0      ~~
# |            29:  
# | next:64'0      ~
# |            30: declare void @use(ptr) 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~
# |            31:  
# | next:64'0      ~
# |            32: ; Function Attrs: sanitize_hwaddress 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            33: define void @test_alloca() #0 personality ptr @__hwasan_personality_thunk { 
# | next:64'0      ~~~~~~~~~~~~~~~~~~~~~~~~
# |            34: entry: 
# | next:276'0           X error: no match found
# |            35:  %0 = load ptr, ptr @__hwasan_shadow_memory_dynamic_address, align 8 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            36:  %1 = load i64, ptr @__hwasan_tls, align 8 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            37:  %2 = ashr i64 %1, 3 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~
# |            38:  %3 = call i64 @llvm.read_register.i64(metadata !2) 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            39:  %4 = call ptr @llvm.frameaddress.p0(i32 0) 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            89:  
# | next:276'0     ~
# |            90: declare void @_Unwind_GetCFA() 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            91:  
# | next:276'0     ~
# |            92: define linkonce_odr hidden i32 @__hwasan_personality_thunk(i32 %0, i32 %1, i64 %2, ptr %3, ptr %4) comdat { 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            93: entry: 
# | next:276'0     ~~~~~~~
# |            94:  %5 = tail call i32 @__hwasan_personality_wrapper(i32 %0, i32 %1, i64 %2, ptr %3, ptr %4, ptr null, ptr @_Unwind_GetGR, ptr @_Unwind_GetCFA) 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:276'1                                                             ?                                                                                     possible intended match
# |            95:  ret i32 %5 
# | next:276'0     ~~~~~~~~~~~~
# |            96: } 
# | next:276'0     ~~
# |            97:  
# | next:276'0     ~
# |            98: declare void @__hwasan_loadN(i64, i64) 
# | next:276'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            99:  
# | next:276'0     ~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/180881


More information about the llvm-commits mailing list