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