Boost logo

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