};
void A::foo() { } // keep
-void A::bar() { } // loose
+void A::bar() { } // lose
struct B : public A
{
void B::foo() { } // keep
-void _start() __asm__("_start"); // keep
+void _start() __asm__("_start"); // keep
+void start() __asm__("start"); // some toolchains use this name.
A a; // keep
B b;
void _start()
{
getme()->foo();
+#ifdef __GNUC__
+#if (__GNUC__ == 2 && __GNUC_MINOR__ < 96)
+// gcc-2.95.2 gets this test wrong, and loses B::foo().
+// Cheat. After all, we aren't trying to test the compiler here.
+ b.foo();
+#endif
+#endif
+}
+
+void start ()
+{
+ _start ();
}
// In addition, keep A's virtual table.