}
#endif
+#else
+unsigned long *OPENSSL_ia32cap_loc(void) { return NULL; }
#endif
+int OPENSSL_NONPIC_relocated = 0;
#if !defined(OPENSSL_CPUID_SETUP)
void OPENSSL_cpuid_setup(void) {}
#endif
{
case DLL_PROCESS_ATTACH:
OPENSSL_cpuid_setup();
+#if defined(_WIN32_WINNT)
+ {
+ IMAGE_DOS_HEADER *dos_header = (IMAGE_DOS_HEADER *)hinstDLL;
+ IMAGE_NT_HEADERS *nt_headers;
+
+ if (dos_header->e_magic==IMAGE_DOS_SIGNATURE)
+ {
+ nt_headers = (IMAGE_NT_HEADERS *)((char *)dos_header
+ + dos_header->e_lfanew);
+ if (nt_headers->Signature==IMAGE_NT_SIGNATURE &&
+ hinstDLL!=(HINSTANCE)(nt_headers->OptionalHeader.ImageBase))
+ OPENSSL_NONPIC_relocated=1;
+ }
+ }
+#endif
break;
case DLL_THREAD_ATTACH:
break;
}
#endif
-#if defined(_WIN32)
+#if defined(_WIN32) && !defined(__CYGWIN__)
#include <tchar.h>
#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
-static int IsService(void)
+int OPENSSL_isservice(void)
{ HWINSTA h;
DWORD len;
WCHAR *name;
void OPENSSL_showfatal (const char *fmta,...)
{ va_list ap;
- TCHAR buf[256]
+ TCHAR buf[256];
const TCHAR *fmt;
HANDLE h;
#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
/* this -------------v--- guards NT-specific calls */
- if (GetVersion() < 0x80000000 && IsService())
+ if (GetVersion() < 0x80000000 && OPENSSL_isservice())
{ HANDLE h = RegisterEventSource(0,_T("OPENSSL"));
const TCHAR *pmsg=buf;
ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0);
vfprintf (stderr,fmta,ap);
va_end (ap);
}
+int OPENSSL_isservice (void) { return 0; }
#endif
void OpenSSLDie(const char *file,int line,const char *assertion)