1 struct A 2 { 3 virtual void foo(); 4 virtual void bar(); 5 }; 6 foo()7void A::foo() { } // lose bar()8void A::bar() { } // keep 9 10 struct B : public A 11 { 12 virtual void foo(); 13 }; 14 foo()15void B::foo() { } // lose 16 17 void _start() __asm__("_start"); // keep 18 void start() __asm__("start"); // some toolchains use this name. 19 20 A a; // keep 21 B b; getme()22A *getme() { return &a; } // keep 23 _start()24void _start() 25 { 26 getme()->bar(); 27 } 28 start()29void start () 30 { 31 _start (); 32 } 33 __main()34extern "C" void __main() { } 35