[Boost-bugs] [Boost C++ Libraries] #9743: Patch for context/coroutine assembler for Linux On Power (BE & LE)

Subject: [Boost-bugs] [Boost C++ Libraries] #9743: Patch for context/coroutine assembler for Linux On Power (BE & LE)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-03-05 10:00:21

#9743: Patch for context/coroutine assembler for Linux On Power (BE & LE)
 Reporter: Tony Reix <tony.reix@…> | Owner: olli
     Type: Patches | Status: new
Milestone: To Be Determined | Component: context
  Version: Boost 1.55.0 | Severity: Problem
 Keywords: |

 Tests of context and coroutine libraries produce cores on Linux on Power
 (LoP), Little Endian and Big Endian.

 LoP LE: Ubuntu 14.04 :
       "uname -m" --> ppc64le
       __LITTLE_ENDIAN__ defined.

 LoP BE: Fedora 19 :
       "uname -m" --> ppc64
       __BIG_ENDIAN__ defined.

 Linux On Power is only 64bits. No 32bits version.

 The source codes to be changed are:
  - libs/context/build/Jamfile.v2
  - libs/context/src/asm : PPC assembler files jump...S and make...S

 I am preparing a patch for the PPC assembler files, either as 1 file for
 each of jump... and make... files (using #ifdef for producing LE or BE
 code), or 2 files for each (one for LE and one for BE).
 I don't know yet what is the most appropriate solution: one common file
 for LE&BE with #ifdef (easier for maintenance), or one file for LE and one
 other for BE.
 To be discussed.

 Looking at Jamfile.v2 file, I see several cases for PPC :
  - power - 32 - elf - gcc
  - power - 32 - elf - qcc
  - power - 64 - elf - gcc
  - power - 64 - elf - qcc
 (I'm not an expert of Jam)

 I guess that "power - 32 - *" cases should be let as they are, for
 compatibility with older or different environments.

 About "power - 64", the files require changes for running fine on LoP BE &
 LE. I've done these changes, and tests work fine. However, I don't know if
 there are some older 64bits PPC environment to keep compatibility with.
 (I'm also working on a patch for AIX/PPC 32-64, with xcoff format, and
 with AIX assembler. I'll manage it after LoP patch.)

 So, I need some help for finalizing my patch:
  - How to name the files ? which code is now different from the existing
  - Is it possible to use #fidef in these .S files for having one file for
 LE and BE ?
      I thought to use: __LITTLE_ENDIAN__ and __BIG_ENDIAN__ macros. I
 still have to check that Jam handle them.
  - How should I change Jam.v2 ?

 I'll provide the modified ppc64 files I've built, in this "ticket".



Ticket URL: <https://svn.boost.org/trac/boost/ticket/9743>
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:15 UTC