Skip to content

Commit 3f003d2

Browse files
committed
Fixed issue #6
1 parent 96be158 commit 3f003d2

8 files changed

+54
-31
lines changed

.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.2.1
1+
0.2.2

src/main/java/dragondance/DragondancePlugin.java

-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ public void programActivated(Program program) {
6464
if (Globals.EnableStdoutLog)
6565
Log.enableStdoutLogging(true);
6666

67-
Log.enableError(true);
68-
Log.enableWarning(true);
6967
}
7068

7169
//Multi-session logic implemented but not usable from the GUI.

src/main/java/dragondance/Globals.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
public class Globals {
44
public static boolean WithoutGhidra=false;
5-
public static boolean DebugMode=true;
5+
public static boolean DebugMode=false;
66

77
public static boolean EnableLogging=true;
88
public static boolean EnableGhidraConsoleOutput=false;
9-
public static boolean EnableLoggingFileOutput=false;
9+
public static boolean EnableLoggingFileOutput=true;
1010
public static boolean EnableStdoutLog=false;
1111
public static boolean DumpInstructions=false;
1212

@@ -15,7 +15,7 @@ public class Globals {
1515
public static final float MIN_HUE = 190.0f;
1616
public static final float MAX_HUE = 360.0f;
1717

18-
public static final String version = "0.2.1";
18+
public static final String version = "0.2.2";
1919
public static final String verPhase = "beta";
2020

2121
}

src/main/java/dragondance/Log.java

+17-13
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,15 @@ private static void closeLogFile() {
5555
}
5656

5757

58-
private static void flagSetReset(final int v, boolean enabled) {
58+
private static boolean flagSetReset(final int v, boolean enabled) {
59+
boolean previous = (logFlag & v) == v;
60+
5961
if (enabled)
6062
logFlag |= v;
6163
else
6264
logFlag &= ~v;
65+
66+
return previous;
6367
}
6468

6569
private static final boolean hasFlag(final int flag) {
@@ -90,28 +94,28 @@ public static void enableFileLogging(boolean enabled) {
9094
flagSetReset(LOGGER_LOG_FILE,enabled);
9195
}
9296

93-
public static void enableStdoutLogging(boolean enabled) {
94-
flagSetReset(LOGGER_LOG_STDOUT,enabled);
97+
public static boolean enableStdoutLogging(boolean enabled) {
98+
return flagSetReset(LOGGER_LOG_STDOUT,enabled);
9599
}
96100

97-
public static void enableError(boolean enable) {
98-
flagSetReset(LOGGER_ERROR,enable);
101+
public static boolean enableError(boolean enable) {
102+
return flagSetReset(LOGGER_ERROR,enable);
99103
}
100104

101-
public static void enableWarning(boolean enable) {
102-
flagSetReset(LOGGER_WARNING,enable);
105+
public static boolean enableWarning(boolean enable) {
106+
return flagSetReset(LOGGER_WARNING,enable);
103107
}
104108

105-
public static void enableInfo(boolean enable) {
106-
flagSetReset(LOGGER_INFO,enable);
109+
public static boolean enableInfo(boolean enable) {
110+
return flagSetReset(LOGGER_INFO,enable);
107111
}
108112

109-
public static void enableVerbose(boolean enable) {
110-
flagSetReset(LOGGER_VERBOSE,enable);
113+
public static boolean enableVerbose(boolean enable) {
114+
return flagSetReset(LOGGER_VERBOSE,enable);
111115
}
112116

113-
public static void enableDebug(boolean enable) {
114-
flagSetReset(LOGGER_DEBUG,enable);
117+
public static boolean enableDebug(boolean enable) {
118+
return flagSetReset(LOGGER_DEBUG,enable);
115119
}
116120

117121
private static void print(String logType, String format, Object... args) {

src/main/java/dragondance/datasource/CoverageData.java

+7
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ private void merge() {
250250
return;
251251
}
252252

253+
Log.info("rangeList: %d", this.rangeList.size());
254+
253255
for (int i=0;i<this.rangeList.size();i++) {
254256
for (int j=0;j<this.rangeList.size();j++) {
255257
if (i != j) {
@@ -356,8 +358,13 @@ public boolean build() throws InvalidInstructionAddress, OperationAbortedExcepti
356358
this.buildRanges();
357359

358360
if (Globals.DumpInstructions) {
361+
boolean pv,pd;
362+
pv = Log.enableVerbose(true);
363+
pd = Log.enableDebug(true);
359364
this.dump();
360365
this.dumpHashMap();
366+
Log.enableVerbose(pv);
367+
Log.enableDebug(pd);
361368
}
362369

363370
return true;

src/main/java/dragondance/datasource/CoverageDataSource.java

+19-5
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,9 @@ private int readBytes(byte[] rbuf, int bufOffset, int len) {
158158
return readLen;
159159
}
160160

161-
protected String[] splitMultiDelim(String str, String delims) {
161+
protected String[] splitMultiDelim(String str, String delims, boolean trimItem) {
162162
int p=0,slen=str.length();
163+
String s;
163164

164165
if (slen == 0)
165166
return null;
@@ -169,14 +170,27 @@ protected String[] splitMultiDelim(String str, String delims) {
169170
for (int i=0;i<slen;i++) {
170171
if (delims.indexOf(str.charAt(i)) != -1) {
171172

172-
if (p != i)
173-
parts.add(str.substring(p,i));
173+
if (p != i) {
174+
s = str.substring(p,i);
175+
176+
if (trimItem)
177+
s = s.trim();
178+
179+
parts.add(s);
180+
181+
}
174182
p = i + 1;
175183
}
176184
}
177185

178-
if (p != slen)
179-
parts.add(str.substring(p,slen));
186+
if (p != slen) {
187+
s = str.substring(p,slen);
188+
189+
if (trimItem)
190+
s = s.trim();
191+
192+
parts.add(s);
193+
}
180194

181195
return parts.toArray(new String[parts.size()]);
182196
}

src/main/java/dragondance/datasource/DynamorioDataSource.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,21 @@ private void parseInformation() {
2323

2424
while ((line = readLine()) != null) {
2525
if (line.startsWith("DRCOV VERSION:")) {
26-
parts = splitMultiDelim(line,": ");
26+
parts = splitMultiDelim(line,": ",false);
2727
this.drCovVersion = Integer.parseInt(parts[2]);
2828
}
2929
else if (line.startsWith("Module Table:")) {
30-
parts = splitMultiDelim(line,": ,");
30+
parts = splitMultiDelim(line,": ,",false);
3131
this.moduleDefVersion = Integer.parseInt(parts[3]);
3232
this.moduleCount = Integer.parseInt(parts[5]);
3333
}
3434
else if (line.startsWith("Columns:")) {
35-
parts = splitMultiDelim(line,": ,");
35+
parts = splitMultiDelim(line,": ,",false);
3636
this.moduleInfoColumns = Arrays.copyOfRange(parts, 1, parts.length);
3737
readModules();
3838
}
3939
else if (line.startsWith("BB Table:")) {
40-
parts = splitMultiDelim(line," ");
40+
parts = splitMultiDelim(line," ",false);
4141
this.entryTableSize = Integer.parseInt(parts[2]);
4242
readEntries();
4343
break;
@@ -82,7 +82,7 @@ private void readModules() {
8282
ModuleInfo mod=null;
8383

8484
while ((line = readLine()) != null) {
85-
String[] parts = splitMultiDelim(line,", ");
85+
String[] parts = splitMultiDelim(line,",",true);
8686

8787
if (hasCid) {
8888
mod = ModuleInfo.make(

src/main/java/dragondance/datasource/PintoolDataSource.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ private void parseInformation() {
1616

1717
while ((line = readLine()) != null) {
1818
if (line.startsWith("EntryCount:")) {
19-
parts = splitMultiDelim(line,":, ");
19+
parts = splitMultiDelim(line,":, ",false);
2020
this.entryTableSize = Integer.parseInt(parts[1]);
2121
this.moduleCount = Integer.parseInt(parts[3]);
2222
}
@@ -35,7 +35,7 @@ private void readModules() {
3535
int readModuleCount=0;
3636

3737
while ((line = readLine()) != null) {
38-
String[] parts = splitMultiDelim(line,", ");
38+
String[] parts = splitMultiDelim(line,",", true);
3939

4040
ModuleInfo mod = ModuleInfo.make(
4141
parts[0],

0 commit comments

Comments
 (0)