[21] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

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


home help back first fref pref prev next nref lref last post