Dear colleagues,
 
the linker warning LNK4078 (static builds only) SHOULD NOT be ignored on Win64.
The problem is known and is connected to the automatic invocation of
OPENSSL_cpuid_setup by placing "dq OPENSSL_cpuid_setup" in the special COFF
section CRT$XCU.
 
The problem is that you cannot specify the right COFF section flags for CRT$XCU
(using nasm), which SHOULD be 0x40000040 (meaning IMAGE_SCN_MEM_READ and
IMAGE_SCN_CNT_INITIALIZED_DATA).
 
I am patching the file x86_64cpuid.obj after nasm has created it to circumvent
the problem. If you fail to specify the right section flags here, your entire
.rdata section (all CRT$<any>'s are merged into .rdata) may be messed up - under
some circumstances, a CPU exception is raised (DEBUG builds) because some parts
of the section are filled with the sentinel byte 0xCC!
 
Cheers, Gero.
 
 

Reply via email to