import binutils-2.35.2-37.el9
This commit is contained in:
		
							parent
							
								
									874698ec1c
								
							
						
					
					
						commit
						d22c6ff213
					
				
							
								
								
									
										155
									
								
								SOURCES/binutils-CIE-generation.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								SOURCES/binutils-CIE-generation.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,155 @@ | |||||||
|  | --- binutils.orig/gas/dw2gencfi.c	2022-09-08 13:54:05.539276706 +0100
 | ||||||
|  | +++ binutils-2.35.2/gas/dw2gencfi.c	2022-09-08 14:05:56.128016840 +0100
 | ||||||
|  | @@ -2054,6 +2054,64 @@ output_fde (struct fde_entry *fde, struc
 | ||||||
|  |    symbol_set_value_now (end_address); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +/* Allow these insns to be put in the initial sequence of a CIE.
 | ||||||
|  | +   If J is non-NULL, then compare I and J insns for a match.  */
 | ||||||
|  | +
 | ||||||
|  | +static inline bfd_boolean
 | ||||||
|  | +initial_cie_insn (const struct cfi_insn_data *i, const struct cfi_insn_data *j)
 | ||||||
|  | +{
 | ||||||
|  | +  if (j && i->insn != j->insn)
 | ||||||
|  | +    return FALSE;
 | ||||||
|  | +
 | ||||||
|  | +  switch (i->insn)
 | ||||||
|  | +    {
 | ||||||
|  | +    case DW_CFA_offset:
 | ||||||
|  | +    case DW_CFA_def_cfa:
 | ||||||
|  | +    case DW_CFA_val_offset:
 | ||||||
|  | +      if (j)
 | ||||||
|  | +	{
 | ||||||
|  | +	  if (i->u.ri.reg != j->u.ri.reg)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	  if (i->u.ri.offset != j->u.ri.offset)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	}
 | ||||||
|  | +      break;
 | ||||||
|  | +
 | ||||||
|  | +    case DW_CFA_register:
 | ||||||
|  | +      if (j)
 | ||||||
|  | +	{
 | ||||||
|  | +	  if (i->u.rr.reg1 != j->u.rr.reg1)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	  if (i->u.rr.reg2 != j->u.rr.reg2)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	}
 | ||||||
|  | +      break;
 | ||||||
|  | +
 | ||||||
|  | +    case DW_CFA_def_cfa_register:
 | ||||||
|  | +    case DW_CFA_restore:
 | ||||||
|  | +    case DW_CFA_undefined:
 | ||||||
|  | +    case DW_CFA_same_value:
 | ||||||
|  | +      if (j)
 | ||||||
|  | +	{
 | ||||||
|  | +	  if (i->u.r != j->u.r)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	}
 | ||||||
|  | +      break;
 | ||||||
|  | +
 | ||||||
|  | +    case DW_CFA_def_cfa_offset:
 | ||||||
|  | +      if (j)
 | ||||||
|  | +	{
 | ||||||
|  | +	  if (i->u.i != j->u.i)
 | ||||||
|  | +	    return FALSE;
 | ||||||
|  | +	}
 | ||||||
|  | +      break;
 | ||||||
|  | +
 | ||||||
|  | +    default:
 | ||||||
|  | +      return FALSE;
 | ||||||
|  | +    }
 | ||||||
|  | +  return TRUE;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  static struct cie_entry * | ||||||
|  |  select_cie_for_fde (struct fde_entry *fde, bfd_boolean eh_frame, | ||||||
|  |  		    struct cfi_insn_data **pfirst, int align) | ||||||
|  | @@ -2099,71 +2157,15 @@ select_cie_for_fde (struct fde_entry *fd
 | ||||||
|  |  	   i != cie->last && j != NULL; | ||||||
|  |  	   i = i->next, j = j->next) | ||||||
|  |  	{ | ||||||
|  | -	  if (i->insn != j->insn)
 | ||||||
|  | -	    goto fail;
 | ||||||
|  | -	  switch (i->insn)
 | ||||||
|  | -	    {
 | ||||||
|  | -	    case DW_CFA_advance_loc:
 | ||||||
|  | -	    case DW_CFA_remember_state:
 | ||||||
|  | -	      /* We reached the first advance/remember in the FDE,
 | ||||||
|  | -		 but did not reach the end of the CIE list.  */
 | ||||||
|  | -	      goto fail;
 | ||||||
|  | -
 | ||||||
|  | -	    case DW_CFA_offset:
 | ||||||
|  | -	    case DW_CFA_def_cfa:
 | ||||||
|  | -	      if (i->u.ri.reg != j->u.ri.reg)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      if (i->u.ri.offset != j->u.ri.offset)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      break;
 | ||||||
|  | -
 | ||||||
|  | -	    case DW_CFA_register:
 | ||||||
|  | -	      if (i->u.rr.reg1 != j->u.rr.reg1)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      if (i->u.rr.reg2 != j->u.rr.reg2)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      break;
 | ||||||
|  | -
 | ||||||
|  | -	    case DW_CFA_def_cfa_register:
 | ||||||
|  | -	    case DW_CFA_restore:
 | ||||||
|  | -	    case DW_CFA_undefined:
 | ||||||
|  | -	    case DW_CFA_same_value:
 | ||||||
|  | -	      if (i->u.r != j->u.r)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      break;
 | ||||||
|  | -
 | ||||||
|  | -	    case DW_CFA_def_cfa_offset:
 | ||||||
|  | -	      if (i->u.i != j->u.i)
 | ||||||
|  | -		goto fail;
 | ||||||
|  | -	      break;
 | ||||||
|  | -
 | ||||||
|  | -	    case CFI_escape:
 | ||||||
|  | -	    case CFI_val_encoded_addr:
 | ||||||
|  | -	    case CFI_label:
 | ||||||
|  | -	      /* Don't bother matching these for now.  */
 | ||||||
|  | -	      goto fail;
 | ||||||
|  | -
 | ||||||
|  | -	    default:
 | ||||||
|  | -	      abort ();
 | ||||||
|  | -	    }
 | ||||||
|  | +	  if (!initial_cie_insn (i, j))
 | ||||||
|  | +	    break;
 | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | -      /* Success if we reached the end of the CIE list, and we've either
 | ||||||
|  | -	 run out of FDE entries or we've encountered an advance,
 | ||||||
|  | -	 remember, or escape.  */
 | ||||||
|  | -      if (i == cie->last
 | ||||||
|  | -	  && (!j
 | ||||||
|  | -	      || j->insn == DW_CFA_advance_loc
 | ||||||
|  | -	      || j->insn == DW_CFA_remember_state
 | ||||||
|  | -	      || j->insn == CFI_escape
 | ||||||
|  | -	      || j->insn == CFI_val_encoded_addr
 | ||||||
|  | -	      || j->insn == CFI_label))
 | ||||||
|  | +      if (i == cie->last)
 | ||||||
|  |  	{ | ||||||
|  |  	  *pfirst = j; | ||||||
|  |  	  return cie; | ||||||
|  |  	} | ||||||
|  | -
 | ||||||
|  | -    fail:;
 | ||||||
|  |      } | ||||||
|  |   | ||||||
|  |    cie = XNEW (struct cie_entry); | ||||||
|  | @@ -2181,11 +2183,7 @@ select_cie_for_fde (struct fde_entry *fd
 | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |    for (i = cie->first; i ; i = i->next) | ||||||
|  | -    if (i->insn == DW_CFA_advance_loc
 | ||||||
|  | -	|| i->insn == DW_CFA_remember_state
 | ||||||
|  | -	|| i->insn == CFI_escape
 | ||||||
|  | -	|| i->insn == CFI_val_encoded_addr
 | ||||||
|  | -	|| i->insn == CFI_label)
 | ||||||
|  | +    if (!initial_cie_insn (i, NULL))
 | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  |    cie->last = i; | ||||||
							
								
								
									
										11
									
								
								SOURCES/binutils-autoconf-version.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								SOURCES/binutils-autoconf-version.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | --- binutils.orig/config/override.m4	2021-08-31 14:20:17.275574804 +0100
 | ||||||
|  | +++ binutils-2.37/config/override.m4	2021-08-31 14:36:37.793954247 +0100
 | ||||||
|  | @@ -41,7 +41,7 @@ dnl Or for updating the whole tree at on
 | ||||||
|  |  AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK], | ||||||
|  |  [m4_if(m4_defn([_GCC_AUTOCONF_VERSION]), | ||||||
|  |    m4_defn([m4_PACKAGE_VERSION]), [], | ||||||
|  | -  [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
 | ||||||
|  | +  [])
 | ||||||
|  |  ]) | ||||||
|  |  m4_define([AC_INIT], m4_defn([AC_INIT])[ | ||||||
|  |  _GCC_AUTOCONF_VERSION_CHECK | ||||||
							
								
								
									
										17
									
								
								SOURCES/binutils-increase-the-max-number-of-open-fi.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								SOURCES/binutils-increase-the-max-number-of-open-fi.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | 
 | ||||||
|  | diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
 | ||||||
|  | index 3c129760498..dbda6c4465d 100644
 | ||||||
|  | --- a/ld/testsuite/ld-plugin/lto.exp
 | ||||||
|  | +++ b/ld/testsuite/ld-plugin/lto.exp
 | ||||||
|  | @@ -721,7 +721,7 @@ if { [at_least_gcc_version 4 7] } {
 | ||||||
|  |  	] \ | ||||||
|  |      ] | ||||||
|  |      set exec_output [run_host_cmd "sh" \ | ||||||
|  | -				  "-c \"ulimit -n 16; \
 | ||||||
|  | +				  "-c \" \
 | ||||||
|  |  				   $ar -rc $plug_opt \ | ||||||
|  |  				   tmpdir/libpr23460.a \ | ||||||
|  |  				   tmpdir/pr23460a.o \ | ||||||
|  | -- 
 | ||||||
|  | 2.38.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										59
									
								
								SOURCES/binutils-ld-ir-plugin.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								SOURCES/binutils-ld-ir-plugin.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | diff -rup binutils.orig/bfd/elflink.c binutils-2.35.2/bfd/elflink.c
 | ||||||
|  | --- binutils.orig/bfd/elflink.c	2022-11-28 16:10:23.919422266 +0000
 | ||||||
|  | +++ binutils-2.35.2/bfd/elflink.c	2022-11-28 16:14:24.308499080 +0000
 | ||||||
|  | @@ -1260,14 +1260,25 @@ _bfd_elf_merge_symbol (bfd *abfd,
 | ||||||
|  |        olddyn = (oldsec->symbol->flags & BSF_DYNAMIC) != 0; | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | -  /* Handle a case where plugin_notice won't be called and thus won't
 | ||||||
|  | -     set the non_ir_ref flags on the first pass over symbols.  */
 | ||||||
|  |    if (oldbfd != NULL | ||||||
|  | -      && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN)
 | ||||||
|  | -      && newdyn != olddyn)
 | ||||||
|  | +      && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN))
 | ||||||
|  |      { | ||||||
|  | -      h->root.non_ir_ref_dynamic = TRUE;
 | ||||||
|  | -      hi->root.non_ir_ref_dynamic = TRUE;
 | ||||||
|  | +      if (newdyn != olddyn)
 | ||||||
|  | +	{
 | ||||||
|  | +	  /* Handle a case where plugin_notice won't be called and thus
 | ||||||
|  | +	     won't set the non_ir_ref flags on the first pass over
 | ||||||
|  | +	     symbols.  */
 | ||||||
|  | +	  h->root.non_ir_ref_dynamic = TRUE;
 | ||||||
|  | +	  hi->root.non_ir_ref_dynamic = TRUE;
 | ||||||
|  | +	}
 | ||||||
|  | +
 | ||||||
|  | +      if ((oldbfd->flags & BFD_PLUGIN) != 0
 | ||||||
|  | +	  && hi->root.type == bfd_link_hash_indirect)
 | ||||||
|  | +	{
 | ||||||
|  | +	  /* Change indirect symbol from IR to undefined.  */
 | ||||||
|  | +	  hi->root.type = bfd_link_hash_undefined;
 | ||||||
|  | +	  hi->root.u.undef.abfd = oldbfd;
 | ||||||
|  | +	}
 | ||||||
|  |      } | ||||||
|  |   | ||||||
|  |    /* NEWDEF and OLDDEF indicate whether the new or old symbol, | ||||||
|  | diff -rup binutils.orig/bfd/linker.c binutils-2.35.2/bfd/linker.c
 | ||||||
|  | --- binutils.orig/bfd/linker.c	2022-11-28 16:10:23.822422639 +0000
 | ||||||
|  | +++ binutils-2.35.2/bfd/linker.c	2022-11-28 16:13:28.709712603 +0000
 | ||||||
|  | @@ -1672,7 +1672,7 @@ _bfd_generic_link_add_one_symbol (struct
 | ||||||
|  |  	case MIND: | ||||||
|  |  	  /* Multiple indirect symbols.  This is OK if they both point | ||||||
|  |  	     to the same symbol.  */ | ||||||
|  | -	  if (strcmp (h->u.i.link->root.string, string) == 0)
 | ||||||
|  | +	  if (string != NULL && strcmp (h->u.i.link->root.string, string) == 0)
 | ||||||
|  |  	    break; | ||||||
|  |  	  /* Fall through.  */ | ||||||
|  |  	case MDEF: | ||||||
|  | --- binutils.orig/bfd/elflink.c	2023-01-10 15:47:50.062668055 +0000
 | ||||||
|  | +++ binutils-2.35.2/bfd/elflink.c	2023-01-10 15:47:59.554659559 +0000
 | ||||||
|  | @@ -1271,8 +1271,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 | ||||||
|  |  	  h->root.non_ir_ref_dynamic = TRUE; | ||||||
|  |  	  hi->root.non_ir_ref_dynamic = TRUE; | ||||||
|  |  	} | ||||||
|  | -
 | ||||||
|  | -      if ((oldbfd->flags & BFD_PLUGIN) != 0
 | ||||||
|  | +      else if ((oldbfd->flags & BFD_PLUGIN) != 0
 | ||||||
|  |  	  && hi->root.type == bfd_link_hash_indirect) | ||||||
|  |  	{ | ||||||
|  |  	  /* Change indirect symbol from IR to undefined.  */ | ||||||
							
								
								
									
										30
									
								
								SOURCES/binutils-no-comment-in-bfd-stdint.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								SOURCES/binutils-no-comment-in-bfd-stdint.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | diff -rup binutils.orig/bfd/configure binutils-2.35.2/bfd/configure
 | ||||||
|  | --- binutils.orig/bfd/configure	2023-01-19 12:17:21.293513059 +0000
 | ||||||
|  | +++ binutils-2.35.2/bfd/configure	2023-01-19 12:27:25.783974084 +0000
 | ||||||
|  | @@ -18921,11 +18921,6 @@ _LT_EOF
 | ||||||
|  |        esac | ||||||
|  |      done ;; | ||||||
|  |      "bfd_stdint.h":C) | ||||||
|  | -if test "$GCC" = yes; then
 | ||||||
|  | -  echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
 | ||||||
|  | -else
 | ||||||
|  | -  echo "/* generated for $CC */" > tmp-stdint.h
 | ||||||
|  | -fi
 | ||||||
|  |   | ||||||
|  |  sed 's/^ *//' >> tmp-stdint.h <<EOF | ||||||
|  |   | ||||||
|  | diff -rup binutils.orig/config/stdint.m4 binutils-2.35.2/config/stdint.m4
 | ||||||
|  | --- binutils.orig/config/stdint.m4	2023-01-19 12:17:20.169515897 +0000
 | ||||||
|  | +++ binutils-2.35.2/config/stdint.m4	2023-01-19 12:27:02.920032688 +0000
 | ||||||
|  | @@ -192,11 +192,6 @@ fi
 | ||||||
|  |   | ||||||
|  |  # ----------------- done all checks, emit header ------------- | ||||||
|  |  AC_CONFIG_COMMANDS(_GCC_STDINT_H, [ | ||||||
|  | -if test "$GCC" = yes; then
 | ||||||
|  | -  echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
 | ||||||
|  | -else
 | ||||||
|  | -  echo "/* generated for $CC */" > tmp-stdint.h
 | ||||||
|  | -fi
 | ||||||
|  |   | ||||||
|  |  sed 's/^ *//' >> tmp-stdint.h <<EOF | ||||||
|  |   | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user