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.@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@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.@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