gold: Use char16_t, char32_t instead of uint16_t, uint32_t as character types

The std::basic_string template type is only specified for
instantiations using character types.  Newer (LLVM) libc++
implementations no longer allow non-character integer types
to be used.

gold/
	* output.cc: Include <uchar.h>.
	(Output_section::add_merge_input_section): Use char16_t and
	char32_t for 2- and 4-byte entry size, respectively.
	* stringpool.cc: Include <uchar.h>.
	(Stringpool_template): Explicitly instantiate for char16_t,
	char32_t instead of uint16_t, uint32_t.
	* merge.cc (Output_merge_string): Likewise.
This commit is contained in:
Roland McGrath
2023-09-05 12:28:31 -07:00
parent 33a0b29105
commit 5e9091dab8
4 changed files with 22 additions and 6 deletions

View File

@@ -25,6 +25,7 @@
#include <cstring>
#include <algorithm>
#include <vector>
#include <uchar.h>
#include "output.h"
#include "parameters.h"
@@ -527,9 +528,9 @@ template
class Stringpool_template<char>;
template
class Stringpool_template<uint16_t>;
class Stringpool_template<char16_t>;
template
class Stringpool_template<uint32_t>;
class Stringpool_template<char32_t>;
} // End namespace gold.