kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #11957
Boost building as an option
I can fully understand that it is much easier for many users not to deal
with building boost library, but on the other hand - there are many
others who do not need a separate copy of boost just for KiCad.
As far as I know, there are 3 main reasons to keep boost in KiCad
(https://lists.launchpad.net/kicad-developers/msg11692.html):
Ad 1) I guess the patch that fixes the geometry problem is
patches/boost_minkowski.patch. But inside there are only two lines
commented out and in fact they seem to be variables that are not even
used anywhere. How does that influence the function output? Or is not it
already solved by switching optimization options (already done in the
main CMake script)?
Ad 2&3) For those people included boost can make life simpler.
So why not give a choice to build another copy or use the library
available in system? I came to the conclusion after having 8 different
branches, every of them containing compiled boost library. And it seems
that KiCad builds and works just as well using the boost library
included in my system.
The attached patch:
- Adds a CMake option KICAD_BUILD_BOOST that enables building boost. If
you think that boost should be downloaded and built by default (I guess
that eg. KiCad-WinBuilder could be influenced by that), I can change it
to KICAD_SKIP_BOOST and satisfies me as well.
Besides that, boost can downloaded and built when an appropriate version
is not available in system.
- Removes all context related files (common/system/*), as they are
anyway contained in boost and no longer necessary.
- Removes the last traces of KICAD_STABLE_VERSION and
KICAD_TESTING_VERSION from bundled documentation.
I look forward to your opinions. I tested it with boost 1.54.0-3 (that
is the reason why I put such version as required in CMakeLists.txt) and
gcc 4.8.2.
Regards,
Orson
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: maciej.suminski@xxxxxxx-20140106163410-3omsmvv0e7n41oer
# target_branch: file:///home/orson/workspace/kicad-master/
# testament_sha1: 2ad5bf8208f162c07435c3229bad8223f8b58511
# timestamp: 2014-01-06 17:47:54 +0100
# base_revision_id: marco.serantoni@xxxxxxxxx-20140104134022-\
# 20oy46tatl3v6vss
#
# Begin patch
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2013-12-31 10:42:25 +0000
+++ CMakeLists.txt 2014-01-06 16:25:26 +0000
@@ -44,6 +44,11 @@
"Builds Kicad and all libraries static (except wx-widgets)"
)
+option( KICAD_BUILD_BOOST
+ "Downloads and builds necessary boost components (you should enable the switch if your system "
+ "does not contain boost libraries)"
+ )
+
# when option KICAD_SCRIPTING OR KICAD_SCRIPTING_MODULES is enabled:
# PYTHON_EXECUTABLE can be defined when invoking cmake
# ( use -DPYTHON_EXECUTABLE=<python path>/python.exe or python2 )
@@ -317,7 +322,17 @@
# Download boost and possibly build parts of it
#################################################
-include( download_boost )
+if( KICAD_BUILD_BOOST )
+ include( download_boost )
+else()
+ find_package( Boost 1.54.0 REQUIRED COMPONENTS context date_time filesystem iostreams locale
+ program_options regex system thread )
+
+ if( NOT Boost_FOUND )
+ message( FATAL_ERROR "Boost 1.54+ libraries are required. You have either to install "
+ "appropriate packages or build KiCad with KICAD_BUILD_BOOST switch enabled." )
+ endif()
+endif()
##########################
# Find wxWidgets library #
=== modified file 'Documentation/compiling/COMPILING.txt'
--- Documentation/compiling/COMPILING.txt 2013-06-05 12:03:16 +0000
+++ Documentation/compiling/COMPILING.txt 2014-01-06 16:34:10 +0000
@@ -134,7 +134,7 @@
-DCMAKE_INSTALL_PREFIX=<finallInstallDir>
If windows, run the following command:
- cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DKICAD_TESTING_VERSION=ON -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
+ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
If linux, run instead the following command:
cmake -DCMAKE_BUILD_TYPE=Release ../../
@@ -167,7 +167,7 @@
where they were built.
If windows, run the following command:
- cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DKICAD_TESTING_VERSION=ON -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
+ cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug -DwxWidgets_ROOT_DIR=<wxInstallDir> ../../
where <wxInstallDir> is <wxWidgets path>/Release
If linux, run instead the following command:
=== modified file 'Documentation/compiling/build-config.txt'
--- Documentation/compiling/build-config.txt 2013-11-07 14:26:32 +0000
+++ Documentation/compiling/build-config.txt 2014-01-06 16:34:10 +0000
@@ -88,15 +88,10 @@
If for any reason you add or remove a build option to the KiCad CMake files,
please update the list below.
-KICAD_STABLE_VERSION (ON/OFF)
------------------------------
-This option enables or disables the stable version string to be created and
-used when building KiCad. It is mutually exclusive with KICAD_TESTING_VERSION.
-
-KICAD_TESTING_VERSION (ON/OFF)
-------------------------------
-This option enables or disables the testing version string to be created and
-used when building KiCad. It is mutually exclusive with KICAD_STABLE_VERSION.
+KICAD_BUILD_BOOST (ON/OFF)
+--------------------------
+Enables building boost library. The option is useful in systems that does not
+contain appropriate boost libraries.
USE_WX_GRAPHICS_CONTEXT (ON/OFF)
--------------------------------
=== modified file 'Documentation/compiling/build-msw.txt'
--- Documentation/compiling/build-msw.txt 2013-06-05 12:03:16 +0000
+++ Documentation/compiling/build-msw.txt 2014-01-06 16:34:10 +0000
@@ -149,8 +149,7 @@
To create a release build of KiCad, run the following command:
#cd build
#cmake -G "MSYS Makefiles" \ # Back slashes are not required
- -DCMAKE_BUILD_TYPE=Release \ # and are for formatting only.
- -DKICAD_TESTING_VERSION=ON ../../
+ -DCMAKE_BUILD_TYPE=Release ../../ \ # and are for formatting only.
If the configuration fails, you have failed to install the required software
on you system. The error message should give you a good indication of what is
@@ -187,8 +186,7 @@
#cd <kicadSource>/build/debug
#cmake -G "MSYS Makefiles" \
- -DCMAKE_BUILD_TYPE=Debug \
- -DKICAD_TESTING_VERSION=ON ../../
+ -DCMAKE_BUILD_TYPE=Debug ../../
#make
Generally speaking you do not install debug binaries. They can be debugged in
@@ -209,8 +207,7 @@
#cmake -G "MSYS Makefiles" \
-DCMAKE_BUILD_TYPE=Release \
-DKICAD_PYTHON_SCRIPTING=ON \
- -DKICAD_PYTHON_MODULES=ON \
- -DKICAD_TESTING_VERSION=ON ../../
+ -DKICAD_PYTHON_MODULES=ON ../../
You only need to include the KICAD_PYTHON_MODULES option if you want to
install the python modules that ship with KiCad. Also note that the wxPython
=== modified file 'Documentation/compiling/mac-osx.txt'
--- Documentation/compiling/mac-osx.txt 2013-06-05 12:03:16 +0000
+++ Documentation/compiling/mac-osx.txt 2014-01-06 16:34:10 +0000
@@ -115,7 +115,7 @@
It is also possible to give all the options on the commandline and not to edit the CMakeCache.txt. This is a oneliner for Leopard and up:
-cmake ~/Repositories/testing -DKICAD_TESTING_VERSION=ON -DCMAKE_OSX_ARCHITECTURES="i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" -DCMAKE_CXX_FLAGS="-D__ASSERTMACROS__" -DCMAKE_OSX_SYSROOT="/Developer/SDKs/MacOSX10.6.sdk"
+cmake ~/Repositories/testing -DCMAKE_OSX_ARCHITECTURES="i386 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6" -DCMAKE_CXX_FLAGS="-D__ASSERTMACROS__" -DCMAKE_OSX_SYSROOT="/Developer/SDKs/MacOSX10.6.sdk"
Optional compiler cache
~~~~~~~~~~~~~~~~~~~~~~~
=== removed directory 'common/system'
=== removed file 'common/system/fcontext.s'
--- common/system/fcontext.s 2013-12-20 09:15:00 +0000
+++ common/system/fcontext.s 1970-01-01 00:00:00 +0000
@@ -1,44 +0,0 @@
-/*
- Boost::Context assembly wrapper - done to avoid compiling the whole boost binary library
- which may be unpleasant, in particular under Windows (we don't support VC++, while boost::context
- does not support mingw */
-
-#ifdef __APPLE__
-
- #if __i386__
- #include "jump_i386_sysv_macho_gas.S"
- #include "make_i386_sysv_macho_gas.S"
-
- #elif __x86_64__
- #include "jump_x86_64_sysv_macho_gas.S"
- #include "make_x86_64_sysv_macho_gas.S"
-
- #else
- #error "Missing make_fcontext & jump_fcontext routines for this architecture"
- #endif
-
-#else
-
- #if __i386__
-
- #ifdef __WIN32__
- #include "jump_i386_pe_gas.S"
- #include "make_i386_pe_gas.S"
- #else
- #include "jump_i386_sysv_elf_gas.S"
- #include "make_i386_sysv_elf_gas.S"
- #endif
-
- #elif __x86_64__
- #include "jump_x86_64_sysv_elf_gas.S"
- #include "make_x86_64_sysv_elf_gas.S"
-
- #elif __arm__
- #include "jump_arm_aapcs_elf_gas.S"
- #include "make_arm_aapcs_elf_gas.S"
-
- #else
- #error "Missing make_fcontext & jump_fcontext routines for this architecture"
- #endif
-
-#endif
=== removed file 'common/system/jump_arm_aapcs_elf_gas.S'
--- common/system/jump_arm_aapcs_elf_gas.S 2013-11-27 08:48:31 +0000
+++ common/system/jump_arm_aapcs_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,76 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | *
- * ------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| 0x20| 0x24| *
- * ------------------------------------------------------------- *
- * | v1 | v2 | v3 | v4 | v5 | v6 | v7 | v8 | sp | lr | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 10 | | *
- * ------------------------------------------------------------- *
- * | 0x28| | *
- * ------------------------------------------------------------- *
- * | pc | | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 11 | 12 | | *
- * ------------------------------------------------------------- *
- * | 0x2c| 0x30| | *
- * ------------------------------------------------------------- *
- * | sp | size| | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | *
- * ------------------------------------------------------------- *
- * | 0x34| 0x38|0x3c| 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58 | *
- * ------------------------------------------------------------- *
- * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | s24 | s25 | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 23 | 24 | 25 | 26 | 27 | 28 | | *
- * ------------------------------------------------------------- *
- * | 0x5c| 0x60| 0x64| 0x68| 0x6c| 0x70| | *
- * ------------------------------------------------------------- *
- * | s26 | s27 | s28 | s29 | s30 | s31 | | *
- * ------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl jump_fcontext
-.align 2
-.type jump_fcontext,%function
-jump_fcontext:
- stmia a1, {v1-v8,sp-lr} @ save V1-V8,SP-LR
- str lr, [a1,#40] @ save LR as PC
-
-#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
- cmp a4, #0 @ test if fpu env should be preserved
- beq 1f
-
- mov a4, a1
- add a4, #52
- vstmia a4, {d8-d15} @ save S16-S31
-
- mov a4, a2
- add a4, #52
- vldmia a4, {d8-d15} @ restore S16-S31
-1:
-#endif
-
- mov a1, a3 @ use third arg as return value after jump
- @ and as first arg in context function
- ldmia a2, {v1-v8,sp-pc} @ restore v1-V8,SP-PC
-.size jump_fcontext,.-jump_fcontext
-
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
=== removed file 'common/system/jump_i386_pe_gas.S'
--- common/system/jump_i386_pe_gas.S 2013-08-02 17:21:22 +0000
+++ common/system/jump_i386_pe_gas.S 1970-01-01 00:00:00 +0000
@@ -1,56 +0,0 @@
-/* Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-.global _jump_fcontext
-.text
-.align 2
-
-_jump_fcontext:
- mov 0x4(%esp),%ecx
- mov %edi,(%ecx)
- mov %esi,0x4(%ecx)
- mov %ebx,0x8(%ecx)
- mov %ebp,0xc(%ecx)
- mov %fs:0x18,%edx
- mov (%edx),%eax
- mov %eax,0x24(%ecx)
- mov 0x4(%edx),%eax
- mov %eax,0x18(%ecx)
- mov 0x8(%edx),%eax
- mov %eax,0x20(%ecx)
- mov 0x10(%edx),%eax
- mov %eax,0x28(%ecx)
- lea 0x4(%esp),%eax
- mov %eax,0x10(%ecx)
- mov (%esp),%eax
- mov %eax,0x14(%ecx)
- mov 0x8(%esp),%edx
- mov (%edx),%edi
- mov 0x4(%edx),%esi
- mov 0x8(%edx),%ebx
- mov 0xc(%edx),%ebp
- mov 0x10(%esp),%eax
- test %eax,%eax
- je _jump_fcontext+0x5f
- stmxcsr 0x2c(%ecx)
- fnstcw 0x30(%ecx)
- ldmxcsr 0x2c(%edx)
- fldcw 0x30(%edx)
- mov %edx,%ecx
- mov %fs:0x18,%edx
- mov 0x24(%ecx),%eax
- mov %eax,(%edx)
- mov 0x18(%ecx),%eax
- mov %eax,0x4(%edx)
- mov 0x20(%ecx),%eax
- mov %eax,0x8(%edx)
- mov 0x28(%ecx),%eax
- mov %eax,0x10(%edx)
- mov 0xc(%esp),%eax
- mov 0x10(%ecx),%esp
- mov %eax,0x4(%esp)
- mov 0x14(%ecx),%ecx
- jmp *%ecx
=== removed file 'common/system/jump_i386_sysv_elf_gas.S'
--- common/system/jump_i386_sysv_elf_gas.S 2013-08-02 14:46:53 +0000
+++ common/system/jump_i386_sysv_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,72 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/********************************************************************
- * *
- * -------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | *
- * -------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | *
- * -------------------------------------------------------------- *
- * | EDI | ESI | EBX | EBP | ESP | EIP | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 6 | 7 | | *
- * -------------------------------------------------------------- *
- * | 0x18 | 0x1c | | *
- * -------------------------------------------------------------- *
- * | sp | size | | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 8 | 9 | | *
- * -------------------------------------------------------------- *
- * | 0x20 | 0x24 | | *
- * -------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * -------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl jump_fcontext
-.align 2
-.type jump_fcontext,@function
-jump_fcontext:
- movl 0x4(%esp), %ecx /* load address of the first fcontext_t arg */
- movl %edi, (%ecx) /* save EDI */
- movl %esi, 0x4(%ecx) /* save ESI */
- movl %ebx, 0x8(%ecx) /* save EBX */
- movl %ebp, 0xc(%ecx) /* save EBP */
-
- leal 0x4(%esp), %eax /* exclude the return address */
- movl %eax, 0x10(%ecx) /* save as stack pointer */
- movl (%esp), %eax /* load return address */
- movl %eax, 0x14(%ecx) /* save return address */
-
- movl 0x8(%esp), %edx /* load address of the second fcontext_t arg */
- movl (%edx), %edi /* restore EDI */
- movl 0x4(%edx), %esi /* restore ESI */
- movl 0x8(%edx), %ebx /* restore EBX */
- movl 0xc(%edx), %ebp /* restore EBP */
-
- movl 0x10(%esp), %eax /* check if fpu enve preserving was requested */
- test %eax, %eax
- je 1f
-
- stmxcsr 0x20(%ecx) /* save MMX control and status word */
- fnstcw 0x24(%ecx) /* save x87 control word */
- ldmxcsr 0x20(%edx) /* restore MMX control and status word */
- fldcw 0x24(%edx) /* restore x87 control word */
-1:
- movl 0xc(%esp), %eax /* use third arg as return value after jump */
-
- movl 0x10(%edx), %esp /* restore ESP */
- movl %eax, 0x4(%esp) /* use third arg as first arg in context function */
- movl 0x14(%edx), %edx /* fetch the address to return to */
-
- jmp *%edx /* indirect jump to context */
-.size jump_fcontext,.-jump_fcontext
=== removed file 'common/system/jump_i386_sysv_macho_gas.S'
--- common/system/jump_i386_sysv_macho_gas.S 2013-09-23 15:02:25 +0000
+++ common/system/jump_i386_sysv_macho_gas.S 1970-01-01 00:00:00 +0000
@@ -1,70 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/********************************************************************
- * *
- * -------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | *
- * -------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | *
- * -------------------------------------------------------------- *
- * | EDI | ESI | EBX | EBP | ESP | EIP | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 6 | 7 | | *
- * -------------------------------------------------------------- *
- * | 0x18 | 0x1c | | *
- * -------------------------------------------------------------- *
- * | sp | size | | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 8 | 9 | | *
- * -------------------------------------------------------------- *
- * | 0x20 | 0x24 | | *
- * -------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * -------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl _jump_fcontext
-.align 2
-_jump_fcontext:
- movl 0x4(%esp), %ecx /* load address of the first fcontext_t arg */
- movl %edi, (%ecx) /* save EDI */
- movl %esi, 0x4(%ecx) /* save ESI */
- movl %ebx, 0x8(%ecx) /* save EBX */
- movl %ebp, 0xc(%ecx) /* save EBP */
-
- leal 0x4(%esp), %eax /* exclude the return address */
- movl %eax, 0x10(%ecx) /* save as stack pointer */
- movl (%esp), %eax /* load return address */
- movl %eax, 0x14(%ecx) /* save return address */
-
- movl 0x8(%esp), %edx /* load address of the second fcontext_t arg */
- movl (%edx), %edi /* restore EDI */
- movl 0x4(%edx), %esi /* restore ESI */
- movl 0x8(%edx), %ebx /* restore EBX */
- movl 0xc(%edx), %ebp /* restore EBP */
-
- movl 0x10(%esp), %eax /* check if fpu enve preserving was requested */
- test %eax, %eax
- je 1f
-
- stmxcsr 0x20(%ecx) /* save MMX control and status word */
- fnstcw 0x24(%ecx) /* save x87 control word */
- ldmxcsr 0x20(%edx) /* restore MMX control and status word */
- fldcw 0x24(%edx) /* restore x87 control word */
-1:
- movl 0xc(%esp), %eax /* use third arg as return value after jump */
-
- movl 0x10(%edx), %esp /* restore ESP */
- movl %eax, 0x4(%esp) /* use third arg as first arg in context function */
- movl 0x14(%edx), %edx /* fetch the address to return to */
-
- jmp *%edx /* indirect jump to context */
=== removed file 'common/system/jump_x86_64_sysv_elf_gas.S'
--- common/system/jump_x86_64_sysv_elf_gas.S 2013-09-16 07:51:24 +0000
+++ common/system/jump_x86_64_sysv_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,82 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/****************************************************************************************
- * *
- * ---------------------------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | *
- * ---------------------------------------------------------------------------------- *
- * | RBX | R12 | R13 | R14 | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | *
- * ---------------------------------------------------------------------------------- *
- * | R15 | RBP | RSP | RIP | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 16 | 17 | 18 | 19 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x40 | 0x44 | 0x48 | 0x4c | | *
- * ---------------------------------------------------------------------------------- *
- * | sp | size | | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 20 | 21 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x50 | 0x54 | | *
- * ---------------------------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * ---------------------------------------------------------------------------------- *
- * *
- * **************************************************************************************/
-
-.text
-.globl jump_fcontext
-.type jump_fcontext,@function
-.align 8
-jump_fcontext:
- movq %rbx, (%rdi) /* save RBX */
- movq %r12, 0x8(%rdi) /* save R12 */
- movq %r13, 0x10(%rdi) /* save R13 */
- movq %r14, 0x18(%rdi) /* save R14 */
- movq %r15, 0x20(%rdi) /* save R15 */
- movq %rbp, 0x28(%rdi) /* save RBP */
-
- cmp $0, %rcx
- je 1f
-
- stmxcsr 0x50(%rdi) /* save MMX control and status word */
- fnstcw 0x54(%rdi) /* save x87 control word */
-
- ldmxcsr 0x50(%rsi) /* restore MMX control and status word */
- fldcw 0x54(%rsi) /* restore x87 control word */
-1:
-
- leaq 0x8(%rsp), %rax /* exclude the return address and save as stack pointer */
- movq %rax, 0x30(%rdi) /* save as stack pointer */
- movq (%rsp), %rax /* save return address */
- movq %rax, 0x38(%rdi) /* save return address as RIP */
-
- movq (%rsi), %rbx /* restore RBX */
- movq 0x8(%rsi), %r12 /* restore R12 */
- movq 0x10(%rsi), %r13 /* restore R13 */
- movq 0x18(%rsi), %r14 /* restore R14 */
- movq 0x20(%rsi), %r15 /* restore R15 */
- movq 0x28(%rsi), %rbp /* restore RBP */
-
- movq 0x30(%rsi), %rsp /* restore RSP */
- movq 0x38(%rsi), %rcx /* fetch the address to return to */
-
- movq %rdx, %rax /* use third arg as return value after jump */
- movq %rdx, %rdi /* use third arg as first arg in context function */
-
- jmp *%rcx /* indirect jump to context */
-.size jump_fcontext,.-jump_fcontext
=== removed file 'common/system/jump_x86_64_sysv_macho_gas.S'
--- common/system/jump_x86_64_sysv_macho_gas.S 2013-09-23 15:02:25 +0000
+++ common/system/jump_x86_64_sysv_macho_gas.S 1970-01-01 00:00:00 +0000
@@ -1,80 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/****************************************************************************************
- * *
- * ---------------------------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | *
- * ---------------------------------------------------------------------------------- *
- * | RBX | R12 | R13 | R14 | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | *
- * ---------------------------------------------------------------------------------- *
- * | R15 | RBP | RSP | RIP | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 16 | 17 | 18 | 19 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x40 | 0x44 | 0x48 | 0x4c | | *
- * ---------------------------------------------------------------------------------- *
- * | sp | size | | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 20 | 21 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x50 | 0x54 | | *
- * ---------------------------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * ---------------------------------------------------------------------------------- *
- * *
- * **************************************************************************************/
-
-.text
-.globl _jump_fcontext
-.align 8
-_jump_fcontext:
- movq %rbx, (%rdi) /* save RBX */
- movq %r12, 0x8(%rdi) /* save R12 */
- movq %r13, 0x10(%rdi) /* save R13 */
- movq %r14, 0x18(%rdi) /* save R14 */
- movq %r15, 0x20(%rdi) /* save R15 */
- movq %rbp, 0x28(%rdi) /* save RBP */
-
- cmp $0, %rcx
- je 1f
-
- stmxcsr 0x50(%rdi) /* save MMX control and status word */
- fnstcw 0x54(%rdi) /* save x87 control word */
-
- ldmxcsr 0x50(%rsi) /* restore MMX control and status word */
- fldcw 0x54(%rsi) /* restore x87 control word */
-1:
-
- leaq 0x8(%rsp), %rax /* exclude the return address and save as stack pointer */
- movq %rax, 0x30(%rdi) /* save as stack pointer */
- movq (%rsp), %rax /* save return address */
- movq %rax, 0x38(%rdi) /* save return address as RIP */
-
- movq (%rsi), %rbx /* restore RBX */
- movq 0x8(%rsi), %r12 /* restore R12 */
- movq 0x10(%rsi), %r13 /* restore R13 */
- movq 0x18(%rsi), %r14 /* restore R14 */
- movq 0x20(%rsi), %r15 /* restore R15 */
- movq 0x28(%rsi), %rbp /* restore RBP */
-
- movq 0x30(%rsi), %rsp /* restore RSP */
- movq 0x38(%rsi), %rcx /* fetch the address to return to */
-
- movq %rdx, %rax /* use third arg as return value after jump */
- movq %rdx, %rdi /* use third arg as first arg in context function */
-
- jmp *%rcx /* indirect jump to context */
=== removed file 'common/system/make_arm_aapcs_elf_gas.S'
--- common/system/make_arm_aapcs_elf_gas.S 2013-11-27 08:48:31 +0000
+++ common/system/make_arm_aapcs_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,79 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | *
- * ------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| 0x20| 0x24| *
- * ------------------------------------------------------------- *
- * | v1 | v2 | v3 | v4 | v5 | v6 | v7 | v8 | sp | lr | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 10 | | *
- * ------------------------------------------------------------- *
- * | 0x28| | *
- * ------------------------------------------------------------- *
- * | pc | | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 11 | 12 | | *
- * ------------------------------------------------------------- *
- * | 0x2c| 0x30| | *
- * ------------------------------------------------------------- *
- * | sp | size| | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | *
- * ------------------------------------------------------------- *
- * | 0x34| 0x38|0x3c| 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58 | *
- * ------------------------------------------------------------- *
- * | s16 | s17 | s18 | s19 | s20 | s21 | s22 | s23 | s24 | s25 | *
- * ------------------------------------------------------------- *
- * ------------------------------------------------------------- *
- * | 23 | 24 | 25 | 26 | 27 | 28 | | *
- * ------------------------------------------------------------- *
- * | 0x5c| 0x60| 0x64| 0x68| 0x6c| 0x70| | *
- * ------------------------------------------------------------- *
- * | s26 | s27 | s28 | s29 | s30 | s31 | | *
- * ------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl make_fcontext
-.align 2
-.type make_fcontext,%function
-make_fcontext:
- mov a4, a1 @ save address of context stack (base) A4
- sub a1, a1, #116 @ reserve space for fcontext_t at top of context stack
-
- @ shift address in A1 to lower 16 byte boundary
- @ == pointer to fcontext_t and address of context stack
- bic a1, a1, #15
-
- str a4, [a1,#44] @ save address of context stack (base) in fcontext_t
- str a2, [a1,#48] @ save context stack size in fcontext_t
- str a3, [a1,#40] @ save address of context function in fcontext_t
-
- str a1, [a1,#32] @ save address in A4 as stack pointer for context function
-
- adr a2, finish @ compute abs address of label finish
- str a2, [a1,#36] @ save address of finish as return address for context function
- @ entered after context function returns
-
- bx lr
-
-finish:
- @ SP points to same addras SP on entry of context function
- mov a1, #0 @ exit code is zero
- bl _exit@PLT @ exit application
-.size make_fcontext,.-make_fcontext
-
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
=== removed file 'common/system/make_i386_pe_gas.S'
--- common/system/make_i386_pe_gas.S 2013-10-14 11:43:57 +0000
+++ common/system/make_i386_pe_gas.S 1970-01-01 00:00:00 +0000
@@ -1,50 +0,0 @@
-/* Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-.global _make_fcontext
-.text
-.align 2
-
-_make_fcontext:
- mov 0x4(%esp),%eax
- lea -0x34(%eax),%eax
- and $0xfffffff0,%eax
- mov 0x4(%esp),%ecx
- mov %ecx,0x18(%eax)
- mov 0x8(%esp),%edx
- mov %edx,0x1c(%eax)
- neg %edx
- lea (%edx,%ecx,1),%ecx
- mov %ecx,0x20(%eax)
- mov 0xc(%esp),%ecx
- mov %ecx,0x14(%eax)
- stmxcsr 0x2c(%eax)
- fnstcw 0x30(%eax)
- lea -0x1c(%eax),%edx
- mov %edx,0x10(%eax)
- mov $0x0,%ecx
- mov %ecx,(%edx)
- mov %fs:0x18,%ecx
- mov (%ecx),%edx
- inc %edx
- je _make_fcontext+0x4c // <_make_fcontext+0x4c>
- dec %edx
- xchg %edx,%ecx
- jmp _make_fcontext+0x42 // <_make_fcontext+0x42>
- mov 0x4(%ecx),%ecx
- mov 0x10(%eax),%edx
- mov %ecx,0x18(%edx)
- mov $0xffffffff,%ecx
- mov %ecx,0x14(%edx)
- lea 0x14(%edx),%ecx
- mov %ecx,0x24(%eax)
- ret
-
-finish:
- xor %eax,%eax
- mov %eax,(%esp)
- call finish+0xa
- hlt
=== removed file 'common/system/make_i386_sysv_elf_gas.S'
--- common/system/make_i386_sysv_elf_gas.S 2013-08-02 14:46:53 +0000
+++ common/system/make_i386_sysv_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,77 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/********************************************************************
- * *
- * -------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | *
- * -------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | *
- * -------------------------------------------------------------- *
- * | EDI | ESI | EBX | EBP | ESP | EIP | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 6 | 7 | | *
- * -------------------------------------------------------------- *
- * | 0x18 | 0x1c | | *
- * -------------------------------------------------------------- *
- * | sp | size | | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 8 | 9 | | *
- * -------------------------------------------------------------- *
- * | 0x20 | 0x24 | | *
- * -------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * -------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl make_fcontext
-.align 2
-.type make_fcontext,@function
-make_fcontext:
- movl 0x4(%esp), %eax /* load 1. arg of make_fcontext, pointer to context stack (base) */
- leal -0x28(%eax), %eax /* reserve space for fcontext_t at top of context stack */
-
- /* shift address in EAX to lower 16 byte boundary */
- /* == pointer to fcontext_t and address of context stack */
- andl $-16, %eax
-
- movl 0x4(%esp), %edx /* load 1. arg of make_fcontext, pointer to context stack (base) */
- movl %edx, 0x18(%eax) /* save address of context stack (base) in fcontext_t */
- movl 0x8(%esp), %edx /* load 2. arg of make_fcontext, context stack size */
- movl %edx, 0x1c(%eax) /* save stack size in fcontext_t */
- movl 0xc(%esp), %edx /* load 3. arg of make_fcontext, pointer to context function */
- movl %edx, 0x14(%eax) /* save address of context function in fcontext_t */
-
- stmxcsr 0x20(%eax) /* save MMX control and status word */
- fnstcw 0x24(%eax) /* save x87 control word */
-
- leal -0x8(%eax), %edx /* reserve space for the last frame on context stack; (ESP - 0x4) % 16 == 0 */
- movl %edx, 0x10(%eax) /* save address in EDX as stack pointer for context function */
-
- call 1f
-1: popl %ecx /* address of label 2 */
- addl $finish-1b, %ecx /* compute abs address of label finish */
- movl %ecx, (%edx) /* save address of finish as return address for context functions */
- /* entered after context function returns */
-
- ret
-
-finish:
- /* ESP points to same address as ESP on entry of context function + 0x4 */
- call 2f
-2: popl %ebx /* address of label 3 */
- addl $_GLOBAL_OFFSET_TABLE_+[.-2b], %ebx /* compute address of GOT and store it in EBX */
-
- xorl %eax, %eax
- movl %eax, (%esp) /* exit code is zero */
- call _exit@PLT /* exit application */
- hlt
-.size make_fcontext,.-make_fcontext
=== removed file 'common/system/make_i386_sysv_macho_gas.S'
--- common/system/make_i386_sysv_macho_gas.S 2013-09-23 15:02:25 +0000
+++ common/system/make_i386_sysv_macho_gas.S 1970-01-01 00:00:00 +0000
@@ -1,71 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/********************************************************************
- * *
- * -------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | *
- * -------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | *
- * -------------------------------------------------------------- *
- * | EDI | ESI | EBX | EBP | ESP | EIP | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 6 | 7 | | *
- * -------------------------------------------------------------- *
- * | 0x18 | 0x1c | | *
- * -------------------------------------------------------------- *
- * | sp | size | | *
- * -------------------------------------------------------------- *
- * -------------------------------------------------------------- *
- * | 8 | 9 | | *
- * -------------------------------------------------------------- *
- * | 0x20 | 0x24 | | *
- * -------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * -------------------------------------------------------------- *
- * *
- * *****************************************************************/
-
-.text
-.globl _make_fcontext
-.align 2
-_make_fcontext:
- movl 0x4(%esp), %eax /* load 1. arg of make_fcontext, pointer to context stack (base) */
- leal -0x28(%eax), %eax /* reserve space for fcontext_t at top of context stack */
-
- /* shift address in EAX to lower 16 byte boundary */
- /* == pointer to fcontext_t and address of context stack */
- andl $-16, %eax
-
- movl 0x4(%esp), %edx /* load 1. arg of make_fcontext, pointer to context stack (base) */
- movl %edx, 0x18(%eax) /* save address of stack pointer (base) in fcontext_t */
- movl 0x8(%esp), %edx /* load 2. arg of make_fcontext, context stack size */
- movl %edx, 0x1c(%eax) /* save stack size in fcontext_t */
- movl 0xc(%esp), %edx /* load 3. arg of make_fcontext, pointer to context function */
- movl %edx, 0x14(%eax) /* save address of context fcuntion in fcontext_t */
-
- stmxcsr 0x20(%eax) /* save MMX control and status word */
- fnstcw 0x24(%eax) /* save x87 control word */
-
- leal -0x14(%eax), %edx /* reserve space for the last frame on context stack */
- movl %edx, 0x10(%eax) /* save address in EDX as stack pointer for context function */
-
- call 1f
-1: popl %ecx /* address of label 1 */
- addl $finish-1b, %ecx /* compute abs address of label finish */
- movl %ecx, (%edx) /* save address of finish as return address for context function */
- /* entered after context function returns */
-
- ret
-
-finish:
- /* ESP points to same address as ESP on entry of context function + 0x4 */
- xorl %eax, %eax
- movl %eax, (%esp) /* exit code is zero */
- call __exit /* exit application */
- hlt
=== removed file 'common/system/make_x86_64_sysv_elf_gas.S'
--- common/system/make_x86_64_sysv_elf_gas.S 2013-09-16 07:51:24 +0000
+++ common/system/make_x86_64_sysv_elf_gas.S 1970-01-01 00:00:00 +0000
@@ -1,81 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/****************************************************************************************
- * *
- * ---------------------------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | *
- * ---------------------------------------------------------------------------------- *
- * | RBX | R12 | R13 | R14 | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | *
- * ---------------------------------------------------------------------------------- *
- * | R15 | RBP | RSP | RIP | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 16 | 17 | 18 | 19 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x40 | 0x44 | 0x48 | 0x4c | | *
- * ---------------------------------------------------------------------------------- *
- * | sp | size | | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 20 | 21 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x50 | 0x54 | | *
- * ---------------------------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * ---------------------------------------------------------------------------------- *
- * *
- * **************************************************************************************/
-
-.text
-.globl make_fcontext
-
-#ifndef __APPLE__
-.type make_fcontext,@function
-#endif
-
-.align 8
-make_fcontext:
- leaq -0x58(%rdi), %rax /* reserve space for fcontext_t at top of context stack */
-
- /* shift address in RAX to lower 16 byte boundary */
- /* == pointer to fcontext_t and address of context stack */
- andq $-16, %rax
-
- movq %rdi, 0x40(%rax) /* save address of context stack pointer (base) in fcontext_t */
- movq %rsi, 0x48(%rax) /* save context stack size in fcontext_t */
- movq %rdx, 0x38(%rax) /* save address of context function in fcontext_t */
-
- stmxcsr 0x50(%rax) /* save MMX control and status word */
- fnstcw 0x54(%rax) /* save x87 control word */
-
- leaq -0x8(%rax), %rdx /* reserve space for the return address on context stack, (RSP - 0x8) % 16 == 0 */
- movq %rdx, 0x30(%rax) /* save address in RDX as stack pointer for context function */
-
- leaq finish(%rip), %rcx /* compute abs address of label finish */
- movq %rcx, (%rdx) /* save address of finish as return address for context function */
- /* entered after context function returns */
-
- ret /* return pointer to fcontext_t placed on context stack */
-
-finish:
- /* RSP points to same address as RSP on entry of context function + 0x8 */
- xorq %rdi, %rdi /* exit code is zero */
- call _exit@PLT /* exit application */
- hlt
-
-#ifndef __APPLE__
-.size make_fcontext,.-make_fcontext
-#endif
-
=== removed file 'common/system/make_x86_64_sysv_macho_gas.S'
--- common/system/make_x86_64_sysv_macho_gas.S 2013-09-23 15:02:25 +0000
+++ common/system/make_x86_64_sysv_macho_gas.S 1970-01-01 00:00:00 +0000
@@ -1,71 +0,0 @@
-/*
- Copyright Oliver Kowalke 2009.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/****************************************************************************************
- * *
- * ---------------------------------------------------------------------------------- *
- * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x0 | 0x4 | 0x8 | 0xc | 0x10 | 0x14 | 0x18 | 0x1c | *
- * ---------------------------------------------------------------------------------- *
- * | RBX | R12 | R13 | R14 | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | *
- * ---------------------------------------------------------------------------------- *
- * | 0x20 | 0x24 | 0x28 | 0x2c | 0x30 | 0x34 | 0x38 | 0x3c | *
- * ---------------------------------------------------------------------------------- *
- * | R15 | RBP | RSP | RIP | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 16 | 17 | 18 | 19 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x40 | 0x44 | 0x48 | 0x4c | | *
- * ---------------------------------------------------------------------------------- *
- * | sp | size | | *
- * ---------------------------------------------------------------------------------- *
- * ---------------------------------------------------------------------------------- *
- * | 20 | 21 | | *
- * ---------------------------------------------------------------------------------- *
- * | 0x50 | 0x54 | | *
- * ---------------------------------------------------------------------------------- *
- * | fc_mxcsr|fc_x87_cw| | *
- * ---------------------------------------------------------------------------------- *
- * *
- * **************************************************************************************/
-
-.text
-.globl _make_fcontext
-.align 8
-_make_fcontext:
- leaq -0x58(%rdi), %rax /* reserve space for fcontext_t at top of context stack */
-
- /* shift address in RAX to lower 16 byte boundary */
- /* == pointer to fcontext_t and address of context stack */
- movabs $-16, %r8
- andq %r8, %rax
-
- movq %rdi, 0x40(%rax) /* save address of stack pointer (base) in fcontext_t */
- movq %rsi, 0x48(%rax) /* save stack size in fcontext_t */
- movq %rdx, 0x38(%rax) /* save address of context function in fcontext_t */
-
- stmxcsr 0x50(%rax) /* save MMX control and status word */
- fnstcw 0x54(%rax) /* save x87 control word */
-
- leaq -0x8(%rax), %rdx /* reserve space for the return address on context stack, (RSP - 0x8) % 16 == 0 */
- movq %rdx, 0x30(%rax) /* save address in RDX as stack pointer for context function */
-
- leaq finish(%rip), %rcx /* compute abs address of label finish */
- movq %rcx, (%rdx) /* save address of finish as return address for context function */
- /* entered after context function returns */
-
- ret /* return pointer to fcontext_t placed on context stack */
-
-finish:
- /* RSP points to same address as RSP on entry of context function + 0x8 */
- xorq %rdi, %rdi /* exit code is zero */
- call __exit /* exit application */
# Begin bundle
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
qfGX/4u5IpwoSA3g5fMA
Follow ups