[Boost-bugs] [Boost C++ Libraries] #11604: Boost.Context Assembler Error A1010 with Intel Compiler 16.0 (win7 64bit)

Subject: [Boost-bugs] [Boost C++ Libraries] #11604: Boost.Context Assembler Error A1010 with Intel Compiler 16.0 (win7 64bit)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-08-31 18:41:46


#11604: Boost.Context Assembler Error A1010 with Intel Compiler 16.0 (win7 64bit)
-------------------------------------------------+-------------------------
 Reporter: Andre Netzeband <andre@…> | Owner: olli
     Type: Support Requests | Status: new
Milestone: To Be Determined | Component: context
  Version: Boost 1.59.0 | Severity: Problem
 Keywords: boost_context_export intel |
  assembler a1010 |
-------------------------------------------------+-------------------------
 Hi

 I'm currently trying to compiler the boost library for Intel Compiler 16.0
 together with msvc 2015. I compile the 64 bit libraries.

 Unfortunately I get some Assembler errors when compiling the boost.context
 module.
 On the command line the following command is performed:
 {{{
 ml64 -nologo -c -Zp4 -Cp -Cx -DBOOST_ALL_NO_LIB=1
 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_CONTEXT_DYN_LINK=1
 -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DBOOST_SYSTEM_DYN_LINK=1
 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1
 -DBOOST_THREAD_USE_DLL=1 -DNDEBUG -DBOOST_ALL_NO_LIB=1
 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_CONTEXT_DYN_LINK=1
 -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DBOOST_SYSTEM_DYN_LINK=1
 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1
 -DBOOST_THREAD_USE_DLL=1 -DNDEBUG /W3 -Fo "build-
 default\intel64\boost\bin.v2\libs\context\build\intel-
 vc14-win-16.0\release\address-model-64\threading-
 multi\asm\jump_x86_64_ms_pe_masm.obj"
 "libs\context\src\asm\jump_x86_64_ms_pe_masm.asm"
 }}}

 I get the following error message (it seems that some parts of the error
 message are mixed, but this is the original tool output):
 {{{
  Assembling: libs\context\src\asm\jump_x86_64_ms_pe_masm.asm
 libs\context\src\asm\jump_x86_64_ms_pe_masm.asm(80)ge for specified size
 libs\context\src\asm\jump_x86_64_ms_pe_masm.asm(80) : error
 A2libs\context\src\asm\jump_x86_64_ms_pe_masm.asm(81)ge for specified size
 libs\context\src\asm\jump_x86_64_ms_pe_masm.asm(81) : warning
 A4020:directive
 ignolibs\context\src\asm\jump_x86_64_ms_pe_masm.asm(215)rge for specified
 size
 libs\context\src\asm\jump_x86_64_ms_pe_masm.asm(215) : fatal error
 A1010:unmatche_x8?
 }}}

 When I compile only with msvc 2015 toolset, everything is fine. Thus I
 printed out the corresponding command for msvc 2015 only and I see one
 difference:
 For the Visual C++ compiler the bjam is giving the definition
 BOOST_CONTEXT_EXPORT=EXPORT to the assembler. When I add this definition
 also to the intel compiler command, it compiles without errors:

 {{{
 ml64 -nologo -c -Zp4 -Cp -Cx -DBOOST_CONTEXT_EXPORT=EXPORT
 -DBOOST_ALL_NO_LIB=1 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_CONTEXT_DYN_LINK=1
 -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DBOOST_SYSTEM_DYN_LINK=1
 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1
 -DBOOST_THREAD_USE_DLL=1 -DNDEBUG -DBOOST_ALL_NO_LIB=1
 -DBOOST_CHRONO_DYN_LINK=1 -DBOOST_CONTEXT_DYN_LINK=1
 -DBOOST_CONTEXT_SOURCE -DBOOST_DISABLE_ASSERTS -DBOOST_SYSTEM_DYN_LINK=1
 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_THREAD_BUILD_DLL=1
 -DBOOST_THREAD_USE_DLL=1 -DNDEBUG /W3 -Fo "build-default\intel
 64\boost\bin.v2\libs\context\build\intel-vc14-win-16.0\release\address-
 model-64\threading-multi\asm\jump_x86_64_ms_pe_masm.obj"
 "libs\context\src\asm\jump_x86_64_ms_pe_masm.asm"
  Assembling: libs\context\src\asm\jump_x86_64_ms_pe_masm.asm
 }}}

 However I cannot find any description what the definition
 BOOST_CONTEXT_EXPORT=EXPORT means.
 Anyway I was able to fix the issue by adding the lines
 {{{
       <toolset>intel,<link>shared:<define>BOOST_CONTEXT_EXPORT=EXPORT
       <toolset>intel,<link>static:<define>BOOST_CONTEXT_EXPORT=
 }}}
 to the file boost\libs\context\build\Jamfile.v2 (after line 32 for msvc)

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/11604>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:18 UTC