-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Ghidra HEAD to commit 317a88148 (#245)
Upstream has added a compression mechanism for compiled sleigh files. They use Zlib to perform the compression and have added the source code to the Ghidra repo. However, this commit does not use Ghidra's Zlib source and instead searches for it on the host. This commit also fixes a number of bugs that prevent various parts of the CI pipeline from working on supported OSes. These patches will be reported upstream. Changed files: ``` M Ghidra/Features/Decompiler/src/decompile/cpp/Makefile M Ghidra/Features/Decompiler/src/decompile/cpp/address.hh M Ghidra/Features/Decompiler/src/decompile/cpp/architecture.hh M Ghidra/Features/Decompiler/src/decompile/cpp/block.hh M Ghidra/Features/Decompiler/src/decompile/cpp/comment.hh A Ghidra/Features/Decompiler/src/decompile/cpp/compression.cc A Ghidra/Features/Decompiler/src/decompile/cpp/compression.hh M Ghidra/Features/Decompiler/src/decompile/cpp/float.cc M Ghidra/Features/Decompiler/src/decompile/cpp/float.hh M Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc M Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc M Ghidra/Features/Decompiler/src/decompile/cpp/fspec.hh M Ghidra/Features/Decompiler/src/decompile/cpp/funcdata.hh M Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_block.cc M Ghidra/Features/Decompiler/src/decompile/cpp/ifacedecomp.cc M Ghidra/Features/Decompiler/src/decompile/cpp/inject_sleigh.cc M Ghidra/Features/Decompiler/src/decompile/cpp/jumptable.hh M Ghidra/Features/Decompiler/src/decompile/cpp/marshal.cc M Ghidra/Features/Decompiler/src/decompile/cpp/marshal.hh M Ghidra/Features/Decompiler/src/decompile/cpp/op.cc M Ghidra/Features/Decompiler/src/decompile/cpp/op.hh M Ghidra/Features/Decompiler/src/decompile/cpp/options.cc M Ghidra/Features/Decompiler/src/decompile/cpp/pcodeparse.cc M Ghidra/Features/Decompiler/src/decompile/cpp/pcodeparse.y M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc M Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh A Ghidra/Features/Decompiler/src/decompile/cpp/slaformat.cc A Ghidra/Features/Decompiler/src/decompile/cpp/slaformat.hh M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh.cc M Ghidra/Features/Decompiler/src/decompile/cpp/sleigh_arch.cc M Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.cc M Ghidra/Features/Decompiler/src/decompile/cpp/sleighbase.hh M Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.hh M Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.hh M Ghidra/Features/Decompiler/src/decompile/cpp/slghparse.y M Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slghpatexpress.hh M Ghidra/Features/Decompiler/src/decompile/cpp/slghpattern.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slghpattern.hh M Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slghscan.l M Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc M Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.hh M Ghidra/Features/Decompiler/src/decompile/cpp/space.cc M Ghidra/Features/Decompiler/src/decompile/cpp/space.hh M Ghidra/Features/Decompiler/src/decompile/cpp/translate.cc M Ghidra/Features/Decompiler/src/decompile/cpp/translate.hh M Ghidra/Features/Decompiler/src/decompile/cpp/type.cc M Ghidra/Features/Decompiler/src/decompile/unittests/testfuncproto.cc M Ghidra/Features/Decompiler/src/decompile/unittests/testmarshal.cc A Ghidra/Features/Decompiler/src/decompile/zlib/README.txt A Ghidra/Features/Decompiler/src/decompile/zlib/adler32.c A Ghidra/Features/Decompiler/src/decompile/zlib/deflate.c A Ghidra/Features/Decompiler/src/decompile/zlib/deflate.h A Ghidra/Features/Decompiler/src/decompile/zlib/gzguts.h A Ghidra/Features/Decompiler/src/decompile/zlib/inffast.c A Ghidra/Features/Decompiler/src/decompile/zlib/inffast.h A Ghidra/Features/Decompiler/src/decompile/zlib/inffixed.h A Ghidra/Features/Decompiler/src/decompile/zlib/inflate.c A Ghidra/Features/Decompiler/src/decompile/zlib/inflate.h A Ghidra/Features/Decompiler/src/decompile/zlib/inftrees.c A Ghidra/Features/Decompiler/src/decompile/zlib/inftrees.h A Ghidra/Features/Decompiler/src/decompile/zlib/trees.c A Ghidra/Features/Decompiler/src/decompile/zlib/trees.h A Ghidra/Features/Decompiler/src/decompile/zlib/zconf.h A Ghidra/Features/Decompiler/src/decompile/zlib/zlib.h A Ghidra/Features/Decompiler/src/decompile/zlib/zutil.c A Ghidra/Features/Decompiler/src/decompile/zlib/zutil.h M Ghidra/Processors/68000/data/languages/68000.ldefs M Ghidra/Processors/AARCH64/certification.manifest M Ghidra/Processors/AARCH64/data/languages/AARCH64.ldefs M Ghidra/Processors/AARCH64/data/languages/AARCH64.opinion A Ghidra/Processors/AARCH64/data/languages/AARCH64_swift.cspec M Ghidra/Processors/AARCH64/data/languages/AppleSilicon.ldefs M Ghidra/Processors/ARM/data/languages/ARM.ldefs M Ghidra/Processors/Loongarch/data/languages/loongarch.ldefs M Ghidra/Processors/MIPS/data/languages/mips.ldefs M Ghidra/Processors/PA-RISC/data/languages/pa-risc.sinc M Ghidra/Processors/PowerPC/data/languages/ppc.ldefs M Ghidra/Processors/RISCV/data/languages/riscv.ldefs M Ghidra/Processors/Sparc/data/languages/SparcV9.ldefs M Ghidra/Processors/SuperH4/data/languages/SuperH4.ldefs M Ghidra/Processors/Xtensa/data/languages/xtensa.ldefs M Ghidra/Processors/x86/certification.manifest A Ghidra/Processors/x86/data/languages/x86-64-swift.cspec M Ghidra/Processors/x86/data/languages/x86.ldefs M Ghidra/Processors/x86/data/languages/x86.opinion ```
- Loading branch information
1 parent
f2323af
commit 24b9034
Showing
16 changed files
with
204 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
From 67ac779382508ab0d5ff10bcb0a8453068cce5a2 Mon Sep 17 00:00:00 2001 | ||
From 6c36965500d26d5a35dfbc91725956ae1d51e394 Mon Sep 17 00:00:00 2001 | ||
From: Alex Cameron <[email protected]> | ||
Date: Mon, 5 Jun 2023 16:45:04 +1200 | ||
Subject: [PATCH 1/2] Fix UBSAN errors in decompiler | ||
Subject: [PATCH 1/5] Fix UBSAN errors in decompiler | ||
|
||
--- | ||
.../Decompiler/src/decompile/cpp/fspec.cc | 8 ++++++-- | ||
|
@@ -13,16 +13,15 @@ Subject: [PATCH 1/2] Fix UBSAN errors in decompiler | |
.../Decompiler/src/decompile/cpp/semantics.cc | 2 ++ | ||
.../Decompiler/src/decompile/cpp/semantics.hh | 2 +- | ||
.../src/decompile/cpp/slgh_compile.cc | 2 +- | ||
.../Decompiler/src/decompile/cpp/slghsymbol.cc | 2 +- | ||
.../Decompiler/src/decompile/cpp/type.cc | 2 +- | ||
.../src/decompile/unittests/testfloatemu.cc | 2 +- | ||
12 files changed, 57 insertions(+), 21 deletions(-) | ||
11 files changed, 56 insertions(+), 20 deletions(-) | ||
|
||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc | ||
index 82771cc04..da78c8071 100644 | ||
index dc96f0c19..3482cf17c 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/fspec.cc | ||
@@ -2661,8 +2661,12 @@ void ProtoModelMerged::decode(Decoder &decoder) | ||
@@ -2727,8 +2727,12 @@ void ProtoModelMerged::decode(Decoder &decoder) | ||
modellist.push_back(mymodel); | ||
} | ||
decoder.closeElement(elemId); | ||
|
@@ -38,7 +37,7 @@ index 82771cc04..da78c8071 100644 | |
|
||
void ParameterBasic::setTypeLock(bool val) | ||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc | ||
index f77817073..283d81c31 100644 | ||
index fc094ee96..1f7e53ebe 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/funcdata_varnode.cc | ||
@@ -503,7 +503,13 @@ void Funcdata::setHighLevel(void) | ||
|
@@ -57,10 +56,10 @@ index f77817073..283d81c31 100644 | |
uint4 vnFlags = vn->getFlags() & (Varnode::directwrite|Varnode::addrforce); | ||
|
||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc | ||
index 0e3decc80..403ec35a7 100644 | ||
index 921335173..46cdc39f3 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/op.cc | ||
@@ -672,7 +672,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const | ||
@@ -666,7 +666,11 @@ uintb PcodeOp::getNZMaskLocal(bool cliploop) const | ||
break; | ||
case CPUI_PIECE: | ||
resmask = getIn(0)->getNZMask(); | ||
|
@@ -136,7 +135,7 @@ index ca9d71ab9..85d4dd281 100644 | |
return res; | ||
} | ||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc | ||
index ae2e502c1..a22b8ebdc 100644 | ||
index 3703c8ef5..ac6e21c00 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/ruleaction.cc | ||
@@ -976,7 +976,12 @@ int4 RulePullsubIndirect::applyOp(PcodeOp *op,Funcdata &data) | ||
|
@@ -153,7 +152,7 @@ index ae2e502c1..a22b8ebdc 100644 | |
consume = ~consume; | ||
if ((consume & indir->getIn(0)->getConsume())!=0) return 0; | ||
|
||
@@ -6789,8 +6794,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data) | ||
@@ -6803,8 +6808,9 @@ int4 RulePtrsubCharConstant::applyOp(PcodeOp *op,Funcdata &data) | ||
Varnode *sb = op->getIn(0); | ||
Datatype *sbType = sb->getTypeReadFacing(op); | ||
if (sbType->getMetatype() != TYPE_PTR) return 0; | ||
|
@@ -165,7 +164,7 @@ index ae2e502c1..a22b8ebdc 100644 | |
Varnode *vn1 = op->getIn(1); | ||
if (!vn1->isConstant()) return 0; | ||
Varnode *outvn = op->getOut(); | ||
@@ -8600,7 +8606,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data) | ||
@@ -8616,7 +8622,11 @@ int4 RuleSubvarSubpiece::applyOp(PcodeOp *op,Funcdata &data) | ||
Varnode *outvn = op->getOut(); | ||
int4 flowsize = outvn->getSize(); | ||
uintb mask = calc_mask( flowsize ); | ||
|
@@ -179,7 +178,7 @@ index ae2e502c1..a22b8ebdc 100644 | |
if (!aggressive) { | ||
if ((vn->getConsume() & mask) != vn->getConsume()) return 0; | ||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.cc | ||
index 2e3531ea2..42482be7c 100644 | ||
index cd9b9835b..8a4616c3b 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) | ||
|
@@ -199,23 +198,23 @@ index 2e3531ea2..42482be7c 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 8e283dca0..652600c16 100644 | ||
index e0b069959..9117a45c7 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/semantics.hh | ||
@@ -48,7 +48,7 @@ private: | ||
static void printHandleSelector(ostream &s,v_field val); | ||
static v_field readHandleSelector(const string &name); | ||
@@ -47,7 +47,7 @@ class ConstTpl { | ||
uintb value_real; | ||
v_field select; // Which part of handle to use as constant | ||
public: | ||
- ConstTpl(void) { type = real; value_real = 0; } | ||
+ ConstTpl(void) { type = real; value_real = 0; select = v_space; } | ||
ConstTpl(const ConstTpl &op2) { | ||
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 b40f74389..3c37958df 100644 | ||
index c060053bf..c9004023c 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slgh_compile.cc | ||
@@ -2163,8 +2163,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope) | ||
@@ -2164,8 +2164,8 @@ string SleighCompile::checkSymbols(SymbolScope *scope) | ||
ostringstream msg; | ||
SymbolTree::const_iterator iter; | ||
for(iter=scope->begin();iter!=scope->end();++iter) { | ||
|
@@ -225,24 +224,11 @@ index b40f74389..3c37958df 100644 | |
if (sym->getRefCount() == 0) | ||
msg << " Label <" << sym->getName() << "> was placed but not used" << endl; | ||
else if (!sym->isPlaced()) | ||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc | ||
index b308e1b71..af2982aee 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/slghsymbol.cc | ||
@@ -2569,7 +2569,7 @@ void ContextOp::restoreXml(const Element *el,SleighBase *trans) | ||
const List &list(el->getChildren()); | ||
List::const_iterator iter; | ||
iter = list.begin(); | ||
- patexp = (PatternValue *)PatternExpression::restoreExpression(*iter,trans); | ||
+ patexp = PatternExpression::restoreExpression(*iter,trans); | ||
patexp->layClaim(); | ||
} | ||
|
||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc | ||
index 32ede6b0f..238d97f40 100644 | ||
index e6292e138..bd31b7470 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/type.cc | ||
@@ -3384,8 +3384,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub) | ||
@@ -3561,8 +3561,8 @@ void TypeFactory::recalcPointerSubmeta(Datatype *base,sub_metatype sub) | ||
top.submeta = sub; // Search on the incorrect submeta | ||
iter = tree.lower_bound(&top); | ||
while(iter != tree.end()) { | ||
|
@@ -266,5 +252,5 @@ index c35bde877..061e53677 100644 | |
uintb true_result = ((uintb)(int32_t)f) & 0xffffffff; | ||
uintb encoding = format.getEncoding(f); | ||
-- | ||
2.39.2 (Apple Git-143) | ||
2.44.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
From 9fd26cd754b6f83e45199db896fd0fcea23cd59d Mon Sep 17 00:00:00 2001 | ||
From 290b06621c7a8c32c1470d16dbd8740876d57640 Mon Sep 17 00:00:00 2001 | ||
From: Alex Cameron <[email protected]> | ||
Date: Wed, 3 Aug 2022 20:01:18 +1000 | ||
Subject: [PATCH 2/2] Use `stroull` instead of `stroul` to parse address | ||
Subject: [PATCH 2/5] Use `stroull` instead of `stroul` to parse address | ||
offsets | ||
|
||
--- | ||
Ghidra/Features/Decompiler/src/decompile/cpp/space.cc | 7 ++++++- | ||
1 file changed, 6 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc | ||
index bf4e1dc96..594b4583a 100644 | ||
index bda09fc94..d077ee375 100644 | ||
--- a/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc | ||
+++ b/Ghidra/Features/Decompiler/src/decompile/cpp/space.cc | ||
@@ -16,6 +16,8 @@ | ||
|
@@ -21,7 +21,7 @@ index bf4e1dc96..594b4583a 100644 | |
namespace ghidra { | ||
|
||
AttributeId ATTRIB_BASE = AttributeId("base",89); | ||
@@ -290,7 +292,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const | ||
@@ -274,7 +276,10 @@ uintb AddrSpace::read(const string &s,int4 &size) const | ||
} | ||
} | ||
catch(LowlevelError &err) { // Name doesn't exist | ||
|
@@ -34,5 +34,5 @@ index bf4e1dc96..594b4583a 100644 | |
enddata = (const char *) tmpdata; | ||
if (enddata - s.c_str() == s.size()) { // If no size or offset override | ||
-- | ||
2.39.2 (Apple Git-143) | ||
2.44.0 | ||
|
Oops, something went wrong.