Opened 7 years ago

Closed 7 years ago

#11604 closed Support Requests (fixed)

Boost.Context Assembler Error A1010 with Intel Compiler 16.0 (win7 64bit)

Reported by: Andre Netzeband <andre@…> Owned by: olli
Milestone: To Be Determined Component: context
Version: Boost 1.59.0 Severity: Problem
Keywords: boost_context_export intel assembler a1010 Cc:

Description

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)

Change History (1)

comment:1 by olli, 7 years ago

Resolution: fixed
Status: newclosed

thx, fixed in branch develop + master

Note: See TracTickets for help on using tickets.