[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

library bug?

After successfully compiling ELF binaries for PROJ.4 (map projections
conversion package), I followed these instructions to test for
"braindead" libraries, which failed.  I think this may be of some
interest to the maintainers of the libraries.  I must admit, I haven't
a clue which library is involved.  

>  Check /usr/include/math.h for prototype of hypot.  If missing it is
>  probably not in libm.a and it is necessary to use supplied version.

I think hypot was present.
>  	   make install HYPOT='$L(hypot.o)'
>  		   or
>  	   make install HYPOT='$L(hypot.o)' STRTOD='$L(strtod.o)'

>  To check for brain damaged versions of strtod try the following after
>  using the local system's version (default):
>  proj +proj=poly +ellps=clrk66 +no_defs <<EOF
>  3.5 33.25
>  3d30 33d15
>  EOF
>  Both geographic coordinates should produce the same cartesian result.
>  If not, then it is almost a certainty that libc.a has a version modified
>  to accept d | D as an alternative to e | E.  This "extension" to ANSI
>  specifications causes untold grief.  Use the ANSI compliant GNU version
>  included.

The values I got were:

          326186.98    3685744.37
          326725.05    3667246.41 

Close, but no cigar.

I am running GCC 2.7.2 
             libc5-dev   5.2.18-1
             libc5       5.2.18-1 

Also installed on the system is  libc4 4.6.27-11, but I don't have the
a.out compiler.

I haven't been able to quite comprehend the remedy, but a
local "ANSI compliant GNU version" of the offending function is
included with the source code.

Alan Davis

Reply to: