[openssl-users] crypto/objects/o_names.c problem with Solaris 10 and strict Oracle Studio 12.6 c99

Dennis Clarke dclarke at blastwave.org
Thu Jan 17 23:23:11 UTC 2019


Fairly sure I did not run into all these issues with 1.1.1 on the exact
same systems but regardless here we are.  I *know* that I tested every
one of the 'pre' testing versions and have 1.1.1 running fine just about
everywhere.  So here goes the long story with ye strict C99 compiler :

$ env | sort
CC=/opt/developerstudio12.6/bin/c99
CFLAGS=-m64 -xarch=sparc -g -Xc -errfmt=error -erroff=%none 
-errshort=full -xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=pic32 
-xregs=no%appl -xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1
COLUMNS=132
CPPFLAGS=-I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS 
-D_LARGEFILE64_SOURCE -D_TS_ERRNO
CXX=/opt/developerstudio12.6/bin/CC
HOME=/export/home/dclarke
LD_OPTIONS=-R/usr/local/lib -L/usr/local/lib
LD_RUN_PATH=/usr/local/lib
LINES=43
LOGNAME=dclarke
MAIL=/var/mail//dclarke
OPENSSL_SOURCE=/usr/local/build/openssl-1.1.1a_SunOS5.10_sparc64vii+.001
PATH=/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/opt/developerstudio12.6/bin:/sbin:/bin:/usr/bin:/usr/sbin
PERL=/usr/local/bin/perl
PWD=/usr/local/build/openssl-1.1.1a_SunOS5.10_sparc64vii+.003
SSH_CLIENT=66.225.151.244 39653 22
SSH_CONNECTION=66.225.151.244 39653 68.179.116.204 22
SSH_TTY=/dev/pts/6
TERM=vt100
TMPDIR=/var/tmp/dclarke
TZ=GMT0
USER=dclarke
_=/usr/xpg4/bin/env



Here we need to modify Configurations/10-main.conf to insert those
CFLAGS for solaris64-sparcv9-cc as well as a few other minor tweaks :


#### Solaris configurations
     "solaris-common" => {
         inherit_from     => [ "BASE_unix" ],
         template         => 1,
         lib_cppflags     => "-DFILIO_H",
         ex_libs          => add("-lsocket -lnsl -ldl -lrt"),
         dso_scheme       => "dlfcn",
         thread_scheme    => "pthreads",
         shared_target    => "self",
         shared_extension => ".so.\$(SHLIB_VERSION_NUMBER)",
         shared_ldflag    => "-Wl,-Bsymbolic",
         shared_defflag   => "-Wl,-M,",
         shared_sonameflag=> "-Wl,-h,",
     },

See ex_libs?  We need -lrt due to a call to a time function embedded
somewhere in the mixture and the easy solution is just add -lrt there.

Really this is a bug that should be filed but I can come back to that.

Now go down to the Solaris with Sun C setups and maybe change that
to "Solaris with Oracle Studio C" setups because it has been almost
a decade.  I want a debug release with all the required symbols and
not stripped.  So let's remove the optimization entirely at line 331
and just have this :


#### SPARC Solaris with Sun C setups
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
# SC5.0 note: Compiler common patch 107357-01 or later is required!
     "solaris-sparcv7-cc" => {
         inherit_from     => [ "solaris-common" ],
         CC               => "cc",
         CFLAGS           => add_before(picker(debug   => "-g",
                                               release => "-g -xdepend")),
         cflags           => add_before("-xstrconst -Xa"),
         cppflags         => add(threads("-D_REENTRANT")),
         lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
         lflags           => add(threads("-mt")),
         ex_libs          => add(threads("-lpthread")),
         bn_ops           => "BN_LLONG RC4_CHAR",
         shared_cflag     => "-KPIC",
         shared_ldflag    => add_before("-G -dy -z text"),
     },

Now then, onwards to line 350 or so where we finally find the section 
just for solaris64-sparcv9-cc and here we need to throw away that old 
deprecated -xarch flag and insert the whole long string :


     "solaris64-sparcv9-cc" => {
         inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
         cflags           => add_before("-m64 -xarch=sparc -g -Xc 
-errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff -xme
malign=8s -xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc 
-ftrap=%none -xbuiltin=%none -xunroll=1"),
         bn_ops           => "BN_LLONG RC4_CHAR",
         multilib         => "/64",
     },

That works.

We end up with :

corv $ diff -c ./Configurations/10-main.conf.orig 
./Configurations/10-main.conf
*** ./Configurations/10-main.conf.orig  Tue Nov 20 13:35:37 2018
--- ./Configurations/10-main.conf       Thu Jan 17 22:24:56 2019
***************
*** 208,214 ****
           inherit_from     => [ "BASE_unix" ],
           template         => 1,
           lib_cppflags     => "-DFILIO_H",
!         ex_libs          => add("-lsocket -lnsl -ldl"),
           dso_scheme       => "dlfcn",
           thread_scheme    => "pthreads",
           shared_target    => "self",
--- 208,214 ----
           inherit_from     => [ "BASE_unix" ],
           template         => 1,
           lib_cppflags     => "-DFILIO_H",
!         ex_libs          => add("-lsocket -lnsl -ldl -lrt"),
           dso_scheme       => "dlfcn",
           thread_scheme    => "pthreads",
           shared_target    => "self",
***************
*** 328,334 ****
           inherit_from     => [ "solaris-common" ],
           CC               => "cc",
           CFLAGS           => add_before(picker(debug   => "-g",
!                                               release => "-xO5 
-xdepend")),
           cflags           => add_before("-xstrconst -Xa"),
           cppflags         => add(threads("-D_REENTRANT")),
           lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
--- 328,334 ----
           inherit_from     => [ "solaris-common" ],
           CC               => "cc",
           CFLAGS           => add_before(picker(debug   => "-g",
!                                               release => "-g -xdepend")),
           cflags           => add_before("-xstrconst -Xa"),
           cppflags         => add(threads("-D_REENTRANT")),
           lib_cppflags     => add("-DB_ENDIAN -DBN_DIV2W"),
***************
*** 349,355 ****
       },
       "solaris64-sparcv9-cc" => {
           inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
!         cflags           => add_before("-xarch=v9"),
           bn_ops           => "BN_LLONG RC4_CHAR",
           multilib         => "/64",
       },
--- 349,355 ----
       },
       "solaris64-sparcv9-cc" => {
           inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
!         cflags           => add_before("-m64 -xarch=sparc -g -Xc 
-errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff 
-xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc 
-ftrap=%none -xbuiltin=%none -xunroll=1"),
           bn_ops           => "BN_LLONG RC4_CHAR",
           multilib         => "/64",
       },
corv $

Now then nothing works on the old Solaris world without an up to date
perl or at least something not covered in moss and dust thus :

corv $ /usr/local/bin/perl -V | head -1
Summary of my perl5 (revision 5 version 26 subversion 1) configuration:
corv $

Recall that we are going to try strict C99 compliance mode here
therefore CC=/opt/developerstudio12.6/bin/c99 :

corv $ /usr/local/bin/perl ./Configure solaris64-sparcv9-cc 2>&1 | tee 
../openssl-1.1.1a_SunOS5.10_sparc64vii+.003.config.log
Configuring OpenSSL version 1.1.1a (0x1010101fL) for solaris64-sparcv9-cc
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************
corv $

If one tries to view or edit the Makefile then Oracle Solaris 'vi' blows
up because the line length explodes the buffers.  One must use 'vim' or
similar.  Yet another feature of an old old old operating system.  Even
on brand new shiney sparc hardware from Oracle.

Thankfully the Makefile says :

CROSS_COMPILE=
CC=$(CROSS_COMPILE)/opt/developerstudio12.6/bin/c99

CPPFLAGS=-I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS 
-D_LARGEFILE64_SOURCE -D_TS_ERRNO
CFLAGS=-m64 -xarch=sparc -g -Xc -errfmt=error -erroff=%none 
-errshort=full -xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=pic32
  -xregs=no%appl -xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1

PERL=/usr/local/bin/perl


##### Project flags ##################################################

# Variables starting with CNF_ are common variables for all product types

CNF_CPPFLAGS=-D_REENTRANT -DNDEBUG
CNF_CFLAGS=-m64 -xarch=sparc -g -Xc -errfmt=error -erroff=%none 
-errshort=full -xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=p
ic32 -xregs=no%appl -xlibmieee -mc -ftrap=%none -xbuiltin=%none 
-xunroll=1 -xstrconst -Xa
CNF_CXXFLAGS=
CNF_LDFLAGS=-mt
CNF_EX_LIBS=-lsocket -lnsl -ldl -lrt -lpthread

We should be okay here.


corv $ echo $PATH
/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/opt/developerstudio12.6/bin:/sbin:/bin:/usr/bin:/usr/sbin
corv $ /usr/xpg4/bin/date '+%Y%m%d%H%M%S'
20190117224215
corv $ /usr/bin/time -p /usr/local/bin/gmake
.
.
.
/opt/developerstudio12.6/bin/c99  -I. -Icrypto/include -Iinclude -KPIC 
-m64 -xarch=sparc -g -Xc -errfmt=error -erroff=%none -errshort=full 
-xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl 
-xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1 -xstrconst -Xa 
-m64 -xarch=sparc -g -Xc -errfmt=error -erroff=%none -errshort=full 
-xstrconst -xildoff -xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl 
-xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1 -DFILIO_H 
-DB_ENDIAN -DBN_DIV2W -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ 
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM 
-DSHA512_ASM -DMD5_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM 
-DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" 
-DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -D_REENTRANT -DNDEBUG 
-I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE 
-D_TS_ERRNO  -c -o crypto/objects/o_names.o crypto/objects/o_names.c
"crypto/objects/o_names.c", line 114: error: undefined symbol: strcasecmp
"crypto/objects/o_names.c", line 114: warning: improper pointer/integer 
combination: op "="
"crypto/objects/o_names.c", line 151: warning: implicit function 
declaration: strcasecmp
c99: acomp failed for crypto/objects/o_names.c
gmake[1]: *** [Makefile:1642: crypto/objects/o_names.o] Error 2
gmake[1]: Leaving directory 
'/usr/local/build/openssl-1.1.1a_SunOS5.10_sparc64vii+.003'
gmake: *** [Makefile:169: all] Error 2

real 513.85
user 408.84
sys 160.27
corv $

Sure enough we see :

    104      for (i = sk_NAME_FUNCS_num(name_funcs_stack); i < 
names_type_num; i++) {
    105          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);
    106          name_funcs = OPENSSL_zalloc(sizeof(*name_funcs));
    107          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
    108          if (name_funcs == NULL) {
    109              OBJerr(OBJ_F_OBJ_NAME_NEW_INDEX, ERR_R_MALLOC_FAILURE);
    110              ret = 0;
    111              goto out;
    112          }
    113          name_funcs->hash_func = openssl_lh_strcasehash;
    114          name_funcs->cmp_func = obj_strcasecmp;
    115          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);
    116
    117          push = sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
    118          CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE);
    119
    120          if (!push) {
    121              OBJerr(OBJ_F_OBJ_NAME_NEW_INDEX, ERR_R_MALLOC_FAILURE);
    122              OPENSSL_free(name_funcs);
    123              ret = 0;
    124              goto out;
    125          }
    126      }

Well what is "obj_strcasecmp" ?

     24  /*
     25   * We define this wrapper for two reasons. Firstly, later 
versions of
     26   * DEC C add linkage information to certain functions, which 
makes it
     27   * tricky to use them as values to regular function pointers.
     28   * Secondly, in the EDK2 build environment, the strcasecmp 
function is
     29   * actually an external function with the Microsoft ABI, so we 
can't
     30   * transparently assign function pointers to it.
     31   */
     32  #if defined(OPENSSL_SYS_VMS_DECC) || defined(OPENSSL_SYS_UEFI)
     33  static int obj_strcasecmp(const char *a, const char *b)
     34  {
     35      return strcasecmp(a, b);
     36  }
     37  #else
     38  #define obj_strcasecmp strcasecmp
     39  #endif
     40

More historical computing perhaps.  I know that I can not recall the
last time I had seen a DEC system running but the OPENSSL_SYS_UEFI looks
suspect to me. At the very least it is a more modern idea.  I just want
a trivial tweak here to test "normal" strcasecmp :

corv $ diff -c crypto/objects/o_names.c.orig crypto/objects/o_names.c
*** crypto/objects/o_names.c.orig       Tue Nov 20 13:35:38 2018
--- crypto/objects/o_names.c    Thu Jan 17 23:03:44 2019
***************
*** 10,16 ****
   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
!
   #include <openssl/err.h>
   #include <openssl/lhash.h>
   #include <openssl/objects.h>
--- 10,16 ----
   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
! #include <strings.h>
   #include <openssl/err.h>
   #include <openssl/lhash.h>
   #include <openssl/objects.h>
***************
*** 111,117 ****
               goto out;
           }
           name_funcs->hash_func = openssl_lh_strcasehash;
!         name_funcs->cmp_func = obj_strcasecmp;
           CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);

           push = sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
--- 111,117 ----
               goto out;
           }
           name_funcs->hash_func = openssl_lh_strcasehash;
!         name_funcs->cmp_func = strcasecmp;
           CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE);

           push = sk_NAME_FUNCS_push(name_funcs_stack, name_funcs);
corv $

Manually trying a very verbose compile of just that one file puts me 
back in a loop and I find this to be odd at the very least :

corv $
corv $ $CC $CFLAGS -I. -Icrypto/include -Iinclude -KPIC \
 > -DFILIO_H -DB_ENDIAN -DBN_DIV2W -DOPENSSL_PIC \
 > -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT \
 > -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM \
 > -DSHA512_ASM -DMD5_ASM -DAES_ASM -DGHASH_ASM \
 > -DECP_NISTZ256_ASM -DPOLY1305_ASM \
 > -DOPENSSLDIR="\"/usr/local/ssl\"" \
 > -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" \
 > -D_REENTRANT -DNDEBUG -I/usr/local/include \
 > -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE \
 > -D_TS_ERRNO \
 > -H -\# -c -o crypto/objects/o_names.o \
 > crypto/objects/o_names.c
### c99: Note: NLSPATH = 
/opt/developerstudio12.6/bin/../lib/locale/%L/LC_MESSAGES/%N.cat:/opt/developerstudio12.6/bin/../../lib/locale/%L/LC_MESSAGES/%N.cat
### c99: Note: TMPDIR = /var/tmp/dclarke
###     command line files and options (expanded):
### -m64 -xarch=sparc 
-xdebuginfo=line,param,variable,tagtype,codetag,decl -xglobalize=yes 
-xpatchpadding=fix -xkeep_unref=funcs,vars -Xc -errfmt=error 
-erroff=%none -errshort=full -xstrconst -xmemalign=8s -xnolibmil 
-xregs=no%appl -xlibmieee -mc -ftrap=%none -xbuiltin=%none -xunroll=1 
-I. -Icrypto/include -Iinclude -xcode=pic32 -DFILIO_H -DB_ENDIAN 
-DBN_DIV2W -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT 
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM 
-DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM 
-DOPENSSLDIR="/usr/local/ssl" -DENGINESDIR="/usr/local/lib/engines-1.1" 
-D_REENTRANT -DNDEBUG -I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS 
-D_LARGEFILE64_SOURCE -D_TS_ERRNO -H -# -c -ocrypto/objects/o_names.o 
crypto/objects/o_names.c
/opt/developerstudio12.6/lib/compilers/bin/acomp -DFILIO_H -DB_ENDIAN 
-DBN_DIV2W -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_BN_ASM_MONT 
-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM 
-DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM 
-DOPENSSLDIR="/usr/local/ssl" -DENGINESDIR="/usr/local/lib/engines-1.1" 
-D_REENTRANT -DNDEBUG -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE 
-D_TS_ERRNO -H -Qy -Xc -xc99=%all 
-features=no%mergestrings,extinl,no%typeof,no%extensions,conststrings,no%zla,no%iddollar,no%gcc_enums 
-i crypto/objects/o_names.c -D__SunOS_5_10 -D__SunOS_RELEASE=0x051000 
-D__SUNPRO_C=0x5150 -D__unix -D__SVR4__ -D__svr4__ -D__SVR4 -D__sun 
-D__sun__ -D__SunOS -D__sparcv9 -D__sparc_v9__ -D__sparc -D__sparc__ 
-D_LP64 -D__LP64__ -D__arch64__ -D__ORDER_LITTLE_ENDIAN__=1234 
-D__ORDER_BIG_ENDIAN__=4321 -D__BYTE_ORDER__=__ORDER_BIG_ENDIAN__ 
-D__BUILTIN_VA_ARG_INCR -D__C99FEATURES__ -D__PRAGMA_REDEFINE_EXTNAME 
-D__FLT_EVAL_METHOD__=0 -D__SUN_PREFETCH -I. -Icrypto/include -Iinclude 
-I/usr/local/include -I-xbuiltin 
-I/opt/developerstudio12.6/lib/compilers/include/cc -I/usr/xpg6/include 
-I/usr/xpg4/include -2K -errfmt=error -erroff=%none -errshort=full 
-errwarn=E_CANT_ACCESS_INCLUDE_DIR -xwarn_include_dir=permission 
-xbuiltin=%none -strconst -fsimple=0 -m64 -fparam_ir -fparam_ir 
-xglobalize=yes -xdebuginfo=line,param,variable,tagtype,codetag,decl 
-xkeep_unref=funcs,vars -xF=%none 
-xdbggen=dwarf+usedonly+incl+line+param+variable+tagtype+codetag+decl 
-xldscope=global -xivdep=loop -xanalyze=code -c99OS 
"-g/opt/developerstudio12.6/bin/c99 -m64 -xarch=sparc -g -Xc 
-errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff 
-xmemalign=8s -xnolibmil -xcode=pic32 -xregs=no%appl -xlibmieee -mc 
-ftrap=%none -xbuiltin=%none -xunroll=1 -I. -Icrypto/include -Iinclude 
-KPIC -DFILIO_H -DB_ENDIAN -DBN_DIV2W -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ 
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM 
-DSHA512_ASM -DMD5_ASM -DAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM 
-DPOLY1305_ASM -DOPENSSLDIR='"/usr/local/ssl"' 
-DENGINESDIR='"/usr/local/lib/engines-1.1"' -D_REENTRANT -DNDEBUG 
-I/usr/local/include -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE 
-D_TS_ERRNO -H -c " -destination_ir=iropt -r 
/var/tmp/dclarke/acomp.1547766424.13382.01.ir
/usr/include/stdio.h
         /usr/include/sys/feature_tests.h
                 /usr/include/sys/ccompile.h
                 /usr/include/sys/isa_defs.h
         /usr/include/iso/stdio_iso.h
                 /usr/include/sys/va_list.h
                 /usr/include/stdio_tag.h
                 /usr/include/stdio_impl.h
         /usr/include/iso/stdio_c99.h
/usr/include/stdlib.h
         /usr/include/iso/stdlib_iso.h
         /usr/include/iso/stdlib_c99.h
/usr/include/string.h
         /usr/include/iso/string_iso.h
/usr/include/strings.h
         /usr/include/sys/types.h
                 /usr/include/sys/machtypes.h
                 /usr/include/sys/int_types.h
                 /usr/include/sys/select.h
                         /usr/include/sys/time_impl.h
                         /usr/include/sys/time.h
                                 /usr/include/sys/types.h
                                 /usr/include/time.h
                                         /usr/include/iso/time_iso.h
                                 /usr/include/sys/select.h
include/openssl/err.h
         include/openssl/e_os2.h
                 include/openssl/opensslconf.h
                         include/openssl/opensslv.h
                 /usr/include/inttypes.h
                         /usr/include/sys/inttypes.h
                                 /usr/include/sys/int_limits.h
                                 /usr/include/sys/int_const.h
                                 /usr/include/sys/int_fmtio.h
                         /usr/include/sys/stdint.h
         include/openssl/ossl_typ.h
                 /usr/include/limits.h
                         /usr/include/iso/limits_iso.h
         include/openssl/bio.h
                 /usr/include/stdarg.h
                         /usr/include/iso/stdarg_iso.h
                                 /usr/include/sys/va_impl.h
                         /usr/include/iso/stdarg_c99.h
                 include/openssl/crypto.h
                         include/openssl/safestack.h
                                 include/openssl/stack.h
                         include/openssl/opensslconf.h
                         include/openssl/cryptoerr.h
                                 include/openssl/symhacks.h
                         /usr/include/pthread.h
                                 /usr/include/sched.h
                 include/openssl/bioerr.h
         include/openssl/lhash.h
         /usr/include/errno.h
                 /usr/include/sys/errno.h
include/openssl/objects.h
         include/openssl/obj_mac.h
         include/openssl/asn1.h
                 include/openssl/opensslconf.h
                 include/openssl/asn1err.h
                 include/openssl/bn.h
                         include/openssl/opensslconf.h
                         include/openssl/bnerr.h
         include/openssl/objectserr.h
include/internal/thread_once.h
crypto/include/internal/lhash.h
crypto/objects/obj_lcl.h
./e_os.h
         include/openssl/opensslconf.h
         include/internal/nelem.h
         /usr/include/unistd.h
                 /usr/include/sys/unistd.h
"crypto/objects/o_names.c", line 114: error: undefined symbol: strcasecmp
"crypto/objects/o_names.c", line 114: warning: improper pointer/integer 
combination: op "="
"crypto/objects/o_names.c", line 151: warning: implicit function 
declaration: strcasecmp
c99: acomp failed for crypto/objects/o_names.c
corv $

The beauty of that flag -H is simply to show every header file involved.
So would love to hear someones thoughts on why strcasecmp suddenly went
missing?

Dennis

ps: even looking through the pre-processed source I see only two lines
     with strcasecmp so I am guessing the real issue is the horrific
     monster typedef struct name_funcs_st NAME_FUNCS;


More information about the openssl-users mailing list