[21] in Kerberos-V5-bugs
Re: Version 5 build problems
daemon@ATHENA.MIT.EDU (Bill Sommerfeld)
Wed Oct 10 12:26:44 1990
Date: Wed, 10 Oct 90 12:14:41 EDT
From: Bill Sommerfeld <sommerfeld@apollo.com>
To: brnstnd@KRAMDEN.ACF.NYU.EDU
Cc: krb5-testers@ATHENA.MIT.EDU
In-Reply-To: Dan Bernstein's message of Tuesday, October 9, 1990 11:10:41 pm (EDT)
Date: Tuesday, October 9, 1990 11:10:41 pm (EDT)
From: brnstnd@KRAMDEN.ACF.NYU.EDU (Dan Bernstein)
> lib/rcache/rc_dfl.h has:
> krb5_rc_ops krb5_rc_dfl_ops; /* initialized to the following */
> needs to be:
> extern krb5_rc_ops krb5_rc_dfl_ops; /* initialized to the following */
Why? Doesn't this only fail on broken linkers? The change is fine for
readability, but I don't understand why it's necessary...
Not all the world uses the Berkeley linker and a.out format object
modules...
A declaration of the first form is a definition of the variable; a
declaration of the second form is only a reference to it.
rc_dfl.h is included into two source files: rc_dfl.c and rcdef.c;
krb5_rc_dfl_ops is later initialized only in rcdef.c.
If rc_dfl.o is pulled in because of some other symbol it defines, then
it also defines krb5_rc_dfl_ops, and the linker doesn't have to pull
in rcdef.o to resolve it, and it *won't* on some systems (it doesn't
get pulled in by the apollo linker either).
- Bill