Skip to content

Commit 9027ce5

Browse files
Merge pull request #1481 from PowerGridModel/pgm/feature/hardening-preset
OpenSSF gold badge: UBSan hardening in CMakePresets.json
2 parents 8accfdb + b60d453 commit 9027ce5

3 files changed

Lines changed: 134 additions & 9 deletions

File tree

.github/workflows/build-test-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ jobs:
138138

139139
env:
140140
CMAKE_PREFIX_PATH: /usr/local
141-
PRESET: ci-clang-${{ matrix.build-option }}
141+
PRESET: ci-apple-clang-${{ matrix.build-option }}
142142

143143
steps:
144144
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

CMakePresets.json

Lines changed: 107 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"REPRODUCIBILITY_LINKER_FLAGS": "",
2323
"CFLAGS": "$penv{CFLAGS} $env{PLATFORM_C_FLAGS} $env{COMPILER_C_FLAGS} $env{COVERAGE_FLAGS} $env{SANITIZER_FLAGS} $env{REPRODUCIBILITY_COMMON_FLAGS}",
2424
"CXXFLAGS": "$penv{CXXFLAGS} $env{PLATFORM_CXX_FLAGS} $env{COMPILER_CXX_FLAGS} $env{COVERAGE_FLAGS} $env{SANITIZER_FLAGS} $env{REPRODUCIBILITY_COMMON_FLAGS}",
25-
"LDFLAGS": "$env{PLATFORM_LINKER_FLAGS} $env{SANITIZER_FLAGS} $env{REPRODUCIBILITY_LINKER_FLAGS} $env{REPRODUCIBILITY_LINKER_FLAGS}"
25+
"LDFLAGS": "$env{PLATFORM_LINKER_FLAGS} $env{SANITIZER_FLAGS} $env{SANITIZER_LINKER_FLAGS} $env{REPRODUCIBILITY_LINKER_FLAGS} $env{REPRODUCIBILITY_LINKER_FLAGS}"
2626
},
2727
"architecture": {
2828
"value": "x64",
@@ -120,7 +120,7 @@
120120
{
121121
"name": "unix-sanitizer",
122122
"environment": {
123-
"SANITIZER_FLAGS": "-fsanitize=address"
123+
"SANITIZER_FLAGS": "-fstack-protector -fsanitize=address,pointer-compare,undefined -fno-sanitize-recover"
124124
},
125125
"inherits": "unix-base",
126126
"hidden": true
@@ -148,6 +148,9 @@
148148
{
149149
"name": "msvc-debug",
150150
"displayName": "Debug (MSVC)",
151+
"environment": {
152+
"SANITIZER_FLAGS": "/RTC1"
153+
},
151154
"inherits": ["msvc-base", "debug"]
152155
},
153156
{
@@ -166,21 +169,51 @@
166169
"inherits": ["clang-cl-base", "relwithdebinfo"]
167170
},
168171
{
169-
"name": "clang-base",
172+
"name": "clang-linux-base",
170173
"cacheVariables": {
171174
"CMAKE_C_COMPILER": "clang",
172175
"CMAKE_CXX_COMPILER": "clang++"
173176
},
177+
"environment": {
178+
"SANITIZER_LINKER_FLAGS": "-lubsan"
179+
},
180+
"condition": {
181+
"type": "notEquals",
182+
"lhs": "${hostSystemName}",
183+
"rhs": "Darwin"
184+
},
185+
"inherits": "unix-sanitizer",
186+
"hidden": true
187+
},
188+
{
189+
"name": "apple-clang-base",
190+
"cacheVariables": {
191+
"CMAKE_C_COMPILER": "clang",
192+
"CMAKE_CXX_COMPILER": "clang++"
193+
},
194+
"condition": {
195+
"type": "equals",
196+
"lhs": "${hostSystemName}",
197+
"rhs": "Darwin"
198+
},
174199
"inherits": "unix-sanitizer",
175200
"hidden": true
176201
},
177202
{
178203
"name": "clang-debug",
179-
"inherits": ["debug", "clang-base"]
204+
"inherits": ["debug", "clang-linux-base"]
180205
},
181206
{
182207
"name": "clang-release",
183-
"inherits": ["relwithdebinfo", "clang-base"]
208+
"inherits": ["relwithdebinfo", "clang-linux-base"]
209+
},
210+
{
211+
"name": "apple-clang-debug",
212+
"inherits": ["debug", "apple-clang-base"]
213+
},
214+
{
215+
"name": "apple-clang-release",
216+
"inherits": ["relwithdebinfo", "apple-clang-base"]
184217
},
185218
{
186219
"name": "clang-tidy-debug",
@@ -203,13 +236,19 @@
203236
{
204237
"name": "gcc-base",
205238
"environment": {
206-
"COMPILER_CXX_FLAGS": "$env{COMPILER_C_FLAGS} -Wno-maybe-uninitialized"
239+
"COMPILER_CXX_FLAGS": "$env{COMPILER_C_FLAGS} -Wno-maybe-uninitialized",
240+
"SANITIZER_LINKER_FLAGS": "-static-libubsan"
207241
},
208242
"cacheVariables": {
209243
"CMAKE_C_COMPILER": "gcc",
210244
"CMAKE_CXX_COMPILER": "g++"
211245
},
212246
"inherits": "unix-sanitizer",
247+
"condition": {
248+
"type": "notEquals",
249+
"lhs": "${hostSystemName}",
250+
"rhs": "Darwin"
251+
},
213252
"hidden": true
214253
},
215254
{
@@ -231,6 +270,17 @@
231270
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "TRUE"
232271
}
233272
},
273+
{
274+
"name": "ci-apple-clang-debug",
275+
"inherits": ["apple-clang-debug", "unix-coverage"]
276+
},
277+
{
278+
"name": "ci-apple-clang-release",
279+
"inherits": "apple-clang-release",
280+
"cacheVariables": {
281+
"CMAKE_INTERPROCEDURAL_OPTIMIZATION": "TRUE"
282+
}
283+
},
234284
{
235285
"name": "ci-gcc-debug",
236286
"environment": {
@@ -250,7 +300,7 @@
250300
},
251301
{
252302
"name": "ci-sonar",
253-
"inherits": ["clang-base", "debug", "unix-coverage"]
303+
"inherits": ["clang-linux-base", "debug", "unix-coverage"]
254304
},
255305
{
256306
"name": "ci-clang-tidy-debug",
@@ -293,7 +343,7 @@
293343
},
294344
{
295345
"name": "ci-clang-reproducible",
296-
"inherits": ["clang-base", "release"],
346+
"inherits": ["clang-linux-base", "release"],
297347
"environment": {
298348
"REPRODUCIBILITY_COMMON_FLAGS": "$penv{REPRODUCIBILITY_COMMON_FLAGS} -frandom-seed=0 -Wdate-time"
299349
},
@@ -336,6 +386,14 @@
336386
"name": "clang-release",
337387
"configurePreset": "clang-release"
338388
},
389+
{
390+
"name": "apple-clang-debug",
391+
"configurePreset": "apple-clang-debug"
392+
},
393+
{
394+
"name": "apple-clang-release",
395+
"configurePreset": "apple-clang-release"
396+
},
339397
{
340398
"name": "clang-tidy-debug",
341399
"configurePreset": "clang-tidy-debug"
@@ -368,6 +426,14 @@
368426
"name": "ci-clang-release",
369427
"configurePreset": "ci-clang-release"
370428
},
429+
{
430+
"name": "ci-apple-clang-debug",
431+
"configurePreset": "ci-apple-clang-debug"
432+
},
433+
{
434+
"name": "ci-apple-clang-release",
435+
"configurePreset": "ci-apple-clang-release"
436+
},
371437
{
372438
"name": "ci-gcc-debug",
373439
"configurePreset": "ci-gcc-debug"
@@ -434,6 +500,14 @@
434500
"name": "clang-release",
435501
"configurePreset": "clang-release"
436502
},
503+
{
504+
"name": "apple-clang-debug",
505+
"configurePreset": "apple-clang-debug"
506+
},
507+
{
508+
"name": "apple-clang-release",
509+
"configurePreset": "apple-clang-release"
510+
},
437511
{
438512
"name": "clang-tidy-debug",
439513
"configurePreset": "clang-tidy-debug"
@@ -466,6 +540,14 @@
466540
"name": "ci-clang-release",
467541
"configurePreset": "ci-clang-release"
468542
},
543+
{
544+
"name": "ci-apple-clang-debug",
545+
"configurePreset": "ci-apple-clang-debug"
546+
},
547+
{
548+
"name": "ci-apple-clang-release",
549+
"configurePreset": "ci-apple-clang-release"
550+
},
469551
{
470552
"name": "ci-gcc-debug",
471553
"configurePreset": "ci-gcc-debug"
@@ -623,6 +705,23 @@
623705
"name": "clang-release"
624706
}
625707
]
708+
},
709+
{
710+
"name": "apple-clang-release",
711+
"steps": [
712+
{
713+
"type": "configure",
714+
"name": "apple-clang-release"
715+
},
716+
{
717+
"type": "build",
718+
"name": "apple-clang-release"
719+
},
720+
{
721+
"type": "test",
722+
"name": "apple-clang-release"
723+
}
724+
]
626725
}
627726
]
628727
}

tests/package_tests/CMakePresets.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@
117117
},
118118
"hidden": true
119119
},
120+
{
121+
"name": "apple-clang-base",
122+
"inherits": ["clang-base"],
123+
"condition": {
124+
"type": "equals",
125+
"lhs": "${hostSystemName}",
126+
"rhs": "Darwin"
127+
},
128+
"hidden": true
129+
},
120130
{
121131
"name": "gcc-base",
122132
"cacheVariables": {
@@ -133,6 +143,14 @@
133143
"name": "ci-clang-release",
134144
"inherits": ["unix-sanitizer", "clang-base", "release"]
135145
},
146+
{
147+
"name": "ci-apple-clang-debug",
148+
"inherits": ["unix-sanitizer", "apple-clang-base", "debug"]
149+
},
150+
{
151+
"name": "ci-apple-clang-release",
152+
"inherits": ["unix-sanitizer", "apple-clang-base", "release"]
153+
},
136154
{
137155
"name": "ci-gcc-debug",
138156
"inherits": ["unix-sanitizer", "gcc-base", "debug"]
@@ -171,6 +189,14 @@
171189
"name": "ci-clang-release",
172190
"configurePreset": "ci-clang-release"
173191
},
192+
{
193+
"name": "ci-apple-clang-debug",
194+
"configurePreset": "ci-apple-clang-debug"
195+
},
196+
{
197+
"name": "ci-apple-clang-release",
198+
"configurePreset": "ci-apple-clang-release"
199+
},
174200
{
175201
"name": "ci-gcc-debug",
176202
"configurePreset": "ci-gcc-debug"

0 commit comments

Comments
 (0)