Since int8_t etc. have been changed to conform to C99 on Solaris by
commit 0a48b1fe9866556ce41295d1e3b739c608ea5f22
Author: Rainer Orth <[email protected]>
Date: Sun Feb 15 23:11:44 2026 +0100
Change int8_t to signed char on Solaris [PR113450,PR123176]
a couple of D test fail:
UNRESOLVED: gdc.test/runnable_cxx/stdint.d compilation failed to produce
executable
Undefined first referenced
symbol in file
_Z15testCppI8Manglechchch /var/tmp//ccJLlOBa.o
FAIL: libphobos.phobos/std_complex.d execution test
FAIL: libphobos.phobos/std_format_package.d execution test
FAIL: libphobos.phobos/std_format_write.d execution test
FAIL: libphobos.phobos/std_math_hardware.d execution test
FAIL: libphobos.phobos/std_typecons.d execution test
This happens because the mangling of int8_t was changed.
The probably can easily avoided by adjusting libdruntime's idea of
int8_t as in the attached patch.
Bootstrapped without regressions on i386-pc-solaris2.11 and
sparc-sun-solaris2.11.
Ok for trunk?
In general, libphobos patches need to go upstream first. In this case,
however, the change is specific to GCC trunk since it depends on the
fixed definitions of int8_t etc., so it may be TRT to apply it to the
GCC tree only.
Thanks.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2026-01-07 Rainer Orth <[email protected]>
libphobos:
PR libstdc++/113450
PR d/123509
* libdruntime/core/stdc/stdint.d [Solaris] (int8_t): Change to byte.
(int_least8_t): Likewise.
(int_fast8_t): Likewise.
# HG changeset patch
# Parent 723afed2cab840595271e173f8d60a749d733720
d: Reflect int8_t change to signed char on Solaris [PR113450]
diff --git a/libphobos/libdruntime/core/stdc/stdint.d b/libphobos/libdruntime/core/stdc/stdint.d
--- a/libphobos/libdruntime/core/stdc/stdint.d
+++ b/libphobos/libdruntime/core/stdc/stdint.d
@@ -337,7 +337,7 @@ else version (OpenBSD)
}
else version (Solaris)
{
- alias int8_t = char; ///
+ alias int8_t = byte; ///
alias int16_t = short; ///
alias uint8_t = ubyte; ///
alias uint16_t = ushort; ///
@@ -346,7 +346,7 @@ else version (Solaris)
alias int64_t = long; ///
alias uint64_t = ulong; ///
- alias int_least8_t = char; ///
+ alias int_least8_t = byte; ///
alias uint_least8_t = ubyte; ///
alias int_least16_t = short; ///
alias uint_least16_t = ushort; ///
@@ -355,7 +355,7 @@ else version (Solaris)
alias int_least64_t = long; ///
alias uint_least64_t = ulong; ///
- alias int_fast8_t = char; ///
+ alias int_fast8_t = byte; ///
alias uint_fast8_t = ubyte; ///
alias int_fast16_t = int; ///
alias uint_fast16_t = uint; ///