struct A{virtual void foo();virtual void bar();};void A::foo() { } // losevoid A::bar() { } // keepstruct B : public A{virtual void foo();};void B::foo() { } // losevoid _start() __asm__("_start"); // keepvoid start() __asm__("start"); // some toolchains use this name.A a; // keepB b;A *getme() { return &a; } // keepvoid _start(){getme()->bar();}void start (){_start ();}extern "C" void __main() { }