ld test failure on ARM GNU/Linux
Alan Modra
alan@linuxcare.com.au
Sun Apr 9 20:56:00 GMT 2000
On Sun, 9 Apr 2000, Philip Blundell wrote:
> selective4 is failing on arm-linux targets because B::foo is not discarded
> from the output file.
>
> Does anybody have time to look into this?
Preferably someone who knows C++ well. This problem isn't specific to
arm/linux, it happens with x86 too, as I reported in January. You need a
fairly recent gcc that supports -ffunction-sections -fdata-sections
-fvtable-gc -fno-exceptions -fno-rtti, otherwise these tests aren't even
run. gcc-2.7.2 is too old.
The question boils down to: Are the comments correct in the
following? If so, then ld/testsuite/ld-selective/selective.exp is in
error. The test fails due to finding foo__1B, and the comments seem to
indicate that foo_1B should indeed be kept.
struct A
{
virtual void foo();
virtual void bar();
};
void A::foo() { } // keep
void A::bar() { } // loose
struct B : public A
{
virtual void foo();
};
void B::foo() { } // keep
void _start() __asm__("_start"); // keep
A a; // keep
B b;
A *getme() { return &a; } // keep
void _start()
{
getme()->foo();
}
// In addition, keep A's virtual table.
// We'll wind up keeping `b' and thus B's virtual table because
// `a' and `b' are both referenced from the constructor function.
extern "C" void __main() { }
--
Linuxcare. Support for the Revolution.
More information about the Binutils
mailing list