|
Boost-Build : |
Subject: [Boost-build] Boost context with IBM XL C/C++
From: Tristan Delhalle (Tristan.Delhalle_at_[hidden])
Date: 2013-11-18 04:42:46
Hi,
i am trying to build boost 1.55 with IBM XL C/C++ for AIX, V12.1.
1) As far as i understand, the context library must be build (even if --without-context), and the assembly code for PPC/XCOFF does not exist. Is that right ?
2) I encountered "invalid opcode or pseudo-op/Error In Syntax/Invalid relocation type: plt/..." because XLC do not understand ELF pseudocode. I am trying to patch 64bit/libs/context/build/Jamfile.v2" without succeded. Any hint for that?
Thanks for replies.
Tristan
Index: 64bit/libs/context/build/Jamfile.v2
===================================================================
--- 64bit.orig/libs/context/build/Jamfile.v2 2013-10-04 13:07:50.000000000 +0200
+++ 64bit/libs/context/build/Jamfile.v2 2013-10-04 17:09:56.000000000 +0200
@@ -27,6 +27,7 @@
local tmp = elf ;
if [ os.name ] = "MACOSX" { tmp = mach-o ; }
if [ os.name ] = "NT" { tmp = pe ; }
+ if [ os.name ] = "AIX" { tmp = xcoff ; }
return $(tmp) ;
}
@@ -34,6 +35,7 @@
: elf
mach-o
pe
+ xcoff
: propagated
;
feature.set-default binary-format : [ default_binary_format ] ;
@@ -163,56 +165,56 @@
# POWERPC
alias asm_context_sources
- : asm/make_ppc32_sysv_elf_gas.S
- asm/jump_ppc32_sysv_elf_gas.S
+ : asm/make_ppc32_sysv_xcoff_gas.S
+ asm/jump_ppc32_sysv_xcoff_gas.S
: <address-model>32
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
<toolset>gcc
;
alias asm_context_sources
- : asm/make_ppc32_sysv_elf_gas.S
- asm/jump_ppc32_sysv_elf_gas.S
+ : asm/make_ppc32_sysv_xcoff_gas.S
+ asm/jump_ppc32_sysv_xcoff_gas.S
: <address-model>32
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
<toolset>qcc
;
alias asm_context_sources
- : [ make asm/make_ppc32_sysv_elf_gas.o : asm/make_ppc32_sysv_elf_gas.S : @gas ]
- [ make asm/jump_ppc32_sysv_elf_gas.o : asm/jump_ppc32_sysv_elf_gas.S : @gas ]
+ : [ make asm/make_ppc32_sysv_xcoff_gas.o : asm/make_ppc32_sysv_xcoff_gas.S : @gas ]
+ [ make asm/jump_ppc32_sysv_xcoff_gas.o : asm/jump_ppc32_sysv_xcoff_gas.S : @gas ]
: <address-model>32
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
;
# POWERPC_64
alias asm_context_sources
- : asm/make_ppc64_sysv_elf_gas.S
- asm/jump_ppc64_sysv_elf_gas.S
+ : asm/make_ppc64_sysv_xcoff_gas.S
+ asm/jump_ppc64_sysv_xcoff_gas.S
: <address-model>64
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
<toolset>gcc
;
alias asm_context_sources
- : asm/make_ppc64_sysv_elf_gas.S
- asm/jump_ppc64_sysv_elf_gas.S
+ : asm/make_ppc64_sysv_xcoff_gas.S
+ asm/jump_ppc64_sysv_xcoff_gas.S
: <address-model>64
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
<toolset>qcc
;
alias asm_context_sources
- : [ make asm/make_ppc64_sysv_elf_gas.o : asm/make_ppc64_sysv_elf_gas.S : @gas ]
- [ make asm/jump_ppc64_sysv_elf_gas.o : asm/jump_ppc64_sysv_elf_gas.S : @gas ]
+ : [ make asm/make_ppc64_sysv_xcoff_gas.o : asm/make_ppc64_sysv_xcoff_gas.S : @gas ]
+ [ make asm/jump_ppc64_sysv_xcoff_gas.o : asm/jump_ppc64_sysv_xcoff_gas.S : @gas ]
: <address-model>64
<architecture>power
- <binary-format>elf
+ <binary-format>xcoff
;
# SPARC
--- boost_1_55_0/libs/context/src/asm/jump_ppc32_sysv_elf_gas.S 2013-07-26 17:24:15 +0200
+++ jump_ppc32_sysv_xcoff_gas.S 2013-11-18 10:20:17 +0100
@@ -67,10 +67,10 @@
* *****************************************************************/
.text
-.globl jump_fcontext
+.globl _jump_fcontext
.align 2
-.type jump_fcontext,@function
-jump_fcontext:
+.def _jump_fcontext; .scl 2; .type 32; .endef
+_jump_fcontext:
stw %r13, 0(%r3) # save R13
stw %r14, 4(%r3) # save R14
stw %r15, 8(%r3) # save R15
@@ -177,7 +177,4 @@
mtctr %r0 # restore CTR
bctr # jump to context
-.size jump_fcontext, .-jump_fcontext
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
--- boost_1_55_0/libs/context/src/asm/jump_ppc64_sysv_elf_gas.S 2013-07-26 17:24:15 +0200
+++ jump_ppc64_sysv_xcoff_gas.S 2013-11-18 10:20:17 +0100
@@ -80,18 +80,12 @@
* *
* *****************************************************************/
-.section ".text"
+.section .text
.align 2
-.globl jump_fcontext
-.section ".opd","aw"
-.align 3
-jump_fcontext:
-.quad .jump_fcontext,.TOC._at_tocbase,0
-.previous
-.size jump_fcontext,24
-.type .jump_fcontext,@function
-.globl .jump_fcontext
-.jump_fcontext:
+.globl _jump_fcontext
+.def ._jump_fcontext; .scl 2; .type 32; .endef
+.globl ._jump_fcontext
+._jump_fcontext:
std %r13, 0(%r3) # save R13
std %r14, 8(%r3) # save R14
std %r15, 16(%r3) # save R15
@@ -198,7 +192,4 @@
mtctr %r0 # restore CTR
bctr # jump to context
-.size .jump_fcontext, .-.jump_fcontext
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
--- boost_1_55_0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S 2013-07-26 17:24:15 +0200
+++ make_ppc32_sysv_xcoff_gas.S 2013-11-18 10:20:17 +0100
@@ -67,10 +67,10 @@
* *****************************************************************/
.text
-.globl make_fcontext
+.globl _make_fcontext
.align 2
-.type make_fcontext,@function
-make_fcontext:
+.def _make_fcontext; .scl 2; .type 32; .endef
+_make_fcontext:
mflr %r6 # save return address into R6
mr %r0, %r3
@@ -107,8 +107,4 @@
stwu %r1, -16(%r1) # allocate stack space, SP % 16 == 0
li %r3, 0 # exit code is zero
- bl _exit_at_plt # exit application
-.size make_fcontext, .-make_fcontext
-
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
+ bl _exit # exit application @plt
--- boost_1_55_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S 2013-07-26 17:24:15 +0200
+++ make_ppc64_sysv_xcoff_gas.S 2013-11-18 10:20:17 +0100
@@ -80,18 +80,12 @@
* *
* *****************************************************************/
-.section ".text"
+.section .text
.align 2
-.globl make_fcontext
-.section ".opd","aw"
-.align 3
-make_fcontext:
-.quad .make_fcontext,.TOC._at_tocbase,0
-.previous
-.size make_fcontext,24
-.type .make_fcontext,@function
-.globl .make_fcontext
-.make_fcontext:
+.globl _make_fcontext
+.def ._make_fcontext; .scl 2; .type 32; .endef
+.globl ._make_fcontext
+._make_fcontext:
mflr %r6 # save return address into R6
mr %r0, %r3
@@ -130,7 +124,4 @@
li %r3, 0 # set return value to zero
bl _exit # exit application
nop
-.size .make_fcontext, .-.make_fcontext
-/* Mark that we don't need executable stack. */
-.section .note.GNU-stack,"",%progbits
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk