diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2021-04-22 09:35:36 +0300 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2021-05-23 22:23:34 +0300 |
commit | 62282ff40b7925ea09f4392e5ca3be26c9ade078 (patch) | |
tree | dbf976b4c331b2efd94814d3f99eb5117c9db56c /gnu/packages | |
parent | dc25a9dfa8cfac29a3f60596d36877e5d5b45679 (diff) |
gnu: binutils: Fix bug in test suite in libiberty.
* gnu/packages/base.scm (binutils)[source]: Add patch.
* gnu/packages/patches/binutils-libiberty-endianness-bug.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/base.scm | 3 | ||||
-rw-r--r-- | gnu/packages/patches/binutils-libiberty-endianness-bug.patch | 36 |
2 files changed, 38 insertions, 1 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 33c4952415..d30299a7b6 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -507,7 +507,8 @@ change. GNU make offers many powerful extensions over the standard utility.") (sha256 (base32 "18ypqr5y48vxqg9mkz1c47798jp1xb1d4vfpmfq8vkihkvkx4jsv")) - (patches (search-patches "binutils-loongson-workaround.patch")))) + (patches (search-patches "binutils-libiberty-endianness-bug.patch" + "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) ;; TODO: Add dependency on zlib + those for Gold. diff --git a/gnu/packages/patches/binutils-libiberty-endianness-bug.patch b/gnu/packages/patches/binutils-libiberty-endianness-bug.patch new file mode 100644 index 0000000000..e6c82f704e --- /dev/null +++ b/gnu/packages/patches/binutils-libiberty-endianness-bug.patch @@ -0,0 +1,36 @@ +This patch fixes a bug exposed when running the libiberty test suite on +big-endian machines. + +Original bug report: +https://sourceware.org/bugzilla/show_bug.cgi?id=27751 +Follow-ups: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100177 +https://gcc.gnu.org/pipermail/gcc-patches/2021-April/568314.html + +--- + libiberty/rust-demangle.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c +index 6fd8f6a4db0..848563fa3c3 100644 +--- a/libiberty/rust-demangle.c ++++ b/libiberty/rust-demangle.c +@@ -1253,9 +1253,12 @@ demangle_const_char (struct rust_demangler *rdm) + else if (value == '\n') + PRINT ("\\n"); + else if (value > ' ' && value < '~') +- /* Rust also considers many non-ASCII codepoints to be printable, but +- that logic is not easily ported to C. */ +- print_str (rdm, (char *) &value, 1); ++ { ++ /* Rust also considers many non-ASCII codepoints to be printable, but ++ that logic is not easily ported to C. */ ++ char c = value; ++ print_str (rdm, &c, 1); ++ } + else + { + PRINT ("\\u{"); +-- +2.31.1 + |