Merge pull request #185297 from trofi/binutils-2.39
binutils: 2.38 -> 2.39
This commit is contained in:
-137
@@ -1,137 +0,0 @@
|
||||
From beca4a2c25ee86e4020f8b8bddc4d8e0ed3430b3 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Childs <andrew.childs@bibo.com.ph>
|
||||
Date: Tue, 22 Feb 2022 11:28:04 +0900
|
||||
Subject: [PATCH] Revert "libtool.m4: fix nm BSD flag detection"
|
||||
|
||||
This reverts commit bef9ef8ca0f941d743c77cc55b5fe7985990b2a7.
|
||||
---
|
||||
ChangeLog | 9 ------
|
||||
libtool.m4 | 88 ++++++++++++++++++++++++++----------------------------
|
||||
2 files changed, 43 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 18e8b6835da..c12f07403c3 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -375,15 +375,6 @@
|
||||
|
||||
* src-release.sh (GDB_SUPPPORT_DIRS): Add libbacktrace.
|
||||
|
||||
-2021-09-27 Nick Alcock <nick.alcock@oracle.com>
|
||||
-
|
||||
- PR libctf/27967
|
||||
- * libtool.m4 (LT_PATH_NM): Try BSDization flags with a user-provided
|
||||
- NM, if there is one. Run nm on itself, not on /dev/null, to avoid
|
||||
- errors from nms that refuse to work on non-regular files. Remove
|
||||
- other workarounds for this problem. Strip out blank lines from the
|
||||
- nm output.
|
||||
-
|
||||
2021-09-27 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
PR libctf/27967
|
||||
diff --git a/libtool.m4 b/libtool.m4
|
||||
index a216bb14e99..7a711249304 100644
|
||||
--- a/libtool.m4
|
||||
+++ b/libtool.m4
|
||||
@@ -3200,55 +3200,53 @@ _LT_DECL([], [file_magic_cmd], [1],
|
||||
|
||||
# LT_PATH_NM
|
||||
# ----------
|
||||
-# find the pathname to a BSD- or MS-compatible name lister, and any flags
|
||||
-# needed to make it compatible
|
||||
+# find the pathname to a BSD- or MS-compatible name lister
|
||||
AC_DEFUN([LT_PATH_NM],
|
||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
|
||||
[if test -n "$NM"; then
|
||||
- # Let the user override the nm to test.
|
||||
- lt_nm_to_check="$NM"
|
||||
- else
|
||||
- lt_nm_to_check="${ac_tool_prefix}nm"
|
||||
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
|
||||
- lt_nm_to_check="$lt_nm_to_check nm"
|
||||
- fi
|
||||
- fi
|
||||
- for lt_tmp_nm in $lt_nm_to_check; do
|
||||
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
|
||||
- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
|
||||
- IFS="$lt_save_ifs"
|
||||
- test -z "$ac_dir" && ac_dir=.
|
||||
- case "$lt_tmp_nm" in
|
||||
- */*|*\\*) tmp_nm="$lt_tmp_nm";;
|
||||
- *) tmp_nm="$ac_dir/$lt_tmp_nm";;
|
||||
- esac
|
||||
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
|
||||
- # Check to see if the nm accepts a BSD-compat flag.
|
||||
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
||||
- # nm: unknown option "B" ignored
|
||||
- case `"$tmp_nm" -B "$tmp_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
|
||||
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
|
||||
- break
|
||||
- ;;
|
||||
- *)
|
||||
- case `"$tmp_nm" -p "$tmp_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
|
||||
- *$tmp_nm*)
|
||||
- lt_cv_path_NM="$tmp_nm -p"
|
||||
- break
|
||||
- ;;
|
||||
- *)
|
||||
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
|
||||
- continue # so that we can try to find one that supports BSD flags
|
||||
- ;;
|
||||
- esac
|
||||
- ;;
|
||||
- esac
|
||||
- fi
|
||||
- done
|
||||
- IFS="$lt_save_ifs"
|
||||
- done
|
||||
- : ${lt_cv_path_NM=no}])
|
||||
+ # Let the user override the test.
|
||||
+ lt_cv_path_NM="$NM"
|
||||
+else
|
||||
+ lt_nm_to_check="${ac_tool_prefix}nm"
|
||||
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
|
||||
+ lt_nm_to_check="$lt_nm_to_check nm"
|
||||
+ fi
|
||||
+ for lt_tmp_nm in $lt_nm_to_check; do
|
||||
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
|
||||
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
|
||||
+ IFS="$lt_save_ifs"
|
||||
+ test -z "$ac_dir" && ac_dir=.
|
||||
+ tmp_nm="$ac_dir/$lt_tmp_nm"
|
||||
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
|
||||
+ # Check to see if the nm accepts a BSD-compat flag.
|
||||
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
||||
+ # nm: unknown option "B" ignored
|
||||
+ # Tru64's nm complains that /dev/null is an invalid object file
|
||||
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
|
||||
+ */dev/null* | *'Invalid file or object type'*)
|
||||
+ lt_cv_path_NM="$tmp_nm -B"
|
||||
+ break
|
||||
+ ;;
|
||||
+ *)
|
||||
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
|
||||
+ */dev/null*)
|
||||
+ lt_cv_path_NM="$tmp_nm -p"
|
||||
+ break
|
||||
+ ;;
|
||||
+ *)
|
||||
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
|
||||
+ continue # so that we can try to find one that supports BSD flags
|
||||
+ ;;
|
||||
+ esac
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ done
|
||||
+ IFS="$lt_save_ifs"
|
||||
+ done
|
||||
+ : ${lt_cv_path_NM=no}
|
||||
+fi])
|
||||
if test "$lt_cv_path_NM" != "no"; then
|
||||
NM="$lt_cv_path_NM"
|
||||
else
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -32,12 +32,12 @@ assert enableGold -> execFormatIsELF stdenv.targetPlatform;
|
||||
let
|
||||
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
|
||||
|
||||
version = "2.38";
|
||||
version = "2.39";
|
||||
|
||||
srcs = {
|
||||
normal = fetchurl {
|
||||
url = "mirror://gnu/binutils/binutils-${version}.tar.bz2";
|
||||
sha256 = "sha256-Bw7HHPB3pqWOC5WfBaCaNQFTeMLYpR6Q866r/jBZDvg=";
|
||||
sha256 = "sha256-2iSoT+8iAQLdJAQt8G/eqFHCYUpTd/hu/6KPM7exYUg=";
|
||||
};
|
||||
vc4-none = fetchFromGitHub {
|
||||
owner = "itszor";
|
||||
@@ -68,10 +68,6 @@ stdenv.mkDerivation {
|
||||
# Make binutils output deterministic by default.
|
||||
./deterministic.patch
|
||||
|
||||
|
||||
# Breaks nm BSD flag detection
|
||||
./0001-Revert-libtool.m4-fix-nm-BSD-flag-detection.patch
|
||||
|
||||
# Required for newer macos versions
|
||||
./0001-libtool.m4-update-macos-version-detection-block.patch
|
||||
|
||||
@@ -83,11 +79,12 @@ stdenv.mkDerivation {
|
||||
# cross-compiling.
|
||||
./always-search-rpath.patch
|
||||
|
||||
# Fixed in 2.39
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=28885
|
||||
# https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=99852365513266afdd793289813e8e565186c9e6
|
||||
# https://github.com/NixOS/nixpkgs/issues/170946
|
||||
./deterministic-temp-prefixes.patch
|
||||
# Upstream backport of https://sourceware.org/PR29451:
|
||||
# Don't emit 0-sized debug entries for objects without size.
|
||||
# Without the change elfutils on i686-linux fail dwarf validity test:
|
||||
# https://sourceware.org/PR29450
|
||||
# Remove once 2.40 releases.
|
||||
./gas-dwarf-zero-PR29451.patch
|
||||
]
|
||||
++ lib.optional targetPlatform.isiOS ./support-ios.patch
|
||||
# This patch was suggested by Nick Clifton to fix
|
||||
@@ -105,17 +102,6 @@ stdenv.mkDerivation {
|
||||
(if stdenv.targetPlatform.isMusl
|
||||
then substitute { src = ./mips64-default-n64.patch; replacements = [ "--replace" "gnuabi64" "muslabi64" ]; }
|
||||
else ./mips64-default-n64.patch)
|
||||
# On PowerPC, when generating assembly code, GCC generates a `.machine`
|
||||
# custom instruction which instructs the assembler to generate code for this
|
||||
# machine. However, some GCC versions generate the wrong one, or make it
|
||||
# too strict, which leads to some confusing "unrecognized opcode: wrtee"
|
||||
# or "unrecognized opcode: eieio" errors.
|
||||
#
|
||||
# To remove when binutils 2.39 is released.
|
||||
#
|
||||
# Upstream commit:
|
||||
# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=cebc89b9328eab994f6b0314c263f94e7949a553
|
||||
++ lib.optional stdenv.targetPlatform.isPower ./ppc-make-machine-less-strict.patch
|
||||
;
|
||||
|
||||
outputs = [ "out" "info" "man" ];
|
||||
@@ -190,6 +176,11 @@ stdenv.mkDerivation {
|
||||
# for us to do is not leave it to chance, and force the program prefix to be
|
||||
# what we want it to be.
|
||||
"--program-prefix=${targetPrefix}"
|
||||
|
||||
# Unconditionally disable:
|
||||
# - musl target needs porting: https://sourceware.org/PR29477
|
||||
# - all targets rely on javac: https://sourceware.org/PR29479
|
||||
"--disable-gprofng"
|
||||
]
|
||||
++ lib.optionals withAllTargets [ "--enable-targets=all" ]
|
||||
++ lib.optionals enableGold [ "--enable-gold" "--enable-plugins" ]
|
||||
@@ -201,10 +192,6 @@ stdenv.mkDerivation {
|
||||
# Fails
|
||||
doCheck = false;
|
||||
|
||||
# Remove on next bump. It's a vestige of past conditional. Stays here to avoid
|
||||
# mass rebuild.
|
||||
postFixup = "";
|
||||
|
||||
# Break dependency on pkgsBuildBuild.gcc when building a cross-binutils
|
||||
stripDebugList = if stdenv.hostPlatform != stdenv.targetPlatform then "bin lib ${stdenv.hostPlatform.config}" else null;
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
From 99852365513266afdd793289813e8e565186c9e6 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Clifton <nickc@redhat.com>
|
||||
Date: Wed, 23 Mar 2022 11:39:49 +0000
|
||||
Subject: [PATCH] dlltool: Use the output name as basis for deterministic temp
|
||||
prefixes
|
||||
|
||||
PR 28885
|
||||
* dlltool.c (main): use imp_name rather than dll_name when
|
||||
generating a temporary file name.
|
||||
---
|
||||
binutils/ChangeLog | 9 +++++++++
|
||||
binutils/dlltool.c | 7 ++++---
|
||||
2 files changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
|
||||
index d95bf3f5470..89871510b45 100644
|
||||
--- a/binutils/dlltool.c
|
||||
+++ b/binutils/dlltool.c
|
||||
@@ -3992,10 +3992,11 @@ main (int ac, char **av)
|
||||
if (tmp_prefix == NULL)
|
||||
{
|
||||
/* If possible use a deterministic prefix. */
|
||||
- if (dll_name)
|
||||
+ if (imp_name || delayimp_name)
|
||||
{
|
||||
- tmp_prefix = xmalloc (strlen (dll_name) + 2);
|
||||
- sprintf (tmp_prefix, "%s_", dll_name);
|
||||
+ const char *input = imp_name ? imp_name : delayimp_name;
|
||||
+ tmp_prefix = xmalloc (strlen (input) + 2);
|
||||
+ sprintf (tmp_prefix, "%s_", input);
|
||||
for (i = 0; tmp_prefix[i]; i++)
|
||||
if (!ISALNUM (tmp_prefix[i]))
|
||||
tmp_prefix[i] = '_';
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=d7abcbcea5ddd40a3bf28758b62f35933c59f996
|
||||
|
||||
Don't emit 0-sized debug entries for objects without size.
|
||||
Without the change elfutils on i686-linux fail dwarf validity test:
|
||||
https://sourceware.org/PR29450
|
||||
--- a/gas/dwarf2dbg.c
|
||||
+++ b/gas/dwarf2dbg.c
|
||||
@@ -2882,6 +2882,7 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT str_seg,
|
||||
{
|
||||
const char *name;
|
||||
size_t len;
|
||||
+ expressionS size = { .X_op = O_constant };
|
||||
|
||||
/* Skip warning constructs (see above). */
|
||||
if (symbol_get_bfdsym (symp)->flags & BSF_WARNING)
|
||||
@@ -2895,6 +2896,18 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT str_seg,
|
||||
if (!S_IS_DEFINED (symp) || !S_IS_FUNCTION (symp))
|
||||
continue;
|
||||
|
||||
+#if defined (OBJ_ELF) /* || defined (OBJ_MAYBE_ELF) */
|
||||
+ size.X_add_number = S_GET_SIZE (symp);
|
||||
+ if (size.X_add_number == 0 && IS_ELF
|
||||
+ && symbol_get_obj (symp)->size != NULL)
|
||||
+ {
|
||||
+ size.X_op = O_add;
|
||||
+ size.X_op_symbol = make_expr_symbol (symbol_get_obj (symp)->size);
|
||||
+ }
|
||||
+#endif
|
||||
+ if (size.X_op == O_constant && size.X_add_number == 0)
|
||||
+ continue;
|
||||
+
|
||||
subseg_set (str_seg, 0);
|
||||
name_sym = symbol_temp_new_now_octets ();
|
||||
name = S_GET_NAME (symp);
|
||||
@@ -2920,29 +2933,17 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT str_seg,
|
||||
emit_expr (&exp, sizeof_address);
|
||||
|
||||
/* DW_AT_high_pc */
|
||||
- exp.X_op = O_constant;
|
||||
-#if defined (OBJ_ELF) /* || defined (OBJ_MAYBE_ELF) */
|
||||
- exp.X_add_number = S_GET_SIZE (symp);
|
||||
- if (exp.X_add_number == 0 && IS_ELF
|
||||
- && symbol_get_obj (symp)->size != NULL)
|
||||
- {
|
||||
- exp.X_op = O_add;
|
||||
- exp.X_op_symbol = make_expr_symbol (symbol_get_obj (symp)->size);
|
||||
- }
|
||||
-#else
|
||||
- exp.X_add_number = 0;
|
||||
-#endif
|
||||
if (DWARF2_VERSION < 4)
|
||||
{
|
||||
- if (exp.X_op == O_constant)
|
||||
- exp.X_op = O_symbol;
|
||||
- exp.X_add_symbol = symp;
|
||||
- emit_expr (&exp, sizeof_address);
|
||||
+ if (size.X_op == O_constant)
|
||||
+ size.X_op = O_symbol;
|
||||
+ size.X_add_symbol = symp;
|
||||
+ emit_expr (&size, sizeof_address);
|
||||
}
|
||||
- else if (exp.X_op == O_constant)
|
||||
- out_uleb128 (exp.X_add_number);
|
||||
+ else if (size.X_op == O_constant)
|
||||
+ out_uleb128 (size.X_add_number);
|
||||
else
|
||||
- emit_leb128_expr (symbol_get_value_expression (exp.X_op_symbol), 0);
|
||||
+ emit_leb128_expr (symbol_get_value_expression (size.X_op_symbol), 0);
|
||||
}
|
||||
|
||||
/* End of children. */
|
||||
@@ -1,5 +1,5 @@
|
||||
{ lib, stdenv
|
||||
, fetchpatch, gnu-config, autoreconfHook, bison, binutils-unwrapped
|
||||
, gnu-config, autoreconfHook, bison, binutils-unwrapped, texinfo
|
||||
, libiberty, libintl, zlib
|
||||
}:
|
||||
|
||||
@@ -11,10 +11,6 @@ stdenv.mkDerivation {
|
||||
|
||||
patches = binutils-unwrapped.patches ++ [
|
||||
./build-components-separately.patch
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/mxe/mxe/e1d4c144ee1994f70f86cf7fd8168fe69bd629c6/src/bfd-1-disable-subdir-doc.patch";
|
||||
sha256 = "0pzb3i74d1r7lhjan376h59a7kirw15j7swwm8pz3zy9lkdqkj6q";
|
||||
})
|
||||
];
|
||||
|
||||
# We just want to build libbfd
|
||||
@@ -31,7 +27,7 @@ stdenv.mkDerivation {
|
||||
dontUpdateAutotoolsGnuConfigScripts = true;
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ autoreconfHook bison ];
|
||||
nativeBuildInputs = [ autoreconfHook bison texinfo ];
|
||||
buildInputs = [ libiberty zlib ] ++ lib.optionals stdenv.isDarwin [ libintl ];
|
||||
|
||||
configurePlatforms = [ "build" "host" ];
|
||||
|
||||
Reference in New Issue
Block a user