summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--configure.ac8
-rw-r--r--doc/mcpu-cpp-en.md71
-rw-r--r--doc/mcpu-cpp-ru.md72
-rw-r--r--src/mcpp-predefined.c18
-rwxr-xr-xtests/t0024-abi-predefined.sh18
-rwxr-xr-xtests/t0025-dump-macros.sh18
-rwxr-xr-xtests/t0029-predefined-abi-names.sh16
8 files changed, 151 insertions, 82 deletions
diff --git a/ChangeLog b/ChangeLog
index 25b263a..491f47c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2026-10-12 Andrey V. Kosteltsev
+
+ * HOST machine-dependent predefined macros
+ __MCPU_HOST_MACHINE_REGISTER_WIDTH__,
+ __MCPU_HOST_MACHINE_SIZEOF_SIZE__, __MCPU_HOST_MACHINE_SIZEOF_SSIZE__,
+ __MCPU_HOST_MACHINE_SIZE_MAX__, __MCPU_HOST_MACHINE_SIZE_TYPE__,
+ __MCPU_HOST_MACHINE_SIZE_WIDTH__, __MCPU_HOST_MACHINE_SSIZE_MAX__,
+ __MCPU_HOST_MACHINE_SSIZE_TYPE__, __MCPU_HOST_MACHINE_SSIZE_WIDTH__
+ are not part of the MCPU ABI but can be used in guest programs to
+ obtain HOST-specific sizes and the corresponding MCPU HLL data types.
+ * LibMPU 1.0.28, LibMPUIO 1.0.8 are required.
+
2026-10-11 Andrey V. Kosteltsev
* Fixed target machine depended tests.
diff --git a/configure.ac b/configure.ac
index 7bfcdf1..c551013 100644
--- a/configure.ac
+++ b/configure.ac
@@ -39,7 +39,7 @@ dnl ============================================================
dnl Check for LibMPU
dnl ============================================================
AC_CHECK_LIBMPU(
- [1.0.27],
+ [1.0.28],
[yes],
[
AC_DEFINE(
@@ -51,7 +51,7 @@ AC_CHECK_LIBMPU(
AC_SUBST([LIBMPU_VERSION])
],
[
- AC_MSG_ERROR([LibMPU version 1.0.27 or later is required.])
+ AC_MSG_ERROR([LibMPU version 1.0.28 or later is required.])
]
)
@@ -59,7 +59,7 @@ dnl ============================================================
dnl Check for LibMPUIO
dnl ============================================================
AC_CHECK_LIBMPUIO(
- [1.0.7],
+ [1.0.8],
[yes],
[
AC_DEFINE(
@@ -71,7 +71,7 @@ AC_CHECK_LIBMPUIO(
AC_SUBST([LIBMPUIO_VERSION])
],
[
- AC_MSG_ERROR([LibMPUIO version 1.0.7 or later is required.])
+ AC_MSG_ERROR([LibMPUIO version 1.0.8 or later is required.])
]
)
diff --git a/doc/mcpu-cpp-en.md b/doc/mcpu-cpp-en.md
index 18633ae..9afaa0e 100644
--- a/doc/mcpu-cpp-en.md
+++ b/doc/mcpu-cpp-en.md
@@ -1265,7 +1265,10 @@ will not be mixed with the version of the standalone preprocessor.
the established LibMPU/LibMPUIO `acsite.m4` approach: GCC predefined macros
describe native type sizes, byte/word order, and machine-register width, while
the installed `<libmpu.h>` is the final source of truth for LibMPU
-configuration.
+configuration. These GCC and LibMPU checks describe the HOST build environment,
+not the MCPU target ABI. The MCPU ABI is defined by the LibMCPU architecture
+and its ABI contracts; HOST-derived predefined macros must not be used to
+infer or change target type widths, pointer representation, or calling rules.
In particular, the following values are captured and checked:
@@ -1348,7 +1351,7 @@ future MCPU language has no `float` type.
LibMPU/MCPU environment parameters are published in the MCPU namespace:
```text
-__MCPU_MACHINE_REGISTER_WIDTH__
+__MCPU_HOST_MACHINE_REGISTER_WIDTH__
__MCPU_REAL_IO_LIMIT__
__MCPU_MATH_FN_LIMIT__
__MCPU_INT_MAX_WIDTH__
@@ -1357,36 +1360,60 @@ __MCPU_COMPLEX_MAX_WIDTH__
```
`__MCPU_INT_MAX_WIDTH__` is `NB_I_MAX * 8`; the Real/Complex maximum width is
-the configured `MPU_REAL_IO_LIMIT`. `__MCPU_MACHINE_REGISTER_WIDTH__` is the
-`BITS_PER_MACHINE_REGISTER` value of the installed LibMPU. Real I/O and math
+the configured `MPU_REAL_IO_LIMIT`. `__MCPU_HOST_MACHINE_REGISTER_WIDTH__` is the
+`BITS_PER_MACHINE_REGISTER` value of the installed LibMPU and reports a HOST
+characteristic, not an MCPU architectural register width. Real I/O and math
limits are deliberately kept separate: `MPU_REAL_IO_LIMIT` controls existence
of Real/Complex type families and text conversion, while `MPU_MATH_FN_LIMIT`
controls availability of mathematical functions at a given width.
-### 8.6. MCPU size/ssize, `ptrdiff`, and pointers
+### 8.6. HOST machine size/ssize hints, `ptrdiff`, and pointers
The future language does not inherit variable-width C names such as `short`,
-`int`, and `long`, and it does not use the C-style name `size_t` as part of its
-own ABI. The unsigned LibMPU size type and signed byte-count/error type are
-published symmetrically in the MCPU namespace. For a 64-bit configured profile,
-for example:
+`int`, and `long`, and the HOST C types `size_t` and `ssize_t` do not define
+the MCPU target ABI. The following nine predefined macros report the HOST
+machine characteristics of the environment in which the virtual MCPU runs:
```text
-#define __MCPU_SIZE_TYPE__ uint64
-#define __MCPU_SIZE_WIDTH__ 64
-#define __MCPU_SIZEOF_SIZE__ 8
-#define __MCPU_SIZE_MAX__ 0xffffffffffffffff
+__MCPU_HOST_MACHINE_REGISTER_WIDTH__
+__MCPU_HOST_MACHINE_SIZEOF_SIZE__
+__MCPU_HOST_MACHINE_SIZEOF_SSIZE__
+__MCPU_HOST_MACHINE_SIZE_MAX__
+__MCPU_HOST_MACHINE_SIZE_TYPE__
+__MCPU_HOST_MACHINE_SIZE_WIDTH__
+__MCPU_HOST_MACHINE_SSIZE_MAX__
+__MCPU_HOST_MACHINE_SSIZE_TYPE__
+__MCPU_HOST_MACHINE_SSIZE_WIDTH__
+```
+
+They are **not the source of truth for the MCPU ABI**. They are optional
+information available to guest programs, for example when a high-level
+programmer deliberately wants an MCPU integer type whose signedness and width
+match the HOST `size_t` or `ssize_t`. Using such a type is an explicit program
+choice; it does not make the guest pointer, integer, memory, or calling ABI
+HOST-dependent.
+
+For a HOST with 32-bit `size_t` and `ssize_t`, these size hints include:
+
+```text
+#define __MCPU_HOST_MACHINE_SIZE_TYPE__ uint32
+#define __MCPU_HOST_MACHINE_SIZE_WIDTH__ 32
+#define __MCPU_HOST_MACHINE_SIZEOF_SIZE__ 4
+#define __MCPU_HOST_MACHINE_SIZE_MAX__ 0xffffffff
-#define __MCPU_SSIZE_TYPE__ int64
-#define __MCPU_SSIZE_WIDTH__ 64
-#define __MCPU_SIZEOF_SSIZE__ 8
-#define __MCPU_SSIZE_MAX__ 0x7fffffffffffffff
+#define __MCPU_HOST_MACHINE_SSIZE_TYPE__ int32
+#define __MCPU_HOST_MACHINE_SSIZE_WIDTH__ 32
+#define __MCPU_HOST_MACHINE_SIZEOF_SSIZE__ 4
+#define __MCPU_HOST_MACHINE_SSIZE_MAX__ 0x7fffffff
```
-This is an MCPU-specific family, not an attempt to invent a nonexistent GNU CPP
-`__SSIZE_*` contract.
+For a HOST with 64-bit `size_t` and `ssize_t`, the same names instead report
+`uint64`/`int64`, widths of `64`, sizes of `8`, and the corresponding maxima
+`0xffffffffffffffff`/`0x7fffffffffffffff`. Register width is reported
+independently; it is not derived from `size_t`.
-The MCPU pointer ABI is independent of the host: PTR64 is always 64 bits wide:
+The MCPU pointer ABI is **HOST-independent**: PTR64 is always 64 bits wide,
+including when the HOST and its `size_t` are 32-bit:
```text
#define __INTPTR_TYPE__ int64
@@ -1399,8 +1426,8 @@ The MCPU pointer ABI is independent of the host: PTR64 is always 64 bits wide:
#define __MCPU_POINTER_WIDTH__ 64
```
-The difference between two MCPU pointers is signed and also fixed independently
-of the host:
+The difference between two MCPU pointers is signed and likewise fixed
+independently of the HOST:
```text
#define __PTRDIFF_TYPE__ int64
diff --git a/doc/mcpu-cpp-ru.md b/doc/mcpu-cpp-ru.md
index 662ff2c..f3884da 100644
--- a/doc/mcpu-cpp-ru.md
+++ b/doc/mcpu-cpp-ru.md
@@ -1274,6 +1274,10 @@ frontend/driver, его version contract будет определён отдеÐ
проверенные приёмы из `LibMPU`/`LibMPUIO` `acsite.m4`: GCC predefined macros
определяют native type sizes, byte/word order и machine-register width, а
установленный `<libmpu.h>` является окончательным источником настроек LibMPU.
+Эти проверки GCC и LibMPU описывают среду сборки HOST, но не целевой MCPU ABI.
+Источником истины для MCPU ABI служат архитектура LibMCPU и её ABI-контракты;
+предопределённые макро, зависящие от HOST, не должны определять или изменять
+разрядности целевых типов, представление указателей и правила вызовов.
В частности, фиксируются и проверяются:
@@ -1355,7 +1359,7 @@ GNU/C-specific имя `__FLOAT_WORD_ORDER__` не определяется: ти
Параметры LibMPU/MCPU environment публикуются в MCPU namespace:
```text
-__MCPU_MACHINE_REGISTER_WIDTH__
+__MCPU_HOST_MACHINE_REGISTER_WIDTH__
__MCPU_REAL_IO_LIMIT__
__MCPU_MATH_FN_LIMIT__
__MCPU_INT_MAX_WIDTH__
@@ -1364,35 +1368,61 @@ __MCPU_COMPLEX_MAX_WIDTH__
```
`__MCPU_INT_MAX_WIDTH__` равен `NB_I_MAX * 8`, а Real/Complex maximum width
-равен configured `MPU_REAL_IO_LIMIT`. `__MCPU_MACHINE_REGISTER_WIDTH__` является
-значением `BITS_PER_MACHINE_REGISTER` установленной LibMPU. Пределы Real I/O и
+равен configured `MPU_REAL_IO_LIMIT`. `__MCPU_HOST_MACHINE_REGISTER_WIDTH__` является
+значением `BITS_PER_MACHINE_REGISTER` установленной LibMPU и описывает HOST,
+а не разрядность архитектурного регистра MCPU. Пределы Real I/O и
math functions не смешиваются: `MPU_REAL_IO_LIMIT` определяет существование
Real/Complex type family и text conversion, а `MPU_MATH_FN_LIMIT` — наличие
математических функций соответствующей ширины.
-### 8.6. MCPU size/ssize, `ptrdiff` и pointers
+### 8.6. HOST machine size/ssize, `ptrdiff` и pointers
-Будущий язык не наследует variable-width C names `short`, `int`, `long` и
-не использует C-style имя `size_t` как часть собственного ABI. Беззнаковый
-LibMPU size type и знаковый byte-count/error type публикуются симметрично в
-MCPU namespace. Например для 64-bit configured profile:
+Будущий язык не наследует variable-width C names `short`, `int`, `long`, а
+HOST-типы C `size_t` и `ssize_t` не определяют целевой MCPU ABI. Следующие
+девять предопределённых макро сообщают характеристики HOST-машины, на которой
+работает виртуальный процессор MCPU:
```text
-#define __MCPU_SIZE_TYPE__ uint64
-#define __MCPU_SIZE_WIDTH__ 64
-#define __MCPU_SIZEOF_SIZE__ 8
-#define __MCPU_SIZE_MAX__ 0xffffffffffffffff
+__MCPU_HOST_MACHINE_REGISTER_WIDTH__
+__MCPU_HOST_MACHINE_SIZEOF_SIZE__
+__MCPU_HOST_MACHINE_SIZEOF_SSIZE__
+__MCPU_HOST_MACHINE_SIZE_MAX__
+__MCPU_HOST_MACHINE_SIZE_TYPE__
+__MCPU_HOST_MACHINE_SIZE_WIDTH__
+__MCPU_HOST_MACHINE_SSIZE_MAX__
+__MCPU_HOST_MACHINE_SSIZE_TYPE__
+__MCPU_HOST_MACHINE_SSIZE_WIDTH__
+```
+
+Они **не являются источником истины для MCPU ABI**. Это дополнительные сведения
+для гостевой программы. Например, разработчик языка высокого уровня может
+осознанно выбрать целочисленный тип MCPU, совпадающий по знаковости и
+разрядности с HOST `size_t` либо `ssize_t`. Такой выбор принадлежит конкретной
+программе и не делает HOST-зависимыми указатели, целочисленную модель, память
+или соглашение о вызовах MCPU.
+
+Если на HOST `size_t` и `ssize_t` имеют ширину 32 бита, размерные подсказки
+содержат, в частности:
+
+```text
+#define __MCPU_HOST_MACHINE_SIZE_TYPE__ uint32
+#define __MCPU_HOST_MACHINE_SIZE_WIDTH__ 32
+#define __MCPU_HOST_MACHINE_SIZEOF_SIZE__ 4
+#define __MCPU_HOST_MACHINE_SIZE_MAX__ 0xffffffff
-#define __MCPU_SSIZE_TYPE__ int64
-#define __MCPU_SSIZE_WIDTH__ 64
-#define __MCPU_SIZEOF_SSIZE__ 8
-#define __MCPU_SSIZE_MAX__ 0x7fffffffffffffff
+#define __MCPU_HOST_MACHINE_SSIZE_TYPE__ int32
+#define __MCPU_HOST_MACHINE_SSIZE_WIDTH__ 32
+#define __MCPU_HOST_MACHINE_SIZEOF_SSIZE__ 4
+#define __MCPU_HOST_MACHINE_SSIZE_MAX__ 0x7fffffff
```
-Это MCPU-specific family, а не попытка приписать GNU CPP несуществующий
-стандартный `__SSIZE_*` contract.
+На HOST с 64-битными `size_t` и `ssize_t` те же имена обозначают `uint64`/`int64`,
+ширину `64`, размер `8` и соответствующие максимумы
+`0xffffffffffffffff`/`0x7fffffffffffffff`. Ширина HOST-регистра определяется
+независимо и не выводится из `size_t`.
-MCPU pointer ABI от host не зависит: PTR64 всегда имеет ширину 64 бита:
+MCPU pointer ABI **не зависит от HOST**: PTR64 всегда имеет ширину 64 бита,
+включая HOST с 32-битным `size_t`:
```text
#define __INTPTR_TYPE__ int64
@@ -1405,8 +1435,8 @@ MCPU pointer ABI от host не зависит: PTR64 всегда имеет ш
#define __MCPU_POINTER_WIDTH__ 64
```
-Разность MCPU pointers является знаковой и также фиксирована независимо от
-host:
+Разность MCPU pointers является знаковой и также имеет фиксированную
+разрядность независимо от HOST:
```text
#define __PTRDIFF_TYPE__ int64
diff --git a/src/mcpp-predefined.c b/src/mcpp-predefined.c
index 556232c..32b1ec4 100644
--- a/src/mcpp-predefined.c
+++ b/src/mcpp-predefined.c
@@ -553,7 +553,7 @@ mcpu_predefined_install( mcpu_macro_table *table )
return( -1 );
#endif
- if( define_unsigned(table, "__MCPU_MACHINE_REGISTER_WIDTH__",
+ if( define_unsigned(table, "__MCPU_HOST_MACHINE_REGISTER_WIDTH__",
MCPU_CPP_MPU_REGISTER_WIDTH) != 0 ||
define_unsigned(table, "__MCPU_REAL_IO_LIMIT__",
MCPU_CPP_MPU_REAL_IO_LIMIT) != 0 ||
@@ -567,8 +567,8 @@ mcpu_predefined_install( mcpu_macro_table *table )
MCPU_CPP_MPU_REAL_IO_LIMIT) != 0 ||
define_unsigned(table, "__SIZEOF_POINTER__", 8) != 0 ||
define_unsigned(table, "__MCPU_POINTER_WIDTH__", 64) != 0 ||
- define_unsigned(table, "__MCPU_SIZEOF_SIZE__", MCPU_CPP_SIZEOF_SIZE_T) != 0 ||
- define_unsigned(table, "__MCPU_SIZE_WIDTH__", MCPU_CPP_SIZE_WIDTH) != 0 ||
+ define_unsigned(table, "__MCPU_HOST_MACHINE_SIZEOF_SIZE__", MCPU_CPP_SIZEOF_SIZE_T) != 0 ||
+ define_unsigned(table, "__MCPU_HOST_MACHINE_SIZE_WIDTH__", MCPU_CPP_SIZE_WIDTH) != 0 ||
define_unsigned(table, "__SIZEOF_PTRDIFF__", 8) != 0 ||
define_unsigned(table, "__PTRDIFF_WIDTH__", 64) != 0 ||
define_utf8(table, "__CHAR8_TYPE__", "char8") != 0 ||
@@ -588,21 +588,21 @@ mcpu_predefined_install( mcpu_macro_table *table )
}
snprintf( type, sizeof(type), "uint%u", (unsigned)MCPU_CPP_SIZE_WIDTH );
- if( define_utf8(table, "__MCPU_SIZE_TYPE__", type) != 0 )
+ if( define_utf8(table, "__MCPU_HOST_MACHINE_SIZE_TYPE__", type) != 0 )
return( -1 );
snprintf( ref, sizeof(ref), "__UINT%u_MAX__", (unsigned)MCPU_CPP_SIZE_WIDTH );
- if( define_from_macro(table, "__MCPU_SIZE_MAX__", ref) != 0 )
+ if( define_from_macro(table, "__MCPU_HOST_MACHINE_SIZE_MAX__", ref) != 0 )
return( -1 );
snprintf( type, sizeof(type), "int%u", (unsigned)MCPU_CPP_SSIZE_WIDTH );
- if( define_utf8(table, "__MCPU_SSIZE_TYPE__", type) != 0 ||
- define_unsigned(table, "__MCPU_SSIZE_WIDTH__", MCPU_CPP_SSIZE_WIDTH) != 0 ||
- define_unsigned(table, "__MCPU_SIZEOF_SSIZE__", MCPU_CPP_SIZEOF_SSIZE_T) != 0 )
+ if( define_utf8(table, "__MCPU_HOST_MACHINE_SSIZE_TYPE__", type) != 0 ||
+ define_unsigned(table, "__MCPU_HOST_MACHINE_SSIZE_WIDTH__", MCPU_CPP_SSIZE_WIDTH) != 0 ||
+ define_unsigned(table, "__MCPU_HOST_MACHINE_SIZEOF_SSIZE__", MCPU_CPP_SIZEOF_SSIZE_T) != 0 )
return( -1 );
if( MCPU_CPP_SSIZE_WIDTH <= 256 )
{
snprintf( ref, sizeof(ref), "__INT%u_MAX__", (unsigned)MCPU_CPP_SSIZE_WIDTH );
- if( define_from_macro(table, "__MCPU_SSIZE_MAX__", ref) != 0 )
+ if( define_from_macro(table, "__MCPU_HOST_MACHINE_SSIZE_MAX__", ref) != 0 )
return( -1 );
}
diff --git a/tests/t0024-abi-predefined.sh b/tests/t0024-abi-predefined.sh
index 9afee99..ba1f01e 100755
--- a/tests/t0024-abi-predefined.sh
+++ b/tests/t0024-abi-predefined.sh
@@ -11,21 +11,21 @@ old_version = __VERSION__;
byte_order = __BYTE_ORDER__;
mcpu_byte_order = __MCPU_BYTE_ORDER__;
word_order = __MCPU_WORD_ORDER__;
-register_width = __MCPU_MACHINE_REGISTER_WIDTH__;
+register_width = __MCPU_HOST_MACHINE_REGISTER_WIDTH__;
real_io_limit = __MCPU_REAL_IO_LIMIT__;
math_fn_limit = __MCPU_MATH_FN_LIMIT__;
pointer_width = __MCPU_POINTER_WIDTH__;
int_max_width = __MCPU_INT_MAX_WIDTH__;
real_max_width = __MCPU_REAL_MAX_WIDTH__;
complex_max_width = __MCPU_COMPLEX_MAX_WIDTH__;
-size_type = __MCPU_SIZE_TYPE__;
-size_width = __MCPU_SIZE_WIDTH__;
-size_sizeof = __MCPU_SIZEOF_SIZE__;
-size_max = __MCPU_SIZE_MAX__;
-ssize_type = __MCPU_SSIZE_TYPE__;
-ssize_width = __MCPU_SSIZE_WIDTH__;
-ssize_sizeof = __MCPU_SIZEOF_SSIZE__;
-ssize_max = __MCPU_SSIZE_MAX__;
+size_type = __MCPU_HOST_MACHINE_SIZE_TYPE__;
+size_width = __MCPU_HOST_MACHINE_SIZE_WIDTH__;
+size_sizeof = __MCPU_HOST_MACHINE_SIZEOF_SIZE__;
+size_max = __MCPU_HOST_MACHINE_SIZE_MAX__;
+ssize_type = __MCPU_HOST_MACHINE_SSIZE_TYPE__;
+ssize_width = __MCPU_HOST_MACHINE_SSIZE_WIDTH__;
+ssize_sizeof = __MCPU_HOST_MACHINE_SIZEOF_SSIZE__;
+ssize_max = __MCPU_HOST_MACHINE_SSIZE_MAX__;
ptrdiff_type = __PTRDIFF_TYPE__;
ptrdiff_width = __PTRDIFF_WIDTH__;
ptrdiff_max = __PTRDIFF_MAX__;
diff --git a/tests/t0025-dump-macros.sh b/tests/t0025-dump-macros.sh
index 3213f7b..5d514e7 100755
--- a/tests/t0025-dump-macros.sh
+++ b/tests/t0025-dump-macros.sh
@@ -10,7 +10,7 @@ test -s "$base/macros"
LC_ALL=C sort -c "$base/macros"
grep '^#define _ARCH_MCPU 1$' "$base/macros" >/dev/null
grep '^#define __MCPU_CPP_VERSION__ "1\.0\.5"$' "$base/macros" >/dev/null
-grep '^#define __MCPU_MACHINE_REGISTER_WIDTH__ \(64\|32\)$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_REGISTER_WIDTH__ \(64\|32\)$' "$base/macros" >/dev/null
grep '^#define __MCPU_REAL_IO_LIMIT__ [0-9][0-9]*$' "$base/macros" >/dev/null
grep '^#define __MCPU_MATH_FN_LIMIT__ [0-9][0-9]*$' "$base/macros" >/dev/null
grep '^#define __MCPU_BYTE_ORDER__ __ORDER_\(LITTLE\|BIG\)_ENDIAN__$' "$base/macros" >/dev/null
@@ -21,10 +21,10 @@ grep '^#define __MCPU_REAL_MAX_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
grep '^#define __MCPU_COMPLEX_MAX_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
grep '^#define __REGISTER_PREFIX__$' "$base/macros" >/dev/null
grep '^#define __USER_LABEL_PREFIX__$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZE_TYPE__ uint[0-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZEOF_SIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_TYPE__ uint[0-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZEOF_SIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
grep '^#define __PTRDIFF_TYPE__ int64$' "$base/macros" >/dev/null
grep '^#define __PTRDIFF_WIDTH__ 64$' "$base/macros" >/dev/null
grep '^#define __PTRDIFF_MAX__ 0x7fffffffffffffff$' "$base/macros" >/dev/null
@@ -32,10 +32,10 @@ grep '^#define __SIZEOF_PTRDIFF__ 8$' "$base/macros" >/dev/null
grep '^#define __INTPTR_TYPE__ int64$' "$base/macros" >/dev/null
grep '^#define __INTPTR_WIDTH__ 64$' "$base/macros" >/dev/null
grep '^#define __INTPTR_MAX__ 0x7fffffffffffffff$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_TYPE__ int[0-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZEOF_SSIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_TYPE__ int[0-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZEOF_SSIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
grep '^#define __UINTPTR_TYPE__ uint64$' "$base/macros" >/dev/null
grep '^#define __UINTPTR_WIDTH__ 64$' "$base/macros" >/dev/null
grep '^#define __UINTPTR_MAX__ 0xffffffffffffffff$' "$base/macros" >/dev/null
diff --git a/tests/t0029-predefined-abi-names.sh b/tests/t0029-predefined-abi-names.sh
index 37b2f55..3ed158c 100755
--- a/tests/t0029-predefined-abi-names.sh
+++ b/tests/t0029-predefined-abi-names.sh
@@ -6,14 +6,14 @@ trap 'rm -rf "$base"' EXIT HUP INT TERM
"$MCPU_CPP" --no-config -dMP < /dev/null > "$base/macros"
-grep '^#define __MCPU_SIZE_TYPE__ uint[0-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZEOF_SIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_TYPE__ int[0-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SIZEOF_SSIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
-grep '^#define __MCPU_SSIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_TYPE__ uint[0-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZEOF_SIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_TYPE__ int[0-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_WIDTH__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SIZEOF_SSIZE__ [1-9][0-9]*$' "$base/macros" >/dev/null
+grep '^#define __MCPU_HOST_MACHINE_SSIZE_MAX__ 0x[0-9a-f][0-9a-f]*$' "$base/macros" >/dev/null
grep '^#define __SIZEOF_PTRDIFF__ 8$' "$base/macros" >/dev/null
grep '^#define __BYTE_ORDER__ __MCPU_BYTE_ORDER__$' "$base/macros" >/dev/null
grep '^#define __MCPU_BYTE_ORDER__ __ORDER_\(LITTLE\|BIG\)_ENDIAN__$' "$base/macros" >/dev/null