avast / avast/retdec

Set and keep C++ superclasses in config in the correct order

Open
#152 0 comments 0 reactions 0 assignees View on GitHub
C-bin2llvmir enhancement T-lang-c++
Dominant language
C++
Stars
8.6k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

Make sure that if possible, our analyses (debug info, RTTI, ctor/dtor analyses?) find out, set, and keep the correct order of C++ superclasses. E.g. in the following example, `B` should go before `A`:

```cpp
#include

struct A {
virtual void foo() { printf("A::foo"); }
int i;
};

struct B {
virtual void foo() { printf("B::foo"); }
int j;
};

struct C: B, A {
virtual void foo() { printf("C::foo"); }
};

int main() {
C c;
c.foo();
return c.j;
}

```

Contributor guide

No contributing guide indexed for this repository

Research direction

No files or tests are named. Start by tracing the debug-info, RTTI, and constructor/destructor analyses that discover C++ superclass relationships, then reproduce the supplied C++ example. Done means the resulting configuration records and preserves B before A for C whenever the analysis can determine that order.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.