Hi,

This patch adds power*-*-linux* as a supported target for libphobos.

As there is no support for IBM real (long double) types in the std.math
module, full phobos support has been switched off.  This is not needed
currently anyway in order to be able to bootstrap a self-hosted
front-end written in D.

Testsuite summaries from a native powerpc64le D compiler running inside
a QEMU/Docker container:

-----------
        === libphobos tests ===
WARNING: libphobos.allocations/tls_gc_integration.d execution test program 
timed out.
FAIL: libphobos.allocations/tls_gc_integration.d execution test
FAIL: libphobos.hash/test_hash.d execution test
FAIL: libphobos.thread/tlsgc_sections.d execution test
        === libphobos Summary ===
# of expected passes        62
# of unexpected failures    3
# of unsupported tests      1
 
        === gdc tests ===
FAIL: compilable/ctfe_math.d   output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -O2    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -frelease    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -O2 -frelease    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -g    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -O2 -g    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -frelease -g    output-exists ctfe_math.o
FAIL: compilable/ctfe_math.d -O2 -frelease -g    output-exists ctfe_math.o
WARNING: compilable/test15019.d -O2 -frelease   (test for excess errors) 
program timed out.
FAIL: compilable/test15019.d -O2 -frelease    output-exists test15019.o
WARNING: compilable/test15019.d -O2 -g   (test for excess errors) program timed 
out.
FAIL: compilable/test15019.d -O2 -g    output-exists test15019.o
WARNING: compilable/test15019.d -O2 -frelease -g   (test for excess errors) 
program timed out.
FAIL: compilable/test15019.d -O2 -frelease -g    output-exists test15019.o
WARNING: compilable/test15019.d -O2   (test for excess errors) program timed 
out.
FAIL: compilable/test15019.d -O2    output-exists test15019.o
FAIL: compilable/test5227.d   output-exists test5227.o
        === gdc Summary ===
# of expected passes        21181
# of unexpected failures    13
# of unsupported tests      100
/build/gcc/gdc  version 10.0.1 20200425 (experimental) (GCC)
-----------

Of those that flagged up:

 * I have no immediate cause for concern on the timed out tests, as the
   QEMU interpreter can take a long time to run expensive tests.

 * I can only attribute the test_hash.d failure to QEMU, as it doesn't
   strike me as being anything else.

    float f = 2.71;
    ubyte* p = cast(ubyte*)&f;
    // 2.710000 = 0
    printf("%f = %d\n", *cast(float*)p, *cast(uint*)p);
    uint p0 = cast(uint)p[0];
    uint p1 = cast(uint)p[1] << 8;
    uint p2 = cast(uint)p[2] << 16;
    uint p3 = cast(uint)p[3] << 24;
    // 1076719780
    printf("%d\n", (p0|p1|p2|p3));
    uint i = (p0|p1|p2|p3);
    // 0
    printf("%d\n", i);

* ctfe_math.d and test5227.d are already reported in PR d/89418.


Tested non-bootstrapped targets powerpc-linux-gnu, powerpc64-linux-gnu,
and powerpc64le-linux-gnu.  Committed to mainline.

Regards
Iain.

---
libphobos/ChangeLog:

        * configure: Regenerate.
        * configure.tgt: Add power*-*-linux* as a supported target, only
        building libdruntime.
        * m4/druntime/cpu.m4 (DRUNTIME_CPU_SOURCES): Add cases for powerpcle
        and powerpc64le target cpus.
---
 libphobos/configure          | 5 +++--
 libphobos/configure.tgt      | 4 ++++
 libphobos/m4/druntime/cpu.m4 | 5 +++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/libphobos/configure b/libphobos/configure
index c2b49132fda..c923417532f 100755
--- a/libphobos/configure
+++ b/libphobos/configure
@@ -13991,9 +13991,10 @@ fi
                ;;
       mips*)   druntime_target_cpu_parsed="mips"
                ;;
-      powerpc) druntime_target_cpu_parsed="powerpc"
+      powerpc|powerpcle)
+               druntime_target_cpu_parsed="powerpc"
                ;;
-      powerpc64)
+      powerpc64|powerpc64le)
                druntime_target_cpu_parsed="powerpc64"
                ;;
       i[34567]86|x86_64)
diff --git a/libphobos/configure.tgt b/libphobos/configure.tgt
index 66082e36fad..ce4cc1f7527 100644
--- a/libphobos/configure.tgt
+++ b/libphobos/configure.tgt
@@ -33,6 +33,10 @@ case "${target}" in
   mips*-*-linux*)
        LIBPHOBOS_SUPPORTED=yes
        ;;
+  power*-*-linux*)
+       LIBPHOBOS_SUPPORTED=yes
+       LIBDRUNTIME_ONLY=yes
+       ;;
   riscv*-*-linux*)
        LIBPHOBOS_SUPPORTED=yes
        ;;
diff --git a/libphobos/m4/druntime/cpu.m4 b/libphobos/m4/druntime/cpu.m4
index 4887248fd09..6e88896ca66 100644
--- a/libphobos/m4/druntime/cpu.m4
+++ b/libphobos/m4/druntime/cpu.m4
@@ -17,9 +17,10 @@ AC_DEFUN([DRUNTIME_CPU_SOURCES],
                ;;
       mips*)   druntime_target_cpu_parsed="mips"
                ;;
-      powerpc) druntime_target_cpu_parsed="powerpc"
+      powerpc|powerpcle)
+               druntime_target_cpu_parsed="powerpc"
                ;;
-      powerpc64)
+      powerpc64|powerpc64le)
                druntime_target_cpu_parsed="powerpc64"
                ;;
       i[[34567]]86|x86_64)
-- 
2.20.1

Reply via email to