@@ -166,9 +166,12 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
166166 # names get truncated. Add Address and Thread (both coupled with UB) sanitizers when the distro is bookworm.
167167 if os ['distro_version' ] == 'bookworm' :
168168 # Use medium code model to avoid relocation errors with large binaries
169- extra_warning_flags = '-mcmodel=medium'
170- # Linker also needs to know about the code model
171- linker_flags = '-DCMAKE_EXE_LINKER_FLAGS="-mcmodel=medium" -DCMAKE_SHARED_LINKER_FLAGS="-mcmodel=medium"'
169+ # Only for x86-64 (amd64) - ARM64 doesn't support -mcmodel=medium
170+ extra_warning_flags = ''
171+ linker_flags = ''
172+ if architecture ['platform' ] == 'linux/amd64' :
173+ cxx_flags += ' -mcmodel=medium'
174+ linker_flags = ' -DCMAKE_EXE_LINKER_FLAGS="-mcmodel=medium" -DCMAKE_SHARED_LINKER_FLAGS="-mcmodel=medium"'
172175 # Suppress false positive warnings in GCC with stringop-overflow
173176 if os ['compiler_name' ] == 'gcc' :
174177 extra_warning_flags += ' -Wno-stringop-overflow'
@@ -181,7 +184,9 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
181184 else :
182185 cxx_flags += " -O1"
183186
184- cmake_args_flags = f'{ cmake_args } -DCMAKE_CXX_FLAGS="-fsanitize=address,{ sanitizers_flags } -fno-omit-frame-pointer { cxx_flags } { extra_warning_flags } " { linker_flags } '
187+ cmake_args_flags = f'{ cmake_args } -DCMAKE_CXX_FLAGS="-fsanitize=address,{ sanitizers_flags } -fno-omit-frame-pointer { cxx_flags } { extra_warning_flags } "'
188+ if linker_flags :
189+ cmake_args_flags += linker_flags
185190 configurations .append ({
186191 'config_name' : config_name + "_asan" ,
187192 'cmake_args' : cmake_args_flags ,
@@ -195,7 +200,9 @@ def generate_strategy_matrix(all: bool, config: Config) -> list:
195200 # gcc doesn't supports atomic_thread_fence with tsan. Suppress warnings.
196201 if os ['compiler_name' ] == 'gcc' :
197202 extra_warning_flags += ' -Wno-tsan'
198- cmake_args_flags = f'{ cmake_args } -DCMAKE_CXX_FLAGS="-fsanitize=thread,{ sanitizers_flags } -fno-omit-frame-pointer { cxx_flags } { extra_warning_flags } " { linker_flags } '
203+ cmake_args_flags = f'{ cmake_args } -DCMAKE_CXX_FLAGS="-fsanitize=thread,{ sanitizers_flags } -fno-omit-frame-pointer { cxx_flags } { extra_warning_flags } "'
204+ if linker_flags :
205+ cmake_args_flags += linker_flags
199206 configurations .append ({
200207 'config_name' : config_name + "_tsan" ,
201208 'cmake_args' : cmake_args_flags ,
0 commit comments