www-apache-bugdb mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jan Gallo" <ga...@viapvt.sk>
Subject Re: os-ultrix/4940: configure script fails, building of Apache fails during linking httpd daemon
Date Thu, 02 Sep 1999 12:20:01 GMT
The following reply was made to PR os-ultrix/4940; it has been noted by GNATS.

From: "Jan Gallo" <gallo@viapvt.sk>
To: <apbugs@hyperreal.org>, <apache-bugdb@Apache.Org>
Cc: <apbugs@Apache.Org>
Subject: Re: os-ultrix/4940: configure script fails, building of Apache fails during linking
httpd daemon
Date: Thu, 2 Sep 1999 14:06:19 +0200

 I would like to add some comments about standard CC compiler
 under Ultrix 4.4, Ultrix 4.5 (and probably also under older versions of
 Ultrix). The problem is due to types 'long long' and 'unsigned long long'.
 Implementation of C language under Ultrix knows type 'long long' and
 'unsigned long long' however arithmetic operations with operands
 of this type are problematic. For example, this code works
 
 --- example1.c ---------
 #include <stdio.h>
 
 void main()
 {
     printf("size of type \"long long\" is %d\n", sizeof (long long));
 }
 --- end of example1.c -------
 
 The program will generate output:
 
 size of type "long long" is 8
 
 Addition "+" and  subtraction "-" seem to work correctly. But multiplication
 "*"
 and division "/" (and also for example typecast) doesn't work.
 
 --- example2.c ---------
 void main()
 {
     long long i, j, k;
     double f;
 
     i = 0;
     j = 0;
     k = i+j;
     k = i * 20;        /* compiler will generate call of internal function
 __ll_mul */
     j = i / 10;         /* compiler will generate call of internal function
 __ll_div */
     f = (double)k; /* compiler will generate call of internal function
 __ll_to_d */
 }
 --- end of example2.c -------
 
 This source code will be successfully compiled, but linker
 will display error message:
 
 ld:
 Undefined:
 __ll_mul
 __ll_div
 __ll_to_d
 
 
 I checked all libraries *.a in directory /usr/lib with utility "nm" and
 didn't
 find any library that would contain code for internal functions
 __ll_mul, __ll_div, __ll_to_d
 
 Changing options for compiler didn't solve this problem. So it
 is apparent that standard CC compiler has not completely implemented
 all arithmetic operations with type 'long long' and 'unsigned long long'.
 On the other side it may be convenient to use in script ./src/Configure
 more sophisticated algorithm for determining the value of macro
 AP_LONGEST_LONG because this problem may occur
 on other platforms.
 
 It follows from mentioned above that there is another solution of
 compilation problem with Apache 1.3.9 under Ultrix with standard
 CC compiler. Header file ./src/include/ap_config_auto.h should be
 modified after configuration phase:
 
 /* determine: longest possible integer type */
 #ifndef AP_LONGEST_LONG
 #define AP_LONGEST_LONG long
 #endif
 
 So there is no need to modify source code in function conv_10_quad.
 By the way function conv_10 need not to be modified because
 variables magnitude, new_magnitude used in this function are
 type of u_wide_int  (that is unsigned long, which is OK).
 
 
                                                                     J.
 Gallo.
 
 
 
 
 
 
 
 
 

Mime
View raw message