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: |
-------------------------------------+---------------------
Hi,
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
jump_ppc64_sysv_elf_gas.S
make_ppc64_sysv_elf_gas.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
ones:
jump_ppc64_sysv_elf_gas.S
make_ppc64_sysv_elf_gas.S
- 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".
Regards,
Tony
-- 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