GP-2679 Gcc class recovery improvements. Created classes for Vtable,

Typeinfo, etc. Reworked vtable, const vtable and vtt discovery. Now
works for static gcc and for mingw/cygwin programs.
This commit is contained in:
ghidra007 2023-02-13 17:35:47 +00:00
parent 269ea1ae7a
commit 1d14222f37
14 changed files with 4937 additions and 2131 deletions

View file

@ -49,12 +49,16 @@ class EditStructureUtils {
for (DataTypeComponent newStructComponent : newStructComponents) {
monitor.checkCanceled();
monitor.checkCancelled();
int structOffset = newStructComponent.getOffset();
DataTypeComponent currentComponentAtOffset =
containingStruct.getComponentAt(offset + structOffset);
if(currentComponentAtOffset == null) {
continue;
}
DataType newStructCompDt = newStructComponent.getDataType();
DataType containingComDt = currentComponentAtOffset.getDataType();
@ -104,7 +108,7 @@ class EditStructureUtils {
}
for (int i = offset; i < offset + length; i++) {
monitor.checkCanceled();
monitor.checkCancelled();
DataTypeComponent component = structure.getComponentAt(i);
if (component == null) {
return false;
@ -142,7 +146,7 @@ class EditStructureUtils {
while (offset < endOfClear) {
monitor.checkCanceled();
monitor.checkCancelled();
DataTypeComponent component = structure.getComponentContaining(offset);
@ -209,7 +213,7 @@ class EditStructureUtils {
while (offset < endOfRange) {
monitor.checkCanceled();
monitor.checkCancelled();
DataTypeComponent component = structure.getComponentContaining(offset);
@ -357,7 +361,7 @@ class EditStructureUtils {
int index = offset - 1;
while (index >= 0) {
monitor.checkCanceled();
monitor.checkCancelled();
DataTypeComponent component = structure.getComponentAt(index);
if (component != null && component.getDataType() == DataType.DEFAULT) {
index--;
@ -385,7 +389,7 @@ class EditStructureUtils {
int index = offset;
while (index < structure.getLength()) {
monitor.checkCanceled();
monitor.checkCancelled();
DataTypeComponent component = structure.getComponentAt(index);
if (component.getDataType() == DataType.DEFAULT) {
index++;