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>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>
>>    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