diff options
-rw-r--r-- | gdb/gdb_wchar.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/gdb/gdb_wchar.h b/gdb/gdb_wchar.h index 8df00e4..909a0e4 100644 --- a/gdb/gdb_wchar.h +++ b/gdb/gdb_wchar.h @@ -76,8 +76,19 @@ typedef wint_t gdb_wint_t; We exploit this fact in the hope that there are hosts that define this but which do not support "wchar_t" as an encoding argument to iconv_open. We put the endianness into the encoding name to avoid - hosts that emit a BOM when the unadorned name is used. */ -#if defined (__STDC_ISO_10646__) + hosts that emit a BOM when the unadorned name is used. + + Also, on version 14 macOS 'Sonoma', the implementation of iconv was + changed in such a way that breaks the way that gdb was using it. + Specifically, using wchar_t as an intermediate encoding silently + breaks when attempting to do character-by-character encoding. + By using the intermediate_encoding function to choose a suitable + encoding to put in the wchar_t, the iconv implementation behaves as + we expect it to. Strictly speaking, this seems to be a bug in + Sonoma specifically, but it is desirable for binaries built for + older versions of macOS to still work on newer ones such as Sonoma, + so there is no version check here for this workaround. */ +#if defined (__STDC_ISO_10646__) || defined (__APPLE__) #define USE_INTERMEDIATE_ENCODING_FUNCTION #define INTERMEDIATE_ENCODING intermediate_encoding () const char *intermediate_encoding (void); |