From 5d1d7cf77b4b06ad71f9888eeddb0df18e739b7e Mon Sep 17 00:00:00 2001 From: narpfel Date: Thu, 14 Aug 2025 17:09:02 +0200 Subject: [PATCH 1/4] Fix demangling for symbols with dots in jump instructions (#8028) For example Rust on AArch64: https://godbolt.org/z/e3q9Wv7zj --- lib/demangler/base.ts | 2 +- test/demangler-tests.ts | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/demangler/base.ts b/lib/demangler/base.ts index 20069ead5..6b447645a 100644 --- a/lib/demangler/base.ts +++ b/lib/demangler/base.ts @@ -44,7 +44,7 @@ export class BaseDemangler extends AsmRegex { readonly includeMetadata: boolean; readonly compiler: BaseCompiler; - readonly jumpDef = /(j\w+|b|bl|blx)\s+([$_a-z][\w$@]*|"[$_a-z][\w$@]*")/i; + readonly jumpDef = /(j\w+|b|bl|blx)\s+([$_a-z][\w$.@]*|"[$_a-z][\w$.@]*")/i; readonly callDef = /callq?\s+([$._a-z][\w$.@]*|"[$._a-z][\w$.@]*")/i; readonly callPtrDef1 = /callq?.*ptr\s\[[a-z]*\s\+\s([$._a-z][\w$.@]*|"[$._a-z][\w$.@]*")]/i; readonly callPtrDef2 = /callq?\s+([$*._a-z][\w$.@]*|"[$*._a-z][\w$.@]*")/i; diff --git a/test/demangler-tests.ts b/test/demangler-tests.ts index 634e1b886..453ce2b43 100644 --- a/test/demangler-tests.ts +++ b/test/demangler-tests.ts @@ -198,6 +198,29 @@ describe('Basic demangling', () => { ]); }); + it('AArch64 branch with dotted symbol', () => { + const result = { + asm: [ + { + text: 'b _ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0feee90717706137E', + }, + ], + }; + + const demangler = new DummyCppDemangler(cppfiltpath, new DummyCompiler(), ['-n']); + + return Promise.all([ + demangler + .process(result) + .then(output => { + expect(output.asm[0].text).toEqual( + 'b core::fmt::num::imp::::fmt::h0feee90717706137', + ); + }) + .catch(catchCppfiltNonexistence), + ]); + }); + it('Two destructors', () => { const result = { asm: [ @@ -251,7 +274,14 @@ describe('Basic demangling', () => { }); it('Should also support ARM branch instructions', () => { - const result = {asm: [{text: ' bl _ZN3FooC1Ev'}]}; + const result = { + asm: [ + {text: ' bl _ZN3FooC1Ev'}, + { + text: 'b _ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0feee90717706137E', + }, + ], + }; const demangler = new DummyCppDemangler(cppfiltpath, new DummyCompiler(), ['-n']); @@ -260,7 +290,12 @@ describe('Basic demangling', () => { demangler.collectLabels(); const output = demangler.othersymbols.listSymbols(); - expect(output).toEqual(['_ZN3FooC1Ev']); + expect(output.sort()).toEqual( + [ + '_ZN3FooC1Ev', + '_ZN4core3fmt3num3imp52_$LT$impl$u20$core..fmt..Display$u20$for$u20$i32$GT$3fmt17h0feee90717706137E', + ].sort(), + ); }); it('Should NOT handle undecorated labels', () => { From e575fd6c0d899a4fdfe7f0fda91c3f9121004ba6 Mon Sep 17 00:00:00 2001 From: Albert Andaluz Date: Thu, 14 Aug 2025 17:10:02 +0200 Subject: [PATCH 2/4] Add C++ library fusedkernellibrary vBeta-0.1.9 (#8026) This PR adds the C++ library **fusedkernellibrary** version Beta-0.1.9 to Compiler Explorer. - GitHub URL: https://github.com/Libraries-Openly-Fused/FusedKernelLibrary Related PR: https://github.com/compiler-explorer/infra/pull/1755 --- _PR created with [ce-lib-wizard](https://github.com/compiler-explorer/ce-library-wizard)_ --------- Co-authored-by: Albert Andaluz Co-authored-by: Patrick Quist --- etc/config/c++.amazon.properties | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties index 22229c0be..e449500dd 100644 --- a/etc/config/c++.amazon.properties +++ b/etc/config/c++.amazon.properties @@ -4675,7 +4675,7 @@ compiler.z180-clang-1507.options=-target z180 -g0 -nostdinc -fno-threadsafe-stat ################################# ################################# # Installed libs -libs=abseil:array:async_simple:belleviews:beman_any_view:beman_exemplar:beman_execution:beman_iterator_interface:beman_inplace_vector:beman_net:beman_optional:beman_scope:beman_task:benchmark:benri:blaze:boost:bmpi3:bmulti:brigand:bronto:catch2:cccl:cctz:cereal:cmcstl2:cnl:cppcoro:cppitertools:cpptrace:crosscables:ctbignum:cthash:ctre:date:dataframe:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:flux:fmt:gcem:gemmlowp:glaze:glm:gnufs:gnulibbacktrace:gnuexp:googletest:gsl:hdf5:hedley:hfsm:highfive:highway:hotels-template-library:hpx:immer:jsoncons:jsoncpp:kiwaku:kokkos:kumi:kvasir:kyosu:lager:lagom:lexy:libassert:libbpf:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mfem:mimicpp:mlir:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:ppdt:proxy:pugixml:pybind11:python:rangesv3:raberu:rapidjson:re2:reactive_plus_plus:scnlib:seastar:seqan3:simde:simdjson:sol2:spdlog:spy:stdexec:strong_type:taojson:taskflow:tbb:thinkcell:tlexpected:toml11:tomlplusplus:trompeloeil:tts:type_safe:unifex:ureact:vcl:xercesc:xsimd:xtensor:xtl:yomm2:zug:cli11:avr-libstdcpp:curl:copperspice:sqlite:ztdcuneicode:ztdencodingtables:ztdidk:ztdstaticcontainers:ztdtext:ztdplatform:qt:quill:pcre2:widberg-defs:jwt-cpp:xieite:option:mdspan:graaf +libs=abseil:array:async_simple:belleviews:beman_any_view:beman_exemplar:beman_execution:beman_iterator_interface:beman_inplace_vector:beman_net:beman_optional:beman_scope:beman_task:benchmark:benri:blaze:boost:bmpi3:bmulti:brigand:bronto:catch2:cccl:cctz:cereal:cmcstl2:cnl:cppcoro:cppitertools:cpptrace:crosscables:ctbignum:cthash:ctre:date:dataframe:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:flux:fmt:gcem:gemmlowp:glaze:glm:gnufs:gnulibbacktrace:gnuexp:googletest:gsl:hdf5:hedley:hfsm:highfive:highway:hotels-template-library:hpx:immer:jsoncons:jsoncpp:kiwaku:kokkos:kumi:kvasir:kyosu:lager:lagom:lexy:libassert:libbpf:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mfem:mimicpp:mlir:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:ppdt:proxy:pugixml:pybind11:python:rangesv3:raberu:rapidjson:re2:reactive_plus_plus:scnlib:seastar:seqan3:simde:simdjson:sol2:spdlog:spy:stdexec:strong_type:taojson:taskflow:tbb:thinkcell:tlexpected:toml11:tomlplusplus:trompeloeil:tts:type_safe:unifex:ureact:vcl:xercesc:xsimd:xtensor:xtl:yomm2:zug:cli11:avr-libstdcpp:curl:copperspice:sqlite:ztdcuneicode:ztdencodingtables:ztdidk:ztdstaticcontainers:ztdtext:ztdplatform:qt:quill:pcre2:widberg-defs:jwt-cpp:xieite:option:mdspan:graaf:fusedkernellibrary libs.abseil.name=Abseil libs.abseil.versions=202501270 @@ -6711,6 +6711,12 @@ libs.graaf.versions=110 libs.graaf.versions.110.path=/opt/compiler-explorer/libs/graaf/v1.1.0/include libs.graaf.versions.110.version=1.1.0 +libs.fusedkernellibrary.name=fusedkernellibrary +libs.fusedkernellibrary.url=https://github.com/Libraries-Openly-Fused/FusedKernelLibrary +libs.fusedkernellibrary.versions=Beta-019 +libs.fusedkernellibrary.versions.Beta-019.path=/opt/compiler-explorer/libs/fusedkernellibrary/Beta-0.1.9/include +libs.fusedkernellibrary.versions.Beta-019.version=Beta-0.1.9 + ################################# ################################# # Installed tools From ffaf8978239b2f1dd907e85dac532edec1bfce5d Mon Sep 17 00:00:00 2001 From: kevinjeon-g <136382173+kevinjeon-g@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:11:11 -0400 Subject: [PATCH 3/4] Update dex2oat versions (35.13, 35.14, android 16) (#8027) --- etc/config/android-java.amazon.properties | 23 ++++++++++++++++++++- etc/config/android-kotlin.amazon.properties | 23 ++++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/etc/config/android-java.amazon.properties b/etc/config/android-java.amazon.properties index 8219ba5ea..395675e83 100644 --- a/etc/config/android-java.amazon.properties +++ b/etc/config/android-java.amazon.properties @@ -101,7 +101,7 @@ compiler.java-r8-8242.exe=/opt/compiler-explorer/r8-8.2.42/r8-8.2.42.jar compiler.java-r8-8233.name=r8 8.2.33 compiler.java-r8-8233.exe=/opt/compiler-explorer/r8-8.2.33/r8-8.2.33.jar -group.dex2oat.compilers=java-dex2oat-latest:java-dex2oat-3310:java-dex2oat-3411:java-dex2oat-3413:java-dex2oat-3414:java-dex2oat-3415:java-dex2oat-3416:java-dex2oat-3417:java-dex2oat-3418:java-dex2oat-3508:java-dex2oat-3509:java-dex2oat-3510:java-dex2oat-3511 +group.dex2oat.compilers=java-dex2oat-latest:java-dex2oat-3310:java-dex2oat-3411:java-dex2oat-3413:java-dex2oat-3414:java-dex2oat-3415:java-dex2oat-3416:java-dex2oat-3417:java-dex2oat-3418:java-dex2oat-3508:java-dex2oat-3509:java-dex2oat-3510:java-dex2oat-3511:java-dex2oat-3513:java-dex2oat-3514:java-dex2oat-3600 group.dex2oat.groupName=ART group.dex2oat.compilerType=dex2oat group.dex2oat.isSemVer=true @@ -115,6 +115,27 @@ compiler.java-dex2oat-latest.d8Id=java-d8-latest compiler.java-dex2oat-latest.isNightly=true compiler.java-dex2oat-latest.profmanPath=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/profman +compiler.java-dex2oat-3600.name=ART dex2oat android16-release (May 2025) +compiler.java-dex2oat-3600.artArtifactDir=/opt/compiler-explorer/dex2oat-36.0 +compiler.java-dex2oat-3600.exe=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/dex2oat64 +compiler.java-dex2oat-3600.objdumper=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/oatdump +compiler.java-dex2oat-3600.d8Id=java-d8-8718 +compiler.java-dex2oat-3600.profmanPath=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/profman + +compiler.java-dex2oat-3514.name=ART dex2oat aml_art_351410020 (Feb 2025) +compiler.java-dex2oat-3514.artArtifactDir=/opt/compiler-explorer/dex2oat-35.14 +compiler.java-dex2oat-3514.exe=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/dex2oat64 +compiler.java-dex2oat-3514.objdumper=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/oatdump +compiler.java-dex2oat-3514.d8Id=java-d8-8718 +compiler.java-dex2oat-3514.profmanPath=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/profman + +compiler.java-dex2oat-3513.name=ART dex2oat aml_art_351310060 (Jan 2025) +compiler.java-dex2oat-3513.artArtifactDir=/opt/compiler-explorer/dex2oat-35.13 +compiler.java-dex2oat-3513.exe=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/dex2oat64 +compiler.java-dex2oat-3513.objdumper=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/oatdump +compiler.java-dex2oat-3513.d8Id=java-d8-8718 +compiler.java-dex2oat-3513.profmanPath=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/profman + compiler.java-dex2oat-3511.name=ART dex2oat aml_art_351110180 (Nov 2024) compiler.java-dex2oat-3511.artArtifactDir=/opt/compiler-explorer/dex2oat-35.11 compiler.java-dex2oat-3511.exe=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/dex2oat64 diff --git a/etc/config/android-kotlin.amazon.properties b/etc/config/android-kotlin.amazon.properties index 2c6cef342..ce0f74fee 100644 --- a/etc/config/android-kotlin.amazon.properties +++ b/etc/config/android-kotlin.amazon.properties @@ -102,7 +102,7 @@ compiler.kotlin-r8-8242.exe=/opt/compiler-explorer/r8-8.2.42/r8-8.2.42.jar compiler.kotlin-r8-8233.name=r8 8.2.33 compiler.kotlin-r8-8233.exe=/opt/compiler-explorer/r8-8.2.33/r8-8.2.33.jar -group.dex2oat.compilers=kotlin-dex2oat-latest:kotlin-dex2oat-3310:kotlin-dex2oat-3411:kotlin-dex2oat-3413:kotlin-dex2oat-3414:kotlin-dex2oat-3415:kotlin-dex2oat-3416:kotlin-dex2oat-3417:kotlin-dex2oat-3418:kotlin-dex2oat-3508:kotlin-dex2oat-3509:kotlin-dex2oat-3510:kotlin-dex2oat-3511 +group.dex2oat.compilers=kotlin-dex2oat-latest:kotlin-dex2oat-3310:kotlin-dex2oat-3411:kotlin-dex2oat-3413:kotlin-dex2oat-3414:kotlin-dex2oat-3415:kotlin-dex2oat-3416:kotlin-dex2oat-3417:kotlin-dex2oat-3418:kotlin-dex2oat-3508:kotlin-dex2oat-3509:kotlin-dex2oat-3510:kotlin-dex2oat-3511:kotlin-dex2oat-3513:kotlin-dex2oat-3514:kotlin-dex2oat-3600 group.dex2oat.groupName=ART group.dex2oat.compilerType=dex2oat group.dex2oat.isSemVer=true @@ -116,6 +116,27 @@ compiler.kotlin-dex2oat-latest.d8Id=kotlin-d8-latest compiler.kotlin-dex2oat-latest.isNightly=true compiler.kotlin-dex2oat-latest.profmanPath=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/profman +compiler.kotlin-dex2oat-3600.name=ART dex2oat android16-release (May 2025) +compiler.kotlin-dex2oat-3600.artArtifactDir=/opt/compiler-explorer/dex2oat-36.0 +compiler.kotlin-dex2oat-3600.exe=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/dex2oat64 +compiler.kotlin-dex2oat-3600.objdumper=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/oatdump +compiler.kotlin-dex2oat-3600.d8Id=kotlin-d8-8718 +compiler.kotlin-dex2oat-3600.profmanPath=/opt/compiler-explorer/dex2oat-36.0/x86_64/bin/profman + +compiler.kotlin-dex2oat-3514.name=ART dex2oat aml_art_351410020 (Feb 2025) +compiler.kotlin-dex2oat-3514.artArtifactDir=/opt/compiler-explorer/dex2oat-35.14 +compiler.kotlin-dex2oat-3514.exe=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/dex2oat64 +compiler.kotlin-dex2oat-3514.objdumper=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/oatdump +compiler.kotlin-dex2oat-3514.d8Id=kotlin-d8-8718 +compiler.kotlin-dex2oat-3514.profmanPath=/opt/compiler-explorer/dex2oat-35.14/x86_64/bin/profman + +compiler.kotlin-dex2oat-3513.name=ART dex2oat aml_art_351310060 (Jan 2025) +compiler.kotlin-dex2oat-3513.artArtifactDir=/opt/compiler-explorer/dex2oat-35.13 +compiler.kotlin-dex2oat-3513.exe=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/dex2oat64 +compiler.kotlin-dex2oat-3513.objdumper=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/oatdump +compiler.kotlin-dex2oat-3513.d8Id=kotlin-d8-8718 +compiler.kotlin-dex2oat-3513.profmanPath=/opt/compiler-explorer/dex2oat-35.13/x86_64/bin/profman + compiler.kotlin-dex2oat-3511.name=ART dex2oat aml_art_351110180 (Nov 2024) compiler.kotlin-dex2oat-3511.artArtifactDir=/opt/compiler-explorer/dex2oat-35.11 compiler.kotlin-dex2oat-3511.exe=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/dex2oat64 From 56753543d783c59ac54d4a381ea036aacbc46ddb Mon Sep 17 00:00:00 2001 From: Matt Godbolt Date: Thu, 14 Aug 2025 10:11:33 -0500 Subject: [PATCH 4/4] Mount cefs into the jails (#8030) This _maybe_ shows an issue - users could find _anything_ in cefs so we need to make sure we don't ever put privileged stuff in cefs. --- etc/nsjail/compilers-and-tools.cfg | 6 ++++++ etc/nsjail/user-execution.cfg | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/etc/nsjail/compilers-and-tools.cfg b/etc/nsjail/compilers-and-tools.cfg index aa28563ec..cc64cb20e 100644 --- a/etc/nsjail/compilers-and-tools.cfg +++ b/etc/nsjail/compilers-and-tools.cfg @@ -231,6 +231,12 @@ mount { is_bind: true } +mount { + src: "/cefs" + dst: "/cefs" + is_bind: true +} + # Needed for icc mount { src: "/opt/intel" diff --git a/etc/nsjail/user-execution.cfg b/etc/nsjail/user-execution.cfg index 0d57f725b..27290e0a0 100644 --- a/etc/nsjail/user-execution.cfg +++ b/etc/nsjail/user-execution.cfg @@ -209,6 +209,12 @@ mount { is_bind: true } +mount { + src: "/cefs" + dst: "/cefs" + is_bind: true +} + # Remove some sensitive stuff from execution mount { dst: "/opt/compiler-explorer/sonar"