diff --git a/CMakeLists.txt b/CMakeLists.txt index c0bc4da..d2ec227 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,12 +147,13 @@ set(public_include_header_list "${library_root}/slaformat.hh" "${library_root}/constseq.hh" "${library_root}/expression.hh" + "${library_root}/bitfield.hh" ) -if(sleigh_RELEASE_IS_HEAD) - list(APPEND public_include_header_list - "${library_root}/bitfield.hh" - ) -endif() +# if(sleigh_RELEASE_IS_HEAD) +# list(APPEND public_include_header_list +# ) +# endif() + # Create custom target so that IDEs know these files are part of the sources add_custom_target(sleigh_all_headers SOURCES ${public_include_header_list}) set(public_headers_dir ${CMAKE_CURRENT_BINARY_DIR}/include) diff --git a/src/patches/stable/0001-Fix-UBSAN-errors-in-decompiler.patch b/src/patches/stable/0001-Fix-UBSAN-errors-in-decompiler.patch index d2ff185..cec2e49 100644 --- a/src/patches/stable/0001-Fix-UBSAN-errors-in-decompiler.patch +++ b/src/patches/stable/0001-Fix-UBSAN-errors-in-decompiler.patch @@ -1,7 +1,7 @@ -From 9d1e7b00e8f5dca987038a78fbac400c835a78be Mon Sep 17 00:00:00 2001 +From 31a52c1f29a0fe67956bbefc1b1b01d6c0ccd5b1 Mon Sep 17 00:00:00 2001 From: Eric Kilmer Date: Mon, 12 Aug 2024 12:02:35 -0400 -Subject: [PATCH 1/5] Fix UBSAN errors in decompiler +Subject: [PATCH 1/8] Fix UBSAN errors in decompiler Co-authored-by: Alex Cameron --- @@ -13,10 +13,10 @@ Co-authored-by: Alex Cameron 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc -index ca9d71ab99..85d4dd281d 100644 +index a67a3de849..37ba4930e6 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/pcodecompile.cc -@@ -621,8 +621,10 @@ vector *PcodeCompile::assignBitRange(VarnodeTpl *vn,uint4 bitoffset,uin +@@ -618,8 +618,10 @@ vector *PcodeCompile::assignBitRange(VarnodeTpl *vn,uint4 bitoffset,uin uint4 smallsize = (numbits+7)/8; // Size of input (output of rhs) bool shiftneeded = (bitoffset != 0); bool zextneeded = true; @@ -29,7 +29,7 @@ index ca9d71ab99..85d4dd281d 100644 if (vn->getSize().getType()==ConstTpl::real) { // If we know the size of the bitranged varnode, we can -@@ -726,9 +728,6 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4 +@@ -723,9 +725,6 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4 } } @@ -39,7 +39,7 @@ index ca9d71ab99..85d4dd281d 100644 if (truncneeded && ((bitoffset % 8)==0)) { truncshift = bitoffset/8; bitoffset = 0; -@@ -751,8 +750,13 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4 +@@ -748,8 +747,13 @@ ExprTree *PcodeCompile::createBitRange(SpecificSymbol *sym,uint4 bitoffset,uint4 appendOp(CPUI_INT_RIGHT,res,bitoffset,4); if (truncneeded) appendOp(CPUI_SUBPIECE,res,truncshift,4); @@ -56,7 +56,7 @@ index ca9d71ab99..85d4dd281d 100644 return res; } diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc -index cd9b9835b1..8a4616c3b9 100644 +index 18e2ff8ba1..3bfe29f2ef 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc @@ -22,6 +22,7 @@ ConstTpl::ConstTpl(const_type tp) @@ -76,7 +76,7 @@ index cd9b9835b1..8a4616c3b9 100644 bool ConstTpl::isConstSpace(void) const diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh -index e0b069959d..9117a45c75 100644 +index b53b18797d..b2f043e32d 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh @@ -47,7 +47,7 @@ class ConstTpl { @@ -89,10 +89,10 @@ index e0b069959d..9117a45c75 100644 type=op2.type; value=op2.value; value_real=op2.value_real; select=op2.select; } ConstTpl(const_type tp,uintb val); diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc -index 50d85e22ba..9f3b456229 100644 +index 75bebffcb0..bf5e7ce681 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc -@@ -2164,8 +2164,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope) +@@ -2323,8 +2323,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope) ostringstream msg; SymbolTree::const_iterator iter; for(iter=scope->begin();iter!=scope->end();++iter) { @@ -116,5 +116,5 @@ index 2571f55f1a..fe40e22b1b 100644 uintb true_result = ((uintb)(int32_t)f) & 0xffffffff; uintb encoding = format.getEncoding(f); -- -2.50.1 +2.54.0 diff --git a/src/patches/stable/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch b/src/patches/stable/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch index 3c2f222..4c6df62 100644 --- a/src/patches/stable/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch +++ b/src/patches/stable/0002-Use-stroull-instead-of-stroul-to-parse-address-offse.patch @@ -1,7 +1,7 @@ -From 729f72060849dc4f29e89b1c76a980563ffd3e2a Mon Sep 17 00:00:00 2001 +From 0928d2c8e97646042265cee1d2752514d02d3d4f Mon Sep 17 00:00:00 2001 From: Alex Cameron Date: Wed, 3 Aug 2022 20:01:18 +1000 -Subject: [PATCH 2/5] Use `stroull` instead of `stroul` to parse address +Subject: [PATCH 2/8] Use `stroull` instead of `stroul` to parse address offsets --- @@ -34,5 +34,5 @@ index dbaa2e775f..72927bf379 100644 enddata = (const char *) tmpdata; if (enddata - s.c_str() == s.size()) { // If no size or offset override -- -2.50.1 +2.54.0 diff --git a/src/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch b/src/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch index daf9966..046dcb6 100644 --- a/src/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch +++ b/src/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch @@ -1,7 +1,7 @@ -From 39cfff6f08dad8a85f992e09b3e26716c9173bf7 Mon Sep 17 00:00:00 2001 +From e08c2cb8c6f49a2127b14ba081f1a5ec600c3cea Mon Sep 17 00:00:00 2001 From: Eric Kilmer Date: Tue, 29 Oct 2024 17:51:09 -0400 -Subject: [PATCH 3/5] Ignore floating point test due to compilation differences +Subject: [PATCH 3/8] Ignore floating point test due to compilation differences This test fails on macOS and Windows. I'm unsure whether it's an OS or compiler issue. @@ -24,5 +24,5 @@ index fe40e22b1b..91440e2510 100644 ASSERT_EQUALS(ff.printDecimal(f2, false), "0.33333334"); double f3 = doubleFromRawBits(0x3fd0000000000000); -- -2.50.1 +2.54.0 diff --git a/src/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch b/src/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch index e4bb72f..974f46a 100644 --- a/src/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch +++ b/src/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch @@ -1,7 +1,7 @@ -From 2aa4395ef8874ee9890126f4bdad0d71adf9eacc Mon Sep 17 00:00:00 2001 +From b5500258acdee1b2f5dfe603b1da33a7eebf699f Mon Sep 17 00:00:00 2001 From: Eric Kilmer Date: Wed, 30 Oct 2024 14:26:57 -0400 -Subject: [PATCH 4/5] Allow positive or negative NAN in decompiler floating +Subject: [PATCH 4/8] Allow positive or negative NAN in decompiler floating point test At least on Apple Silicon, this test reports positive NAN. @@ -33,5 +33,5 @@ index f8108d3d32..1060a3e193 100644 double7 = 3.1415926535897933e-06; -- -2.50.1 +2.54.0 diff --git a/src/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch b/src/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch index 1f5b23f..bc8895b 100644 --- a/src/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch +++ b/src/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch @@ -1,7 +1,7 @@ -From 2a6bd0a0ad7797160db887bba7137b77aa148ba5 Mon Sep 17 00:00:00 2001 +From 6d5dbe6ffcfc31468ebbf2299ea72f5ef8abcf15 Mon Sep 17 00:00:00 2001 From: Eric Kilmer Date: Sat, 8 Feb 2025 17:59:57 -0500 -Subject: [PATCH 5/5] decompiler: Fix strict weak ordering TypePartialEnum +Subject: [PATCH 5/8] decompiler: Fix strict weak ordering TypePartialEnum This fixes Windows Debug error encountered in testing where it was complaining about lack of strict weak ordering. @@ -10,10 +10,10 @@ complaining about lack of strict weak ordering. 1 file changed, 1 insertion(+) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc -index 962c525b7f..7db5024b54 100644 +index e3601d3a99..fcc7b3f250 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc -@@ -2303,6 +2303,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const +@@ -2704,6 +2704,7 @@ int4 TypePartialEnum::compareDependency(const Datatype &op) const { if (submeta != op.getSubMeta()) return (submeta < op.getSubMeta()) ? -1 : 1; @@ -22,5 +22,5 @@ index 962c525b7f..7db5024b54 100644 if (parent != tp->parent) return (parent < tp->parent) ? -1 : 1; // Compare absolute pointers if (offset != tp->offset) return (offset < tp->offset) ? -1 : 1; -- -2.50.1 +2.54.0 diff --git a/src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch b/src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch new file mode 100644 index 0000000..bca81da --- /dev/null +++ b/src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch @@ -0,0 +1,29 @@ +From 4fba77dafc00c6a359b21b94be1be8d24db37d39 Mon Sep 17 00:00:00 2001 +From: "github-actions[bot]" + <41898282+github-actions[bot]@users.noreply.github.com> +Date: Wed, 25 Feb 2026 02:29:10 +0000 +Subject: [PATCH 6/8] decompiler: Fix strict weak ordering PullRecord + +When both readOp pointers are null, PullRecord::operator< incorrectly +returns true, violating strict weak ordering (irreflexivity). This is +caught by libc++ debug mode hardening assertions at pullList.sort(). +--- + Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc +index add61c741b..3e01d2e045 100644 +--- a/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc ++++ b/Ghidra/Features/Decompiler/src/decompile/cpp/bitfield.cc +@@ -1058,7 +1058,7 @@ bool BitFieldPullTransform::PullRecord::operator<(const PullRecord &op2) const + return (readOp->getSeqNum() < op2.readOp->getSeqNum()); + } + else if (readOp == (PcodeOp *)0) +- return true; ++ return (op2.readOp != (PcodeOp *)0); + else if (op2.readOp == (PcodeOp *)0) + return false; + return false; +-- +2.54.0 + diff --git a/src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch b/src/patches/stable/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch similarity index 83% rename from src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch rename to src/patches/stable/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch index c6e1d28..213bcde 100644 --- a/src/patches/stable/0006-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch +++ b/src/patches/stable/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch @@ -1,8 +1,8 @@ -From c435df4c0dbab80d8ff85e364cea9b59bf7010a1 Mon Sep 17 00:00:00 2001 +From 60f88f2a93a5b9c7a5a2d6b73b100cf353a6982c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> -Date: Wed, 25 Feb 2026 22:22:05 +0000 -Subject: [PATCH] decompiler: Fix strict weak ordering compareFinalOrder +Date: Wed, 25 Feb 2026 02:43:17 +0000 +Subject: [PATCH 7/8] decompiler: Fix strict weak ordering compareFinalOrder FlowBlock::compareFinalOrder returns true when both blocks have index 0, violating strict weak ordering (irreflexivity). This is caught by libc++ @@ -12,7 +12,7 @@ debug mode hardening assertions during BlockGraph::orderBlocks sort. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc -index bf7103d91..2e495d9c3 100644 +index bf7103d916..2e495d9c3f 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/block.cc @@ -709,7 +709,7 @@ string FlowBlock::typeToName(FlowBlock::block_type bt) @@ -25,5 +25,5 @@ index bf7103d91..2e495d9c3 100644 PcodeOp *op1 = bl1->lastOp(); PcodeOp *op2 = bl2->lastOp(); -- -2.51.1 +2.54.0 diff --git a/src/patches/stable/0007-Fix-UBSAN-signed-left-shift-errors.patch b/src/patches/stable/0008-Fix-UBSAN-signed-left-shift-errors.patch similarity index 89% rename from src/patches/stable/0007-Fix-UBSAN-signed-left-shift-errors.patch rename to src/patches/stable/0008-Fix-UBSAN-signed-left-shift-errors.patch index 91b4d8c..f916657 100644 --- a/src/patches/stable/0007-Fix-UBSAN-signed-left-shift-errors.patch +++ b/src/patches/stable/0008-Fix-UBSAN-signed-left-shift-errors.patch @@ -1,8 +1,8 @@ -From 8afa7d89a368b358a5493b87804985ed9ac70a2f Mon Sep 17 00:00:00 2001 +From 7da7356c3093390b99172a4adb1422e057243903 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:41:10 +0000 -Subject: [PATCH] Fix UBSAN signed left shift errors +Subject: [PATCH 8/8] Fix UBSAN signed left shift errors Cast signed values to unsigned before left shifting to avoid undefined behavior when the signed value is negative or when the result cannot be @@ -18,10 +18,10 @@ Fixes runtime errors detected by UndefinedBehaviorSanitizer: 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh b/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh -index 45144daf3..0e75c68b8 100644 +index 510432e5a2..0aaddea035 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/address.hh -@@ -544,7 +544,7 @@ inline intb sign_extend(intb val,int4 bit) +@@ -587,7 +587,7 @@ inline intb sign_extend(intb val,int4 bit) { int4 sa = 8*sizeof(intb) - (bit+1); @@ -31,7 +31,7 @@ index 45144daf3..0e75c68b8 100644 } diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc -index 941097859..93cce378a 100644 +index 9410978595..93cce378af 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc @@ -969,7 +969,7 @@ intb LeftShiftExpression::getValue(ParserWalker &walker) const @@ -53,5 +53,5 @@ index 941097859..93cce378a 100644 void LeftShiftExpression::encode(Encoder &encoder) const -- -2.51.1 +2.54.0 diff --git a/src/setup-ghidra-source.cmake b/src/setup-ghidra-source.cmake index 16557f2..7ba9472 100644 --- a/src/setup-ghidra-source.cmake +++ b/src/setup-ghidra-source.cmake @@ -22,7 +22,7 @@ set_property(CACHE sleigh_RELEASE_TYPE PROPERTY STRINGS "stable" "HEAD") find_package(Git REQUIRED) # Ghidra pinned stable version commit -set(ghidra_version "12.0.4") +set(ghidra_version "12.1") set(ghidra_git_tag "Ghidra_${ghidra_version}_build") set(ghidra_shallow TRUE) @@ -44,8 +44,9 @@ set(ghidra_patches "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0003-Ignore-floating-point-test-due-to-compilation-differ.patch" "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0004-Allow-positive-or-negative-NAN-in-decompiler-floatin.patch" "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0005-decompiler-Fix-strict-weak-ordering-TypePartialEnum.patch" - "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0006-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch" - "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0007-Fix-UBSAN-signed-left-shift-errors.patch" + "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0006-decompiler-Fix-strict-weak-ordering-PullRecord.patch" + "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0007-decompiler-Fix-strict-weak-ordering-compareFinalOrde.patch" + "${CMAKE_CURRENT_LIST_DIR}/patches/stable/0008-Fix-UBSAN-signed-left-shift-errors.patch" ) # Ghidra pinned commits used for pinning last known working HEAD commit @@ -116,10 +117,10 @@ set(sleigh_core_source_list "${library_root}/globalcontext.cc" "${library_root}/marshal.cc" ) -#if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD") -# list(APPEND sleigh_core_source_list -# ) -#endif() +# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD") +# list(APPEND sleigh_core_source_list +# ) +# endif() set(sleigh_deccore_source_list "${library_root}/capability.cc" @@ -180,12 +181,13 @@ set(sleigh_deccore_source_list "${library_root}/multiprecision.cc" "${library_root}/constseq.cc" "${library_root}/expression.cc" + "${library_root}/bitfield.cc" ) -if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD") - list(APPEND sleigh_deccore_source_list - "${library_root}/bitfield.cc" - ) -endif() +# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD") +# list(APPEND sleigh_deccore_source_list +# ) +# endif() + set(sleigh_extra_source_list "${library_root}/callgraph.cc" @@ -202,6 +204,10 @@ set(sleigh_extra_source_list "${library_root}/unify.cc" "${library_root}/xml_arch.cc" ) +# if("${sleigh_RELEASE_TYPE}" STREQUAL "HEAD") +# list(APPEND sleigh_extra_source_list +# ) +# endif() set(sleigh_source_list "${library_root}/sleigh.cc" diff --git a/src/spec_files_stable.cmake b/src/spec_files_stable.cmake index 4f7b1dd..548764d 100644 --- a/src/spec_files_stable.cmake +++ b/src/spec_files_stable.cmake @@ -9,6 +9,7 @@ set(spec_file_list "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80251.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/80390.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/8051.slaspec" + "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/cip-51.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8051/data/languages/mx51.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/8085/data/languages/8085.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/AARCH64/data/languages/AARCH64.slaspec" @@ -58,6 +59,7 @@ set(spec_file_list "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HC12.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/HCS12/data/languages/HCS12X.slaspec" + "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Hexagon/data/languages/hexagon.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/JVM/data/languages/JVM.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f32.slaspec" "${ghidrasource_SOURCE_DIR}/Ghidra/Processors/Loongarch/data/languages/loongarch32_f64.slaspec"