More time found more about the problem. I suspect but can't prove it
is a new bug in the MacOS X `ranlib -c`. For years I've used `ranlib -c`
on MacOS X to get `ld` link forward references to variables, using this
feature from the MacOS X ranlib man page:
-c Include common symbols as definitions with respect to the table
of contents. This is seldom the intended behavior for linking
from a library, as it forces the linking of a library member
just because it uses an uninitialized global that is undefined
at that point in the linking. This option is included only
because this was the original behavior of ranlib. This option
is not the default.
The current and I think new problem is that Apple has an odd notion of
"undefined at that point in the linking" as demonstrated with this test:
#! /bin/sh -x
echo 'int v; extern int f(void); main(){ f(); }' >m.c
cc -c -o m.o m.c
echo 'extern int v; int f(void) { return v;}' >l1.c
cc -c -o l1.o l1.c
echo 'int v; extern int ndef(void); int nused(void) {return ndef();}' >l2.c
cc -c -o l2.o l2.c
rm -f libt.a
ar qcs libt.a l1.o l2.o
ranlib -c libt.a
cc m.o libt.a -o m -whyload
The link-load fails after `ranlib -c` by ignoring the definition of "v"
in m.o before the reference in l1.o. It works without `ranlib -c`.
None of the other supported DCC platforms an that need `ranlib`
als needed `ranlib -c`. They use the old BSD library re-ordering
mechanism or something else to avoid caring about the order of
binary files in libraries.
`man ar` on MacOS X 10 says that `ar qcs` invokes `ranlib`,
so for DCC 2.3.127 I've shuffled variables among files and removed
the need for and use of `ranlib -c` on MacOS X.
It would be interesting to check dccm builds on the test system, but
dccm needs the sendmail milter library and header files. I tried
building sendmail 8.14.4 to get the library, but that fails completely.
I guess no one cares about sendmail on MacOS X.
Realsoonnow I'll release DCC version 1.3.127
Vernon Schryver [email protected]
_______________________________________________
DCC mailing list [email protected]
http://www.rhyolite.com/mailman/listinfo/dcc