Cheng Shao pushed to branch wip/ubsan at Glasgow Haskell Compiler / GHC

Commits:

11 changed files:

Changes:

  • .gitlab-ci.yml
    ... ... @@ -11,7 +11,7 @@ variables:
    11 11
       GIT_SSL_NO_VERIFY: "1"
    
    12 12
     
    
    13 13
       # Commit of ghc/ci-images repository from which to pull Docker images
    
    14
    -  DOCKER_REV: a97d5c67d803c6b3811c6cccdf33dc8e9d7eafe3
    
    14
    +  DOCKER_REV: 73a36525413f808b902980ce2edccd759f2ae9b8
    
    15 15
     
    
    16 16
       # Sequential version number of all cached things.
    
    17 17
       # Bump to invalidate GitLab CI cache.
    
    ... ... @@ -444,14 +444,14 @@ hadrian-ghc-in-ghci:
    444 444
     hadrian-multi:
    
    445 445
       stage: testing
    
    446 446
       needs:
    
    447
    -    - job: x86_64-linux-fedora42-release
    
    447
    +    - job: x86_64-linux-fedora43-release
    
    448 448
           optional: true
    
    449
    -    - job: nightly-x86_64-linux-fedora42-release
    
    449
    +    - job: nightly-x86_64-linux-fedora43-release
    
    450 450
           optional: true
    
    451
    -    - job: release-x86_64-linux-fedora42-release
    
    451
    +    - job: release-x86_64-linux-fedora43-release
    
    452 452
           optional: true
    
    453 453
       dependencies: null
    
    454
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    454
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    455 455
       before_script:
    
    456 456
         # workaround for docker permissions
    
    457 457
         - sudo chown ghc:ghc -R .
    
    ... ... @@ -471,7 +471,7 @@ hadrian-multi:
    471 471
         - ls
    
    472 472
         - |
    
    473 473
           mkdir tmp
    
    474
    -      tar -xf ghc-x86_64-linux-fedora42-release.tar.xz -C tmp
    
    474
    +      tar -xf ghc-x86_64-linux-fedora43-release.tar.xz -C tmp
    
    475 475
           pushd tmp/ghc-*/
    
    476 476
           ./configure --prefix=$root
    
    477 477
           make install
    
    ... ... @@ -533,17 +533,17 @@ test-cabal-reinstall-x86_64-linux-deb10:
    533 533
     abi-test-nightly:
    
    534 534
       stage: full-build
    
    535 535
       needs:
    
    536
    -    - job: nightly-x86_64-linux-fedora42-release-hackage
    
    537
    -    - job: nightly-x86_64-linux-fedora42-release
    
    536
    +    - job: nightly-x86_64-linux-fedora43-release-hackage
    
    537
    +    - job: nightly-x86_64-linux-fedora43-release
    
    538 538
       tags:
    
    539 539
         - x86_64-linux
    
    540
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    540
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    541 541
       dependencies: null
    
    542 542
       before_script:
    
    543 543
         - mkdir -p normal
    
    544 544
         - mkdir -p hackage
    
    545
    -    - tar -xf ghc-x86_64-linux-fedora42-release.tar.xz -C normal/
    
    546
    -    - tar -xf ghc-x86_64-linux-fedora42-release-hackage_docs.tar.xz -C hackage/
    
    545
    +    - tar -xf ghc-x86_64-linux-fedora43-release.tar.xz -C normal/
    
    546
    +    - tar -xf ghc-x86_64-linux-fedora43-release-hackage_docs.tar.xz -C hackage/
    
    547 547
       script:
    
    548 548
         - .gitlab/ci.sh compare_interfaces_of "normal/ghc-*" "hackage/ghc-*"
    
    549 549
       artifacts:
    
    ... ... @@ -620,9 +620,9 @@ doc-tarball:
    620 620
     hackage-doc-tarball:
    
    621 621
       stage: packaging
    
    622 622
       needs:
    
    623
    -    - job: nightly-x86_64-linux-fedora42-release-hackage
    
    623
    +    - job: nightly-x86_64-linux-fedora43-release-hackage
    
    624 624
           optional: true
    
    625
    -    - job: release-x86_64-linux-fedora42-release-hackage
    
    625
    +    - job: release-x86_64-linux-fedora43-release-hackage
    
    626 626
           optional: true
    
    627 627
         - job: source-tarball
    
    628 628
       tags:
    
    ... ... @@ -639,7 +639,7 @@ hackage-doc-tarball:
    639 639
           - hackage_docs
    
    640 640
       before_script:
    
    641 641
         - tar -xf ghc-*[0-9]-src.tar.xz
    
    642
    -    - tar -xf ghc-x86_64-linux-fedora42-release.tar.xz -C ghc*/
    
    642
    +    - tar -xf ghc-x86_64-linux-fedora43-release.tar.xz -C ghc*/
    
    643 643
       script:
    
    644 644
         - cd ghc*/
    
    645 645
         - mv .gitlab/rel_eng/upload_ghc_libs.py .
    
    ... ... @@ -765,7 +765,7 @@ test-bootstrap:
    765 765
     # Triggering jobs in the ghc/head.hackage project requires that we have a job
    
    766 766
     # token for that repository. Furthermore the head.hackage CI job must have
    
    767 767
     # access to an unprivileged access token with the ability to query the ghc/ghc
    
    768
    -# project such that it can find the job ID of the fedora42 job for the current
    
    768
    +# project such that it can find the job ID of the fedora43 job for the current
    
    769 769
     # pipeline.
    
    770 770
     #
    
    771 771
     # hackage-lint: Can be triggered on any MR, normal validate pipeline or nightly build.
    
    ... ... @@ -852,7 +852,7 @@ nightly-hackage-lint:
    852 852
     
    
    853 853
     nightly-hackage-perf:
    
    854 854
       needs:
    
    855
    -    - job: nightly-x86_64-linux-fedora42-release
    
    855
    +    - job: nightly-x86_64-linux-fedora43-release
    
    856 856
           optional: true
    
    857 857
           artifacts: false
    
    858 858
         - job: nightly-aarch64-linux-deb12-validate
    
    ... ... @@ -871,7 +871,7 @@ nightly-hackage-perf:
    871 871
     
    
    872 872
     release-hackage-lint:
    
    873 873
       needs:
    
    874
    -    - job: release-x86_64-linux-fedora42-release
    
    874
    +    - job: release-x86_64-linux-fedora43-release
    
    875 875
           optional: true
    
    876 876
           artifacts: false
    
    877 877
         - job: release-aarch64-linux-deb12-release+no_split_sections
    
    ... ... @@ -957,13 +957,13 @@ perf-nofib:
    957 957
       allow_failure: true
    
    958 958
       stage: testing
    
    959 959
       needs:
    
    960
    -    - job: x86_64-linux-fedora42-release
    
    960
    +    - job: x86_64-linux-fedora43-release
    
    961 961
           optional: true
    
    962
    -    - job: nightly-x86_64-linux-fedora42-release
    
    962
    +    - job: nightly-x86_64-linux-fedora43-release
    
    963 963
           optional: true
    
    964
    -    - job: release-x86_64-linux-fedora42-release
    
    964
    +    - job: release-x86_64-linux-fedora43-release
    
    965 965
           optional: true
    
    966
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    966
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    967 967
       rules:
    
    968 968
         - when: never
    
    969 969
         - *full-ci
    
    ... ... @@ -976,7 +976,7 @@ perf-nofib:
    976 976
         - root=$(pwd)/ghc
    
    977 977
         - |
    
    978 978
           mkdir tmp
    
    979
    -      tar -xf ../ghc-x86_64-linux-fedora42-release.tar.xz -C tmp
    
    979
    +      tar -xf ../ghc-x86_64-linux-fedora43-release.tar.xz -C tmp
    
    980 980
           pushd tmp/ghc-*/
    
    981 981
           ./configure --prefix=$root
    
    982 982
           make install
    
    ... ... @@ -1000,14 +1000,14 @@ perf-nofib:
    1000 1000
     perf:
    
    1001 1001
       stage: testing
    
    1002 1002
       needs:
    
    1003
    -    - job: x86_64-linux-fedora42-release
    
    1003
    +    - job: x86_64-linux-fedora43-release
    
    1004 1004
           optional: true
    
    1005
    -    - job: nightly-x86_64-linux-fedora42-release
    
    1005
    +    - job: nightly-x86_64-linux-fedora43-release
    
    1006 1006
           optional: true
    
    1007
    -    - job: release-x86_64-linux-fedora42-release
    
    1007
    +    - job: release-x86_64-linux-fedora43-release
    
    1008 1008
           optional: true
    
    1009 1009
       dependencies: null
    
    1010
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    1010
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    1011 1011
       tags:
    
    1012 1012
         - x86_64-linux-perf
    
    1013 1013
       before_script:
    
    ... ... @@ -1017,7 +1017,7 @@ perf:
    1017 1017
         - root=$(pwd)/ghc
    
    1018 1018
         - |
    
    1019 1019
           mkdir tmp
    
    1020
    -      tar -xf ghc-x86_64-linux-fedora42-release.tar.xz -C tmp
    
    1020
    +      tar -xf ghc-x86_64-linux-fedora43-release.tar.xz -C tmp
    
    1021 1021
           pushd tmp/ghc-*/
    
    1022 1022
           ./configure --prefix=$root
    
    1023 1023
           make install
    
    ... ... @@ -1041,14 +1041,14 @@ perf:
    1041 1041
     abi-test:
    
    1042 1042
       stage: testing
    
    1043 1043
       needs:
    
    1044
    -    - job: x86_64-linux-fedora42-release
    
    1044
    +    - job: x86_64-linux-fedora43-release
    
    1045 1045
           optional: true
    
    1046
    -    - job: nightly-x86_64-linux-fedora42-release
    
    1046
    +    - job: nightly-x86_64-linux-fedora43-release
    
    1047 1047
           optional: true
    
    1048
    -    - job: release-x86_64-linux-fedora42-release
    
    1048
    +    - job: release-x86_64-linux-fedora43-release
    
    1049 1049
           optional: true
    
    1050 1050
       dependencies: null
    
    1051
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    1051
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    1052 1052
       rules:
    
    1053 1053
         - if: $CI_MERGE_REQUEST_ID
    
    1054 1054
         - if: '$CI_COMMIT_BRANCH == "master"'
    
    ... ... @@ -1059,7 +1059,7 @@ abi-test:
    1059 1059
         - root=$(pwd)/ghc
    
    1060 1060
         - |
    
    1061 1061
           mkdir tmp
    
    1062
    -      tar -xf ghc-x86_64-linux-fedora42-release.tar.xz -C tmp
    
    1062
    +      tar -xf ghc-x86_64-linux-fedora43-release.tar.xz -C tmp
    
    1063 1063
           pushd tmp/ghc-*/
    
    1064 1064
           ./configure --prefix=$root
    
    1065 1065
           make install
    
    ... ... @@ -1214,7 +1214,7 @@ ghcup-metadata-nightly:
    1214 1214
       extends: .ghcup-metadata
    
    1215 1215
       # Explicit needs for validate pipeline because we only need certain bindists
    
    1216 1216
       needs:
    
    1217
    -    - job: nightly-x86_64-linux-fedora42-release
    
    1217
    +    - job: nightly-x86_64-linux-fedora43-release
    
    1218 1218
           artifacts: false
    
    1219 1219
         - job: nightly-x86_64-linux-ubuntu24_04-validate
    
    1220 1220
           artifacts: false
    
    ... ... @@ -1265,7 +1265,7 @@ ghcup-metadata-nightly:
    1265 1265
     # Update the ghcup metadata with information about this nightly pipeline
    
    1266 1266
     ghcup-metadata-nightly-push:
    
    1267 1267
       stage: deploy
    
    1268
    -  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV"
    
    1268
    +  image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV"
    
    1269 1269
       dependencies: null
    
    1270 1270
       tags:
    
    1271 1271
         - x86_64-linux
    

  • .gitlab/generate-ci/gen_ci.hs
    ... ... @@ -82,7 +82,7 @@ The generated names for the jobs is important as there are a few downstream cons
    82 82
     of the jobs artifacts. Therefore some care should be taken if changing the generated
    
    83 83
     names of jobs to update these other places.
    
    84 84
     
    
    85
    -1. fedora42 jobs are required by head.hackage
    
    85
    +1. fedora43 jobs are required by head.hackage
    
    86 86
     2. The fetch-gitlab release utility pulls release artifacts from the
    
    87 87
     3. The ghc-head-from script downloads release artifacts based on a pipeline change.
    
    88 88
     4. Some subsequent CI jobs have explicit dependencies (for example docs-tarball, perf, perf-nofib)
    
    ... ... @@ -118,7 +118,7 @@ data LinuxDistro
    118 118
       | Debian11Js
    
    119 119
       | Debian10
    
    120 120
       | Debian9
    
    121
    -  | Fedora42
    
    121
    +  | Fedora43
    
    122 122
       | Ubuntu2404LoongArch64
    
    123 123
       | Ubuntu2404
    
    124 124
       | Ubuntu2204
    
    ... ... @@ -161,6 +161,7 @@ data BuildConfig
    161 161
                     , hostFullyStatic :: Bool
    
    162 162
                     , tablesNextToCode :: Bool
    
    163 163
                     , threadSanitiser :: Bool
    
    164
    +                , ubsan :: Bool
    
    164 165
                     , noSplitSections :: Bool
    
    165 166
                     , validateNonmovingGc :: Bool
    
    166 167
                     , textWithSIMDUTF :: Bool
    
    ... ... @@ -186,6 +187,7 @@ mkJobFlavour BuildConfig{..} = Flavour buildFlavour opts
    186 187
                [FullyStatic | fullyStatic] ++
    
    187 188
                [HostFullyStatic | hostFullyStatic] ++
    
    188 189
                [ThreadSanitiser | threadSanitiser] ++
    
    190
    +           [UBSan | ubsan] ++
    
    189 191
                [NoSplitSections | noSplitSections, buildFlavour == Release ] ++
    
    190 192
                [BootNonmovingGc | validateNonmovingGc ] ++
    
    191 193
                [TextWithSIMDUTF | textWithSIMDUTF]
    
    ... ... @@ -198,6 +200,7 @@ data FlavourTrans =
    198 200
         | FullyStatic
    
    199 201
         | HostFullyStatic
    
    200 202
         | ThreadSanitiser
    
    203
    +    | UBSan
    
    201 204
         | NoSplitSections
    
    202 205
         | BootNonmovingGc
    
    203 206
         | TextWithSIMDUTF
    
    ... ... @@ -226,6 +229,7 @@ vanilla = BuildConfig
    226 229
       , hostFullyStatic = False
    
    227 230
       , tablesNextToCode = True
    
    228 231
       , threadSanitiser = False
    
    232
    +  , ubsan = False
    
    229 233
       , noSplitSections = False
    
    230 234
       , validateNonmovingGc = False
    
    231 235
       , textWithSIMDUTF = False
    
    ... ... @@ -279,6 +283,9 @@ llvm = vanilla { llvmBootstrap = True }
    279 283
     tsan :: BuildConfig
    
    280 284
     tsan = vanilla { threadSanitiser = True }
    
    281 285
     
    
    286
    +enableUBSan :: BuildConfig
    
    287
    +enableUBSan = vanilla { ubsan = True }
    
    288
    +
    
    282 289
     noTntc :: BuildConfig
    
    283 290
     noTntc = vanilla { tablesNextToCode = False }
    
    284 291
     
    
    ... ... @@ -318,7 +325,7 @@ distroName Debian12Riscv = "deb12-riscv"
    318 325
     distroName Debian12Wine  = "deb12-wine"
    
    319 326
     distroName Debian10      = "deb10"
    
    320 327
     distroName Debian9       = "deb9"
    
    321
    -distroName Fedora42      = "fedora42"
    
    328
    +distroName Fedora43      = "fedora43"
    
    322 329
     distroName Ubuntu2404LoongArch64 = "ubuntu24_04-loongarch"
    
    323 330
     distroName Ubuntu1804    = "ubuntu18_04"
    
    324 331
     distroName Ubuntu2004    = "ubuntu20_04"
    
    ... ... @@ -373,6 +380,7 @@ flavourString (Flavour base trans) = base_string base ++ concatMap (("+" ++) . f
    373 380
         flavour_string FullyStatic = "fully_static"
    
    374 381
         flavour_string HostFullyStatic = "host_fully_static"
    
    375 382
         flavour_string ThreadSanitiser = "thread_sanitizer_cmm"
    
    383
    +    flavour_string UBSan = "ubsan"
    
    376 384
         flavour_string NoSplitSections = "no_split_sections"
    
    377 385
         flavour_string BootNonmovingGc = "boot_nonmoving_gc"
    
    378 386
         flavour_string TextWithSIMDUTF = "text_simdutf"
    
    ... ... @@ -1196,13 +1204,17 @@ rhel_x86 =
    1196 1204
     
    
    1197 1205
     fedora_x86 :: [JobGroup Job]
    
    1198 1206
     fedora_x86 =
    
    1199
    -  [ -- Fedora42 job is always built with perf so there's one job in the normal
    
    1207
    +  [ -- Fedora43 job is always built with perf so there's one job in the normal
    
    1200 1208
         -- validate pipeline which is built with perf.
    
    1201
    -    fastCI (standardBuildsWithConfig Amd64 (Linux Fedora42) releaseConfig)
    
    1209
    +    fastCI (standardBuildsWithConfig Amd64 (Linux Fedora43) releaseConfig)
    
    1202 1210
         -- This job is only for generating head.hackage docs
    
    1203
    -  , hackage_doc_job (disableValidate (standardBuildsWithConfig Amd64 (Linux Fedora42) releaseConfig))
    
    1204
    -  , disableValidate (standardBuildsWithConfig Amd64 (Linux Fedora42) dwarf)
    
    1205
    -  , disableValidate (standardBuilds Amd64 (Linux Fedora42))
    
    1211
    +  , hackage_doc_job (disableValidate (standardBuildsWithConfig Amd64 (Linux Fedora43) releaseConfig))
    
    1212
    +  , disableValidate (standardBuildsWithConfig Amd64 (Linux Fedora43) dwarf)
    
    1213
    +  , disableValidate (standardBuilds Amd64 (Linux Fedora43))
    
    1214
    +    -- For UBSan jobs, only enable for validate/nightly pipelines.
    
    1215
    +    -- Also disable docs since it's not the point for UBSan jobs.
    
    1216
    +  , modifyJobs (setVariable "HADRIAN_ARGS" "--docs=none") $
    
    1217
    +      validateBuilds Amd64 (Linux Fedora43) enableUBSan
    
    1206 1218
       ]
    
    1207 1219
       where
    
    1208 1220
         hackage_doc_job = rename (<> "-hackage") . modifyJobs (addVariable "HADRIAN_ARGS" "--haddock-for-hackage")
    
    ... ... @@ -1364,7 +1376,7 @@ platform_mapping = Map.map go combined_result
    1364 1376
                     , "x86_64-linux-deb11-validate"
    
    1365 1377
                     , "x86_64-linux-deb12-validate"
    
    1366 1378
                     , "x86_64-linux-deb10-validate+debug_info"
    
    1367
    -                , "x86_64-linux-fedora42-release"
    
    1379
    +                , "x86_64-linux-fedora43-release"
    
    1368 1380
                     , "x86_64-linux-deb11-cross_aarch64-linux-gnu-validate"
    
    1369 1381
                     , "x86_64-windows-validate"
    
    1370 1382
                     , "aarch64-linux-deb12-validate"
    
    ... ... @@ -1379,13 +1391,13 @@ platform_mapping = Map.map go combined_result
    1379 1391
                     , "nightly-aarch64-linux-deb12-wine-int_native-cross_aarch64-unknown-mingw32-validate"
    
    1380 1392
                     , "nightly-x86_64-linux-alpine3_12-validate+fully_static"
    
    1381 1393
                     , "nightly-x86_64-linux-deb10-validate"
    
    1382
    -                , "nightly-x86_64-linux-fedora42-release"
    
    1394
    +                , "nightly-x86_64-linux-fedora43-release"
    
    1383 1395
                     , "nightly-x86_64-windows-validate"
    
    1384 1396
                     , "release-x86_64-linux-alpine3_12-release+fully_static+no_split_sections"
    
    1385 1397
                     , "release-x86_64-linux-deb10-release"
    
    1386 1398
                     , "release-x86_64-linux-deb11-release"
    
    1387 1399
                     , "release-x86_64-linux-deb12-release"
    
    1388
    -                , "release-x86_64-linux-fedora42-release"
    
    1400
    +                , "release-x86_64-linux-fedora43-release"
    
    1389 1401
                     , "release-x86_64-windows-release"
    
    1390 1402
                     ]
    
    1391 1403
     
    

  • .gitlab/jobs.yaml
    ... ... @@ -2942,7 +2942,7 @@
    2942 2942
           "XZ_OPT": "-9"
    
    2943 2943
         }
    
    2944 2944
       },
    
    2945
    -  "nightly-x86_64-linux-fedora42-release": {
    
    2945
    +  "nightly-x86_64-linux-fedora43-release": {
    
    2946 2946
         "after_script": [
    
    2947 2947
           ".gitlab/ci.sh save_cache",
    
    2948 2948
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -2953,7 +2953,7 @@
    2953 2953
         "artifacts": {
    
    2954 2954
           "expire_in": "8 weeks",
    
    2955 2955
           "paths": [
    
    2956
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    2956
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    2957 2957
             "junit.xml",
    
    2958 2958
             "unexpected-test-output.tar.gz"
    
    2959 2959
           ],
    
    ... ... @@ -2963,14 +2963,14 @@
    2963 2963
           "when": "always"
    
    2964 2964
         },
    
    2965 2965
         "cache": {
    
    2966
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    2966
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    2967 2967
           "paths": [
    
    2968 2968
             "cabal-cache",
    
    2969 2969
             "toolchain"
    
    2970 2970
           ]
    
    2971 2971
         },
    
    2972 2972
         "dependencies": [],
    
    2973
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    2973
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    2974 2974
         "needs": [
    
    2975 2975
           {
    
    2976 2976
             "artifacts": false,
    
    ... ... @@ -2996,16 +2996,16 @@
    2996 2996
         ],
    
    2997 2997
         "variables": {
    
    2998 2998
           "BIGNUM_BACKEND": "gmp",
    
    2999
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    2999
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    3000 3000
           "BUILD_FLAVOUR": "release",
    
    3001 3001
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3002 3002
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3003 3003
           "RUNTEST_ARGS": "",
    
    3004
    -      "TEST_ENV": "x86_64-linux-fedora42-release",
    
    3004
    +      "TEST_ENV": "x86_64-linux-fedora43-release",
    
    3005 3005
           "XZ_OPT": "-9"
    
    3006 3006
         }
    
    3007 3007
       },
    
    3008
    -  "nightly-x86_64-linux-fedora42-release-hackage": {
    
    3008
    +  "nightly-x86_64-linux-fedora43-release-hackage": {
    
    3009 3009
         "after_script": [
    
    3010 3010
           ".gitlab/ci.sh save_cache",
    
    3011 3011
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -3016,7 +3016,7 @@
    3016 3016
         "artifacts": {
    
    3017 3017
           "expire_in": "8 weeks",
    
    3018 3018
           "paths": [
    
    3019
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    3019
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    3020 3020
             "junit.xml",
    
    3021 3021
             "unexpected-test-output.tar.gz"
    
    3022 3022
           ],
    
    ... ... @@ -3026,14 +3026,14 @@
    3026 3026
           "when": "always"
    
    3027 3027
         },
    
    3028 3028
         "cache": {
    
    3029
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    3029
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    3030 3030
           "paths": [
    
    3031 3031
             "cabal-cache",
    
    3032 3032
             "toolchain"
    
    3033 3033
           ]
    
    3034 3034
         },
    
    3035 3035
         "dependencies": [],
    
    3036
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    3036
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    3037 3037
         "needs": [
    
    3038 3038
           {
    
    3039 3039
             "artifacts": false,
    
    ... ... @@ -3059,17 +3059,17 @@
    3059 3059
         ],
    
    3060 3060
         "variables": {
    
    3061 3061
           "BIGNUM_BACKEND": "gmp",
    
    3062
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    3062
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    3063 3063
           "BUILD_FLAVOUR": "release",
    
    3064 3064
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3065 3065
           "HADRIAN_ARGS": "--haddock-for-hackage",
    
    3066 3066
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3067 3067
           "RUNTEST_ARGS": "",
    
    3068
    -      "TEST_ENV": "x86_64-linux-fedora42-release",
    
    3068
    +      "TEST_ENV": "x86_64-linux-fedora43-release",
    
    3069 3069
           "XZ_OPT": "-9"
    
    3070 3070
         }
    
    3071 3071
       },
    
    3072
    -  "nightly-x86_64-linux-fedora42-validate": {
    
    3072
    +  "nightly-x86_64-linux-fedora43-validate": {
    
    3073 3073
         "after_script": [
    
    3074 3074
           ".gitlab/ci.sh save_cache",
    
    3075 3075
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -3080,7 +3080,7 @@
    3080 3080
         "artifacts": {
    
    3081 3081
           "expire_in": "8 weeks",
    
    3082 3082
           "paths": [
    
    3083
    -        "ghc-x86_64-linux-fedora42-validate.tar.xz",
    
    3083
    +        "ghc-x86_64-linux-fedora43-validate.tar.xz",
    
    3084 3084
             "junit.xml",
    
    3085 3085
             "unexpected-test-output.tar.gz"
    
    3086 3086
           ],
    
    ... ... @@ -3090,14 +3090,14 @@
    3090 3090
           "when": "always"
    
    3091 3091
         },
    
    3092 3092
         "cache": {
    
    3093
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    3093
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    3094 3094
           "paths": [
    
    3095 3095
             "cabal-cache",
    
    3096 3096
             "toolchain"
    
    3097 3097
           ]
    
    3098 3098
         },
    
    3099 3099
         "dependencies": [],
    
    3100
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    3100
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    3101 3101
         "needs": [
    
    3102 3102
           {
    
    3103 3103
             "artifacts": false,
    
    ... ... @@ -3123,16 +3123,16 @@
    3123 3123
         ],
    
    3124 3124
         "variables": {
    
    3125 3125
           "BIGNUM_BACKEND": "gmp",
    
    3126
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-validate",
    
    3126
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate",
    
    3127 3127
           "BUILD_FLAVOUR": "validate",
    
    3128 3128
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3129 3129
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3130 3130
           "RUNTEST_ARGS": "",
    
    3131
    -      "TEST_ENV": "x86_64-linux-fedora42-validate",
    
    3131
    +      "TEST_ENV": "x86_64-linux-fedora43-validate",
    
    3132 3132
           "XZ_OPT": "-9"
    
    3133 3133
         }
    
    3134 3134
       },
    
    3135
    -  "nightly-x86_64-linux-fedora42-validate+debug_info": {
    
    3135
    +  "nightly-x86_64-linux-fedora43-validate+debug_info": {
    
    3136 3136
         "after_script": [
    
    3137 3137
           ".gitlab/ci.sh save_cache",
    
    3138 3138
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -3143,7 +3143,7 @@
    3143 3143
         "artifacts": {
    
    3144 3144
           "expire_in": "8 weeks",
    
    3145 3145
           "paths": [
    
    3146
    -        "ghc-x86_64-linux-fedora42-validate+debug_info.tar.xz",
    
    3146
    +        "ghc-x86_64-linux-fedora43-validate+debug_info.tar.xz",
    
    3147 3147
             "junit.xml",
    
    3148 3148
             "unexpected-test-output.tar.gz"
    
    3149 3149
           ],
    
    ... ... @@ -3153,14 +3153,14 @@
    3153 3153
           "when": "always"
    
    3154 3154
         },
    
    3155 3155
         "cache": {
    
    3156
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    3156
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    3157 3157
           "paths": [
    
    3158 3158
             "cabal-cache",
    
    3159 3159
             "toolchain"
    
    3160 3160
           ]
    
    3161 3161
         },
    
    3162 3162
         "dependencies": [],
    
    3163
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    3163
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    3164 3164
         "needs": [
    
    3165 3165
           {
    
    3166 3166
             "artifacts": false,
    
    ... ... @@ -3186,12 +3186,76 @@
    3186 3186
         ],
    
    3187 3187
         "variables": {
    
    3188 3188
           "BIGNUM_BACKEND": "gmp",
    
    3189
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-validate+debug_info",
    
    3189
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate+debug_info",
    
    3190 3190
           "BUILD_FLAVOUR": "validate+debug_info",
    
    3191 3191
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3192 3192
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3193 3193
           "RUNTEST_ARGS": "",
    
    3194
    -      "TEST_ENV": "x86_64-linux-fedora42-validate+debug_info",
    
    3194
    +      "TEST_ENV": "x86_64-linux-fedora43-validate+debug_info",
    
    3195
    +      "XZ_OPT": "-9"
    
    3196
    +    }
    
    3197
    +  },
    
    3198
    +  "nightly-x86_64-linux-fedora43-validate+ubsan": {
    
    3199
    +    "after_script": [
    
    3200
    +      ".gitlab/ci.sh save_cache",
    
    3201
    +      ".gitlab/ci.sh save_test_output",
    
    3202
    +      ".gitlab/ci.sh clean",
    
    3203
    +      "cat ci_timings.txt"
    
    3204
    +    ],
    
    3205
    +    "allow_failure": false,
    
    3206
    +    "artifacts": {
    
    3207
    +      "expire_in": "8 weeks",
    
    3208
    +      "paths": [
    
    3209
    +        "ghc-x86_64-linux-fedora43-validate+ubsan.tar.xz",
    
    3210
    +        "junit.xml",
    
    3211
    +        "unexpected-test-output.tar.gz"
    
    3212
    +      ],
    
    3213
    +      "reports": {
    
    3214
    +        "junit": "junit.xml"
    
    3215
    +      },
    
    3216
    +      "when": "always"
    
    3217
    +    },
    
    3218
    +    "cache": {
    
    3219
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    3220
    +      "paths": [
    
    3221
    +        "cabal-cache",
    
    3222
    +        "toolchain"
    
    3223
    +      ]
    
    3224
    +    },
    
    3225
    +    "dependencies": [],
    
    3226
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    3227
    +    "needs": [
    
    3228
    +      {
    
    3229
    +        "artifacts": false,
    
    3230
    +        "job": "hadrian-ghc-in-ghci"
    
    3231
    +      }
    
    3232
    +    ],
    
    3233
    +    "rules": [
    
    3234
    +      {
    
    3235
    +        "if": "(\"true\" == \"true\") && ($RELEASE_JOB != \"yes\") && ($NIGHTLY)",
    
    3236
    +        "when": "on_success"
    
    3237
    +      }
    
    3238
    +    ],
    
    3239
    +    "script": [
    
    3240
    +      "sudo chown ghc:ghc -R .",
    
    3241
    +      ".gitlab/ci.sh setup",
    
    3242
    +      ".gitlab/ci.sh configure",
    
    3243
    +      ".gitlab/ci.sh build_hadrian",
    
    3244
    +      ".gitlab/ci.sh test_hadrian"
    
    3245
    +    ],
    
    3246
    +    "stage": "full-build",
    
    3247
    +    "tags": [
    
    3248
    +      "x86_64-linux"
    
    3249
    +    ],
    
    3250
    +    "variables": {
    
    3251
    +      "BIGNUM_BACKEND": "gmp",
    
    3252
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate+ubsan",
    
    3253
    +      "BUILD_FLAVOUR": "validate+ubsan",
    
    3254
    +      "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3255
    +      "HADRIAN_ARGS": "--docs=none",
    
    3256
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    3257
    +      "RUNTEST_ARGS": "",
    
    3258
    +      "TEST_ENV": "x86_64-linux-fedora43-validate+ubsan",
    
    3195 3259
           "XZ_OPT": "-9"
    
    3196 3260
         }
    
    3197 3261
       },
    
    ... ... @@ -4808,7 +4872,7 @@
    4808 4872
           "XZ_OPT": "-9"
    
    4809 4873
         }
    
    4810 4874
       },
    
    4811
    -  "release-x86_64-linux-fedora42-release": {
    
    4875
    +  "release-x86_64-linux-fedora43-release": {
    
    4812 4876
         "after_script": [
    
    4813 4877
           ".gitlab/ci.sh save_cache",
    
    4814 4878
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -4819,7 +4883,7 @@
    4819 4883
         "artifacts": {
    
    4820 4884
           "expire_in": "1 year",
    
    4821 4885
           "paths": [
    
    4822
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    4886
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    4823 4887
             "junit.xml",
    
    4824 4888
             "unexpected-test-output.tar.gz"
    
    4825 4889
           ],
    
    ... ... @@ -4829,14 +4893,14 @@
    4829 4893
           "when": "always"
    
    4830 4894
         },
    
    4831 4895
         "cache": {
    
    4832
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    4896
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    4833 4897
           "paths": [
    
    4834 4898
             "cabal-cache",
    
    4835 4899
             "toolchain"
    
    4836 4900
           ]
    
    4837 4901
         },
    
    4838 4902
         "dependencies": [],
    
    4839
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    4903
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    4840 4904
         "needs": [
    
    4841 4905
           {
    
    4842 4906
             "artifacts": false,
    
    ... ... @@ -4862,17 +4926,17 @@
    4862 4926
         ],
    
    4863 4927
         "variables": {
    
    4864 4928
           "BIGNUM_BACKEND": "gmp",
    
    4865
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    4929
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    4866 4930
           "BUILD_FLAVOUR": "release",
    
    4867 4931
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4868 4932
           "IGNORE_PERF_FAILURES": "all",
    
    4869 4933
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4870 4934
           "RUNTEST_ARGS": "",
    
    4871
    -      "TEST_ENV": "x86_64-linux-fedora42-release",
    
    4935
    +      "TEST_ENV": "x86_64-linux-fedora43-release",
    
    4872 4936
           "XZ_OPT": "-9"
    
    4873 4937
         }
    
    4874 4938
       },
    
    4875
    -  "release-x86_64-linux-fedora42-release+debug_info": {
    
    4939
    +  "release-x86_64-linux-fedora43-release+debug_info": {
    
    4876 4940
         "after_script": [
    
    4877 4941
           ".gitlab/ci.sh save_cache",
    
    4878 4942
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -4883,7 +4947,7 @@
    4883 4947
         "artifacts": {
    
    4884 4948
           "expire_in": "1 year",
    
    4885 4949
           "paths": [
    
    4886
    -        "ghc-x86_64-linux-fedora42-release+debug_info.tar.xz",
    
    4950
    +        "ghc-x86_64-linux-fedora43-release+debug_info.tar.xz",
    
    4887 4951
             "junit.xml",
    
    4888 4952
             "unexpected-test-output.tar.gz"
    
    4889 4953
           ],
    
    ... ... @@ -4893,14 +4957,14 @@
    4893 4957
           "when": "always"
    
    4894 4958
         },
    
    4895 4959
         "cache": {
    
    4896
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    4960
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    4897 4961
           "paths": [
    
    4898 4962
             "cabal-cache",
    
    4899 4963
             "toolchain"
    
    4900 4964
           ]
    
    4901 4965
         },
    
    4902 4966
         "dependencies": [],
    
    4903
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    4967
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    4904 4968
         "needs": [
    
    4905 4969
           {
    
    4906 4970
             "artifacts": false,
    
    ... ... @@ -4926,17 +4990,17 @@
    4926 4990
         ],
    
    4927 4991
         "variables": {
    
    4928 4992
           "BIGNUM_BACKEND": "gmp",
    
    4929
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release+debug_info",
    
    4993
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release+debug_info",
    
    4930 4994
           "BUILD_FLAVOUR": "release+debug_info",
    
    4931 4995
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4932 4996
           "IGNORE_PERF_FAILURES": "all",
    
    4933 4997
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4934 4998
           "RUNTEST_ARGS": "",
    
    4935
    -      "TEST_ENV": "x86_64-linux-fedora42-release+debug_info",
    
    4999
    +      "TEST_ENV": "x86_64-linux-fedora43-release+debug_info",
    
    4936 5000
           "XZ_OPT": "-9"
    
    4937 5001
         }
    
    4938 5002
       },
    
    4939
    -  "release-x86_64-linux-fedora42-release-hackage": {
    
    5003
    +  "release-x86_64-linux-fedora43-release-hackage": {
    
    4940 5004
         "after_script": [
    
    4941 5005
           ".gitlab/ci.sh save_cache",
    
    4942 5006
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -4947,7 +5011,7 @@
    4947 5011
         "artifacts": {
    
    4948 5012
           "expire_in": "1 year",
    
    4949 5013
           "paths": [
    
    4950
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    5014
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    4951 5015
             "junit.xml",
    
    4952 5016
             "unexpected-test-output.tar.gz"
    
    4953 5017
           ],
    
    ... ... @@ -4957,14 +5021,14 @@
    4957 5021
           "when": "always"
    
    4958 5022
         },
    
    4959 5023
         "cache": {
    
    4960
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    5024
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    4961 5025
           "paths": [
    
    4962 5026
             "cabal-cache",
    
    4963 5027
             "toolchain"
    
    4964 5028
           ]
    
    4965 5029
         },
    
    4966 5030
         "dependencies": [],
    
    4967
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    5031
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    4968 5032
         "needs": [
    
    4969 5033
           {
    
    4970 5034
             "artifacts": false,
    
    ... ... @@ -4990,14 +5054,14 @@
    4990 5054
         ],
    
    4991 5055
         "variables": {
    
    4992 5056
           "BIGNUM_BACKEND": "gmp",
    
    4993
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    5057
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    4994 5058
           "BUILD_FLAVOUR": "release",
    
    4995 5059
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4996 5060
           "HADRIAN_ARGS": "--haddock-for-hackage",
    
    4997 5061
           "IGNORE_PERF_FAILURES": "all",
    
    4998 5062
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    4999 5063
           "RUNTEST_ARGS": "",
    
    5000
    -      "TEST_ENV": "x86_64-linux-fedora42-release",
    
    5064
    +      "TEST_ENV": "x86_64-linux-fedora43-release",
    
    5001 5065
           "XZ_OPT": "-9"
    
    5002 5066
         }
    
    5003 5067
       },
    
    ... ... @@ -7032,7 +7096,7 @@
    7032 7096
           "TEST_ENV": "x86_64-linux-deb9-validate"
    
    7033 7097
         }
    
    7034 7098
       },
    
    7035
    -  "x86_64-linux-fedora42-release": {
    
    7099
    +  "x86_64-linux-fedora43-release": {
    
    7036 7100
         "after_script": [
    
    7037 7101
           ".gitlab/ci.sh save_cache",
    
    7038 7102
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -7043,7 +7107,7 @@
    7043 7107
         "artifacts": {
    
    7044 7108
           "expire_in": "2 weeks",
    
    7045 7109
           "paths": [
    
    7046
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    7110
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    7047 7111
             "junit.xml",
    
    7048 7112
             "unexpected-test-output.tar.gz"
    
    7049 7113
           ],
    
    ... ... @@ -7053,14 +7117,14 @@
    7053 7117
           "when": "always"
    
    7054 7118
         },
    
    7055 7119
         "cache": {
    
    7056
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    7120
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    7057 7121
           "paths": [
    
    7058 7122
             "cabal-cache",
    
    7059 7123
             "toolchain"
    
    7060 7124
           ]
    
    7061 7125
         },
    
    7062 7126
         "dependencies": [],
    
    7063
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    7127
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    7064 7128
         "needs": [
    
    7065 7129
           {
    
    7066 7130
             "artifacts": false,
    
    ... ... @@ -7069,7 +7133,7 @@
    7069 7133
         ],
    
    7070 7134
         "rules": [
    
    7071 7135
           {
    
    7072
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora42-release(\\s|$).*/)) || (($ONLY_JOBS == null) && ((\"true\" == \"true\")))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7136
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora43-release(\\s|$).*/)) || (($ONLY_JOBS == null) && ((\"true\" == \"true\")))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7073 7137
             "when": "on_success"
    
    7074 7138
           }
    
    7075 7139
         ],
    
    ... ... @@ -7086,15 +7150,15 @@
    7086 7150
         ],
    
    7087 7151
         "variables": {
    
    7088 7152
           "BIGNUM_BACKEND": "gmp",
    
    7089
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    7153
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    7090 7154
           "BUILD_FLAVOUR": "release",
    
    7091 7155
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7092 7156
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7093 7157
           "RUNTEST_ARGS": "",
    
    7094
    -      "TEST_ENV": "x86_64-linux-fedora42-release"
    
    7158
    +      "TEST_ENV": "x86_64-linux-fedora43-release"
    
    7095 7159
         }
    
    7096 7160
       },
    
    7097
    -  "x86_64-linux-fedora42-release-hackage": {
    
    7161
    +  "x86_64-linux-fedora43-release-hackage": {
    
    7098 7162
         "after_script": [
    
    7099 7163
           ".gitlab/ci.sh save_cache",
    
    7100 7164
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -7105,7 +7169,7 @@
    7105 7169
         "artifacts": {
    
    7106 7170
           "expire_in": "2 weeks",
    
    7107 7171
           "paths": [
    
    7108
    -        "ghc-x86_64-linux-fedora42-release.tar.xz",
    
    7172
    +        "ghc-x86_64-linux-fedora43-release.tar.xz",
    
    7109 7173
             "junit.xml",
    
    7110 7174
             "unexpected-test-output.tar.gz"
    
    7111 7175
           ],
    
    ... ... @@ -7115,14 +7179,14 @@
    7115 7179
           "when": "always"
    
    7116 7180
         },
    
    7117 7181
         "cache": {
    
    7118
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    7182
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    7119 7183
           "paths": [
    
    7120 7184
             "cabal-cache",
    
    7121 7185
             "toolchain"
    
    7122 7186
           ]
    
    7123 7187
         },
    
    7124 7188
         "dependencies": [],
    
    7125
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    7189
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    7126 7190
         "needs": [
    
    7127 7191
           {
    
    7128 7192
             "artifacts": false,
    
    ... ... @@ -7131,7 +7195,7 @@
    7131 7195
         ],
    
    7132 7196
         "rules": [
    
    7133 7197
           {
    
    7134
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora42-release(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7198
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora43-release(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7135 7199
             "when": "on_success"
    
    7136 7200
           }
    
    7137 7201
         ],
    
    ... ... @@ -7148,16 +7212,16 @@
    7148 7212
         ],
    
    7149 7213
         "variables": {
    
    7150 7214
           "BIGNUM_BACKEND": "gmp",
    
    7151
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-release",
    
    7215
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-release",
    
    7152 7216
           "BUILD_FLAVOUR": "release",
    
    7153 7217
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7154 7218
           "HADRIAN_ARGS": "--haddock-for-hackage",
    
    7155 7219
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7156 7220
           "RUNTEST_ARGS": "",
    
    7157
    -      "TEST_ENV": "x86_64-linux-fedora42-release"
    
    7221
    +      "TEST_ENV": "x86_64-linux-fedora43-release"
    
    7158 7222
         }
    
    7159 7223
       },
    
    7160
    -  "x86_64-linux-fedora42-validate": {
    
    7224
    +  "x86_64-linux-fedora43-validate": {
    
    7161 7225
         "after_script": [
    
    7162 7226
           ".gitlab/ci.sh save_cache",
    
    7163 7227
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -7168,7 +7232,7 @@
    7168 7232
         "artifacts": {
    
    7169 7233
           "expire_in": "2 weeks",
    
    7170 7234
           "paths": [
    
    7171
    -        "ghc-x86_64-linux-fedora42-validate.tar.xz",
    
    7235
    +        "ghc-x86_64-linux-fedora43-validate.tar.xz",
    
    7172 7236
             "junit.xml",
    
    7173 7237
             "unexpected-test-output.tar.gz"
    
    7174 7238
           ],
    
    ... ... @@ -7178,14 +7242,14 @@
    7178 7242
           "when": "always"
    
    7179 7243
         },
    
    7180 7244
         "cache": {
    
    7181
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    7245
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    7182 7246
           "paths": [
    
    7183 7247
             "cabal-cache",
    
    7184 7248
             "toolchain"
    
    7185 7249
           ]
    
    7186 7250
         },
    
    7187 7251
         "dependencies": [],
    
    7188
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    7252
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    7189 7253
         "needs": [
    
    7190 7254
           {
    
    7191 7255
             "artifacts": false,
    
    ... ... @@ -7194,7 +7258,7 @@
    7194 7258
         ],
    
    7195 7259
         "rules": [
    
    7196 7260
           {
    
    7197
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora42-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7261
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora43-validate(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7198 7262
             "when": "on_success"
    
    7199 7263
           }
    
    7200 7264
         ],
    
    ... ... @@ -7211,15 +7275,15 @@
    7211 7275
         ],
    
    7212 7276
         "variables": {
    
    7213 7277
           "BIGNUM_BACKEND": "gmp",
    
    7214
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-validate",
    
    7278
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate",
    
    7215 7279
           "BUILD_FLAVOUR": "validate",
    
    7216 7280
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7217 7281
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7218 7282
           "RUNTEST_ARGS": "",
    
    7219
    -      "TEST_ENV": "x86_64-linux-fedora42-validate"
    
    7283
    +      "TEST_ENV": "x86_64-linux-fedora43-validate"
    
    7220 7284
         }
    
    7221 7285
       },
    
    7222
    -  "x86_64-linux-fedora42-validate+debug_info": {
    
    7286
    +  "x86_64-linux-fedora43-validate+debug_info": {
    
    7223 7287
         "after_script": [
    
    7224 7288
           ".gitlab/ci.sh save_cache",
    
    7225 7289
           ".gitlab/ci.sh save_test_output",
    
    ... ... @@ -7230,7 +7294,7 @@
    7230 7294
         "artifacts": {
    
    7231 7295
           "expire_in": "2 weeks",
    
    7232 7296
           "paths": [
    
    7233
    -        "ghc-x86_64-linux-fedora42-validate+debug_info.tar.xz",
    
    7297
    +        "ghc-x86_64-linux-fedora43-validate+debug_info.tar.xz",
    
    7234 7298
             "junit.xml",
    
    7235 7299
             "unexpected-test-output.tar.gz"
    
    7236 7300
           ],
    
    ... ... @@ -7240,14 +7304,14 @@
    7240 7304
           "when": "always"
    
    7241 7305
         },
    
    7242 7306
         "cache": {
    
    7243
    -      "key": "x86_64-linux-fedora42-$CACHE_REV",
    
    7307
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    7244 7308
           "paths": [
    
    7245 7309
             "cabal-cache",
    
    7246 7310
             "toolchain"
    
    7247 7311
           ]
    
    7248 7312
         },
    
    7249 7313
         "dependencies": [],
    
    7250
    -    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora42:$DOCKER_REV",
    
    7314
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    7251 7315
         "needs": [
    
    7252 7316
           {
    
    7253 7317
             "artifacts": false,
    
    ... ... @@ -7256,7 +7320,7 @@
    7256 7320
         ],
    
    7257 7321
         "rules": [
    
    7258 7322
           {
    
    7259
    -        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora42-validate\\+debug_info(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7323
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora43-validate\\+debug_info(\\s|$).*/)) || (($ONLY_JOBS == null) && (\"disabled\" != \"disabled\"))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7260 7324
             "when": "on_success"
    
    7261 7325
           }
    
    7262 7326
         ],
    
    ... ... @@ -7273,12 +7337,75 @@
    7273 7337
         ],
    
    7274 7338
         "variables": {
    
    7275 7339
           "BIGNUM_BACKEND": "gmp",
    
    7276
    -      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora42-validate+debug_info",
    
    7340
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate+debug_info",
    
    7277 7341
           "BUILD_FLAVOUR": "validate+debug_info",
    
    7278 7342
           "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7279 7343
           "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7280 7344
           "RUNTEST_ARGS": "",
    
    7281
    -      "TEST_ENV": "x86_64-linux-fedora42-validate+debug_info"
    
    7345
    +      "TEST_ENV": "x86_64-linux-fedora43-validate+debug_info"
    
    7346
    +    }
    
    7347
    +  },
    
    7348
    +  "x86_64-linux-fedora43-validate+ubsan": {
    
    7349
    +    "after_script": [
    
    7350
    +      ".gitlab/ci.sh save_cache",
    
    7351
    +      ".gitlab/ci.sh save_test_output",
    
    7352
    +      ".gitlab/ci.sh clean",
    
    7353
    +      "cat ci_timings.txt"
    
    7354
    +    ],
    
    7355
    +    "allow_failure": false,
    
    7356
    +    "artifacts": {
    
    7357
    +      "expire_in": "2 weeks",
    
    7358
    +      "paths": [
    
    7359
    +        "ghc-x86_64-linux-fedora43-validate+ubsan.tar.xz",
    
    7360
    +        "junit.xml",
    
    7361
    +        "unexpected-test-output.tar.gz"
    
    7362
    +      ],
    
    7363
    +      "reports": {
    
    7364
    +        "junit": "junit.xml"
    
    7365
    +      },
    
    7366
    +      "when": "always"
    
    7367
    +    },
    
    7368
    +    "cache": {
    
    7369
    +      "key": "x86_64-linux-fedora43-$CACHE_REV",
    
    7370
    +      "paths": [
    
    7371
    +        "cabal-cache",
    
    7372
    +        "toolchain"
    
    7373
    +      ]
    
    7374
    +    },
    
    7375
    +    "dependencies": [],
    
    7376
    +    "image": "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora43:$DOCKER_REV",
    
    7377
    +    "needs": [
    
    7378
    +      {
    
    7379
    +        "artifacts": false,
    
    7380
    +        "job": "hadrian-ghc-in-ghci"
    
    7381
    +      }
    
    7382
    +    ],
    
    7383
    +    "rules": [
    
    7384
    +      {
    
    7385
    +        "if": "((($ONLY_JOBS) && ($ONLY_JOBS =~ /.*\\bx86_64-linux-fedora43-validate\\+ubsan(\\s|$).*/)) || (($ONLY_JOBS == null) && ((($CI_MERGE_REQUEST_LABELS =~ /.*full-ci.*/) || ($CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/) || ($CI_COMMIT_BRANCH == \"master\") || ($CI_COMMIT_BRANCH =~ /ghc-[0-9]+\\.[0-9]+/))))) && ($RELEASE_JOB != \"yes\") && ($NIGHTLY == null)",
    
    7386
    +        "when": "on_success"
    
    7387
    +      }
    
    7388
    +    ],
    
    7389
    +    "script": [
    
    7390
    +      "sudo chown ghc:ghc -R .",
    
    7391
    +      ".gitlab/ci.sh setup",
    
    7392
    +      ".gitlab/ci.sh configure",
    
    7393
    +      ".gitlab/ci.sh build_hadrian",
    
    7394
    +      ".gitlab/ci.sh test_hadrian"
    
    7395
    +    ],
    
    7396
    +    "stage": "full-build",
    
    7397
    +    "tags": [
    
    7398
    +      "x86_64-linux"
    
    7399
    +    ],
    
    7400
    +    "variables": {
    
    7401
    +      "BIGNUM_BACKEND": "gmp",
    
    7402
    +      "BIN_DIST_NAME": "ghc-x86_64-linux-fedora43-validate+ubsan",
    
    7403
    +      "BUILD_FLAVOUR": "validate+ubsan",
    
    7404
    +      "CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7405
    +      "HADRIAN_ARGS": "--docs=none",
    
    7406
    +      "INSTALL_CONFIGURE_ARGS": "--enable-strict-ghc-toolchain-check",
    
    7407
    +      "RUNTEST_ARGS": "",
    
    7408
    +      "TEST_ENV": "x86_64-linux-fedora43-validate+ubsan"
    
    7282 7409
         }
    
    7283 7410
       },
    
    7284 7411
       "x86_64-linux-rocky8-validate": {
    

  • .gitlab/rel_eng/fetch-gitlab-artifacts/fetch_gitlab.py
    ... ... @@ -23,8 +23,8 @@ def job_triple(job_name):
    23 23
             'release-x86_64-linux-ubuntu22_04-release': 'x86_64-ubuntu22_04-linux',
    
    24 24
             'release-x86_64-linux-ubuntu20_04-release': 'x86_64-ubuntu20_04-linux',
    
    25 25
             'release-x86_64-linux-ubuntu18_04-release': 'x86_64-ubuntu18_04-linux',
    
    26
    -        'release-x86_64-linux-fedora42-release': 'x86_64-fedora42-linux',
    
    27
    -        'release-x86_64-linux-fedora42-release+debug_info': 'x86_64-fedora42-linux-dwarf',
    
    26
    +        'release-x86_64-linux-fedora43-release': 'x86_64-fedora43-linux',
    
    27
    +        'release-x86_64-linux-fedora43-release+debug_info': 'x86_64-fedora43-linux-dwarf',
    
    28 28
             'release-x86_64-linux-deb12-release': 'x86_64-deb12-linux',
    
    29 29
             'release-x86_64-linux-deb11-release': 'x86_64-deb11-linux',
    
    30 30
             'release-x86_64-linux-deb10-release+debug_info': 'x86_64-deb10-linux-dwarf',
    

  • .gitlab/rel_eng/mk-ghcup-metadata/mk_ghcup_metadata.py
    ... ... @@ -200,7 +200,7 @@ def mk_new_yaml(release_mode, version, date, pipeline_type, job_map):
    200 200
         ubuntu2204 = mk(ubuntu("22_04"))
    
    201 201
         ubuntu2404 = mk(ubuntu("24_04"))
    
    202 202
         rocky8 = mk(rocky("8"))
    
    203
    -    fedora42 = mk(fedora(42))
    
    203
    +    fedora43 = mk(fedora(43))
    
    204 204
         darwin_x86 = mk(darwin("x86_64"))
    
    205 205
         darwin_arm64 = mk(darwin("aarch64"))
    
    206 206
         windows = mk(windowsArtifact)
    
    ... ... @@ -239,7 +239,7 @@ def mk_new_yaml(release_mode, version, date, pipeline_type, job_map):
    239 239
                                  , "unknown_versioning": ubuntu2004 }
    
    240 240
               , "Linux_CentOS"  : { "( >= 8 && < 9 )" : rocky8
    
    241 241
                                   , "unknown_versioning" : rocky8  }
    
    242
    -          , "Linux_Fedora"  : { ">= 42": fedora42
    
    242
    +          , "Linux_Fedora"  : { ">= 43": fedora43
    
    243 243
                                   , "unknown_versioning": rocky8 }
    
    244 244
               , "Linux_RedHat"  : { "unknown_versioning": rocky8 }
    
    245 245
               , "Linux_UnknownLinux" : { "unknown_versioning": rocky8 }
    

  • configure.ac
    ... ... @@ -526,7 +526,7 @@ AC_SUBST(InstallNameToolCmd)
    526 526
     # versions of LLVM simultaneously, but that stopped working around
    
    527 527
     # 3.5/3.6 release of LLVM.
    
    528 528
     LlvmMinVersion=13  # inclusive
    
    529
    -LlvmMaxVersion=21  # not inclusive
    
    529
    +LlvmMaxVersion=22  # not inclusive
    
    530 530
     AC_SUBST([LlvmMinVersion])
    
    531 531
     AC_SUBST([LlvmMaxVersion])
    
    532 532
     
    

  • hadrian/doc/flavours.md
    ... ... @@ -238,6 +238,10 @@ The supported transformers are listed below:
    238 238
             <td><code>thread_sanitizer</code></td>
    
    239 239
             <td>Build the runtime system with ThreadSanitizer support</td>
    
    240 240
         </tr>
    
    241
    +    <tr>
    
    242
    +        <td><code>ubsan</code></td>
    
    243
    +        <td>Build all stage1+ C/C++ code with UndefinedBehaviorSanitizer support</td>
    
    244
    +    </tr>
    
    241 245
         <tr>
    
    242 246
             <td><code>llvm</code></td>
    
    243 247
             <td>Use GHC's LLVM backend (`-fllvm`) for all stage1+ compilation.</td>
    

  • hadrian/src/Flavour.hs
    ... ... @@ -7,6 +7,7 @@ module Flavour
    7 7
       , addArgs
    
    8 8
       , splitSections
    
    9 9
       , enableThreadSanitizer
    
    10
    +  , enableUBSan
    
    10 11
       , enableLateCCS
    
    11 12
       , enableHashUnitIds
    
    12 13
       , enableDebugInfo, enableTickyGhc
    
    ... ... @@ -33,6 +34,9 @@ import Data.Either
    33 34
     import Data.Map (Map)
    
    34 35
     import qualified Data.Map as M
    
    35 36
     import qualified Data.Set as Set
    
    37
    +import GHC.Platform.ArchOS
    
    38
    +import Oracles.Flag
    
    39
    +import Oracles.Setting
    
    36 40
     import Packages
    
    37 41
     import Flavour.Type
    
    38 42
     import Settings.Parser
    
    ... ... @@ -53,6 +57,7 @@ flavourTransformers = M.fromList
    53 57
         , "no_split_sections" =: noSplitSections
    
    54 58
         , "thread_sanitizer" =: enableThreadSanitizer False
    
    55 59
         , "thread_sanitizer_cmm" =: enableThreadSanitizer True
    
    60
    +    , "ubsan"            =: enableUBSan
    
    56 61
         , "llvm"             =: viaLlvmBackend
    
    57 62
         , "profiled_ghc"     =: enableProfiledGhc
    
    58 63
         , "no_dynamic_ghc"   =: disableDynamicGhcPrograms
    
    ... ... @@ -258,6 +263,66 @@ enableThreadSanitizer instrumentCmm = addArgs $ notStage0 ? mconcat
    258 263
             ]
    
    259 264
         ]
    
    260 265
     
    
    266
    +-- | Whether or not -shared-libsan should be passed to clang at
    
    267
    +-- link-time.
    
    268
    +--
    
    269
    +-- See
    
    270
    +-- https://github.com/llvm/llvm-project/blob/llvmorg-21.1.5/clang/lib/Driver/SanitizerArgs.cpp#L1008,
    
    271
    +-- clang defaults to -shared-libsan on darwin/windows and
    
    272
    +-- -static-libsan on linux. In general, -static-libsan is incredibly
    
    273
    +-- problematic when multiple copies of the sanitizer runtimes coexist
    
    274
    +-- in the same address space due to being linked into multiple Haskell
    
    275
    +-- libraries. So we should explicitly specify `-shared-libsan` if
    
    276
    +-- needed.
    
    277
    +--
    
    278
    +-- A small downside of -shared-libsan is the clang-specific sanitizer
    
    279
    +-- runtime shared library path needs to be manually specified via
    
    280
    +-- @export LD_LIBRARY_PATH=$(dirname $(clang -print-libgcc-file-name
    
    281
    +-- -rtlib=compiler-rt))@ for ld.so to find it at runtime.
    
    282
    +needSharedLibSAN :: Action Bool
    
    283
    +needSharedLibSAN = do
    
    284
    +  is_clang <- flag CcLlvmBackend
    
    285
    +  is_default_shared_libsan <- anyTargetOs [OSDarwin, OSMinGW32]
    
    286
    +  pure $ is_clang && not is_default_shared_libsan
    
    287
    +
    
    288
    +-- | Build all stage1+ C/C++ code with UndefinedBehaviorSanitizer
    
    289
    +-- support:
    
    290
    +-- https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html.
    
    291
    +--
    
    292
    +-- Note that we also pass -fno-sanitize=function to clang, since
    
    293
    +-- "runtime call to function foo through pointer to incorrect function
    
    294
    +-- type" is unfortunately pretty common (e.g. evac_fn in rts) and
    
    295
    +-- impact the signal to noise ratio of UBSan warnings. gcc doesn't
    
    296
    +-- implement this instrumentation though.
    
    297
    +enableUBSan :: Flavour -> Flavour
    
    298
    +enableUBSan =
    
    299
    +  addArgs $
    
    300
    +    notStage0
    
    301
    +      ? mconcat
    
    302
    +        [ package rts
    
    303
    +            ? builder (Cabal Flags)
    
    304
    +            ? arg "+ubsan"
    
    305
    +            <> (needSharedLibSAN ? arg "+shared-libsan"),
    
    306
    +          builder (Ghc CompileHs)
    
    307
    +            ? arg "-optc-fsanitize=undefined"
    
    308
    +            <> (flag CcLlvmBackend ? arg "-optc-fno-sanitize=function"),
    
    309
    +          builder (Ghc CompileCWithGhc)
    
    310
    +            ? arg "-optc-fsanitize=undefined"
    
    311
    +            <> (flag CcLlvmBackend ? arg "-optc-fno-sanitize=function"),
    
    312
    +          builder (Ghc CompileCppWithGhc)
    
    313
    +            ? arg "optcxx-fsanitize=undefined"
    
    314
    +            <> (flag CcLlvmBackend ? arg "-optcxx-fno-sanitize=function"),
    
    315
    +          builder (Ghc LinkHs)
    
    316
    +            ? arg "-optc-fsanitize=undefined"
    
    317
    +            <> arg "-optl-fsanitize=undefined"
    
    318
    +            <> (needSharedLibSAN ? arg "-optl-shared-libsan")
    
    319
    +            <> (flag CcLlvmBackend ? arg "-optc-fno-sanitize=function"),
    
    320
    +          builder (Cc CompileC)
    
    321
    +            ? arg "-fsanitize=undefined"
    
    322
    +            <> (flag CcLlvmBackend ? arg "-fno-sanitize=function"),
    
    323
    +          builder Testsuite ? arg "--config=have_ubsan=True"
    
    324
    +        ]
    
    325
    +
    
    261 326
     -- | Use the LLVM backend in stages 1 and later.
    
    262 327
     viaLlvmBackend :: Flavour -> Flavour
    
    263 328
     viaLlvmBackend = addArgs $ notStage0 ? builder Ghc ? arg "-fllvm"
    

  • rts/rts.cabal
    ... ... @@ -91,6 +91,19 @@ flag thread-sanitizer
    91 91
         in @rts/include/rts/TSANUtils.h@.
    
    92 92
       default: False
    
    93 93
       manual: True
    
    94
    +flag ubsan
    
    95
    +  description:
    
    96
    +    Link with -fsanitize=undefined, to be enabled when building with
    
    97
    +    UndefinedBehaviorSanitizer.
    
    98
    +  default: False
    
    99
    +  manual: True
    
    100
    +flag shared-libsan
    
    101
    +  description:
    
    102
    +    Link with -shared-libsan, to guarantee only one copy of the
    
    103
    +    sanitizer runtimes exist in the address space. See
    
    104
    +    needSharedLibSAN in hadrian/src/Flavour.hs.
    
    105
    +  default: False
    
    106
    +  manual: True
    
    94 107
     
    
    95 108
     library
    
    96 109
         -- rts is a wired in package and
    
    ... ... @@ -200,6 +213,12 @@ library
    200 213
             cc-options: -fsanitize=thread
    
    201 214
             ld-options: -fsanitize=thread
    
    202 215
     
    
    216
    +      if flag(ubsan)
    
    217
    +        ld-options: -fsanitize=undefined
    
    218
    +
    
    219
    +      if flag(shared-libsan)
    
    220
    +        ld-options: -shared-libsan
    
    221
    +
    
    203 222
           if os(linux)
    
    204 223
              -- the RTS depends upon libc. while this dependency is generally
    
    205 224
              -- implicitly added by `cc`, we must explicitly add it here to ensure
    

  • testsuite/driver/testglobals.py
    ... ... @@ -186,6 +186,9 @@ class TestConfig:
    186 186
             # Are we running in a ThreadSanitizer-instrumented build?
    
    187 187
             self.have_thread_sanitizer = False
    
    188 188
     
    
    189
    +        # Are we running with UndefinedBehaviorSanitizer enabled?
    
    190
    +        self.have_ubsan = False
    
    191
    +
    
    189 192
             # Do symbols use leading underscores?
    
    190 193
             self.leading_underscore = False
    
    191 194
     
    

  • testsuite/driver/testlib.py
    ... ... @@ -1090,6 +1090,8 @@ def llvm_build ( ) -> bool:
    1090 1090
     def have_thread_sanitizer( ) -> bool:
    
    1091 1091
         return config.have_thread_sanitizer
    
    1092 1092
     
    
    1093
    +def have_ubsan( ) -> bool:
    
    1094
    +    return config.have_ubsan
    
    1093 1095
     
    
    1094 1096
     def gcc_as_cmmp() -> bool:
    
    1095 1097
         return config.cmm_cpp_is_gcc