import CS gcc-toolset-14-binutils-2.41-5.el9
This commit is contained in:
		
							parent
							
								
									0845853341
								
							
						
					
					
						commit
						885cad8096
					
				
							
								
								
									
										293
									
								
								SOURCES/binutils-LTO-plugin-common-symbols.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										293
									
								
								SOURCES/binutils-LTO-plugin-common-symbols.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,293 @@ | ||||
| From a6f8fe0a9e9cbe871652e46ba7c22d5e9fb86208 Mon Sep 17 00:00:00 2001 | ||||
| From: "H.J. Lu" <hjl.tools@gmail.com> | ||||
| Date: Wed, 14 Aug 2024 20:50:02 -0700 | ||||
| Subject: [PATCH] lto: Don't include unused LTO archive members in output | ||||
| 
 | ||||
| When plugin_object_p is called by elf_link_is_defined_archive_symbol to | ||||
| check if a symbol in archive is a real definition, set archive member | ||||
| plugin_format to bfd_plugin_yes_unused to avoid including the unused LTO | ||||
| archive members in linker output.  When plugin_object_p is called as | ||||
| known used, call plugin claim_file if plugin_format is bfd_plugin_unknown | ||||
| or bfd_plugin_yes_unused. | ||||
| 
 | ||||
| To get the proper support for archives with LTO common symbols with GCC, | ||||
| the GCC fix for | ||||
| 
 | ||||
| https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116361 | ||||
| 
 | ||||
| is needed. | ||||
| 
 | ||||
| bfd/ | ||||
| 
 | ||||
| 	PR ld/32083 | ||||
| 	* archures.c (bfd_arch_get_compatible): Treat bfd_plugin_yes_unused | ||||
| 	the same as bfd_plugin_yes. | ||||
| 	* elflink.c (elf_link_is_defined_archive_symbol): Likewise. | ||||
| 	* bfd.c (bfd_plugin_format): Add bfd_plugin_yes_unused. | ||||
| 	* plugin.c (try_claim): Try claim_file_v2 first. | ||||
| 	* bfd-in2.h: Regenerated. | ||||
| 
 | ||||
| ld/ | ||||
| 
 | ||||
| 	PR ld/32083 | ||||
| 	* plugin.c (plugin_call_claim_file): Add an argument to return | ||||
| 	if LDPT_REGISTER_CLAIM_FILE_HOOK_V2 is used. | ||||
| 	(plugin_object_p): When KNOWN_USED is false, we call plugin | ||||
| 	claim_file if plugin_format is bfd_plugin_unknown and set | ||||
| 	plugin_format to bfd_plugin_yes_unused on LTO object.  When | ||||
| 	KNOWN_USED is true, we call plugin claim_file if plugin_format | ||||
| 	is bfd_plugin_unknown or bfd_plugin_yes_unused. | ||||
| 
 | ||||
| commit c839a44c39161c9932d58c28c2949ab3bb94ea6f | ||||
| Author: H.J. Lu <hjl.tools@gmail.com> | ||||
| Date:   Sun Sep 8 17:27:00 2024 -0700 | ||||
| 
 | ||||
|     bfd: Pass true to ld_plugin_object_p | ||||
|      | ||||
|     Since linker calls bfd_plugin_object_p, which calls ld_plugin_object_p, | ||||
|     only for command-line input objects, pass true to ld_plugin_object_p so | ||||
|     that the same input IR file won't be included twice if the new LTO hook, | ||||
|     LDPT_REGISTER_CLAIM_FILE_HOOK_V2 isn't used. | ||||
|      | ||||
|             PR ld/32153 | ||||
|             * plugin.c (bfd_plugin_object_p): Pass true to ld_plugin_object_p. | ||||
|      | ||||
| diff -rup binutils.orig/bfd/archures.c binutils-2.41/bfd/archures.c
 | ||||
| --- binutils.orig/bfd/archures.c	2025-02-20 16:28:36.178833667 +0000
 | ||||
| +++ binutils-2.41/bfd/archures.c	2025-02-20 20:20:34.505422221 +0000
 | ||||
| @@ -931,6 +931,7 @@ bfd_arch_get_compatible (const bfd *abfd
 | ||||
|       to assume that they know what they are doing.  */ | ||||
|    if (accept_unknowns | ||||
|        || ubfd->plugin_format == bfd_plugin_yes | ||||
| +      || ubfd->plugin_format == bfd_plugin_yes_unused
 | ||||
|        || strcmp (bfd_get_target (ubfd), "binary") == 0) | ||||
|      return kbfd->arch_info; | ||||
|    return NULL; | ||||
| diff -rup binutils.orig/bfd/bfd-in2.h binutils-2.41/bfd/bfd-in2.h
 | ||||
| --- binutils.orig/bfd/bfd-in2.h	2025-02-20 16:28:36.284833929 +0000
 | ||||
| +++ binutils-2.41/bfd/bfd-in2.h	2025-02-20 20:21:33.281519583 +0000
 | ||||
| @@ -1912,7 +1912,8 @@ enum bfd_plugin_format
 | ||||
|    { | ||||
|      bfd_plugin_unknown = 0, | ||||
|      bfd_plugin_yes = 1, | ||||
| -    bfd_plugin_no = 2
 | ||||
| +    bfd_plugin_yes_unused = 2,
 | ||||
| +    bfd_plugin_no = 3
 | ||||
|    }; | ||||
|   | ||||
|  struct bfd_build_id | ||||
| diff -rup binutils.orig/bfd/bfd.c binutils-2.41/bfd/bfd.c
 | ||||
| --- binutils.orig/bfd/bfd.c	2025-02-20 16:28:36.178833667 +0000
 | ||||
| +++ binutils-2.41/bfd/bfd.c	2025-02-20 20:20:12.473385721 +0000
 | ||||
| @@ -57,7 +57,8 @@ EXTERNAL
 | ||||
|  .  { | ||||
|  .    bfd_plugin_unknown = 0, | ||||
|  .    bfd_plugin_yes = 1, | ||||
| -.    bfd_plugin_no = 2
 | ||||
| +.    bfd_plugin_yes_unused = 2,
 | ||||
| +.    bfd_plugin_no = 3
 | ||||
|  .  }; | ||||
|  . | ||||
|  .struct bfd_build_id | ||||
| diff -rup binutils.orig/bfd/elflink.c binutils-2.41/bfd/elflink.c
 | ||||
| --- binutils.orig/bfd/elflink.c	2025-02-20 16:28:36.284833929 +0000
 | ||||
| +++ binutils-2.41/bfd/elflink.c	2025-02-20 20:21:00.217464813 +0000
 | ||||
| @@ -3581,6 +3581,7 @@ elf_link_is_defined_archive_symbol (bfd
 | ||||
|       object file is an IR object, give linker LTO plugin a chance to | ||||
|       get the correct symbol table.  */ | ||||
|    if (abfd->plugin_format == bfd_plugin_yes | ||||
| +      || abfd->plugin_format == bfd_plugin_yes_unused
 | ||||
|  #if BFD_SUPPORTS_PLUGINS | ||||
|        || (abfd->plugin_format == bfd_plugin_unknown | ||||
|  	  && bfd_link_plugin_object_p (abfd)) | ||||
| diff -rup binutils.orig/bfd/plugin.c binutils-2.41/bfd/plugin.c
 | ||||
| --- binutils.orig/bfd/plugin.c	2025-02-20 16:28:36.241833823 +0000
 | ||||
| +++ binutils-2.41/bfd/plugin.c	2025-02-20 20:14:43.601840910 +0000
 | ||||
| @@ -329,13 +329,23 @@ try_claim (bfd *abfd)
 | ||||
|    struct ld_plugin_input_file file; | ||||
|   | ||||
|    file.handle = abfd; | ||||
| -  if (bfd_plugin_open_input (abfd, &file)
 | ||||
| -      && current_plugin->claim_file)
 | ||||
| +  if (bfd_plugin_open_input (abfd, &file))
 | ||||
|      { | ||||
| -      current_plugin->claim_file (&file, &claimed);
 | ||||
| -      bfd_plugin_close_file_descriptor ((abfd->my_archive != NULL
 | ||||
| -					 ? abfd : NULL),
 | ||||
| -					file.fd);
 | ||||
| +      bool claim_file_called = false;
 | ||||
| +      if (current_plugin->claim_file_v2)
 | ||||
| +	{
 | ||||
| +	  current_plugin->claim_file_v2 (&file, &claimed, false);
 | ||||
| +	  claim_file_called = true;
 | ||||
| +	}
 | ||||
| +      else if (current_plugin->claim_file)
 | ||||
| +	{
 | ||||
| +	  current_plugin->claim_file (&file, &claimed);
 | ||||
| +	  claim_file_called = true;
 | ||||
| +	}
 | ||||
| +      if (claim_file_called)
 | ||||
| +	bfd_plugin_close_file_descriptor ((abfd->my_archive != NULL
 | ||||
| +					   ? abfd : NULL),
 | ||||
| +					  file.fd);
 | ||||
|      } | ||||
|   | ||||
|    return claimed; | ||||
| @@ -586,8 +596,12 @@ load_plugin (bfd *abfd)
 | ||||
|  static bfd_cleanup | ||||
|  bfd_plugin_object_p (bfd *abfd) | ||||
|  { | ||||
| +  /* Since ld_plugin_object_p is called only for linker command-line input
 | ||||
| +     objects, pass true to ld_plugin_object_p so that the same input IR
 | ||||
| +     file won't be included twice if the LDPT_REGISTER_CLAIM_FILE_HOOK_V2
 | ||||
| +     isn't used.  */
 | ||||
|    if (ld_plugin_object_p) | ||||
| -    return ld_plugin_object_p (abfd, false);
 | ||||
| +    return ld_plugin_object_p (abfd, true);
 | ||||
|   | ||||
|    if (abfd->plugin_format == bfd_plugin_unknown && !load_plugin (abfd)) | ||||
|      return NULL; | ||||
| diff -rup binutils.orig/ld/plugin.c binutils-2.41/ld/plugin.c
 | ||||
| --- binutils.orig/ld/plugin.c	2025-02-20 16:28:37.210836204 +0000
 | ||||
| +++ binutils-2.41/ld/plugin.c	2025-02-20 20:23:41.314731681 +0000
 | ||||
| @@ -773,14 +773,17 @@ get_symbols (const void *handle, int nsy
 | ||||
|        if (syms[n].def != LDPK_UNDEF && syms[n].def != LDPK_WEAKUNDEF) | ||||
|  	{ | ||||
|  	  blhe = h; | ||||
| -	  if (blhe && link_info.wrap_hash != NULL)
 | ||||
| +	  /* Check if a symbol is a wrapper symbol.  */
 | ||||
| +	  if (blhe)
 | ||||
|  	    { | ||||
| -	      /* Check if a symbol is a wrapper symbol.  */
 | ||||
| -	      struct bfd_link_hash_entry *unwrap
 | ||||
| -		= unwrap_hash_lookup (&link_info, (bfd *) abfd, blhe);
 | ||||
| -	      if (unwrap && unwrap != h)
 | ||||
| -		wrap_status = wrapper;
 | ||||
| -	     }
 | ||||
| +	      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 | ||||
|  	{ | ||||
| @@ -1159,10 +1162,11 @@ plugin_load_plugins (void)
 | ||||
|  /* Call 'claim file' hook for all plugins.  */ | ||||
|  static int | ||||
|  plugin_call_claim_file (const struct ld_plugin_input_file *file, int *claimed, | ||||
| -			bool known_used)
 | ||||
| +			int *claim_file_handler_v2, bool known_used)
 | ||||
|  { | ||||
|    plugin_t *curplug = plugins_list; | ||||
|    *claimed = false; | ||||
| +  *claim_file_handler_v2 = false;
 | ||||
|    while (curplug && !*claimed) | ||||
|      { | ||||
|        if (curplug->claim_file_handler) | ||||
| @@ -1171,7 +1175,11 @@ plugin_call_claim_file (const struct ld_
 | ||||
|   | ||||
|  	  called_plugin = curplug; | ||||
|  	  if (curplug->claim_file_handler_v2) | ||||
| -	    rv = (*curplug->claim_file_handler_v2) (file, claimed, known_used);
 | ||||
| +	    {
 | ||||
| +	      rv = (*curplug->claim_file_handler_v2) (file, claimed,
 | ||||
| +						      known_used);
 | ||||
| +	      *claim_file_handler_v2 = true;
 | ||||
| +	    }
 | ||||
|  	  else | ||||
|  	    rv = (*curplug->claim_file_handler) (file, claimed); | ||||
|  	  called_plugin = NULL; | ||||
| @@ -1180,6 +1188,7 @@ plugin_call_claim_file (const struct ld_
 | ||||
|  	} | ||||
|        curplug = curplug->next; | ||||
|      } | ||||
| +
 | ||||
|    return plugin_error_p () ? -1 : 0; | ||||
|  } | ||||
|   | ||||
| @@ -1207,7 +1216,7 @@ plugin_cleanup (bfd *abfd ATTRIBUTE_UNUS
 | ||||
|  static bfd_cleanup | ||||
|  plugin_object_p (bfd *ibfd, bool known_used) | ||||
|  { | ||||
| -  int claimed;
 | ||||
| +  int claimed, claim_file_handler_v2;
 | ||||
|    plugin_input_file_t *input; | ||||
|    struct ld_plugin_input_file file; | ||||
|    bfd *abfd; | ||||
| @@ -1216,12 +1225,17 @@ plugin_object_p (bfd *ibfd, bool known_u
 | ||||
|    if ((ibfd->flags & BFD_PLUGIN) != 0) | ||||
|      return NULL; | ||||
|   | ||||
| -  if (ibfd->plugin_format != bfd_plugin_unknown)
 | ||||
| +  /* When KNOWN_USED is false, we call plugin claim_file if plugin_format
 | ||||
| +     is bfd_plugin_unknown and set plugin_format to bfd_plugin_yes_unused
 | ||||
| +     on LTO object.  When KNOWN_USED is true, we call plugin claim_file
 | ||||
| +     if plugin_format is bfd_plugin_unknown or bfd_plugin_yes_unused.  */
 | ||||
| +  if (ibfd->plugin_format != bfd_plugin_unknown
 | ||||
| +      && (!known_used || ibfd->plugin_format != bfd_plugin_yes_unused))
 | ||||
|      { | ||||
| -      if (ibfd->plugin_format == bfd_plugin_yes)
 | ||||
| -	return plugin_cleanup;
 | ||||
| -      else
 | ||||
| +      if (ibfd->plugin_format == bfd_plugin_no)
 | ||||
|  	return NULL; | ||||
| +      else
 | ||||
| +	return plugin_cleanup;
 | ||||
|      } | ||||
|   | ||||
|    /* We create a dummy BFD, initially empty, to house whatever symbols | ||||
| @@ -1257,7 +1271,8 @@ plugin_object_p (bfd *ibfd, bool known_u
 | ||||
|   | ||||
|    claimed = 0; | ||||
|   | ||||
| -  if (plugin_call_claim_file (&file, &claimed, known_used))
 | ||||
| +  if (plugin_call_claim_file (&file, &claimed, &claim_file_handler_v2,
 | ||||
| +			      known_used))
 | ||||
|      einfo (_("%F%P: %s: plugin reported error claiming file\n"), | ||||
|  	   plugin_error_plugin ()); | ||||
|   | ||||
| @@ -1277,7 +1292,13 @@ plugin_object_p (bfd *ibfd, bool known_u
 | ||||
|   | ||||
|    if (claimed) | ||||
|      { | ||||
| -      ibfd->plugin_format = bfd_plugin_yes;
 | ||||
| +      /* Set plugin_format to bfd_plugin_yes_unused if KNOWN_USED is
 | ||||
| +	 false for plugin claim_file_v2 to avoid including the unused
 | ||||
| +	 LTO archive members in linker output.  */
 | ||||
| +      if (known_used || !claim_file_handler_v2)
 | ||||
| +	ibfd->plugin_format = bfd_plugin_yes;
 | ||||
| +      else
 | ||||
| +	ibfd->plugin_format = bfd_plugin_yes_unused;
 | ||||
|        ibfd->plugin_dummy_bfd = abfd; | ||||
|        bfd_make_readable (abfd); | ||||
|        abfd->no_export = ibfd->no_export; | ||||
| @@ -1363,14 +1384,17 @@ plugin_call_cleanup (void)
 | ||||
|      { | ||||
|        if (curplug->cleanup_handler && !curplug->cleanup_done) | ||||
|  	{ | ||||
| -	  enum ld_plugin_status rv;
 | ||||
| -	  curplug->cleanup_done = true;
 | ||||
| -	  called_plugin = curplug;
 | ||||
| -	  rv = (*curplug->cleanup_handler) ();
 | ||||
| -	  called_plugin = NULL;
 | ||||
| -	  if (rv != LDPS_OK)
 | ||||
| -	    info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
 | ||||
| -		      curplug->name, rv);
 | ||||
| +	  if (1)
 | ||||
| +	    {
 | ||||
| +	      enum ld_plugin_status rv;
 | ||||
| +	      curplug->cleanup_done = true;
 | ||||
| +	      called_plugin = curplug;
 | ||||
| +	      rv = (*curplug->cleanup_handler) ();
 | ||||
| +	      called_plugin = NULL;
 | ||||
| +	      if (rv != LDPS_OK)
 | ||||
| +		info_msg (_("%P: %s: error in plugin cleanup: %d (ignored)\n"),
 | ||||
| +			  curplug->name, rv);
 | ||||
| +	    }
 | ||||
|  	  dlclose (curplug->dlhandle); | ||||
|  	} | ||||
|        curplug = curplug->next; | ||||
							
								
								
									
										47
									
								
								SOURCES/binutils-PPC64-LD-ASSERT.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								SOURCES/binutils-PPC64-LD-ASSERT.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| diff -rup binutils.orig/gold/Makefile.am binutils-2.41/gold/Makefile.am
 | ||||
| --- binutils.orig/gold/Makefile.am	2025-02-24 09:38:42.201892521 +0000
 | ||||
| +++ binutils-2.41/gold/Makefile.am	2025-02-24 11:02:18.892145832 +0000
 | ||||
| @@ -207,7 +207,7 @@ dwp_SOURCES = dwp.cc
 | ||||
|  dwp_DEPENDENCIES = libgold.a $(LIBIBERTY) $(LIBINTL_DEP) | ||||
|  dwp_LDADD = libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) $(THREADLIBS) \ | ||||
|  	$(LIBDL) $(ZLIB) $(ZSTD_LIBS) $(JANSSON_LIBS) | ||||
| -dwp_LDFLAGS = $(GOLD_LDFLAGS)
 | ||||
| +dwp_LDFLAGS = $(GOLD_LDFLAGS) -fno-lto
 | ||||
|   | ||||
|  CONFIG_STATUS_DEPENDENCIES = $(srcdir)/../bfd/development.sh | ||||
|   | ||||
| diff -rup binutils.orig/gold/Makefile.in binutils-2.41/gold/Makefile.in
 | ||||
| --- binutils.orig/gold/Makefile.in	2025-02-24 09:38:42.201892521 +0000
 | ||||
| +++ binutils-2.41/gold/Makefile.in	2025-02-24 11:02:11.812124673 +0000
 | ||||
| @@ -835,7 +835,7 @@ dwp_DEPENDENCIES = libgold.a $(LIBIBERTY
 | ||||
|  dwp_LDADD = libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) $(THREADLIBS) \ | ||||
|  	$(LIBDL) $(ZLIB) $(ZSTD_LIBS) $(JANSSON_LIBS) | ||||
|   | ||||
| -dwp_LDFLAGS = $(GOLD_LDFLAGS)
 | ||||
| +dwp_LDFLAGS = $(GOLD_LDFLAGS) -fno-lto
 | ||||
|  CONFIG_STATUS_DEPENDENCIES = $(srcdir)/../bfd/development.sh | ||||
|  POTFILES = $(CCFILES) $(HFILES) $(TARGETSOURCES) | ||||
|  @GCC_TRUE@@NATIVE_LINKER_TRUE@ld1_SOURCES = $(sources_var) | ||||
| diff -rup binutils.orig/ld/ldlang.c binutils-2.41/ld/ldlang.c
 | ||||
| --- binutils.orig/ld/ldlang.c	2025-02-24 09:38:42.413893857 +0000
 | ||||
| +++ binutils-2.41/ld/ldlang.c	2025-02-24 09:39:34.394224393 +0000
 | ||||
| @@ -7947,6 +7947,19 @@ lang_list_remove_tail (lang_statement_li
 | ||||
|  		       lang_statement_list_type *origlist) | ||||
|  { | ||||
|    union lang_statement_union **savetail; | ||||
| +
 | ||||
| +  if (getenv ("LD_DEBUG_NEVER") != NULL)
 | ||||
| +    {
 | ||||
| +      /* FIXME: RHEL-49348: For some reason building this function for the
 | ||||
| +	 PowerPC architecture on RHEL-10 is resulting in a linker that
 | ||||
| +	 triggers the ASSERT below - because the origlist pointer is
 | ||||
| +	 corrupt.  These fprintf statements, even if they will never be
 | ||||
| +	 used, are enough to cause the compiler to build the function
 | ||||
| +	 correctly, thus avoiding the problem.  */
 | ||||
| +      fprintf (stderr, "origlist %p destlist %p\n", origlist, destlist);
 | ||||
| +      fprintf (stderr, "heads: %p %p\n", origlist->head, destlist->head);
 | ||||
| +    }
 | ||||
| +
 | ||||
|    /* Check that ORIGLIST really is an earlier state of DESTLIST.  */ | ||||
|    ASSERT (origlist->head == destlist->head); | ||||
|    savetail = origlist->tail; | ||||
| @ -9,7 +9,7 @@ BuildRequires: scl-utils-build | ||||
| Summary: A GNU collection of binary utilities | ||||
| Name: %{?scl_prefix}binutils | ||||
| Version: 2.41 | ||||
| Release: 3%{?dist} | ||||
| Release: 5%{?dist} | ||||
| 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 | ||||
| 
 | ||||
| @ -344,6 +344,13 @@ Patch39: binutils-multilib.am.patch | ||||
| # Lifetime: Fixed in 2.42 | ||||
| Patch40: binutils-Intel-APX-CODE_6_GOTTPOFF.patch | ||||
| 
 | ||||
| Patch41: binutils-LTO-plugin-common-symbols.patch | ||||
| 
 | ||||
| # Purpose:  Workaround for an unresolved bug in ppc gcc | ||||
| #           which generates bad code in the linker.  cf RHEL-49348 | ||||
| # Lifetime: TEMPORARY | ||||
| Patch98: binutils-PPC64-LD-ASSERT.patch | ||||
| 
 | ||||
| # Purpose:  Suppress the x86 linker's p_align-1 tests due to kernel bug on CentOS-10 | ||||
| # Lifetime: TEMPORARY | ||||
| Patch99: binutils-suppress-ld-align-tests.patch | ||||
| @ -940,7 +947,12 @@ build_target() | ||||
| 
 | ||||
| %if %{with docs} | ||||
|     # Because of parallel building, info has to be made after all. | ||||
|     %make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils all  | ||||
| 
 | ||||
|     # FIXME: Setting CXXFLAGS is a workaround for the PPC64 compiler bug (cf RHEL-49348). | ||||
|     # It allows the binutils to build using a version of gcc-toolset-14-ld that is already affected by the bug. | ||||
|     # Once built and installed into the buildroot, this fix will no longer be needed. | ||||
|     # Although whilst the bug in the PPC64 compiler remains Patch98 will still be needed. | ||||
|     %make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils all CXXFLAGS="$RPM_OPT_FLAGS -fno-lto" | ||||
|     %make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils info | ||||
| %else | ||||
|     %make_build %{_smp_mflags} tooldir=%{_prefix} CC=%gcc_for_binutils CXX=%gxx_for_binutils MAKEINFO=true all | ||||
| @ -1491,6 +1503,12 @@ exit 0 | ||||
| 
 | ||||
| #---------------------------------------------------------------------------- | ||||
| %changelog | ||||
| * Mon Feb 24 2025 Nick Clifton  <nickc@redhat.com> - 2.41-5 | ||||
| - Fix assertion failure in ppc64 ld due to compiler miscompilation. | ||||
| 
 | ||||
| * Thu Feb 20 2025 Nick Clifton  <nickc@redhat.com> - 2.41-4 | ||||
| - Backport fixes for PR 32082 and PR 32153 in order to fix the PR 20267 linker tests.  (RHEL-80372) | ||||
| 
 | ||||
| * Fri Aug 16 2024 Nick Clifton  <nickc@redhat.com> - 2.41-3 | ||||
| - Fix restoring contect to gprofng.rc file.  (RHEL-54563) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user