sync with Debian
version: 2.45-4 (released to unstable) commit: 6f0b22a3261e3f255a7ff03d9fc510f37bf721fb
This commit is contained in:
347
debian/patches/branch-updates.diff
vendored
347
debian/patches/branch-updates.diff
vendored
@@ -1,6 +1,6 @@
|
||||
# DP: updates from the binutils-2.45 branch
|
||||
|
||||
# git diff 2bc7af1ff7732451b6a7b09462a815c3284f9613 f57c0f19710c6fb2052d3709da7081327918ddf9
|
||||
# git diff 2bc7af1ff7732451b6a7b09462a815c3284f9613 f3723832ffdd77f7b387d2c26d73eecf0321b3bd
|
||||
|
||||
diff --git a/bfd/archive.c b/bfd/archive.c
|
||||
index 8e20554d781..c61d4b12658 100644
|
||||
@@ -434,7 +434,7 @@ index 46fafb332de..505f1196987 100644
|
||||
}
|
||||
}
|
||||
diff --git a/bfd/version.h b/bfd/version.h
|
||||
index beed058a6be..c7bbd1445ca 100644
|
||||
index beed058a6be..87fce6dafb3 100644
|
||||
--- a/bfd/version.h
|
||||
+++ b/bfd/version.h
|
||||
@@ -16,7 +16,7 @@
|
||||
@@ -442,7 +442,7 @@ index beed058a6be..c7bbd1445ca 100644
|
||||
In releases, the date is not included in either version strings or
|
||||
sonames. */
|
||||
-#define BFD_VERSION_DATE 20250727
|
||||
+#define BFD_VERSION_DATE 20250810
|
||||
+#define BFD_VERSION_DATE 20250816
|
||||
#define BFD_VERSION @bfd_version@
|
||||
#define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
|
||||
#define REPORT_BUGS_TO @report_bugs_to@
|
||||
@@ -1228,6 +1228,347 @@ index 00000000000..e02e16b7d26
|
||||
+.globl _start
|
||||
+.set _start, 1b
|
||||
+.size _start, 2b - 1b
|
||||
diff --git a/libctf/configure b/libctf/configure
|
||||
index 7466d56a18b..89c99c2ddbf 100755
|
||||
--- a/libctf/configure
|
||||
+++ b/libctf/configure
|
||||
@@ -15966,6 +15966,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
|
||||
+case "${host}" in
|
||||
+ # PR libctf/29292
|
||||
+ # libctf's use of mmap doesn't work on Solaris 11.4, so disable it.
|
||||
+ *-*-solaris2.11*)
|
||||
+ ac_cv_func_mmap_fixed_mapped=no
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
|
||||
|
||||
|
||||
@@ -17015,7 +17023,7 @@ if test -n "$decommented_version_script"; then
|
||||
# used by GNU ld. Use cpp to strip the comments out. (cpp exists under this
|
||||
# name on all platforms that support ld -z gnu-version-script.)
|
||||
/lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver
|
||||
- /lib/cpp < $srcdir/libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
+ /lib/cpp < libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'"
|
||||
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'"
|
||||
elif test -z "$no_version_script"; then
|
||||
diff --git a/libctf/configure.ac b/libctf/configure.ac
|
||||
index fbd8ec12a14..40d00e8eb18 100644
|
||||
--- a/libctf/configure.ac
|
||||
+++ b/libctf/configure.ac
|
||||
@@ -65,6 +65,14 @@ AM_MAINTAINER_MODE
|
||||
AM_INSTALL_LIBBFD
|
||||
ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_libctf_warn_cflags])
|
||||
|
||||
+case "${host}" in
|
||||
+ # PR libctf/29292
|
||||
+ # libctf's use of mmap doesn't work on Solaris 11.4, so disable it.
|
||||
+ *-*-solaris2.11*)
|
||||
+ ac_cv_func_mmap_fixed_mapped=no
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
GCC_AC_FUNC_MMAP
|
||||
# Needed for BFD capability checks.
|
||||
AC_SEARCH_LIBS(dlsym, dl)
|
||||
@@ -293,7 +301,7 @@ if test -n "$decommented_version_script"; then
|
||||
# used by GNU ld. Use cpp to strip the comments out. (cpp exists under this
|
||||
# name on all platforms that support ld -z gnu-version-script.)
|
||||
/lib/cpp < $srcdir/libctf.ver > libctf-decommented.ver
|
||||
- /lib/cpp < $srcdir/libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
+ /lib/cpp < libctf-nobfd.ver > libctf-nobfd-decommented.ver
|
||||
VERSION_FLAGS="$ac_cv_libctf_version_script='libctf-decommented.ver'"
|
||||
VERSION_FLAGS_NOBFD="$ac_cv_libctf_version_script='libctf-nobfd-decommented.ver'"
|
||||
elif test -z "$no_version_script"; then
|
||||
diff --git a/libctf/ctf-link.c b/libctf/ctf-link.c
|
||||
index 2d4401d2210..524ed7e2466 100644
|
||||
--- a/libctf/ctf-link.c
|
||||
+++ b/libctf/ctf-link.c
|
||||
@@ -20,10 +20,6 @@
|
||||
#include <ctf-impl.h>
|
||||
#include <string.h>
|
||||
|
||||
-#if defined (PIC)
|
||||
-#pragma weak ctf_open
|
||||
-#endif
|
||||
-
|
||||
/* CTF linking consists of adding CTF archives full of content to be merged into
|
||||
this one to the current file (which must be writable) by calling
|
||||
ctf_link_add_ctf. Once this is done, a call to ctf_link will merge the type
|
||||
@@ -145,56 +141,33 @@ ctf_link_add_ctf_internal (ctf_dict_t *fp, ctf_archive_t *ctf,
|
||||
return ctf_set_errno (fp, ENOMEM);
|
||||
}
|
||||
|
||||
-/* Add a file, memory buffer, or unopened file (by name) to a link.
|
||||
-
|
||||
- You can call this with:
|
||||
-
|
||||
- CTF and NAME: link the passed ctf_archive_t, with the given NAME.
|
||||
- NAME alone: open NAME as a CTF file when needed.
|
||||
- BUF and NAME: open the BUF (of length N) as CTF, with the given NAME. (Not
|
||||
- yet implemented.)
|
||||
+/* Add an opened CTF archive or unopened file (by name) to a link.
|
||||
+ If CTF is NULL and NAME is non-null, an unopened file is meant:
|
||||
+ otherwise, the specified archive is assumed to have the given NAME.
|
||||
|
||||
- Passed in CTF args are owned by the dictionary and will be freed by it.
|
||||
- The BUF arg is *not* owned by the dictionary, and the user should not free
|
||||
- its referent until the link is done.
|
||||
+ If CTF is NULL, the NAME is only opened when needed, and is closed when no
|
||||
+ longer needed, so that large cu-mapped links will only use memory for their
|
||||
+ cu-mapped inputs briefly (compensating for the memory usage of the
|
||||
+ smushed-together cu-mapped verion).
|
||||
|
||||
- The order of calls to this function influences the order of types in the
|
||||
- final link output, but otherwise is not important.
|
||||
+ Passed in CTF args are owned by the dictionary and will be freed by it.
|
||||
|
||||
- Repeated additions of the same NAME have no effect; repeated additions of
|
||||
- different dicts with the same NAME add all the dicts with unique NAMEs
|
||||
- derived from NAME.
|
||||
+ The order of calls to this function influences the order of types in the
|
||||
+ final link output, but otherwise is not important.
|
||||
|
||||
- Private for now, but may in time become public once support for BUF is
|
||||
- implemented. */
|
||||
+ Repeated additions of the same NAME have no effect; repeated additions of
|
||||
+ different dicts with the same NAME add all the dicts with unique NAMEs
|
||||
+ derived from NAME. */
|
||||
|
||||
-static int
|
||||
-ctf_link_add (ctf_dict_t *fp, ctf_archive_t *ctf, const char *name,
|
||||
- void *buf _libctf_unused_, size_t n _libctf_unused_)
|
||||
+int
|
||||
+ctf_link_add_ctf (ctf_dict_t *fp, ctf_archive_t *ctf, const char *name)
|
||||
{
|
||||
- if (buf)
|
||||
- return (ctf_set_errno (fp, ECTF_NOTYET));
|
||||
-
|
||||
- if (!((ctf && name && !buf)
|
||||
- || (name && !buf && !ctf)
|
||||
- || (buf && name && !ctf)))
|
||||
+ if (!name)
|
||||
return (ctf_set_errno (fp, EINVAL));
|
||||
|
||||
- /* We can only lazily open files if libctf.so is in use rather than
|
||||
- libctf-nobfd.so. This is a little tricky: in shared libraries, we can use
|
||||
- a weak symbol so that -lctf -lctf-nobfd works, but in static libraries we
|
||||
- must distinguish between the two libraries explicitly. */
|
||||
-
|
||||
-#if defined (PIC)
|
||||
- if (!buf && !ctf && name && !ctf_open)
|
||||
- return (ctf_set_errno (fp, ECTF_NEEDSBFD));
|
||||
-#elif NOBFD
|
||||
- if (!buf && !ctf && name)
|
||||
- return (ctf_set_errno (fp, ECTF_NEEDSBFD));
|
||||
-#endif
|
||||
-
|
||||
if (fp->ctf_link_outputs)
|
||||
return (ctf_set_errno (fp, ECTF_LINKADDEDLATE));
|
||||
+
|
||||
if (fp->ctf_link_inputs == NULL)
|
||||
fp->ctf_link_inputs = ctf_dynhash_create (ctf_hash_string,
|
||||
ctf_hash_eq_string, free,
|
||||
@@ -203,22 +176,15 @@ ctf_link_add (ctf_dict_t *fp, ctf_archive_t *ctf, const char *name,
|
||||
if (fp->ctf_link_inputs == NULL)
|
||||
return (ctf_set_errno (fp, ENOMEM));
|
||||
|
||||
- return ctf_link_add_ctf_internal (fp, ctf, NULL, name);
|
||||
-}
|
||||
-
|
||||
-/* Add an opened CTF archive or unopened file (by name) to a link.
|
||||
- If CTF is NULL and NAME is non-null, an unopened file is meant:
|
||||
- otherwise, the specified archive is assumed to have the given NAME.
|
||||
-
|
||||
- Passed in CTF args are owned by the dictionary and will be freed by it.
|
||||
+ /* We can only lazily open files if libctf.so is in use rather than
|
||||
+ libctf-nobfd.so. */
|
||||
|
||||
- The order of calls to this function influences the order of types in the
|
||||
- final link output, but otherwise is not important. */
|
||||
+#if NOBFD
|
||||
+ if (!ctf)
|
||||
+ return (ctf_set_errno (fp, ECTF_NEEDSBFD));
|
||||
+#endif
|
||||
|
||||
-int
|
||||
-ctf_link_add_ctf (ctf_dict_t *fp, ctf_archive_t *ctf, const char *name)
|
||||
-{
|
||||
- return ctf_link_add (fp, ctf, name, NULL, 0);
|
||||
+ return ctf_link_add_ctf_internal (fp, ctf, NULL, name);
|
||||
}
|
||||
|
||||
/* Lazily open a CTF archive for linking, if not already open.
|
||||
@@ -238,12 +204,12 @@ ctf_link_lazy_open (ctf_dict_t *fp, ctf_link_input_t *input)
|
||||
return 1;
|
||||
|
||||
/* See ctf_link_add_ctf. */
|
||||
-#if defined (PIC) || !NOBFD
|
||||
- input->clin_arc = ctf_open (input->clin_filename, NULL, &err);
|
||||
-#else
|
||||
+#if NOBFD
|
||||
ctf_err_warn (fp, 0, ECTF_NEEDSBFD, _("cannot open %s lazily"),
|
||||
input->clin_filename);
|
||||
return ctf_set_errno (fp, ECTF_NEEDSBFD);
|
||||
+#else
|
||||
+ input->clin_arc = ctf_open (input->clin_filename, NULL, &err);
|
||||
#endif
|
||||
|
||||
/* Having no CTF sections is not an error. We just don't need to do
|
||||
diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c
|
||||
index 8c35a2b2489..f04c278344c 100644
|
||||
--- a/libctf/ctf-serialize.c
|
||||
+++ b/libctf/ctf-serialize.c
|
||||
@@ -74,6 +74,12 @@ ctf_symtab_skippable (ctf_link_sym_t *sym)
|
||||
|| sym->st_shndx == SHN_UNDEF
|
||||
|| strcmp (sym->st_name, "_START_") == 0
|
||||
|| strcmp (sym->st_name, "_END_") == 0
|
||||
+ || strcmp (sym->st_name, "_DYNAMIC") == 0
|
||||
+ || strcmp (sym->st_name, "_GLOBAL_OFFSET_TABLE_") == 0
|
||||
+ || strcmp (sym->st_name, "_PROCEDURE_LINKAGE_TABLE_") == 0
|
||||
+ || strcmp (sym->st_name, "_edata") == 0
|
||||
+ || strcmp (sym->st_name, "_end") == 0
|
||||
+ || strcmp (sym->st_name, "_etext") == 0
|
||||
|| (sym->st_type == STT_OBJECT && sym->st_shndx == SHN_EXTABS
|
||||
&& sym->st_value == 0));
|
||||
}
|
||||
diff --git a/libctf/testsuite/config/default.exp b/libctf/testsuite/config/default.exp
|
||||
index f24482620b6..d5e51f418ca 100644
|
||||
--- a/libctf/testsuite/config/default.exp
|
||||
+++ b/libctf/testsuite/config/default.exp
|
||||
@@ -34,6 +34,10 @@ if ![info exists as] then {
|
||||
set as [findfile $base_dir/../gas/as-new $base_dir/../gas/as-new [transform as]]
|
||||
}
|
||||
|
||||
+if ![info exists objdump] then {
|
||||
+ set objdump [findfile $base_dir/../binutils/objdump]
|
||||
+}
|
||||
+
|
||||
remote_exec host "mkdir -p tmpdir"
|
||||
|
||||
# Make symlinks from tmpdir/libctf to the linker and assembler in the
|
||||
@@ -63,10 +67,12 @@ if {![info exists CFLAGS_FOR_TARGET]} {
|
||||
if ![info exists AR] then {
|
||||
set AR [findfile $base_dir/../binutils/ar]
|
||||
}
|
||||
-
|
||||
if {![info exists OBJDUMP]} {
|
||||
set OBJDUMP [findfile $base_dir/../binutils/objdump]
|
||||
}
|
||||
+if ![info exists OBJDUMPFLAGS] then {
|
||||
+ set OBJDUMPFLAGS {}
|
||||
+}
|
||||
|
||||
# load the utility procedures
|
||||
load_lib ctf-lib.exp
|
||||
diff --git a/libctf/testsuite/lib/ctf-lib.exp b/libctf/testsuite/lib/ctf-lib.exp
|
||||
index 64d2a40ad9f..4df6619606b 100644
|
||||
--- a/libctf/testsuite/lib/ctf-lib.exp
|
||||
+++ b/libctf/testsuite/lib/ctf-lib.exp
|
||||
@@ -20,6 +20,51 @@
|
||||
|
||||
load_file $srcdir/../../ld/testsuite/lib/ld-lib.exp
|
||||
|
||||
+# Returns true if the target linker deduplicates CTF.
|
||||
+proc check_ctf_linker_dedup { } {
|
||||
+ global ctf_linker_dedup_saved
|
||||
+
|
||||
+ if {![info exists ctf_linker_dedup_saved]} {
|
||||
+ set ctf_linker_dedup_saved 0
|
||||
+
|
||||
+ if ([check_ctf_available]) {
|
||||
+ global objdump srcdir
|
||||
+
|
||||
+ set basename "tmpdir/ctf_linker_dedups[pid]"
|
||||
+ compile_one_cc $srcdir/libctf-lookup/ambiguous-struct-A.c ${basename}-A.o "-gctf -fPIC -c"
|
||||
+ compile_one_cc $srcdir/libctf-lookup/ambiguous-struct-B.c ${basename}-B.o "-gctf -fPIC -c"
|
||||
+ compile_one_cc "${basename}-A.o ${basename}-B.o" $basename.so "-gctf -fPIC -shared"
|
||||
+ if {! [remote_file host exists $basename.so] } {
|
||||
+ return 0
|
||||
+ }
|
||||
+
|
||||
+ # Don't use run_host_cmd: it dumps the entire output into the log,
|
||||
+ # even on success.
|
||||
+ set cmdret [remote_exec host [concat sh -c [list "$objdump --ctf $basename.so >dump.out 2>dump.err"]] "" "/dev/null"]
|
||||
+ set cmdret [lindex $cmdret 0]
|
||||
+ remote_upload host "dump.out"
|
||||
+ remote_upload host "dump.err"
|
||||
+ set dump_out [prune_warnings [file_contents "dump.out"]]
|
||||
+ set dump_err [prune_warnings [file_contents "dump.err"]]
|
||||
+ remote_file host delete "dump.out" "dump.err"
|
||||
+ remote_file build delete "dump.out" "dump.err"
|
||||
+
|
||||
+ if {$cmdret != 0} {
|
||||
+ verbose -log "failed with $cmdret: stderr: $dump_err"
|
||||
+ verbose -log "output: $dump_out"
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ remote_file host delete $basename.so ${basename}-A.o ${basename}-B.o
|
||||
+ if [regexp {CTF archive member: } $dump_out] {
|
||||
+ set ctf_linker_dedup_saved 1
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return $ctf_linker_dedup_saved
|
||||
+}
|
||||
+
|
||||
+
|
||||
proc run_native_host_cmd { command } {
|
||||
global link_output
|
||||
global ld
|
||||
diff --git a/libctf/testsuite/libctf-lookup/lookup.exp b/libctf/testsuite/libctf-lookup/lookup.exp
|
||||
index a8b09c2df78..d15c315729d 100644
|
||||
--- a/libctf/testsuite/libctf-lookup/lookup.exp
|
||||
+++ b/libctf/testsuite/libctf-lookup/lookup.exp
|
||||
@@ -28,6 +28,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
+if {![check_ctf_linker_dedup]} {
|
||||
+ unsupported "no CTF deduplication support in the linker"
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
if {[info exists env(LC_ALL)]} {
|
||||
set old_lc_all $env(LC_ALL)
|
||||
}
|
||||
diff --git a/libctf/testsuite/libctf-regression/libctf-repeat-cu.exp b/libctf/testsuite/libctf-regression/libctf-repeat-cu.exp
|
||||
index e29cf63fce9..7c19fe8f6a7 100644
|
||||
--- a/libctf/testsuite/libctf-regression/libctf-repeat-cu.exp
|
||||
+++ b/libctf/testsuite/libctf-regression/libctf-repeat-cu.exp
|
||||
@@ -37,6 +37,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
+if {![check_ctf_linker_dedup]} {
|
||||
+ unsupported "no CTF deduplication support in the linker"
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
if {[info exists env(LC_ALL)]} {
|
||||
set old_lc_all $env(LC_ALL)
|
||||
}
|
||||
diff --git a/libctf/testsuite/libctf-regression/regression.exp b/libctf/testsuite/libctf-regression/regression.exp
|
||||
index e4b63473691..0270cca0cba 100644
|
||||
--- a/libctf/testsuite/libctf-regression/regression.exp
|
||||
+++ b/libctf/testsuite/libctf-regression/regression.exp
|
||||
@@ -23,6 +23,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
+if {![check_ctf_linker_dedup]} {
|
||||
+ unsupported "no CTF deduplication support in the linker"
|
||||
+ return 0
|
||||
+}
|
||||
+
|
||||
if ![is_elf_format] {
|
||||
unsupported "CTF needs bfd changes to be emitted on non-ELF"
|
||||
return 0
|
||||
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
|
||||
index 2ae5626ed2e..b072d0bed52 100644
|
||||
--- a/libiberty/ChangeLog
|
||||
|
Reference in New Issue
Block a user