You don't need the -( -) here, FWIW. libgcc does not require symbols from coreboot.a ;-)
Yes, actually it does. On powerpc libgcc uses external symbols that it does not provide.
Do you mean abort()?
Obviously.
Obvious to you perhaps, but not to me, that's why I asked :-)
Yeah, you need to provide that yourself, on all targets (nothing special about PowerPC);
See, that's why the -( -) is there. :-)
Yes, sure, supposedly nothing else requires the object file where abort() is defined. I see.
I read the libgcc source code, and only powerpc's libgcc is calling abort(). So while theoretically others may, they don't.
I think you read wrong then: every single target uses abort(). The difference you are seeing could be that PowerPC uses it in the trampoline code?
I agree completely with you that gcc might change its behavior on other platforms, which is exactly why the -( -) construct is not only used for our powerpc port.
the same is true for memcpy(), memset(), memmove(), memcmp(). FWIW, any GCC-compiled code can require those, not only code in libgcc.
The -( -) construct is only needed for symbols used in libgcc,
Yes.
so everything is fine. At the current point no mem* functions are used in the libgcc functions we "use". Even if we did, the construct would work for us without changes.
Yes.
Look, it just looked to me like some legacy thing that could use some cleaning up. Obviously it still has value.
Segher