import UBI gcc-toolset-15-binutils-2.44-7.el10_1.1

This commit is contained in:
eabdullin 2026-01-06 10:58:34 +00:00
parent 3523140290
commit 349e70319e
9 changed files with 4 additions and 463 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
/binutils-with-gold-2.44.tar.xz
binutils-with-gold-2.44.tar.xz

View File

@ -1,154 +0,0 @@
From 3221c470f0765886a49a1a3d2ec602e4104a377b Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Fri, 2 Aug 2024 19:52:00 -0700
Subject: [PATCH] LTO: Restore the wrapper symbol check for standard function
Call unwrap_hash_lookup to restore the wrapper symbol check for standard
function since reference to standard function may not show up in LTO
symbol table:
[hjl@gnu-tgl-3 pr31956-3]$ nm foo.o
00000000 T main
U __real_malloc
00000000 T __wrap_malloc
[hjl@gnu-tgl-3 pr31956-3]$ lto-dump -list foo.o
Type Visibility Size Name
function default 0 malloc
function default 0 __real_malloc
function default 3 main
function default 5 __wrap_malloc
[hjl@gnu-tgl-3 pr31956-3]$ make
gcc -O2 -flto -Wall -c -o foo.o foo.c
gcc -Wl,--wrap=malloc -O2 -flto -Wall -o x foo.o
/usr/local/bin/ld: /tmp/ccsPW0a9.ltrans0.ltrans.o: in function `main':
<artificial>:(.text.startup+0xa): undefined reference to `__wrap_malloc'
collect2: error: ld returned 1 exit status
make: *** [Makefile:22: x] Error 1
[hjl@gnu-tgl-3 pr31956-3]$
Also add a test to verify that the unused wrapper is removed.
PR ld/31956
* plugin.c (get_symbols): Restore the wrapper symbol check for
standard function.
* testsuite/ld-plugin/lto.exp: Run the malloc test and the
unused test.
* testsuite/ld-plugin/pr31956c.c: New file.
* testsuite/ld-plugin/pr31956d.c: New file.
* testsuite/ld-plugin/pr31956d.d: New file.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
---
ld/plugin.c | 14 ++++++++++++--
ld/testsuite/ld-plugin/lto.exp | 16 ++++++++++++++++
ld/testsuite/ld-plugin/pr31956c.c | 19 +++++++++++++++++++
ld/testsuite/ld-plugin/pr31956d.c | 7 +++++++
ld/testsuite/ld-plugin/pr31956d.d | 4 ++++
5 files changed, 58 insertions(+), 2 deletions(-)
create mode 100644 ld/testsuite/ld-plugin/pr31956c.c
create mode 100644 ld/testsuite/ld-plugin/pr31956d.c
create mode 100644 ld/testsuite/ld-plugin/pr31956d.d
diff --git a/ld/plugin.c b/ld/plugin.c
index 03ee9880d10..51c4765cc5b 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -778,8 +778,18 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
{
blhe = h;
/* Check if a symbol is a wrapper symbol. */
- if (blhe && blhe->wrapper_symbol)
- wrap_status = wrapper;
+ if (blhe)
+ {
+ if (blhe->wrapper_symbol)
+ wrap_status = wrapper;
+ else if (link_info.wrap_hash != NULL)
+ {
+ struct bfd_link_hash_entry *unwrap
+ = unwrap_hash_lookup (&link_info, (bfd *) abfd, blhe);
+ if (unwrap != NULL && unwrap != h)
+ wrap_status = wrapper;
+ }
+ }
}
else
{
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index ad59e2abd61..1a8c3736307 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -546,6 +546,22 @@ set lto_link_elf_tests [list \
{} \
"pr31956b" \
] \
+ [list \
+ "PR ld/31956 (malloc)" \
+ "-Wl,--wrap=malloc" \
+ "-O2 -flto" \
+ {pr31956c.c} \
+ {} \
+ "pr31956c" \
+ ] \
+ [list \
+ "PR ld/31956 (unused)" \
+ "-Wl,--wrap=parse_line" \
+ "-O2 -flto" \
+ {pr31956d.c} \
+ {{"nm" {} "pr31956d.d"}} \
+ "pr31956d" \
+ ] \
[list \
"Build pr30281.so" \
"-shared -Wl,--version-script,pr30281.t \
diff --git a/ld/testsuite/ld-plugin/pr31956c.c b/ld/testsuite/ld-plugin/pr31956c.c
new file mode 100644
index 00000000000..4a46b2b49a8
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr31956c.c
@@ -0,0 +1,19 @@
+#include <stdlib.h>
+
+extern void *__real_malloc (size_t);
+
+void *
+__wrap_malloc (size_t n)
+{
+ if (n == 0)
+ return NULL;
+ else
+ return __real_malloc (n);
+};
+
+int
+main (void)
+{
+ void *ptr = malloc (30);
+ return ptr == NULL ? 1 : 0;
+}
diff --git a/ld/testsuite/ld-plugin/pr31956d.c b/ld/testsuite/ld-plugin/pr31956d.c
new file mode 100644
index 00000000000..cb7f2d50643
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr31956d.c
@@ -0,0 +1,7 @@
+void __wrap_parse_line(void) {};
+
+int
+main (void)
+{
+ return 0;
+}
diff --git a/ld/testsuite/ld-plugin/pr31956d.d b/ld/testsuite/ld-plugin/pr31956d.d
new file mode 100644
index 00000000000..b579cdc7353
--- /dev/null
+++ b/ld/testsuite/ld-plugin/pr31956d.d
@@ -0,0 +1,4 @@
+#failif
+#...
+[0-9a-f]+ T .*parse_line
+#...
--
2.45.2

View File

@ -1,180 +0,0 @@
diff -rup binutils.orig/gold/gdb-index.cc binutils-2.34.0/gold/gdb-index.cc
--- binutils.orig/gold/gdb-index.cc 2020-07-24 09:12:29.241306445 +0100
+++ binutils-2.34.0/gold/gdb-index.cc 2020-07-24 09:15:48.332095898 +0100
@@ -817,7 +817,7 @@ Gdb_index_info_reader::get_qualified_nam
void
Gdb_index_info_reader::record_cu_ranges(Dwarf_die* die)
{
- unsigned int shndx;
+ unsigned int shndx = 0;
unsigned int shndx2;
off_t ranges_offset = die->ref_attribute(elfcpp::DW_AT_ranges, &shndx);
diff -rup binutils.orig/gold/layout.cc binutils-2.34.0/gold/layout.cc
--- binutils.orig/gold/layout.cc 2020-07-24 09:12:29.243306433 +0100
+++ binutils-2.34.0/gold/layout.cc 2020-07-24 09:15:11.464320064 +0100
@@ -1986,7 +1986,7 @@ Layout::attach_allocated_section_to_segm
seg_flags |= os->extra_segment_flags();
// Check for --section-start.
- uint64_t addr;
+ uint64_t addr = 0;
bool is_address_set = parameters->options().section_start(os->name(), &addr);
// In general the only thing we really care about for PT_LOAD
diff -rup binutils.orig/binutils/dlltool.c binutils-2.34.0/binutils/dlltool.c
--- binutils.orig/binutils/dlltool.c 2020-07-24 09:12:28.974308069 +0100
+++ binutils-2.34.0/binutils/dlltool.c 2020-07-24 12:09:37.527121295 +0100
@@ -1305,7 +1305,7 @@ run (const char *what, char *args)
int pid, wait_status;
int i;
const char **argv;
- char *errmsg_fmt, *errmsg_arg;
+ char *errmsg_fmt = "", *errmsg_arg = "";
char *temp_base = choose_temp_base ();
inform (_("run: %s %s"), what, args);
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 09:12:32.368287432 +0100
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 12:14:19.842360634 +0100
@@ -28416,9 +28416,12 @@ md_apply_fix (fixS * fixP,
perform relaxation. */
if (value == -2)
{
- newval = md_chars_to_number (buf, THUMB_SIZE);
- newval = 0xbf00; /* NOP encoding T1 */
- md_number_to_chars (buf, newval, THUMB_SIZE);
+ if (fixP->fx_done || !seg->use_rela_p)
+ {
+ newval = md_chars_to_number (buf, THUMB_SIZE);
+ newval = 0xbf00; /* NOP encoding T1 */
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ }
}
else
{
@@ -28631,17 +28634,14 @@ md_apply_fix (fixS * fixP,
case BFD_RELOC_ARM_GOTFUNCDESC:
case BFD_RELOC_ARM_GOTOFFFUNCDESC:
case BFD_RELOC_ARM_FUNCDESC:
- if (arm_fdpic)
- {
- if (fixP->fx_done || !seg->use_rela_p)
- md_number_to_chars (buf, 0, 4);
- }
- else
+ if (!arm_fdpic)
{
as_bad_where (fixP->fx_file, fixP->fx_line,
_("Relocation supported only in FDPIC mode"));
- }
- break;
+ break;
+ }
+ value = 0;
+ /* Fall through. */
#endif
case BFD_RELOC_RVA:
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 12:16:02.099719884 +0100
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 12:34:17.690858328 +0100
@@ -28641,7 +28641,7 @@ md_apply_fix (fixS * fixP,
break;
}
value = 0;
- /* Fall through. */
+ goto fred;
#endif
case BFD_RELOC_RVA:
@@ -28653,6 +28653,7 @@ md_apply_fix (fixS * fixP,
#ifdef TE_PE
case BFD_RELOC_32_SECREL:
#endif
+ fred:
if (fixP->fx_done || !seg->use_rela_p)
#ifdef TE_WINCE
/* For WinCE we only do this for pcrel fixups. */
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 13:28:26.926553452 +0100
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 13:31:57.835215763 +0100
@@ -28416,12 +28416,8 @@ md_apply_fix (fixS * fixP,
perform relaxation. */
if (value == -2)
{
- if (fixP->fx_done || !seg->use_rela_p)
- {
- newval = md_chars_to_number (buf, THUMB_SIZE);
- newval = 0xbf00; /* NOP encoding T1 */
- md_number_to_chars (buf, newval, THUMB_SIZE);
- }
+ newval = 0xbf00; /* NOP encoding T1 */
+ goto jim;
}
else
{
@@ -28432,6 +28428,7 @@ md_apply_fix (fixS * fixP,
{
newval = md_chars_to_number (buf, THUMB_SIZE);
newval |= ((value & 0x3e) << 2) | ((value & 0x40) << 3);
+ jim:
md_number_to_chars (buf, newval, THUMB_SIZE);
}
}
diff -rup binutils.orig/binutils/mclex.c binutils-2.34.0/binutils/mclex.c
--- binutils.orig/binutils/mclex.c 2020-07-24 13:28:26.297557441 +0100
+++ binutils-2.34.0/binutils/mclex.c 2020-07-24 14:46:53.587940149 +0100
@@ -207,7 +207,7 @@ enum_severity (int e)
static void
mc_add_keyword_ascii (const char *sz, int rid, const char *grp, rc_uint_type nv, const char *sv)
{
- unichar *usz, *usv = NULL;
+ unichar *usz = NULL, *usv = NULL;
rc_uint_type usz_len;
unicode_from_codepage (&usz_len, &usz, sz, CP_ACP);
diff -rup binutils.orig/binutils/windmc.c binutils-2.34.0/binutils/windmc.c
--- binutils.orig/binutils/windmc.c 2020-07-24 13:28:26.279557556 +0100
+++ binutils-2.34.0/binutils/windmc.c 2020-07-24 14:48:05.460477478 +0100
@@ -338,7 +338,7 @@ mc_add_node_lang (mc_node *root, const m
static char *
convert_unicode_to_ACP (const unichar *usz)
{
- char *s;
+ char *s = NULL;
rc_uint_type l;
if (! usz)
@@ -607,10 +607,10 @@ mc_generate_bin_item (mc_node_lang *n, r
else
{
rc_uint_type txt_len, l;
- char *cvt_txt;
+ char *cvt_txt = NULL;
codepage_from_unicode( &l, n->message, &cvt_txt, n->lang->lang_info.wincp);
- if (! cvt_txt)
+ if (cvt_txt == NULL)
fatal ("Failed to convert message to language codepage.\n");
txt_len = strlen (cvt_txt);
if (mcset_automatic_null_termination && txt_len > 0)
@@ -1107,7 +1107,7 @@ main (int argc, char **argv)
/* Load the input file and do code page transformations to UTF16. */
{
- unichar *u;
+ unichar *u = NULL;
rc_uint_type ul;
char *buff;
bfd_size_type flen;
--- binutils.orig/binutils/srconv.c 2020-07-24 15:37:25.847459208 +0100
+++ binutils-2.34.0/binutils/srconv.c 2020-07-24 15:39:12.853773423 +0100
@@ -316,6 +316,7 @@ wr_hd (struct coff_ofile *p)
struct IT_hd hd;
hd.spare1 = 0;
+ hd.spare2 = 0;
if (bfd_get_file_flags (abfd) & EXEC_P)
hd.mt = MTYPE_ABS_LM;
else

View File

@ -27,7 +27,7 @@ Name: %{?scl_prefix}binutils
# The variable %%{source} (see below) should be set to indicate which of these
# origins is being used.
Version: 2.44
Release: 8%{?dist}
Release: 7%{?dist}.1
License: GPL-3.0-or-later AND (GPL-3.0-or-later WITH Bison-exception-2.2) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND BSD-3-Clause AND GFDL-1.3-or-later AND GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-2.0-or-later
URL: https://sourceware.org/binutils
@ -1581,8 +1581,8 @@ exit 0
#----------------------------------------------------------------------------
%changelog
* Tue Nov 25 2025 Nick Clifton <nickc@redhat.com> - 2.44-8
- Fix a potential illegal memory access when linking a corrupt input file. (RHEL-130615)
* Wed Nov 26 2025 Nick Clifton <nickc@redhat.com> - 2.44-7.1
- Fix a potential illegal memory access when linking a corrupt input file. (RHEL-130616)
* Mon Aug 11 2025 Nick Clifton <nickc@redhat.com> - 2.44-7
- Remove uneeded glibc/powerpc patch. (RHEL-100160)

View File

@ -1,70 +0,0 @@
#! /usr/bin/perl
# Compare build logs for the testsuite results regressions.
# $Id$
use strict;
use warnings;
use Data::Dumper;
my $reverse=shift @ARGV if ($ARGV[0]||"") eq "-r";
sub readfile($)
{
my($filename)=@_;
local *F;
open F,$filename or die "open \"$filename\": $!";
my $F=do { local $/; <F>; };
close F or die "close \"$filename\": $!";
return $F;
}
sub writefile($$)
{
my($filename,$content)=@_;
local *F;
open F,">$filename" or die "create \"$filename\": $!";
print F $content or die "write \"$filename\": $!";
close F or die "close \"$filename\": $!";
}
local *DIR;
opendir DIR,"tests" or die "opendir: $!";
my %arch;
for my $name (sort readdir(DIR)) {
next if $name!~/-([^-]*)[.]log$/o;
my $arch=$1;
(my $sum=$name)=~s/log$/sum/ or die;
my $i=readfile "tests/$name";
my $o="";
while ($i=~/\n(Native configuration is.*?Summary ===\n.*?\n)make\Q[\E/gs) {
$o.=$1;
}
# Version string differs.
$o=~s{/builddir/build/BUILD/binutils-[^/]*/+}{}g;
$o=~s{^(Version .*) 20\d{6}$}{$1}mg;
$o=~s{^(\Q../as-new\E) 20\d{6}$}{$1}mg;
$o=~s{^(build-[^/]*/ld/ld-new) 20\d{6}$}{$1}mg;
writefile "tests/$sum",$o;
push @{$arch{$arch}},$sum;
}
closedir DIR or die "closedir: $!";
for (values(%arch)) {
next if 2==@$_;
warn "Single element: ".${$_}[0]."\n" if 1==@$_;
die "Not 2 elements:\n".Dumper($_) if 1!=@$_;
}
system("rm -f tests/gdbcompare-*.diff") and die;
for my $arch (sort keys(%arch)) {
next if 2!=@{$arch{$arch}};
# sub trans { return {"."=>0,"-"=>1}->{($_[0]=~/([-.])[^-.]+[.]\w+$/)[0]}.$_[0]; };
sub trans { return $_[0]; };
my @sorted=sort { my $a1=trans $a; my $b1=trans $b; ($b1 cmp $a1) * ($reverse ? -1 : +1); } @{$arch{$arch}};
do { system $_ and die $_; } for "diff -u tests/'".$sorted[1]."' tests/'".$sorted[0]."' >tests/gdbcompare-'$arch'.sum.diff;true";
}
system("vim tests/gdbcompare-*.sum.diff");

View File

@ -1,14 +0,0 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_stable
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: baseos-qe.koji-build.scratch-build.validation}
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.gate-build-fast-lane.functional}
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.gate-build-slow-lane.functional}

View File

View File

@ -1,25 +0,0 @@
#
# Build/PR gating tests for binutils
#
/common:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/binutils.git
ref: main
name: /plans/build-gating/common
/kernel-rebuild:
plan:
import:
url: https://gitlab.com/redhat/centos-stream/tests/binutils.git
ref: main
name: /plans/build-gating/kernel-rebuild
adjust+:
- because: "Plan to be ran when executed locally, or executed by CI system to gate a build or PR."
when: >-
trigger is defined
and trigger != commit
and trigger != build
enabled: false

View File

@ -1,16 +0,0 @@
---
debuginfo:
ignore:
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/lib64/*.debug
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/lib64/bfd-plugins/*.debug
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/lib64/gprofng/*.debug
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/bin/*.debug
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/lib/*.debug
- /usr/lib/debug/opt/rh/gcc-toolset-15/root/usr/lib/bfd-plugins/*.debug
specname:
primary: filename
unicode:
exclude: ^binutils-\d+.\d+\/gas\/testsuite\/gas\/all\/multibyte.s$