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