Thank you Michael Wojcik

On 19-Aug-15 7:25 PM, Michael Wojcik wrote:
This is not an OpenSSL issue; it's an autoconf one.

 From your installation log:

-----
"gcc -o conftest.exe -IC:/Ruby21/include/ruby-2.1.0/i386-mingw32 
-IC:/Ruby21/include/ruby-2.1.0/ruby/backward -IC:/Ruby21/include/ruby-2.1.0 -I. 
-DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D__MINGW_USE_VC2005_COMPAT 
-D_FILE_OFFSET_BITS=64   -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra 
-Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers 
-Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement 
-Wimplicit-function-declaration conftest.c  -L. -LC:/Ruby21/lib -L.      -lmsvcrt-ruby210 
-lcrypto  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi"
conftest.c: In function 't':
conftest.c:16:57: error: 'BIO_read' undeclared (first use in this function)
conftest.c:16:57: note: each undeclared identifier is reported only once for 
each function it appears in
conftest.c:16:32: warning: variable 'p' set but not used 
[-Wunused-but-set-variable]
checked program was:
/* begin */
  1: #include "ruby.h"
  2:
  3: #include <winsock2.h>
  4: #include <windows.h>
  5:
  6: /*top*/
  7: extern int t(void);
  8: int main(int argc, char **argv)
  9: {
10:   if (argc > 1000000) {
11:     printf("%p", &t);
12:   }
13:
14:   return 0;
15: }
16: int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return 0; 
}
/* end */
-----

Note:
- The conftest.c generated by autoconf does not include any OpenSSL headers
- gcc correctly complains that BIO_read has not been declared

It's not a linker failure - it's a compiler diagnostic. autoconf isn't 
successfully checking whether the symbol can be resolved by the library because 
the test program it's generating is rubbish.

Autoconf should be generating an extern declaration for BIO_read in conftest.c; 
apparently whoever wrote that bit of autoconf doesn't know C. (No surprise 
there.) I suspect it normally works because gcc is configured with different 
default settings and treats the lack of a declaration as non-fatal. I don't 
know why it's different in your case, and I have no idea how to fix it, as I've 
never had to poke into the implementation of autoconf and don't know what's 
making your gcc behave differently.


_______________________________________________
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users

Reply via email to