Skip to content

string: add __xpg_strerror_r for objects built against newlib headers - #14

Open
codewiz wants to merge 1 commit into
masterfrom
xpg-strerror-r
Open

string: add __xpg_strerror_r for objects built against newlib headers#14
codewiz wants to merge 1 commit into
masterfrom
xpg-strerror-r

Conversation

@codewiz

@codewiz codewiz commented Sep 1, 2026

Copy link
Copy Markdown

The newlib string.h installed in sys-include renames strerror_r to __xpg_strerror_r unless _GNU_SOURCE is defined, so libstdc++'s system_error.o references that symbol and every link pulling in <system_error> or <string> fails against libnix.

This is bucket 2 of the C++ testsuite umbrella issue AmigaPorts/m68k-amigaos-gcc#57 (~508 link failures, most of the unresolved tests) and the root cause of AmigaPorts/m68k-amigaos-gcc#27.

Provide the POSIX variant next to the existing GNU-style strerror_r: return 0 on success, ERANGE when the buffer is too small (copying what fits), EINVAL for an out-of-range errnum (writing "Unknown error"), which is exactly what libstdc++'s use_strerror_result handles.

Verified: a <system_error> testcase that previously failed to link with -noixemul now links and prints "I/O error" under vamos.

The newlib string.h in sys-include renames strerror_r to __xpg_strerror_r
unless _GNU_SOURCE is defined, so libstdc++ objects reference that symbol
and every link pulling in <system_error> fails against libnix. Provide the
POSIX variant next to the GNU-style strerror_r.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant