Skip to content

Commit 18b65fd

Browse files
linked model flags specific to amd64
Signed-off-by: Pratik Mankawde <[email protected]>
1 parent ebf917a commit 18b65fd

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

.github/scripts/strategy-matrix/generate.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

.github/workflows/reusable-build-test-config.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,15 @@ jobs:
165165
166166
- name: Run the separate tests
167167
if: ${{ !inputs.build_only }}
168+
with:
169+
sanitizers_supp_dir: ${{ github.workspace }}/external/
168170
working-directory: ${{ inputs.build_dir }}
169171
# Windows locks some of the build files while running tests, and parallel jobs can collide
170172
env:
171173
BUILD_TYPE: ${{ inputs.build_type }}
172174
PARALLELISM: ${{ runner.os == 'Windows' && '1' || steps.nproc.outputs.nproc }}
173-
ASAN_OPTIONS: "suppressions=${{ github.workspace }}/external/asan_suppressions.txt"
174-
TSAN_OPTIONS: "suppressions=${{ github.workspace }}/external/tsan_suppressions.txt"
175+
ASAN_OPTIONS: "suppressions=${{ sanitizers_supp_dir }}/asan_suppressions.txt"
176+
TSAN_OPTIONS: "suppressions=${{ sanitizers_supp_dir }}/tsan_suppressions.txt"
175177
shell: bash
176178
run: |
177179
ctest \

0 commit comments

Comments
 (0)