I disagree; according to http://blogs.msdn.com/b/vcblog/archive/2006/10/20/crt-initialization.aspx .CRT$XCU is for setting up static initializers. Also, the text of the source file from which the assembler file is generated gives a hint that it is a call:
.extern         OPENSSL_cpuid_setup
.section        .init
       call    OPENSSL_cpuid_setup

And maybe the parts of openssl that you are using work perfectly, while there might be other parts relying on this initialization. (Unfortunately I can't run "make test" on 64-bit as I don't have any such box with Visual Studio).

/Per

Jack Zhang wrote:
According to my understanding, that section is just a declaration of an external function. The section is needed to be there only if the function is called in the x86_64cpuid.asm. So, I don't think it will affect anything. In fact, my x64 version build runs perfectly. (I am using openssl 1.0.0 and then 1.0.0a)



On Thu, Sep 23, 2010 at 7:12 AM, per fry kenvall <per...@got.wmdata.se <mailto:per...@got.wmdata.se>> wrote:

    Hi,

    Thanks for your suggestion! But as far as I see, the assembler
    code in x86_64cpuid.asm _is_ the reference to OPENSSL_cpuid_setup!
    The runtime will call the functions given in the .CRT$XCU section
    before calling the main() entry. And it seems to me that the
    OPENSSL_cpuid_setup function in crypto/cryptlib.c does have useful
    code on Windows platforms, and so should be called, shouldn't it?
    It initializes a static variable with some processor specific
    info, whose value may be taken via the OPENSSL_ia32cap_loc() function.

    I tried printf("%lu", *OPENSSL_ia32cap_loc()), which prints out 0
    using the x64 code, while printing 2951479295 using 32-bit code,
    indicating that OPENSSL_cpuid_setup has only been executed with
    the 32-bit code. What's the impact of this? Isn't it a bug?

    Cheers,
    Per

    Jack Zhang wrote:

        I had got the same problem. I just simply deleted that section
         EXTERN    OPENSSL_cpuid_setup
         section    .CRT$XCU
             ALIGN    8
             DQ    OPENSSL_cpuid_setup

         section    .text code align=64

        from the asm file because the extern OpenSSL_cpuid_setup is
        never referenced.

        Good luck

        On Tue, Sep 21, 2010 at 9:57 AM, perfry wrote:

           Hi,

           I've built 1.0.0a on Windows with VS2005, using nt.mak to get
           static libraries.
           With x64 I get warnings when linking applications, both
           openssl.exe and test programs like sha1test.exe. A snippet of
           output from nmake -f ms\nt.mak:
                 link /nologo /subsystem:console /opt:ref /debug
           /out:out32\openssl.exe
        @C:\DOCUME~1\FRYKEN~1\LOCALS~1\Temp\nm3B3.tmp
           LIBCMT.lib(crt0init.obj) : warning LNK4254: section '.CRT'
           (60000020) merged into '.rdata' (40000040) with different
        attributes


           And when linking our own application on x64/Release platform:
             libeay32.lib(x86_64cpuid.obj) : warning LNK4078: multiple
        '.CRT'
           sections found with different attributes (60500020)
             libeay32.lib(x86_64cpuid.obj) : warning LNK4210: .CRT section
           exists; there may be unhandled static initializers or
        terminators


           The linker command can be deduced from the following:
             Creating temporary file
           "c:\utv\ccbas4\ccbase\x64\Release\RSP0000132444832.rsp"
        with contents
             [
             /OUT:"../deploy/execs/x64/Release/etnode.exe" /INCREMENTAL:NO
           /MANIFEST
           /MANIFESTFILE:"x64/Release\etnode.exe.intermediate.manifest"
           /DELAYLOAD:"oci.dll" /DEBUG
           /PDB:"../deploy/execs/x64/Release/etnode.pdb"
        /SUBSYSTEM:CONSOLE
           /LTCG psapi.lib odbc32.lib odbccp32.lib WS2_32.LIB ADVAPI32.LIB
           GDI32.LIB USER32.LIB dbghelp.lib
           ../snibu/logging-log4cxx/msvc/lib/x64/Release/log4cxxs.lib
           ../snibu/openssl-1.0.0a/x64/Release/lib/ssleay32.lib
           ../snibu/openssl-1.0.0a/x64/Release/lib/libeay32.lib
           ../snibu/oracle/x64/instantclient_10_2/sdk/lib/msvc/oci.lib
           ../snibu/zlib/msvc/lib/x64/Release/zlibstat.lib kernel32.lib
           user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
           shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib
           odbccp32.lib DelayImp.lib

             ".\x64\Release\CCcServApp.obj"
             ...
             ".\x64\Release\Bas4Bridge.obj"
             ]
             Creating command line "link.exe
           @c:\utv\ccbas4\ccbase\x64\Release\RSP0000132444832.rsp /NOLOGO
           /ERRORREPORT:PROMPT"


           I've done the following to build openssl:
             cd /d C:\utv\snibu\openssl\x64\release\openssl-1.0.0a
             call "C:\Program Files\Microsoft Visual Studio
           8\VC\vcvarsall.bat" x86_amd64
             perl Configure VC-WIN64A
        --prefix=c:\appl\openssl-1.0.0a\x64\release
             ms\do_win64a.bat
             nmake -f ms\nt.mak
             nmake -f ms\nt.mak install

           And the file x86_64cpuid.asm mentioned in the warnings
        starts with
           the following:
             default    rel
             EXTERN    OPENSSL_cpuid_setup
             section    .CRT$XCU
                 ALIGN    8
                 DQ    OPENSSL_cpuid_setup

             section    .text code align=64
           ...


           Could somebody help me solve this warning, it seems to me that
           OPENSSL_cpuid_setup will not be executed.


           Best regards,
           Per Frykenvall
______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org <mailto:openssl-users@openssl.org>
        <mailto:openssl-users@openssl.org
        <mailto:openssl-users@openssl.org>>
Automated List Manager majord...@openssl.org <mailto:majord...@openssl.org>
        <mailto:majord...@openssl.org <mailto:majord...@openssl.org>>



    ______________________________________________________________________
    OpenSSL Project                                 http://www.openssl.org
User Support Mailing List openssl-users@openssl.org <mailto:openssl-users@openssl.org> Automated List Manager majord...@openssl.org <mailto:majord...@openssl.org>



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to