mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
GT-2905_emteere Putting out correct constructor line-number for nop
sleigh compiler argument '-n'
This commit is contained in:
parent
89a4496a2e
commit
5ecce280b8
2 changed files with 11 additions and 7 deletions
|
@ -563,7 +563,7 @@ macrodef
|
|||
}
|
||||
: ^(t=OP_MACRO n=unbound_identifier["macro"] a=arguments {
|
||||
symbol = sc.createMacro(find(n), n.getText(), a.first, a.second);
|
||||
} s=semantic[env, sc.pcode, $t, false, true]) {
|
||||
} s=semantic[env, null, sc.pcode, $t, false, true]) {
|
||||
if (symbol != null) {
|
||||
sc.buildMacro(symbol, $macrodef::macrobody);
|
||||
}
|
||||
|
@ -612,13 +612,13 @@ constructorlikelist
|
|||
;
|
||||
|
||||
constructor
|
||||
: ^(OP_CONSTRUCTOR c=ctorstart e=bitpattern b=contextblock r=ctorsemantic) {
|
||||
: ^(OP_CONSTRUCTOR c=ctorstart e=bitpattern b=contextblock r=ctorsemantic[c]) {
|
||||
sc.buildConstructor(c, e, b, r);
|
||||
}
|
||||
;
|
||||
|
||||
ctorsemantic returns [SectionVector value]
|
||||
: ^(t=OP_PCODE p=semantic[env, sc.pcode, $t, true, false]) { $value = p; }
|
||||
ctorsemantic[Constructor ctor] returns [SectionVector value]
|
||||
: ^(t=OP_PCODE p=semantic[env, ctor.location, sc.pcode, $t, true, false]) { $value = p; }
|
||||
| ^(OP_PCODE OP_UNIMPL) { /*unimpl unimplemented ; */ $value = null; }
|
||||
;
|
||||
|
||||
|
@ -941,7 +941,7 @@ cstatement[VectorSTL<ContextChange> r]
|
|||
}
|
||||
;
|
||||
|
||||
semantic[ParsingEnvironment pe, PcodeCompile pcode, Tree where, boolean sectionsAllowed, boolean isMacroParse] returns [SectionVector rtl]
|
||||
semantic[ParsingEnvironment pe, Location containerLoc, PcodeCompile pcode, Tree where, boolean sectionsAllowed, boolean isMacroParse] returns [SectionVector rtl]
|
||||
scope {
|
||||
SectionVector sections;
|
||||
boolean containsMultipleSections;
|
||||
|
@ -966,7 +966,11 @@ semantic[ParsingEnvironment pe, PcodeCompile pcode, Tree where, boolean sections
|
|||
: ^(x=OP_SEMANTIC c=code_block[find($x)] {
|
||||
if (c != null) {
|
||||
if (c.getOpvec().empty() && c.getResult() == null) {
|
||||
pcode.recordNop(find(where));
|
||||
Location loc = find(where);
|
||||
if (loc == null) {
|
||||
loc = containerLoc;
|
||||
}
|
||||
pcode.recordNop(loc);
|
||||
}
|
||||
if ($semantic::containsMultipleSections) {
|
||||
$semantic::sections = pcode.finalNamedSection($semantic::sections, c);
|
||||
|
|
|
@ -312,7 +312,7 @@ public class PcodeParser extends PcodeCompile {
|
|||
// ANTLRUtil.debugNodeStream(nodes, System.out);
|
||||
SleighCompiler walker = new SleighCompiler(nodes);
|
||||
|
||||
SectionVector rtl = walker.semantic(env, this, semantic.getTree(), false, false);
|
||||
SectionVector rtl = walker.semantic(env, null, this, semantic.getTree(), false, false);
|
||||
|
||||
if (getErrors() != 0) {
|
||||
return null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue