In regards to the compiler failing below, I would like to question
the definition of assert in the AFS src/util/assert.h
Both gcc and the Solaris /opt/SUNWspro/bin/cc fail compiling the code.
The use of the "do {...} while" makes the output of the define a statement,
rather then an expression. Both Solaris and Ubuntu have assert.h with
macros to define assert, and they do it so assert is defined as an expression.
Suggest something more like:
Index: src/util/assert.h
===================================================================
RCS file: /cvs/openafs/src/util/assert.h,v
retrieving revision 1.4
diff -u -r1.4 assert.h
--- src/util/assert.h 14 Jan 2003 00:46:48 -0000 1.4
+++ src/util/assert.h 14 Dec 2007 23:28:52 -0000
@@ -12,4 +12,4 @@
void AssertionFailed(char *file, int line);
-#define assert(ex) do{if (!(ex)) AssertionFailed(__FILE__, __LINE__);}while(0)
+#define assert(ex) (void)((ex)?0:(AssertionFailed(__FILE__, __LINE__),0))
And for Problem#2:
Index: src/comerr/error_msg.c
===================================================================
RCS file: /cvs/openafs/src/comerr/error_msg.c,v
retrieving revision 1.6.14.2
diff -u -r1.6.14.2 error_msg.c
--- src/comerr/error_msg.c 26 Sep 2007 16:34:28 -0000 1.6.14.2
+++ src/comerr/error_msg.c 14 Dec 2007 23:29:55 -0000
@@ -169,7 +169,7 @@
UNLOCK_ET_LIST;
}
-#if 0
+#ifndef HAVE_ADD_ERROR_TABLE
/*
* New interfaces provided by mit krb5's com_err library
*/
Douglas E. Engert wrote:
Jim Rees wrote:
For the past year or more, Matt Benjamin and Marcus Watts have been
working
hard on developing rxk5, a new security mechanism for OpenAFS. It uses
kerberos 5 tickets and encryption algorithms straight, and includes
support
for all standard kerberos 5 encryption types including AES256.
The code is currently on a branch tagged rxk5-devel-1_5_x. Our plan
is to
merge it to the openafs-devel-1_5_x branch, from which it will eventually
make its way into an official OpenAFS release at some time in the future.
Please test this code. Even if you don't plan to use any of the rxk5
features, please build it and report back here.
Trying to build with the Solaris 10 version of Kerberos. This is
attractive,
as it is a vendor version, and Sun has recently released the krb5.h.
Problem #1:
The Solaris 10 /usr/include/kerberos5/krb5.h has:
483 #ifndef _KERNEL
484 #define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
485 #define krb5_xc(ptr,args) ((ptr)?((*(ptr))
args):(abort(),(char*)0))
486 #else
487 #define krb5_x(ptr,args) ((*(ptr)) args)
488 #define krb5_xc(ptr,args) ((*(ptr)) args)
489 #endif
1276 #define krb5_cc_get_principal(context, cache, principal)
krb5_x((cache)-ops->get_princ,(context, cache, principal))
It looks like the intent is to abort if a function pointer is NULL.
AFS util/assert.h has:
#define assert(ex) do{if (!(ex)) AssertionFailed(__FILE__,
__LINE__);}while(0)
Some how the pre processor is converting the abort to the assert and
producing
code in ptuser.c around line 257 like: (wrapped in e-mail to make more
readable)
what = "krb5_cc_get_principal";
code = ( ( ( cc ) -> ops -> get_princ ) ? ( ( * ( ( cc ) -> ops ->
get_princ ) )
( k5context , cc , & in_creds -> client ) ) : ( do { if ( ! ( 0 ))
AssertionFailed (
"/afs/anl.gov/appl/OpenAFS-dev3/build/1.5.x-rxk5/@sys/src/ptserver/ptuser.c"
, 258 ) ; } while ( 0 ) , 1 ) );
if(code) goto Failed;
The compiler Sun compiler (/opt/SUNWspro/bin/cc -V ,cc: Sun C 5.8 Patch
121015-05 2007/08/01)
does not like the do:
"/afs/anl.gov/appl/OpenAFS-dev3/build/1.5.x-rxk5/@sys/src/ptserver/ptuser.c",
line 257: syntax error before or at: do
"/afs/anl.gov/appl/OpenAFS-dev3/build/1.5.x-rxk5/@sys/src/ptserver/ptuser.c",
line 257: syntax error before or at: ,
The problem first appears the JUAFS compiles of ptserver/ptuser.c
and auth/rxk5_utilafs.c
A hack was applied to get the compile to proceed.
Problem #2:
Solaris does not have add_error_table or remove_error_table.
libafsrpc.so.1.1 references these, found when trying to link
the linktest in shlibafsrpc
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel
--
Douglas E. Engert <[EMAIL PROTECTED]>
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439
(630) 252-5444
_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel