rpms/binutils/devel binutils-2.20.51.0.7-do-not-bind-unique-symbols-locally.patch, NONE, 1.1 binutils-2.20.51.0.7-dwarf4.patch, NONE, 1.1 .cvsignore, 1.49, 1.50 binutils-2.20.51.0.2-build-id.patch, 1.1, 1.2 binutils-2.20.51.0.2-envvar-revert.patch, 1.1, 1.2 binutils-2.20.51.0.2-libtool-lib64.patch, 1.1, 1.2 binutils-2.20.51.0.2-ppc64-pie.patch, 1.1, 1.2 binutils-2.20.51.0.2-set-long-long.patch, 1.2, 1.3 binutils-2.20.51.0.2-version.patch, 1.1, 1.2 binutils.spec, 1.193, 1.194 sources, 1.48, 1.49 binutils-2.20.51.0.2-add-needed.patch, 1.3, NONE binutils-2.20.51.0.2-do-not-set-ifunc.patch, 1.1, NONE binutils-2.20.51.0.2-enable-gold.patch, 1.1, NONE binutils-2.20.51.0.2-gas-expr.patch, 1.1, NONE binutils-2.20.51.0.2-ifunc-ld-s.patch, 1.1, NONE binutils-2.20.51.0.2-lwp.patch, 1.1, NONE binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch, 1.1, NONE binutils-2.20.51.0.2-x86-hash-table.patch, 1.1, NONE

Nicholas Clifton nickc at fedoraproject.org
Thu Apr 8 15:57:32 UTC 2010


Author: nickc

Update of /cvs/pkgs/rpms/binutils/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv21067

Modified Files:
	.cvsignore binutils-2.20.51.0.2-build-id.patch 
	binutils-2.20.51.0.2-envvar-revert.patch 
	binutils-2.20.51.0.2-libtool-lib64.patch 
	binutils-2.20.51.0.2-ppc64-pie.patch 
	binutils-2.20.51.0.2-set-long-long.patch 
	binutils-2.20.51.0.2-version.patch binutils.spec sources 
Added Files:
	binutils-2.20.51.0.7-do-not-bind-unique-symbols-locally.patch 
	binutils-2.20.51.0.7-dwarf4.patch 
Removed Files:
	binutils-2.20.51.0.2-add-needed.patch 
	binutils-2.20.51.0.2-do-not-set-ifunc.patch 
	binutils-2.20.51.0.2-enable-gold.patch 
	binutils-2.20.51.0.2-gas-expr.patch 
	binutils-2.20.51.0.2-ifunc-ld-s.patch 
	binutils-2.20.51.0.2-lwp.patch 
	binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch 
	binutils-2.20.51.0.2-x86-hash-table.patch 
Log Message:
- Rebase on 2.20.51.0.7 tarball.
- Delete redundant patches:
  binutils-2.20.51.0.2-add-needed.patch,
  binutils-2.20.51.0.2-do-not-set-ifunc.patch,
  binutils-2.20.51.0.2-enable-gold.patch,
  binutils-2.20.51.0.2-gas-expr.patch,
  binutils-2.20.51.0.2-ifunc-ld-s.patch,
  binutils-2.20.51.0.2-lwp.patch,
  binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch,
  binutils-2.20.51.0.2-x86-hash-table.patch,
- Do not allow unique symbols to be bound locally.  (PR ld/11434)
- Add support for DWARF4 debug information.


binutils-2.20.51.0.7-do-not-bind-unique-symbols-locally.patch:
 ChangeLog |    9 +++++++++
 elf-bfd.h |    5 !!!!!
 2 files changed, 9 insertions(+), 5 modifications(!)

--- NEW FILE binutils-2.20.51.0.7-do-not-bind-unique-symbols-locally.patch ---
diff -rcp ../binutils-2.20.51.0.7.original/bfd/ChangeLog ./bfd/ChangeLog
*** ../binutils-2.20.51.0.7.original/bfd/ChangeLog	2010-04-08 15:35:35.000000000 +0100
--- ./bfd/ChangeLog	2010-04-08 15:38:09.000000000 +0100
***************
*** 1,3 ****
--- 1,12 ----
+ 2010-04-07  Nick Clifton  <nickc at redhat.com>
+ 
+ 	Import this patch from the mainline:
+ 
+ 	2010-03-26  H.J. Lu  <hongjiu.lu at intel.com>
+ 
+ 	PR ld/11434
+ 	* elf-bfd.h (SYMBOLIC_BIND): Don't bind unique symbols locally.
+ 
  2010-03-18  H.J. Lu  <hongjiu.lu at intel.com>
  
  	PR binutils/11396
diff -rcp ../binutils-2.20.51.0.7.original/bfd/elf-bfd.h ./bfd/elf-bfd.h
*** ../binutils-2.20.51.0.7.original/bfd/elf-bfd.h	2010-04-08 15:35:35.000000000 +0100
--- ./bfd/elf-bfd.h	2010-04-08 15:37:41.000000000 +0100
*************** extern asection _bfd_elf_large_com_secti
*** 2351,2358 ****
    while (0)
  
  /* Will a symbol be bound to the the definition within the shared
!    library, if any.  */
  #define SYMBOLIC_BIND(INFO, H) \
!     ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic))
  
  #endif /* _LIBELF_H_ */
--- 2351,2359 ----
    while (0)
  
  /* Will a symbol be bound to the the definition within the shared
!    library, if any.  A unique symbol can never be bound locally.  */
  #define SYMBOLIC_BIND(INFO, H) \
!   (! (H)->unique_global        \
!    && ((INFO)->symbolic || ((INFO)->dynamic && !(H)->dynamic)))
  
  #endif /* _LIBELF_H_ */

binutils-2.20.51.0.7-dwarf4.patch:
 bfd/ChangeLog      |   28 ++++
 bfd/dwarf2.c       |  102 ++++++!!!!!!!!!!!
 bfd/elf-eh-frame.c |   11 +
 binutils/ChangeLog |   28 ++++
 binutils/dwarf.c   |  316 ++++++++++!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 include/ChangeLog  |    9 +
 include/dwarf2.h   |    1 
 7 files changed, 174 insertions(+), 2 deletions(-), 319 modifications(!)

--- NEW FILE binutils-2.20.51.0.7-dwarf4.patch ---
diff -rcp ../binutils-2.20.51.0.7.original/bfd/ChangeLog ./bfd/ChangeLog
*** ../binutils-2.20.51.0.7.original/bfd/ChangeLog	2010-04-08 15:40:38.000000000 +0100
--- ./bfd/ChangeLog	2010-04-08 15:40:46.000000000 +0100
***************
*** 1,3 ****
--- 1,31 ----
+ 2010-04-08  Nick Clifton  <nickc at redhat.com>
+ 
+ 	Import these patches from the mainline:
+ 
+ 	2010-04-05  Jakub Jelinek  <jakub at redhat.com>
+ 
+ 	* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Handle CIE version 4
+ 	provided that it has the expected address size and zero segment
+ 	length.
+ 	* dwarf2.c (struct line_head): Add maximum_ops_per_insn field.
+ 	(struct line_info): Add op_index field, change end_sequence type to
+ 	unsigned char.
+ 	(new_line_sorts_after): For the same address compare op_index.
+ 	(add_line_info): Add op_index argument, store it into the structure.
+ 	(decode_line_info): Complain about unknown versions of .debug_line.
+ 	Initialize maximum_ops_per_insn.  Add op_index state register and
+ 	track it.
+ 
+ 	2010-04-01  Jakub Jelinek  <jakub at redhat.com>
+ 
+ 	* dwarf2.c (read_attribute_value): Handle CU version 4
+ 	for DW_FORM_ref_addr, handle DW_FORM_sec_offset, DW_FORM_exprloc
+ 	and DW_FORM_flag_present.  For unknown form value return NULL.
+ 	(scan_unit_for_symbols): For DW_AT_location handle DW_FORM_exprloc
+ 	like DW_FORM_block.
+ 	(parse_comp_unit): Allow CU version 4.
+ 
+ 
  2010-04-07  Nick Clifton  <nickc at redhat.com>
  
  	Import this patch from the mainline:
diff -rcp ../binutils-2.20.51.0.7.original/bfd/dwarf2.c ./bfd/dwarf2.c
*** ../binutils-2.20.51.0.7.original/bfd/dwarf2.c	2010-04-08 15:40:38.000000000 +0100
--- ./bfd/dwarf2.c	2010-04-08 15:47:06.000000000 +0100
*************** struct line_head
*** 45,50 ****
--- 45,51 ----
    unsigned short version;
    bfd_vma prologue_length;
    unsigned char minimum_instruction_length;
+   unsigned char maximum_ops_per_insn;
    unsigned char default_is_stmt;
    int line_base;
    unsigned char line_range;
*************** read_attribute_value (struct attribute *
*** 760,766 ****
      case DW_FORM_ref_addr:
        /* DW_FORM_ref_addr is an address in DWARF2, and an offset in
  	 DWARF3.  */
!       if (unit->version == 3)
  	{
  	  if (unit->offset_size == 4)
  	    attr->u.val = read_4_bytes (unit->abfd, info_ptr);
--- 761,767 ----
      case DW_FORM_ref_addr:
        /* DW_FORM_ref_addr is an address in DWARF2, and an offset in
  	 DWARF3.  */
!       if (unit->version == 3 || unit->version == 4)
  	{
  	  if (unit->offset_size == 4)
  	    attr->u.val = read_4_bytes (unit->abfd, info_ptr);
*************** read_attribute_value (struct attribute *
*** 774,779 ****
--- 775,787 ----
        attr->u.val = read_address (unit, info_ptr);
        info_ptr += unit->addr_size;
        break;
+     case DW_FORM_sec_offset:
+       if (unit->offset_size == 4)
+ 	attr->u.val = read_4_bytes (unit->abfd, info_ptr);
+       else
+ 	attr->u.val = read_8_bytes (unit->abfd, info_ptr);
+       info_ptr += unit->offset_size;
+       break;
      case DW_FORM_block2:
        amt = sizeof (struct dwarf_block);
        blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
*************** read_attribute_value (struct attribute *
*** 816,821 ****
--- 824,830 ----
        attr->u.str = read_indirect_string (unit, info_ptr, &bytes_read);
        info_ptr += bytes_read;
        break;
+     case DW_FORM_exprloc:
      case DW_FORM_block:
        amt = sizeof (struct dwarf_block);
        blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
*************** read_attribute_value (struct attribute *
*** 846,851 ****
--- 855,863 ----
        attr->u.val = read_1_byte (abfd, info_ptr);
        info_ptr += 1;
        break;
+     case DW_FORM_flag_present:
+       attr->u.val = 1;
+       break;
      case DW_FORM_sdata:
        attr->u.sval = read_signed_leb128 (abfd, info_ptr, &bytes_read);
        info_ptr += bytes_read;
*************** read_attribute_value (struct attribute *
*** 887,892 ****
--- 899,905 ----
        (*_bfd_error_handler) (_("Dwarf Error: Invalid or unhandled FORM value: %u."),
  			     form);
        bfd_set_error (bfd_error_bad_value);
+       return NULL;
      }
    return info_ptr;
  }
*************** struct line_info
*** 916,922 ****
    char *filename;
    unsigned int line;
    unsigned int column;
!   int end_sequence;		/* End of (sequential) code sequence.  */
  };
  
  struct fileinfo
--- 929,936 ----
    char *filename;
    unsigned int line;
    unsigned int column;
!   unsigned char op_index;
!   unsigned char end_sequence;		/* End of (sequential) code sequence.  */
  };
  
  struct fileinfo
*************** new_line_sorts_after (struct line_info *
*** 990,996 ****
  {
    return (new_line->address > line->address
  	  || (new_line->address == line->address
! 	      && new_line->end_sequence < line->end_sequence));
  }
  
  
--- 1004,1012 ----
  {
    return (new_line->address > line->address
  	  || (new_line->address == line->address
! 	      && (new_line->op_index > line->op_index
! 		  || (new_line->op_index == line->op_index
! 		      && new_line->end_sequence < line->end_sequence))));
  }
  
  
*************** new_line_sorts_after (struct line_info *
*** 1002,1007 ****
--- 1018,1024 ----
  static bfd_boolean
  add_line_info (struct line_info_table *table,
  	       bfd_vma address,
+ 	       unsigned char op_index,
  	       char *filename,
  	       unsigned int line,
  	       unsigned int column,
*************** add_line_info (struct line_info_table *t
*** 1016,1021 ****
--- 1033,1039 ----
  
    /* Set member data of 'info'.  */
    info->address = address;
+   info->op_index = op_index;
    info->line = line;
    info->column = column;
    info->end_sequence = end_sequence;
*************** add_line_info (struct line_info_table *t
*** 1047,1052 ****
--- 1065,1071 ----
  
    if (seq
        && seq->last_line->address == address
+       && seq->last_line->op_index == op_index
        && seq->last_line->end_sequence == end_sequence)
      {
        /* We only keep the last entry with the same address and end
*************** decode_line_info (struct comp_unit *unit
*** 1372,1377 ****
--- 1391,1403 ----
      }
    line_end = line_ptr + lh.total_length;
    lh.version = read_2_bytes (abfd, line_ptr);
+   if (lh.version < 2 || lh.version > 4)
+     {
+       (*_bfd_error_handler)
+ 	(_("Dwarf Error: Unhandled .debug_line version %d."), lh.version);
+       bfd_set_error (bfd_error_bad_value);
+       return NULL;
+     }
    line_ptr += 2;
    if (offset_size == 4)
      lh.prologue_length = read_4_bytes (abfd, line_ptr);
*************** decode_line_info (struct comp_unit *unit
*** 1380,1385 ****
--- 1406,1425 ----
    line_ptr += offset_size;
    lh.minimum_instruction_length = read_1_byte (abfd, line_ptr);
    line_ptr += 1;
+   if (lh.version >= 4)
+     {
+       lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr);
+       line_ptr += 1;
+     }
+   else
+     lh.maximum_ops_per_insn = 1;
+   if (lh.maximum_ops_per_insn == 0)
+     {
+       (*_bfd_error_handler)
+ 	(_("Dwarf Error: Invalid maximum operations per instruction."));
+       bfd_set_error (bfd_error_bad_value);
+       return NULL;
+     }
    lh.default_is_stmt = read_1_byte (abfd, line_ptr);
    line_ptr += 1;
    lh.line_base = read_1_signed_byte (abfd, line_ptr);
*************** decode_line_info (struct comp_unit *unit
*** 1460,1465 ****
--- 1500,1506 ----
      {
        /* State machine registers.  */
        bfd_vma address = 0;
+       unsigned char op_index = 0;
        char * filename = table->num_files ? concat_filename (table, 1) : NULL;
        unsigned int line = 1;
        unsigned int column = 0;
*************** decode_line_info (struct comp_unit *unit
*** 1483,1493 ****
  	    {
  	      /* Special operand.  */
  	      adj_opcode = op_code - lh.opcode_base;
! 	      address += (adj_opcode / lh.line_range)
! 		* lh.minimum_instruction_length;
  	      line += lh.line_base + (adj_opcode % lh.line_range);
  	      /* Append row to matrix using current values.  */
! 	      if (!add_line_info (table, address, filename, line, column, 0))
  		goto line_fail;
  	      if (address < low_pc)
  		low_pc = address;
--- 1524,1544 ----
  	    {
  	      /* Special operand.  */
  	      adj_opcode = op_code - lh.opcode_base;
! 	      if (lh.maximum_ops_per_insn == 1)
! 		address += (adj_opcode / lh.line_range)
! 			   * lh.minimum_instruction_length;
! 	      else
! 		{
! 		  address += ((op_index + (adj_opcode / lh.line_range))
! 			      / lh.maximum_ops_per_insn)
! 			     * lh.minimum_instruction_length;
! 		  op_index = (op_index + (adj_opcode / lh.line_range))
! 			     % lh.maximum_ops_per_insn;
! 		}
  	      line += lh.line_base + (adj_opcode % lh.line_range);
  	      /* Append row to matrix using current values.  */
! 	      if (! add_line_info (table, address, op_index, filename,
! 				   line, column, 0))
  		goto line_fail;
  	      if (address < low_pc)
  		low_pc = address;
*************** decode_line_info (struct comp_unit *unit
*** 1506,1513 ****
  		{
  		case DW_LNE_end_sequence:
  		  end_sequence = 1;
! 		  if (!add_line_info (table, address, filename, line, column,
! 				      end_sequence))
  		    goto line_fail;
  		  if (address < low_pc)
  		    low_pc = address;
--- 1557,1564 ----
  		{
  		case DW_LNE_end_sequence:
  		  end_sequence = 1;
! 		  if (!add_line_info (table, address, op_index, filename,
! 				      line, column, end_sequence))
  		    goto line_fail;
  		  if (address < low_pc)
  		    low_pc = address;
*************** decode_line_info (struct comp_unit *unit
*** 1518,1523 ****
--- 1569,1575 ----
  		  break;
  		case DW_LNE_set_address:
  		  address = read_address (unit, line_ptr);
+ 		  op_index = 0;
  		  line_ptr += unit->addr_size;
  		  break;
  		case DW_LNE_define_file:
*************** decode_line_info (struct comp_unit *unit
*** 1560,1566 ****
  		}
  	      break;
  	    case DW_LNS_copy:
! 	      if (!add_line_info (table, address, filename, line, column, 0))
  		goto line_fail;
  	      if (address < low_pc)
  		low_pc = address;
--- 1612,1618 ----
  		}
  	      break;
  	    case DW_LNS_copy:
! 	      if (!add_line_info (table, address, op_index, filename, line, column, 0))
  		goto line_fail;
  	      if (address < low_pc)
  		low_pc = address;
*************** decode_line_info (struct comp_unit *unit
*** 1568,1575 ****
  		high_pc = address;
  	      break;
  	    case DW_LNS_advance_pc:
! 	      address += lh.minimum_instruction_length
! 		* read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
  	      line_ptr += bytes_read;
  	      break;
  	    case DW_LNS_advance_line:
--- 1620,1637 ----
  		high_pc = address;
  	      break;
  	    case DW_LNS_advance_pc:
! 	      if (lh.maximum_ops_per_insn == 1)
! 		address += lh.minimum_instruction_length
! 			   * read_unsigned_leb128 (abfd, line_ptr,
! 						   &bytes_read);
! 	      else
! 		{
! 		  bfd_vma adjust = read_unsigned_leb128 (abfd, line_ptr,
! 							 &bytes_read);
! 		  address = ((op_index + adjust) / lh.maximum_ops_per_insn)
! 			    * lh.minimum_instruction_length;
! 		  op_index = (op_index + adjust) % lh.maximum_ops_per_insn;
! 		}
  	      line_ptr += bytes_read;
  	      break;
  	    case DW_LNS_advance_line:
*************** decode_line_info (struct comp_unit *unit
*** 1599,1609 ****
  	    case DW_LNS_set_basic_block:
  	      break;
  	    case DW_LNS_const_add_pc:
! 	      address += lh.minimum_instruction_length
! 		      * ((255 - lh.opcode_base) / lh.line_range);
  	      break;
  	    case DW_LNS_fixed_advance_pc:
  	      address += read_2_bytes (abfd, line_ptr);
  	      line_ptr += 2;
  	      break;
  	    default:
--- 1661,1680 ----
  	    case DW_LNS_set_basic_block:
  	      break;
  	    case DW_LNS_const_add_pc:
! 	      if (lh.maximum_ops_per_insn == 1)
! 		address += lh.minimum_instruction_length
! 			   * ((255 - lh.opcode_base) / lh.line_range);
! 	      else
! 		{
! 		  bfd_vma adjust = ((255 - lh.opcode_base) / lh.line_range);
! 		  address += lh.minimum_instruction_length
! 			     * ((op_index + adjust) / lh.maximum_ops_per_insn);
! 		  op_index = (op_index + adjust) % lh.maximum_ops_per_insn;
! 		}
  	      break;
  	    case DW_LNS_fixed_advance_pc:
  	      address += read_2_bytes (abfd, line_ptr);
+ 	      op_index = 0;
  	      line_ptr += 2;
  	      break;
  	    default:
*************** scan_unit_for_symbols (struct comp_unit 
*** 2113,2118 ****
--- 2184,2190 ----
  		    case DW_FORM_block1:
  		    case DW_FORM_block2:
  		    case DW_FORM_block4:
+ 		    case DW_FORM_exprloc:
  		      if (*attr.u.blk->data == DW_OP_addr)
  			{
  			  var->stack = 0;
*************** parse_comp_unit (struct dwarf2_debug *st
*** 2216,2224 ****
    addr_size = read_1_byte (abfd, info_ptr);
    info_ptr += 1;
  
!   if (version != 2 && version != 3)
      {
!       (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2 and 3 information."), version);
        bfd_set_error (bfd_error_bad_value);
        return 0;
      }
--- 2288,2296 ----
    addr_size = read_1_byte (abfd, info_ptr);
    info_ptr += 1;
  
!   if (version != 2 && version != 3 && version != 4)
      {
!       (*_bfd_error_handler) (_("Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3 and 4 information."), version);
        bfd_set_error (bfd_error_bad_value);
        return 0;
      }
diff -rcp ../binutils-2.20.51.0.7.original/bfd/elf-eh-frame.c ./bfd/elf-eh-frame.c
*** ../binutils-2.20.51.0.7.original/bfd/elf-eh-frame.c	2010-04-08 15:40:38.000000000 +0100
--- ./bfd/elf-eh-frame.c	2010-04-08 15:40:46.000000000 +0100
*************** _bfd_elf_parse_eh_frame (bfd *abfd, stru
*** 636,642 ****
  	  REQUIRE (read_byte (&buf, end, &cie->version));
  
  	  /* Cannot handle unknown versions.  */
! 	  REQUIRE (cie->version == 1 || cie->version == 3);
  	  REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation));
  
  	  strcpy (cie->augmentation, (char *) buf);
--- 636,644 ----
  	  REQUIRE (read_byte (&buf, end, &cie->version));
  
  	  /* Cannot handle unknown versions.  */
! 	  REQUIRE (cie->version == 1
! 		   || cie->version == 3
! 		   || cie->version == 4);
  	  REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation));
  
  	  strcpy (cie->augmentation, (char *) buf);
*************** _bfd_elf_parse_eh_frame (bfd *abfd, stru
*** 651,656 ****
--- 653,665 ----
  	      REQUIRE (skip_bytes (&buf, end, ptr_size));
  	      SKIP_RELOCS (buf);
  	    }
+ 	  if (cie->version >= 4)
+ 	    {
+ 	      REQUIRE (buf + 1 < end);
+ 	      REQUIRE (buf[0] == ptr_size);
+ 	      REQUIRE (buf[1] == 0);
+ 	      buf += 2;
+ 	    }
  	  REQUIRE (read_uleb128 (&buf, end, &cie->code_align));
  	  REQUIRE (read_sleb128 (&buf, end, &cie->data_align));
  	  if (cie->version == 1)
diff -rcp ../binutils-2.20.51.0.7.original/binutils/ChangeLog ./binutils/ChangeLog
*** ../binutils-2.20.51.0.7.original/binutils/ChangeLog	2010-04-08 15:40:38.000000000 +0100
--- ./binutils/ChangeLog	2010-04-08 15:47:41.000000000 +0100
***************
*** 1,3 ****
--- 1,31 ----
+ 2010-04-08  Nick Clifton  <nickc at redhat.com>
+ 
+ 	Import these patches from the mainline:
+ 
+ 	2010-04-05  Jakub Jelinek  <jakub at redhat.com>
+ 
+ 	* dwarf.c (struct Frame_Chunk): Add ptr_size and segment_size
+ 	fields.
+ 	(display_debug_frames): Handle CIE version 4.
+ 
+ 	* dwarf.c (struct State_Machine_Registers): Add op_index field,
+ 	change end_sequence type to unsigned char.
+ 	(reset_state_machine): Clear op_index.
+ 	(process_extended_line_op): For DW_LNE_set_address clear op_index.
+ 	(display_debug_lines_raw): Initialize li_max_ops_per_insn.
+ 	Track op_index state machine register and print it if
+ 	li_max_ops_per_insn is != 1.
+ 	(display_debug_lines_decoded): Likewise.
+ 
+ 	2010-04-01  Jakub Jelinek  <jakub at redhat.com>
+ 
+ 	* dwarf.c (read_and_display_attr_value): Don't reject
+ 	dwarf_version == 4.  Handle DW_FORM_sec_offset, DW_FORM_flag_present
+ 	and DW_FORM_exprloc.
+ 	(process_debug_info): Handle cu_version == 4.
+ 	(display_debug_lines_raw, display_debug_lines_decoded): Handle
+ 	li_version == 4.
+ 
  2010-03-17  Alan Modra  <amodra at gmail.com>
  
  	* readelf.c (dump_arm_unwind): Warning fix.
diff -rcp ../binutils-2.20.51.0.7.original/binutils/dwarf.c ./binutils/dwarf.c
*** ../binutils-2.20.51.0.7.original/binutils/dwarf.c	2010-04-08 15:40:38.000000000 +0100
--- ./binutils/dwarf.c	2010-04-08 15:56:46.000000000 +0100
*************** typedef struct State_Machine_Registers
*** 264,270 ****
    unsigned int column;
    int is_stmt;
    int basic_block;
!   int end_sequence;
  /* This variable hold the number of the last entry seen
     in the File Table.  */
    unsigned int last_file_entry;
--- 264,271 ----
    unsigned int column;
    int is_stmt;
    int basic_block;
!   unsigned char op_index;
!   unsigned char end_sequence;
  /* This variable hold the number of the last entry seen
     in the File Table.  */
    unsigned int last_file_entry;
*************** static void
*** 276,281 ****
--- 277,283 ----
  reset_state_machine (int is_stmt)
  {
    state_machine_regs.address = 0;
+   state_machine_regs.op_index = 0;
    state_machine_regs.file = 1;
    state_machine_regs.line = 1;
    state_machine_regs.column = 0;
*************** process_extended_line_op (unsigned char 
*** 322,327 ****
--- 324,330 ----
        adr = byte_get (data, len - bytes_read - 1);
        printf (_("set Address to 0x%lx\n"), adr);
        state_machine_regs.address = adr;
+       state_machine_regs.op_index = 0;
        break;
  
      case DW_LNE_define_file:
*************** read_and_display_attr_value (unsigned lo
*** 1154,1167 ****
  	  uvalue = byte_get (data, pointer_size);
  	  data += pointer_size;
  	}
!       else if (dwarf_version == 3)
  	{
  	  uvalue = byte_get (data, offset_size);
  	  data += offset_size;
  	}
        else
  	{
! 	  error (_("Internal error: DWARF version is not 2 or 3.\n"));
  	}
        break;
  
--- 1157,1170 ----
  	  uvalue = byte_get (data, pointer_size);
  	  data += pointer_size;
  	}
!       else if (dwarf_version == 3 || dwarf_version == 4)
  	{
  	  uvalue = byte_get (data, offset_size);
  	  data += offset_size;
  	}
        else
  	{
! 	  error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
  	}
        break;
  
*************** read_and_display_attr_value (unsigned lo
*** 1171,1180 ****
--- 1174,1188 ----
        break;
  
      case DW_FORM_strp:
+     case DW_FORM_sec_offset:
        uvalue = byte_get (data, offset_size);
        data += offset_size;
        break;
  
+     case DW_FORM_flag_present:
+       uvalue = 1;
+       break;
+ 
      case DW_FORM_ref1:
      case DW_FORM_flag:
      case DW_FORM_data1:
*************** read_and_display_attr_value (unsigned lo
*** 1233,1242 ****
--- 1241,1252 ----
  
      case DW_FORM_data4:
      case DW_FORM_addr:
+     case DW_FORM_sec_offset:
        if (!do_loc)
  	printf (" 0x%lx", uvalue);
        break;
  
+     case DW_FORM_flag_present:
      case DW_FORM_flag:
      case DW_FORM_data1:
      case DW_FORM_data2:
*************** read_and_display_attr_value (unsigned lo
*** 1272,1277 ****
--- 1282,1288 ----
        break;
  
      case DW_FORM_block:
+     case DW_FORM_exprloc:
        uvalue = read_leb128 (data, & bytes_read, 0);
        block_start = data + bytes_read;
        if (do_loc)
*************** read_and_display_attr_value (unsigned lo
*** 1352,1358 ****
  	case DW_AT_segment:
  	case DW_AT_static_link:
  	case DW_AT_use_location:
!     	  if (form == DW_FORM_data4 || form == DW_FORM_data8)
  	    {
  	      /* Process location list.  */
  	      unsigned int lmax = debug_info_p->max_loc_offsets;
--- 1363,1371 ----
  	case DW_AT_segment:
  	case DW_AT_static_link:
  	case DW_AT_use_location:
!     	  if (form == DW_FORM_data4
! 	      || form == DW_FORM_data8
! 	      || form == DW_FORM_sec_offset)
  	    {
  	      /* Process location list.  */
  	      unsigned int lmax = debug_info_p->max_loc_offsets;
*************** read_and_display_attr_value (unsigned lo
*** 1381,1387 ****
  	  break;
  
  	case DW_AT_ranges:
! 	  if (form == DW_FORM_data4 || form == DW_FORM_data8)
  	    {
  	      /* Process range list.  */
  	      unsigned int lmax = debug_info_p->max_range_lists;
--- 1394,1402 ----
  	  break;
  
  	case DW_AT_ranges:
! 	  if (form == DW_FORM_data4
! 	      || form == DW_FORM_data8
! 	      || form == DW_FORM_sec_offset)
  	    {
  	      /* Process range list.  */
  	      unsigned int lmax = debug_info_p->max_range_lists;
*************** read_and_display_attr_value (unsigned lo
*** 1591,1597 ****
      case DW_AT_segment:
      case DW_AT_static_link:
      case DW_AT_use_location:
!       if (form == DW_FORM_data4 || form == DW_FORM_data8)
  	printf (_("(location list)"));
        /* Fall through.  */
      case DW_AT_allocated:
--- 1606,1614 ----
      case DW_AT_segment:
      case DW_AT_static_link:
      case DW_AT_use_location:
!       if (form == DW_FORM_data4
! 	  || form == DW_FORM_data8
! 	  || form == DW_FORM_sec_offset)
  	printf (_("(location list)"));
        /* Fall through.  */
      case DW_AT_allocated:
*************** process_debug_info (struct dwarf_section
*** 2038,2044 ****
        tags = hdrptr;
        start += compunit.cu_length + initial_length_size;
  
!       if (compunit.cu_version != 2 && compunit.cu_version != 3)
  	{
  	  warn (_("CU at offset %lx contains corrupt or unsupported version number: %d.\n"),
  		cu_offset, compunit.cu_version);
--- 2055,2063 ----
        tags = hdrptr;
        start += compunit.cu_length + initial_length_size;
  
!       if (compunit.cu_version != 2
! 	  && compunit.cu_version != 3
! 	  && compunit.cu_version != 4)
  	{
  	  warn (_("CU at offset %lx contains corrupt or unsupported version number: %d.\n"),
  		cu_offset, compunit.cu_version);
*************** display_debug_lines_raw (struct dwarf_se
*** 2269,2277 ****
        /* Check its version number.  */
        linfo.li_version = byte_get (hdrptr, 2);
        hdrptr += 2;
!       if (linfo.li_version != 2 && linfo.li_version != 3)
  	{
! 	  warn (_("Only DWARF version 2 and 3 line info is currently supported.\n"));
  	  return 0;
  	}
  
--- 2288,2298 ----
        /* Check its version number.  */
        linfo.li_version = byte_get (hdrptr, 2);
        hdrptr += 2;
!       if (linfo.li_version != 2
! 	  && linfo.li_version != 3
! 	  && linfo.li_version != 4)
  	{
! 	  warn (_("Only DWARF version 2, 3 and 4 line info is currently supported.\n"));
  	  return 0;
  	}
  
*************** display_debug_lines_raw (struct dwarf_se
*** 2279,2284 ****
--- 2300,2317 ----
        hdrptr += offset_size;
        linfo.li_min_insn_length = byte_get (hdrptr, 1);
        hdrptr++;
+       if (linfo.li_version >= 4)
+ 	{
+ 	  linfo.li_max_ops_per_insn = byte_get (hdrptr, 1);
+ 	  hdrptr++;
+ 	  if (linfo.li_max_ops_per_insn == 0)
+ 	    {
+ 	      warn (_("Invalid maximum operations per insn.\n"));
+ 	      return 0;
+ 	    }
+ 	}
+       else
+ 	linfo.li_max_ops_per_insn = 1;
        linfo.li_default_is_stmt = byte_get (hdrptr, 1);
        hdrptr++;
        linfo.li_line_base = byte_get (hdrptr, 1);
*************** display_debug_lines_raw (struct dwarf_se
*** 2297,2302 ****
--- 2330,2337 ----
        printf (_("  DWARF Version:               %d\n"), linfo.li_version);
        printf (_("  Prologue Length:             %d\n"), linfo.li_prologue_length);
        printf (_("  Minimum Instruction Length:  %d\n"), linfo.li_min_insn_length);
+       if (linfo.li_version >= 4)
+ 	printf (_("  Maximum Ops per Instruction: %d\n"), linfo.li_max_ops_per_insn);
        printf (_("  Initial value of 'is_stmt':  %d\n"), linfo.li_default_is_stmt);
        printf (_("  Line Base:                   %d\n"), linfo.li_line_base);
        printf (_("  Line Range:                  %d\n"), linfo.li_line_range);
*************** display_debug_lines_raw (struct dwarf_se
*** 2380,2389 ****
  	  if (op_code >= linfo.li_opcode_base)
  	    {
  	      op_code -= linfo.li_opcode_base;
! 	      uladv = (op_code / linfo.li_line_range) * linfo.li_min_insn_length;
! 	      state_machine_regs.address += uladv;
! 	      printf (_("  Special opcode %d: advance Address by %lu to 0x%lx"),
! 		      op_code, uladv, state_machine_regs.address);
  	      adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
  	      state_machine_regs.line += adv;
  	      printf (_(" and Line by %d to %d\n"),
--- 2415,2441 ----
  	  if (op_code >= linfo.li_opcode_base)
  	    {
  	      op_code -= linfo.li_opcode_base;
! 	      uladv = (op_code / linfo.li_line_range);
! 	      if (linfo.li_max_ops_per_insn == 1)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		  printf (_("  Special opcode %d: advance Address by %lu to 0x%lx"),
! 			  op_code, uladv, state_machine_regs.address);
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		  printf (_("  Special opcode %d: advance Address by %lu to 0x%lx[%d]"),
! 			  op_code, uladv, state_machine_regs.address,
! 			  state_machine_regs.op_index);
! 		}
  	      adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
  	      state_machine_regs.line += adv;
  	      printf (_(" and Line by %d to %d\n"),
*************** display_debug_lines_raw (struct dwarf_se
*** 2401,2411 ****
  
  	    case DW_LNS_advance_pc:
  	      uladv = read_leb128 (data, & bytes_read, 0);
- 	      uladv *= linfo.li_min_insn_length;
  	      data += bytes_read;
! 	      state_machine_regs.address += uladv;
! 	      printf (_("  Advance PC by %lu to 0x%lx\n"), uladv,
! 		      state_machine_regs.address);
  	      break;
  
  	    case DW_LNS_advance_line:
--- 2453,2479 ----
  
  	    case DW_LNS_advance_pc:
  	      uladv = read_leb128 (data, & bytes_read, 0);
  	      data += bytes_read;
! 	      if (linfo.li_max_ops_per_insn == 1)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		  printf (_("  Advance PC by %lu to 0x%lx\n"), uladv,
! 			  state_machine_regs.address);
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		  printf (_("  Advance PC by %lu to 0x%lx[%d]\n"), uladv,
! 			  state_machine_regs.address,
! 			  state_machine_regs.op_index);
! 		}
  	      break;
  
  	    case DW_LNS_advance_line:
*************** display_debug_lines_raw (struct dwarf_se
*** 2444,2460 ****
  	      break;
  
  	    case DW_LNS_const_add_pc:
! 	      uladv = (((255 - linfo.li_opcode_base) / linfo.li_line_range)
! 		      * linfo.li_min_insn_length);
! 	      state_machine_regs.address += uladv;
! 	      printf (_("  Advance PC by constant %lu to 0x%lx\n"), uladv,
! 		      state_machine_regs.address);
  	      break;
  
  	    case DW_LNS_fixed_advance_pc:
  	      uladv = byte_get (data, 2);
  	      data += 2;
  	      state_machine_regs.address += uladv;
  	      printf (_("  Advance PC by fixed size amount %lu to 0x%lx\n"),
  		      uladv, state_machine_regs.address);
  	      break;
--- 2512,2545 ----
  	      break;
  
  	    case DW_LNS_const_add_pc:
! 	      uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
! 	      if (linfo.li_max_ops_per_insn)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		  printf (_("  Advance PC by constant %lu to 0x%lx\n"), uladv,
! 			  state_machine_regs.address);
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		  printf (_("  Advance PC by constant %lu to 0x%lx[%d]\n"),
! 			  uladv, state_machine_regs.address,
! 			  state_machine_regs.op_index);
! 		}
  	      break;
  
  	    case DW_LNS_fixed_advance_pc:
  	      uladv = byte_get (data, 2);
  	      data += 2;
  	      state_machine_regs.address += uladv;
+ 	      state_machine_regs.op_index = 0;
  	      printf (_("  Advance PC by fixed size amount %lu to 0x%lx\n"),
  		      uladv, state_machine_regs.address);
  	      break;
*************** display_debug_lines_decoded (struct dwar
*** 2557,2565 ****
        /* Get this CU's Line Number Block version number.  */
        linfo.li_version = byte_get (hdrptr, 2);
        hdrptr += 2;
!       if (linfo.li_version != 2 && linfo.li_version != 3)
          {
!           warn (_("Only DWARF version 2 and 3 line info is currently "
                  "supported.\n"));
            return 0;
          }
--- 2642,2652 ----
        /* Get this CU's Line Number Block version number.  */
        linfo.li_version = byte_get (hdrptr, 2);
        hdrptr += 2;
!       if (linfo.li_version != 2
! 	  && linfo.li_version != 3
! 	  && linfo.li_version != 4)
          {
!           warn (_("Only DWARF version 2, 3 and 4 line info is currently "
                  "supported.\n"));
            return 0;
          }
*************** display_debug_lines_decoded (struct dwar
*** 2568,2573 ****
--- 2655,2672 ----
        hdrptr += offset_size;
        linfo.li_min_insn_length = byte_get (hdrptr, 1);
        hdrptr++;
+       if (linfo.li_version >= 4)
+ 	{
+ 	  linfo.li_max_ops_per_insn = byte_get (hdrptr, 1);
+ 	  hdrptr++;
+ 	  if (linfo.li_max_ops_per_insn == 0)
+ 	    {
+ 	      warn (_("Invalid maximum operations per insn.\n"));
+ 	      return 0;
+ 	    }
+ 	}
+       else
+ 	linfo.li_max_ops_per_insn = 1;
        linfo.li_default_is_stmt = byte_get (hdrptr, 1);
        hdrptr++;
        linfo.li_line_base = byte_get (hdrptr, 1);
*************** display_debug_lines_decoded (struct dwar
*** 2703,2710 ****
            if (op_code >= linfo.li_opcode_base)
  	    {
  	      op_code -= linfo.li_opcode_base;
!               uladv = (op_code / linfo.li_line_range) * linfo.li_min_insn_length;
!               state_machine_regs.address += uladv;
  
                adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
                state_machine_regs.line += adv;
--- 2802,2823 ----
            if (op_code >= linfo.li_opcode_base)
  	    {
  	      op_code -= linfo.li_opcode_base;
! 	      uladv = (op_code / linfo.li_line_range);
! 	      if (linfo.li_max_ops_per_insn == 1)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		}
  
                adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
                state_machine_regs.line += adv;
*************** display_debug_lines_decoded (struct dwar
*** 2737,2742 ****
--- 2850,2856 ----
                    case DW_LNE_set_address:
                      state_machine_regs.address =
                      byte_get (op_code_data, ext_op_code_len - bytes_read - 1);
+ 		    state_machine_regs.op_index = 0;
                      break;
                    case DW_LNE_define_file:
                      {
*************** display_debug_lines_decoded (struct dwar
*** 2765,2773 ****
  
              case DW_LNS_advance_pc:
                uladv = read_leb128 (data, & bytes_read, 0);
-               uladv *= linfo.li_min_insn_length;
                data += bytes_read;
!               state_machine_regs.address += uladv;
                break;
  
              case DW_LNS_advance_line:
--- 2879,2900 ----
  
              case DW_LNS_advance_pc:
                uladv = read_leb128 (data, & bytes_read, 0);
                data += bytes_read;
! 	      if (linfo.li_max_ops_per_insn == 1)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		}
                break;
  
              case DW_LNS_advance_line:
*************** display_debug_lines_decoded (struct dwar
*** 2812,2826 ****
                break;
  
              case DW_LNS_const_add_pc:
!               uladv = (((255 - linfo.li_opcode_base) / linfo.li_line_range)
!                        * linfo.li_min_insn_length);
!               state_machine_regs.address += uladv;
                break;
  
              case DW_LNS_fixed_advance_pc:
                uladv = byte_get (data, 2);
                data += 2;
                state_machine_regs.address += uladv;
                break;
  
              case DW_LNS_set_prologue_end:
--- 2939,2967 ----
                break;
  
              case DW_LNS_const_add_pc:
! 	      uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
! 	      if (linfo.li_max_ops_per_insn == 1)
! 		{
! 		  uladv *= linfo.li_min_insn_length;
! 		  state_machine_regs.address += uladv;
! 		}
! 	      else
! 		{
! 		  state_machine_regs.address
! 		    += ((state_machine_regs.op_index + uladv)
! 			/ linfo.li_max_ops_per_insn)
! 		       * linfo.li_min_insn_length;
! 		  state_machine_regs.op_index
! 		    = (state_machine_regs.op_index + uladv)
! 		      % linfo.li_max_ops_per_insn;
! 		}
                break;
  
              case DW_LNS_fixed_advance_pc:
                uladv = byte_get (data, 2);
                data += 2;
                state_machine_regs.address += uladv;
+ 	      state_machine_regs.op_index = 0;
                break;
  
              case DW_LNS_set_prologue_end:
*************** display_debug_lines_decoded (struct dwar
*** 2874,2886 ****
  
                if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH))
                  {
!                   printf (_("%-35s  %11d  %#18lx\n"), newFileName,
!                           state_machine_regs.line, state_machine_regs.address);
                  }
                else
                  {
!                   printf (_("%s  %11d  %#18lx\n"), newFileName,
!                           state_machine_regs.line, state_machine_regs.address);
                  }
  
                if (op_code == DW_LNE_end_sequence)
--- 3015,3041 ----
  
                if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH))
                  {
! 		  if (linfo.li_max_ops_per_insn == 1)
! 		    printf (_("%-35s  %11d  %#18lx\n"), newFileName,
! 			    state_machine_regs.line,
! 			    state_machine_regs.address);
! 		  else
! 		    printf (_("%-35s  %11d  %#18lx[%d]\n"), newFileName,
! 			    state_machine_regs.line,
! 			    state_machine_regs.address,
! 			    state_machine_regs.op_index);
                  }
                else
                  {
! 		  if (linfo.li_max_ops_per_insn == 1)
! 		    printf (_("%s  %11d  %#18lx\n"), newFileName,
! 			    state_machine_regs.line,
! 			    state_machine_regs.address);
! 		  else
! 		    printf (_("%s  %11d  %#18lx[%d]\n"), newFileName,
! 			    state_machine_regs.line,
! 			    state_machine_regs.address,
! 			    state_machine_regs.op_index);
                  }
  
                if (op_code == DW_LNE_end_sequence)
*************** typedef struct Frame_Chunk
*** 3751,3756 ****
--- 3906,3913 ----
    int ra;
    unsigned char fde_encoding;
    unsigned char cfa_exp;
+   unsigned char ptr_size;
+   unsigned char segment_size;
  }
  Frame_Chunk;
  
*************** display_debug_frames (struct dwarf_secti
*** 3959,3964 ****
--- 4116,4122 ----
    unsigned int length_return;
    int max_regs = 0;
    const char *bad_reg = _("bad register: ");
+   int saved_eh_addr_size = eh_addr_size;
  
    printf (_("Contents of the %s section:\n"), section->name);
  
*************** display_debug_frames (struct dwarf_secti
*** 3973,3979 ****
        int need_col_headers = 1;
        unsigned char *augmentation_data = NULL;
        unsigned long augmentation_data_len = 0;
!       int encoded_ptr_size = eh_addr_size;
        int offset_size;
        int initial_length_size;
  
--- 4131,4137 ----
        int need_col_headers = 1;
        unsigned char *augmentation_data = NULL;
        unsigned long augmentation_data_len = 0;
!       int encoded_ptr_size = saved_eh_addr_size;
        int offset_size;
        int initial_length_size;
  
*************** display_debug_frames (struct dwarf_secti
*** 4029,4076 ****
  	  fc->augmentation = (char *) start;
  	  start = (unsigned char *) strchr ((char *) start, '\0') + 1;
  
! 	  if (fc->augmentation[0] == 'z')
  	    {
! 	      fc->code_factor = LEB ();
! 	      fc->data_factor = SLEB ();
! 	      if (version == 1)
! 		{
! 		  fc->ra = GET (1);
! 		}
! 	      else
! 		{
! 		  fc->ra = LEB ();
! 		}
! 	      augmentation_data_len = LEB ();
! 	      augmentation_data = start;
! 	      start += augmentation_data_len;
  	    }
! 	  else if (strcmp (fc->augmentation, "eh") == 0)
  	    {
! 	      start += eh_addr_size;
! 	      fc->code_factor = LEB ();
! 	      fc->data_factor = SLEB ();
! 	      if (version == 1)
! 		{
! 		  fc->ra = GET (1);
! 		}
! 	      else
! 		{
! 		  fc->ra = LEB ();
! 		}
  	    }
  	  else
  	    {
! 	      fc->code_factor = LEB ();
! 	      fc->data_factor = SLEB ();
! 	      if (version == 1)
! 		{
! 		  fc->ra = GET (1);
! 		}
! 	      else
! 		{
! 		  fc->ra = LEB ();
! 		}
  	    }
  	  cie = fc;
  
--- 4187,4222 ----
  	  fc->augmentation = (char *) start;
  	  start = (unsigned char *) strchr ((char *) start, '\0') + 1;
  
! 	  if (strcmp (fc->augmentation, "eh") == 0)
! 	    start += eh_addr_size;
! 
! 	  if (version >= 4)
  	    {
! 	      fc->ptr_size = GET (1);
! 	      fc->segment_size = GET (1);
! 	      eh_addr_size = fc->ptr_size;
  	    }
! 	  else
  	    {
! 	      fc->ptr_size = eh_addr_size;
! 	      fc->segment_size = 0;
! 	    }
! 	  fc->code_factor = LEB ();
! 	  fc->data_factor = SLEB ();
! 	  if (version == 1)
! 	    {
! 	      fc->ra = GET (1);
  	    }
  	  else
  	    {
! 	      fc->ra = LEB ();
! 	    }
! 
! 	  if (fc->augmentation[0] == 'z')
! 	    {
! 	      augmentation_data_len = LEB ();
! 	      augmentation_data = start;
! 	      start += augmentation_data_len;
  	    }
  	  cie = fc;
  
*************** display_debug_frames (struct dwarf_secti
*** 4085,4090 ****
--- 4231,4241 ----
  		      (unsigned long)(saved_start - section_start), length, cie_id);
  	      printf ("  Version:               %d\n", version);
  	      printf ("  Augmentation:          \"%s\"\n", fc->augmentation);
+ 	      if (version >= 4)
+ 		{
+ 		  printf ("  Pointer Size:          %u\n", fc->ptr_size);
+ 		  printf ("  Segment Size:          %u\n", fc->segment_size);
+ 		}
  	      printf ("  Code alignment factor: %u\n", fc->code_factor);
  	      printf ("  Data alignment factor: %d\n", fc->data_factor);
  	      printf ("  Return address column: %d\n", fc->ra);
*************** display_debug_frames (struct dwarf_secti
*** 4131,4136 ****
--- 4282,4288 ----
  	{
  	  unsigned char *look_for;
  	  static Frame_Chunk fde_fc;
+ 	  unsigned long segment_selector;
  
  	  fc = & fde_fc;
  	  memset (fc, 0, sizeof (Frame_Chunk));
*************** display_debug_frames (struct dwarf_secti
*** 4152,4157 ****
--- 4304,4311 ----
  	      cie = fc;
  	      fc->augmentation = "";
  	      fc->fde_encoding = 0;
+ 	      fc->ptr_size = eh_addr_size;
+ 	      fc->segment_size = 0;
  	    }
  	  else
  	    {
*************** display_debug_frames (struct dwarf_secti
*** 4161,4166 ****
--- 4315,4323 ----
  	      memcpy (fc->col_type, cie->col_type, fc->ncols * sizeof (short int));
  	      memcpy (fc->col_offset, cie->col_offset, fc->ncols * sizeof (int));
  	      fc->augmentation = cie->augmentation;
+ 	      fc->ptr_size = cie->ptr_size;
+ 	      eh_addr_size = cie->ptr_size;
+ 	      fc->segment_size = cie->segment_size;
  	      fc->code_factor = cie->code_factor;
  	      fc->data_factor = cie->data_factor;
  	      fc->cfa_reg = cie->cfa_reg;
*************** display_debug_frames (struct dwarf_secti
*** 4173,4178 ****
--- 4330,4341 ----
  	  if (fc->fde_encoding)
  	    encoded_ptr_size = size_of_encoded_value (fc->fde_encoding);
  
+ 	  segment_selector = 0;
+ 	  if (fc->segment_size)
+ 	    {
+ 	      segment_selector = byte_get (start, fc->segment_size);
+ 	      start += fc->segment_size;
+ 	    }
  	  fc->pc_begin = get_encoded_value (start, fc->fde_encoding);
  	  if ((fc->fde_encoding & 0x70) == DW_EH_PE_pcrel)
  	    fc->pc_begin += section->address + (start - section_start);
*************** display_debug_frames (struct dwarf_secti
*** 4187,4196 ****
  	      start += augmentation_data_len;
  	    }
  
! 	  printf ("\n%08lx %08lx %08lx FDE cie=%08lx pc=%08lx..%08lx\n",
  		  (unsigned long)(saved_start - section_start), length, cie_id,
! 		  (unsigned long)(cie->chunk_start - section_start),
! 		  fc->pc_begin, fc->pc_begin + fc->pc_range);
  	  if (! do_debug_frames_interp && augmentation_data_len)
  	    {
  	      unsigned long i;
--- 4350,4361 ----
  	      start += augmentation_data_len;
  	    }
  
! 	  printf ("\n%08lx %08lx %08lx FDE cie=%08lx pc=",
  		  (unsigned long)(saved_start - section_start), length, cie_id,
! 		  (unsigned long)(cie->chunk_start - section_start));
! 	  if (fc->segment_size)
! 	    printf ("%04lx:", segment_selector);
! 	  printf ("%08lx..%08lx\n", fc->pc_begin, fc->pc_begin + fc->pc_range);
  	  if (! do_debug_frames_interp && augmentation_data_len)
  	    {
  	      unsigned long i;
*************** display_debug_frames (struct dwarf_secti
*** 4738,4743 ****
--- 4903,4909 ----
  	frame_display_row (fc, &need_col_headers, &max_regs);
  
        start = block_end;
+       eh_addr_size = saved_eh_addr_size;
      }
  
    printf ("\n");
diff -rcp ../binutils-2.20.51.0.7.original/include/ChangeLog ./include/ChangeLog
*** ../binutils-2.20.51.0.7.original/include/ChangeLog	2010-04-08 15:40:37.000000000 +0100
--- ./include/ChangeLog	2010-04-08 15:57:22.000000000 +0100
***************
*** 1,3 ****
--- 1,12 ----
+ 2010-04-08  Nick Clifton  <nickc at redhat.com>
+ 
+ 	Import these patches from the mainline:
+ 
+ 	2010-04-05  Jakub Jelinek  <jakub at redhat.com>
+ 
+ 	* dwarf2.h (DWARF2_Internal_LineInfo): Add li_max_ops_per_insn
+ 	field.
+ 
  2010-03-05  Rainer Orth  <ro at CeBiTec.Uni-Bielefeld.DE>
  
  	* elf/common.h (VER_FLG_*): Document.
diff -rcp ../binutils-2.20.51.0.7.original/include/dwarf2.h ./include/dwarf2.h
*** ../binutils-2.20.51.0.7.original/include/dwarf2.h	2010-04-08 15:40:37.000000000 +0100
--- ./include/dwarf2.h	2010-04-08 15:40:46.000000000 +0100
*************** typedef struct
*** 66,71 ****
--- 66,72 ----
    unsigned short li_version;
    unsigned int   li_prologue_length;
    unsigned char  li_min_insn_length;
+   unsigned char  li_max_ops_per_insn;
    unsigned char  li_default_is_stmt;
    int            li_line_base;
    unsigned char  li_line_range;


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/.cvsignore,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -p -r1.49 -r1.50
--- .cvsignore	5 Nov 2009 18:33:17 -0000	1.49
+++ .cvsignore	8 Apr 2010 15:57:29 -0000	1.50
@@ -1,4 +1 @@
-binutils-2.20.51.0.2.tar.bz2
-binutils-2.20.51.0.2
-current-gcc
-i386
+binutils-2.20.51.0.7.tar.bz2

binutils-2.20.51.0.2-build-id.patch:
 elfcode.h |   18 ++++++++++++++++++
 section.c |    2 !!
 2 files changed, 18 insertions(+), 2 modifications(!)

Index: binutils-2.20.51.0.2-build-id.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-build-id.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- binutils-2.20.51.0.2-build-id.patch	12 Oct 2009 11:18:37 -0000	1.1
+++ binutils-2.20.51.0.2-build-id.patch	8 Apr 2010 15:57:29 -0000	1.2
@@ -1,38 +1,51 @@
---- ../binutils-2.20.51.0.2.orig/bfd/elfcode.h	2009-10-12 11:45:05.000000000 +0100
-+++ bfd/elfcode.h	2009-10-12 11:47:14.000000000 +0100
-@@ -1175,6 +1175,24 @@ elf_checksum_contents (bfd *abfd,
- 
-       if (i_shdr.contents)
- 	(*process) (i_shdr.contents, i_shdr.sh_size, arg);
-+      else
-+	{
-+	  asection *sec;
-+
-+	  sec = bfd_section_from_elf_index (abfd, count);
-+	  if (sec != NULL)
-+	    {
-+	      if (sec->contents == NULL)
-+		{
-+		  /* Force rereading from file.  */
-+		  sec->flags &= ~SEC_IN_MEMORY;
-+		  if (! bfd_malloc_and_get_section (abfd, sec, & sec->contents))
-+		    continue;
-+		}
-+	      if (sec->contents != NULL)
-+		(*process) (sec->contents, i_shdr.sh_size, arg);
-+	    }
-+	}
-     }
- 
-   return TRUE;
---- ../binutils-2.20.51.0.2.orig/bfd/section.c	2009-10-12 11:45:05.000000000 +0100
-+++ bfd/section.c	2009-10-12 11:48:44.000000000 +0100
-@@ -1553,7 +1553,7 @@ bfd_malloc_and_get_section (bfd *abfd, s
-     return TRUE;
- 
-   p = (bfd_byte *)
--      bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
-+      bfd_zmalloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
-   if (p == NULL)
-     return FALSE;
-   *buf = p;
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/elfcode.h ./bfd/elfcode.h
+*** ../binutils-2.20.51.0.7.original/bfd/elfcode.h	2010-04-08 15:29:32.000000000 +0100
+--- ./bfd/elfcode.h	2010-04-08 15:29:39.000000000 +0100
+*************** elf_checksum_contents (bfd *abfd,
+*** 1188,1193 ****
+--- 1188,1211 ----
+  
+        if (i_shdr.contents)
+  	(*process) (i_shdr.contents, i_shdr.sh_size, arg);
++       else
++ 	{
++ 	  asection *sec;
++ 
++ 	  sec = bfd_section_from_elf_index (abfd, count);
++ 	  if (sec != NULL)
++ 	    {
++ 	      if (sec->contents == NULL)
++ 		{
++ 		  /* Force rereading from file.  */
++ 		  sec->flags &= ~SEC_IN_MEMORY;
++ 		  if (! bfd_malloc_and_get_section (abfd, sec, & sec->contents))
++ 		    continue;
++ 		}
++ 	      if (sec->contents != NULL)
++ 		(*process) (sec->contents, i_shdr.sh_size, arg);
++ 	    }
++ 	}
+      }
+  
+    return TRUE;
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/section.c ./bfd/section.c
+*** ../binutils-2.20.51.0.7.original/bfd/section.c	2010-04-08 15:29:32.000000000 +0100
+--- ./bfd/section.c	2010-04-08 15:29:39.000000000 +0100
+*************** bfd_malloc_and_get_section (bfd *abfd, s
+*** 1488,1494 ****
+      return TRUE;
+  
+    p = (bfd_byte *)
+!       bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
+    if (p == NULL)
+      return FALSE;
+    *buf = p;
+--- 1488,1494 ----
+      return TRUE;
+  
+    p = (bfd_byte *)
+!       bfd_zmalloc (sec->rawsize > sec->size ? sec->rawsize : sec->size);
+    if (p == NULL)
+      return FALSE;
+    *buf = p;
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/section.c.orig ./bfd/section.c.orig

binutils-2.20.51.0.2-envvar-revert.patch:
 NEWS       |    5 -----
 ld.texinfo |   15 ----!!!!!!!!!!!
 ldmain.c   |    8 --------
 3 files changed, 17 deletions(-), 11 modifications(!)

Index: binutils-2.20.51.0.2-envvar-revert.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-envvar-revert.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- binutils-2.20.51.0.2-envvar-revert.patch	12 Oct 2009 11:18:37 -0000	1.1
+++ binutils-2.20.51.0.2-envvar-revert.patch	8 Apr 2010 15:57:29 -0000	1.2
@@ -1,69 +1,91 @@
---- ../binutils-2.20.51.0.2.orig/ld/ldmain.c	2009-10-12 11:28:44.000000000 +0100
-+++ ld/ldmain.c	2009-10-12 11:38:36.000000000 +0100
-@@ -256,14 +256,6 @@ main (int argc, char **argv)
-   command_line.warn_search_mismatch = TRUE;
-   command_line.check_section_addresses = -1;
- 
--  if (getenv ("LD_SYMBOLIC") != NULL)
--    command_line.symbolic = symbolic;
--  else if (getenv ("LD_SYMBOLIC_FUNCTIONS") != NULL)
--    command_line.symbolic = symbolic_functions;
--
--  if (getenv ("LD_AS_NEEDED") != NULL)
--    as_needed = TRUE;
--
-   /* We initialize DEMANGLING based on the environment variable
-      COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
-      output of the linker, unless COLLECT_NO_DEMANGLE is set in the
---- ../binutils-2.20.51.0.2.orig/ld/ld.texinfo	2009-10-12 11:28:44.000000000 +0100
-+++ ld/ld.texinfo	2009-10-12 11:38:36.000000000 +0100
-@@ -1140,10 +1140,7 @@ for a library that satisfies a symbol re
- which is undefined at the point that the library was linked, or, if
- the library is not found in the DT_NEEDED lists of other libraries
- linked up to that point, a reference from another dynamic library.
-- at option{--no-as-needed} restores the default behaviour.  If the
--environment variable @code{LD_AS_NEEDED} is set, the linker will
--behave as if the @option{--as-needed} option is passed to the linker as
--the first command line option.
-+ at option{--no-as-needed} restores the default behaviour.
- 
- @kindex --add-needed
- @kindex --no-add-needed
-@@ -1207,21 +1204,14 @@ When creating a shared library, bind ref
- definition within the shared library, if any.  Normally, it is possible
- for a program linked against a shared library to override the definition
- within the shared library.  This option is only meaningful on ELF
--platforms which support shared libraries.  If @option{-Bsymbolic} is not
--used when linking a shared library, the linker will also turn on this
--option if the environment variable @code{LD_SYMBOLIC} is set.
-+platforms which support shared libraries.
- 
- @kindex -Bsymbolic-functions
- @item -Bsymbolic-functions
- When creating a shared library, bind references to global function
- symbols to the definition within the shared library, if any.
- This option is only meaningful on ELF platforms which support shared
--libraries.  If @option{-Bsymbolic-functions} is not used when linking a
--shared library, the linker will also turn on this option if the
--environment variable @code{LD_SYMBOLIC_FUNCTIONS} is set.  When
--both environment variables @code{LD_SYMBOLIC} and
-- at code{LD_SYMBOLIC_FUNCTIONS} are set, @code{LD_SYMBOLIC} will take
--precedent.
-+libraries.
- 
- @kindex --dynamic-list=@var{dynamic-list-file}
- @item --dynamic-list=@var{dynamic-list-file}
---- ../binutils-2.20.51.0.2.orig/ld/NEWS	2009-10-12 11:28:44.000000000 +0100
-+++ ld/NEWS	2009-10-12 11:38:36.000000000 +0100
-@@ -64,11 +64,6 @@ Changes in 2.20:
-   For the switch --enable-runtime-pseudo-reloc it uses for 32-bit
-   runtime pseudo relocation version one, for 64-bit the version two.
- 
--* ELF: Support environment variable LD_AS_NEEDED for --as-needed.
--
--* ELF: Support environment variables, LD_SYMBOLIC for -Bsymbolic and
--  LD_SYMBOLIC_FUNCTIONS for -Bsymbolic-functions.
--
- Changes in 2.19:
- 
- * Linker scripts support a new INSERT command that makes it easier to
+diff -rcp ../binutils-2.20.51.0.7.original/ld/ldmain.c ./ld/ldmain.c
+*** ../binutils-2.20.51.0.7.original/ld/ldmain.c	2010-04-08 15:03:56.000000000 +0100
+--- ./ld/ldmain.c	2010-04-08 15:05:09.000000000 +0100
+*************** main (int argc, char **argv)
+*** 258,271 ****
+    command_line.check_section_addresses = -1;
+    command_line.disable_target_specific_optimizations = -1;
+  
+-   if (getenv ("LD_SYMBOLIC") != NULL)
+-     command_line.symbolic = symbolic;
+-   else if (getenv ("LD_SYMBOLIC_FUNCTIONS") != NULL)
+-     command_line.symbolic = symbolic_functions;
+- 
+-   if (getenv ("LD_AS_NEEDED") != NULL)
+-     add_DT_NEEDED_for_regular = TRUE;
+- 
+    /* We initialize DEMANGLING based on the environment variable
+       COLLECT_NO_DEMANGLE.  The gcc collect2 program will demangle the
+       output of the linker, unless COLLECT_NO_DEMANGLE is set in the
+--- 258,263 ----
+diff -rcp ../binutils-2.20.51.0.7.original/ld/ld.texinfo ./ld/ld.texinfo
+*** ../binutils-2.20.51.0.7.original/ld/ld.texinfo	2010-04-08 15:03:55.000000000 +0100
+--- ./ld/ld.texinfo	2010-04-08 15:05:55.000000000 +0100
+*************** their names to the @option{--as-needed} 
+*** 1152,1161 ****
+  options.  They have been replaced by @option{--copy-dt-needed-entries}
+  and @option{--no-copy-dt-needed-entries}.
+  
+- If the environment variable @code{LD_AS_NEEDED} is set, the linker
+- will behave as if the @option{--as-needed} option is passed to the
+- linker as the first command line option.
+- 
+  @kindex -assert @var{keyword}
+  @item -assert @var{keyword}
+  This option is ignored for SunOS compatibility.
+--- 1152,1157 ----
+*************** When creating a shared library, bind ref
+*** 1206,1226 ****
+  definition within the shared library, if any.  Normally, it is possible
+  for a program linked against a shared library to override the definition
+  within the shared library.  This option is only meaningful on ELF
+! platforms which support shared libraries.  If @option{-Bsymbolic} is not
+! used when linking a shared library, the linker will also turn on this
+! option if the environment variable @code{LD_SYMBOLIC} is set.
+  
+  @kindex -Bsymbolic-functions
+  @item -Bsymbolic-functions
+  When creating a shared library, bind references to global function
+  symbols to the definition within the shared library, if any.
+  This option is only meaningful on ELF platforms which support shared
+! libraries.  If @option{-Bsymbolic-functions} is not used when linking a
+! shared library, the linker will also turn on this option if the
+! environment variable @code{LD_SYMBOLIC_FUNCTIONS} is set.  When
+! both environment variables @code{LD_SYMBOLIC} and
+! @code{LD_SYMBOLIC_FUNCTIONS} are set, @code{LD_SYMBOLIC} will take
+! precedent.
+  
+  @kindex --dynamic-list=@var{dynamic-list-file}
+  @item --dynamic-list=@var{dynamic-list-file}
+--- 1202,1215 ----
+  definition within the shared library, if any.  Normally, it is possible
+  for a program linked against a shared library to override the definition
+  within the shared library.  This option is only meaningful on ELF
+! platforms which support shared libraries.
+  
+  @kindex -Bsymbolic-functions
+  @item -Bsymbolic-functions
+  When creating a shared library, bind references to global function
+  symbols to the definition within the shared library, if any.
+  This option is only meaningful on ELF platforms which support shared
+! libraries.
+  
+  @kindex --dynamic-list=@var{dynamic-list-file}
+  @item --dynamic-list=@var{dynamic-list-file}
+diff -rcp ../binutils-2.20.51.0.7.original/ld/NEWS ./ld/NEWS
+*** ../binutils-2.20.51.0.7.original/ld/NEWS	2010-04-08 15:03:56.000000000 +0100
+--- ./ld/NEWS	2010-04-08 15:04:14.000000000 +0100
+*************** Changes in 2.20:
+*** 73,83 ****
+    For the switch --enable-runtime-pseudo-reloc it uses for 32-bit
+    runtime pseudo relocation version one, for 64-bit the version two.
+  
+- * ELF: Support environment variable LD_AS_NEEDED for --as-needed.
+- 
+- * ELF: Support environment variables, LD_SYMBOLIC for -Bsymbolic and
+-   LD_SYMBOLIC_FUNCTIONS for -Bsymbolic-functions.
+- 
+  Changes in 2.19:
+  
+  * Linker scripts support a new INSERT command that makes it easier to
+--- 73,78 ----

binutils-2.20.51.0.2-libtool-lib64.patch:
 #libtool.m4#       |only
 .#libtool.m4       |only
 bfd/configure      |   26 ++++++++++++++++++++++++!!
 binutils/configure |   26 ++++++++++++++++++++++++!!
 gas/configure      |   26 ++++++++++++++++++++++++!!
 gprof/configure    |   26 ++++++++++++++++++++++++!!
 ld/configure       |   26 ++++++++++++++++++++++++!!
 opcodes/configure  |   26 ++++++++++++++++++++++++!!
 8 files changed, 144 insertions(+), 12 modifications(!)

Index: binutils-2.20.51.0.2-libtool-lib64.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-libtool-lib64.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- binutils-2.20.51.0.2-libtool-lib64.patch	12 Oct 2009 11:18:37 -0000	1.1
+++ binutils-2.20.51.0.2-libtool-lib64.patch	8 Apr 2010 15:57:29 -0000	1.2
@@ -1,10 +1,22 @@
-diff -rup ../binutils-2.20.51.0.2.orig/bfd/configure ./bfd/configure
---- ../binutils-2.20.51.0.2.orig/bfd/configure	2009-10-12 11:28:45.000000000 +0100
-+++ ./bfd/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10670,10 +10670,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/configure ./bfd/configure
+*** ../binutils-2.20.51.0.7.original/bfd/configure	2010-04-08 14:53:48.000000000 +0100
+--- ./bfd/configure	2010-04-08 14:56:50.000000000 +0100
+*************** fi
+*** 10762,10771 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10762,10795 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
 +   # find out which ABI we are using
 +   libsuff=
 +   case "$host_cpu" in
@@ -29,247 +41,262 @@ diff -rup ../binutils-2.20.51.0.2.orig/b
 +     ;;
 +   esac
 + 
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./bfd: configure.orig
-diff -rup ../binutils-2.20.51.0.2.orig/binutils/configure ./binutils/configure
---- ../binutils-2.20.51.0.2.orig/binutils/configure	2009-10-12 11:28:44.000000000 +0100
-+++ ./binutils/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10461,10 +10461,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./binutils: configure.orig
-diff -rup ../binutils-2.20.51.0.2.orig/gas/configure ./gas/configure
---- ../binutils-2.20.51.0.2.orig/gas/configure	2009-10-12 11:28:45.000000000 +0100
-+++ ./gas/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10418,10 +10418,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./gas: configure.orig
-diff -rup ../binutils-2.20.51.0.2.orig/gprof/configure ./gprof/configure
---- ../binutils-2.20.51.0.2.orig/gprof/configure	2009-10-12 11:28:44.000000000 +0100
-+++ ./gprof/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10356,10 +10356,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./gprof: configure.orig
-diff -rup ../binutils-2.20.51.0.2.orig/ld/configure ./ld/configure
---- ../binutils-2.20.51.0.2.orig/ld/configure	2009-10-12 11:28:44.000000000 +0100
-+++ ./ld/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10806,10 +10806,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./ld: configure.orig
-diff -rup ../binutils-2.20.51.0.2.orig/libtool.m4 ./libtool.m4
---- ../binutils-2.20.51.0.2.orig/libtool.m4	2009-10-12 11:28:44.000000000 +0100
-+++ ./libtool.m4	2009-10-12 11:31:43.000000000 +0100
-@@ -2475,10 +2475,30 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if AC_TRY_EVAL(ac_compile); then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-diff -rup ../binutils-2.20.51.0.2.orig/opcodes/configure ./opcodes/configure
---- ../binutils-2.20.51.0.2.orig/opcodes/configure	2009-10-12 11:28:44.000000000 +0100
-+++ ./opcodes/configure	2009-10-12 11:31:43.000000000 +0100
-@@ -10406,10 +10406,34 @@ fi
-   # before this can be enabled.
-   hardcode_into_libs=yes
- 
-+  # find out which ABI we are using
-+  libsuff=
-+  case "$host_cpu" in
-+  x86_64*|s390*|powerpc*|ppc*|sparc*)
-+    echo 'int i;' > conftest.$ac_ext
-+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+  (eval $ac_compile) 2>&5
-+  ac_status=$?
-+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+  (exit $ac_status); }; then
-+      case `/usr/bin/file conftest.$ac_objext` in
-+      *64-bit*)
-+        libsuff=64
-+        if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
-+          sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
-+        fi
-+        sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
-+        ;;
-+      esac
-+    fi
-+    rm -rf conftest*
-+    ;;
-+  esac
-+
-   # Append ld.so.conf contents to the search path
-   if test -f /etc/ld.so.conf; then
-     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
--    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
-   fi
- 
-   # We used to test for /lib/ld.so.1 and disable shared libraries on
-Only in ./opcodes: configure.orig
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+diff -rcp ../binutils-2.20.51.0.7.original/binutils/configure ./binutils/configure
+*** ../binutils-2.20.51.0.7.original/binutils/configure	2010-04-08 14:53:45.000000000 +0100
+--- ./binutils/configure	2010-04-08 14:56:21.000000000 +0100
+*************** fi
+*** 10560,10569 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10560,10593 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
++   # find out which ABI we are using
++   libsuff=
++   case "$host_cpu" in
++   x86_64*|s390*|powerpc*|ppc*|sparc*)
++     echo 'int i;' > conftest.$ac_ext
++     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++   (eval $ac_compile) 2>&5
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); }; then
++       case `/usr/bin/file conftest.$ac_objext` in
++       *64-bit*)
++         libsuff=64
++         if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
++           sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++         fi
++         sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
++         ;;
++       esac
++     fi
++     rm -rf conftest*
++     ;;
++   esac
++ 
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+diff -rcp ../binutils-2.20.51.0.7.original/gas/configure ./gas/configure
+*** ../binutils-2.20.51.0.7.original/gas/configure	2010-04-08 14:53:47.000000000 +0100
+--- ./gas/configure	2010-04-08 14:57:24.000000000 +0100
+*************** fi
+*** 10547,10556 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10547,10580 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
++   # find out which ABI we are using
++   libsuff=
++   case "$host_cpu" in
++   x86_64*|s390*|powerpc*|ppc*|sparc*)
++     echo 'int i;' > conftest.$ac_ext
++     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++   (eval $ac_compile) 2>&5
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); }; then
++       case `/usr/bin/file conftest.$ac_objext` in
++       *64-bit*)
++         libsuff=64
++         if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
++           sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++         fi
++         sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
++         ;;
++       esac
++     fi
++     rm -rf conftest*
++     ;;
++   esac
++ 
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+diff -rcp ../binutils-2.20.51.0.7.original/gprof/configure ./gprof/configure
+*** ../binutils-2.20.51.0.7.original/gprof/configure	2010-04-08 14:53:45.000000000 +0100
+--- ./gprof/configure	2010-04-08 14:57:50.000000000 +0100
+*************** fi
+*** 10485,10494 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10485,10518 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
++   # find out which ABI we are using
++   libsuff=
++   case "$host_cpu" in
++   x86_64*|s390*|powerpc*|ppc*|sparc*)
++     echo 'int i;' > conftest.$ac_ext
++     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++   (eval $ac_compile) 2>&5
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); }; then
++       case `/usr/bin/file conftest.$ac_objext` in
++       *64-bit*)
++         libsuff=64
++         if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
++           sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++         fi
++         sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
++         ;;
++       esac
++     fi
++     rm -rf conftest*
++     ;;
++   esac
++ 
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+diff -rcp ../binutils-2.20.51.0.7.original/ld/configure ./ld/configure
+*** ../binutils-2.20.51.0.7.original/ld/configure	2010-04-08 14:53:44.000000000 +0100
+--- ./ld/configure	2010-04-08 14:58:21.000000000 +0100
+*************** fi
+*** 10966,10975 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10966,10999 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
++   # find out which ABI we are using
++   libsuff=
++   case "$host_cpu" in
++   x86_64*|s390*|powerpc*|ppc*|sparc*)
++     echo 'int i;' > conftest.$ac_ext
++     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++   (eval $ac_compile) 2>&5
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); }; then
++       case `/usr/bin/file conftest.$ac_objext` in
++       *64-bit*)
++         libsuff=64
++         if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
++           sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++         fi
++         sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
++         ;;
++       esac
++     fi
++     rm -rf conftest*
++     ;;
++   esac
++ 
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+Only in .: .#libtool.m4
+Only in .: #libtool.m4#
+diff -rcp ../binutils-2.20.51.0.7.original/opcodes/configure ./opcodes/configure
+*** ../binutils-2.20.51.0.7.original/opcodes/configure	2010-04-08 14:53:45.000000000 +0100
+--- ./opcodes/configure	2010-04-08 14:59:10.000000000 +0100
+*************** fi
+*** 10496,10505 ****
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on
+--- 10496,10529 ----
+    # before this can be enabled.
+    hardcode_into_libs=yes
+  
++   # find out which ABI we are using
++   libsuff=
++   case "$host_cpu" in
++   x86_64*|s390*|powerpc*|ppc*|sparc*)
++     echo 'int i;' > conftest.$ac_ext
++     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++   (eval $ac_compile) 2>&5
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&5
++   (exit $ac_status); }; then
++       case `/usr/bin/file conftest.$ac_objext` in
++       *64-bit*)
++         libsuff=64
++         if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
++           sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
++         fi
++         sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
++         ;;
++       esac
++     fi
++     rm -rf conftest*
++     ;;
++   esac
++ 
+    # Append ld.so.conf contents to the search path
+    if test -f /etc/ld.so.conf; then
+      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+!     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+    fi
+  
+    # We used to test for /lib/ld.so.1 and disable shared libraries on

binutils-2.20.51.0.2-ppc64-pie.patch:
 elf64-ppc.c |    7 !!!!!!!
 1 file changed, 7 modifications(!)

Index: binutils-2.20.51.0.2-ppc64-pie.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-ppc64-pie.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- binutils-2.20.51.0.2-ppc64-pie.patch	12 Oct 2009 11:18:37 -0000	1.1
+++ binutils-2.20.51.0.2-ppc64-pie.patch	8 Apr 2010 15:57:31 -0000	1.2
@@ -1,16 +1,25 @@
---- ../binutils-2.20.51.0.2.orig/bfd/elf64-ppc.c	2009-10-12 11:28:45.000000000 +0100
-+++ bfd/elf64-ppc.c	2009-10-12 11:34:17.000000000 +0100
-@@ -11992,7 +11992,12 @@ ppc64_elf_relocate_section (bfd *output_
- 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
- 		       && !is_opd
- 		       && r_type != R_PPC64_TOC)
--		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
-+		{
-+		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
-+		  if (h->elf.dynindx == -1
-+		      && h->elf.root.type == bfd_link_hash_undefweak)
-+		    memset (&outrel, 0, sizeof outrel);
-+		}
- 	      else
- 		{
- 		  /* This symbol is local, or marked to become local,
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/elf64-ppc.c ./bfd/elf64-ppc.c
+*** ../binutils-2.20.51.0.7.original/bfd/elf64-ppc.c	2010-04-08 15:01:45.000000000 +0100
+--- ./bfd/elf64-ppc.c	2010-04-08 15:02:05.000000000 +0100
+*************** ppc64_elf_relocate_section (bfd *output_
+*** 12558,12564 ****
+  	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
+  		       && !is_opd
+  		       && r_type != R_PPC64_TOC)
+! 		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
+  	      else
+  		{
+  		  /* This symbol is local, or marked to become local,
+--- 12558,12569 ----
+  	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
+  		       && !is_opd
+  		       && r_type != R_PPC64_TOC)
+! 		{
+! 		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
+! 		  if (h->elf.dynindx == -1
+! 		      && h->elf.root.type == bfd_link_hash_undefweak)
+! 		    memset (&outrel, 0, sizeof outrel);
+! 		}
+  	      else
+  		{
+  		  /* This symbol is local, or marked to become local,

binutils-2.20.51.0.2-set-long-long.patch:
 configure    |    6 !!!!!!
 configure.in |    6 !!!!!!
 2 files changed, 12 modifications(!)

Index: binutils-2.20.51.0.2-set-long-long.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-set-long-long.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- binutils-2.20.51.0.2-set-long-long.patch	16 Oct 2009 00:41:01 -0000	1.2
+++ binutils-2.20.51.0.2-set-long-long.patch	8 Apr 2010 15:57:31 -0000	1.3
@@ -1,38 +1,60 @@
-diff -rup ../binutils-2.20.51.0.2.orig/bfd/configure bfd/configure
---- ../binutils-2.20.51.0.2.orig/bfd/configure	2009-10-12 11:45:05.000000000 +0100
-+++ bfd/configure	2009-10-12 11:45:13.000000000 +0100
-@@ -12694,11 +12694,13 @@ if test "x${ac_cv_sizeof_long}" = "x8"; 
-   BFD_HOST_64BIT_LONG=1
-   test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
-   test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
--elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-+fi
-+if test "x${ac_cv_sizeof_long_long}" = "x8"; then
-   BFD_HOST_64BIT_LONG_LONG=1
-   test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
-   test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
--  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-+  if test "x${ac_cv_sizeof_void_p}" = "x8" \
-+          -a "x${ac_cv_sizeof_long}" != "x8"; then
-     BFD_HOSTPTR_T="unsigned long long"
-   fi
- fi
-diff -rup ../binutils-2.20.51.0.2.orig/bfd/configure.in bfd/configure.in
---- ../binutils-2.20.51.0.2.orig/bfd/configure.in	2009-10-12 11:45:05.000000000 +0100
-+++ bfd/configure.in	2009-10-12 11:45:13.000000000 +0100
-@@ -172,11 +172,13 @@ if test "x${ac_cv_sizeof_long}" = "x8"; 
-   BFD_HOST_64BIT_LONG=1
-   test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
-   test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
--elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-+fi
-+if test "x${ac_cv_sizeof_long_long}" = "x8"; then
-   BFD_HOST_64BIT_LONG_LONG=1
-   test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
-   test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
--  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-+  if test "x${ac_cv_sizeof_void_p}" = "x8" \
-+          -a "x${ac_cv_sizeof_long}" != "x8"; then
-     BFD_HOSTPTR_T="unsigned long long"
-   fi
- fi
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/configure ./bfd/configure
+*** ../binutils-2.20.51.0.7.original/bfd/configure	2010-04-08 15:23:58.000000000 +0100
+--- ./bfd/configure	2010-04-08 15:24:06.000000000 +0100
+*************** if test "x${ac_cv_sizeof_long}" = "x8"; 
+*** 12819,12829 ****
+    BFD_HOST_64BIT_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
+! elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
+    BFD_HOST_64BIT_LONG_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
+!   if test "x${ac_cv_sizeof_void_p}" = "x8"; then
+      BFD_HOSTPTR_T="unsigned long long"
+    fi
+  fi
+--- 12819,12831 ----
+    BFD_HOST_64BIT_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
+! fi
+! if test "x${ac_cv_sizeof_long_long}" = "x8"; then
+    BFD_HOST_64BIT_LONG_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
+!   if test "x${ac_cv_sizeof_void_p}" = "x8" \
+!           -a "x${ac_cv_sizeof_long}" != "x8"; then
+      BFD_HOSTPTR_T="unsigned long long"
+    fi
+  fi
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/configure.in ./bfd/configure.in
+*** ../binutils-2.20.51.0.7.original/bfd/configure.in	2010-04-08 15:23:58.000000000 +0100
+--- ./bfd/configure.in	2010-04-08 15:24:06.000000000 +0100
+*************** if test "x${ac_cv_sizeof_long}" = "x8"; 
+*** 153,163 ****
+    BFD_HOST_64BIT_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
+! elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
+    BFD_HOST_64BIT_LONG_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
+!   if test "x${ac_cv_sizeof_void_p}" = "x8"; then
+      BFD_HOSTPTR_T="unsigned long long"
+    fi
+  fi
+--- 153,165 ----
+    BFD_HOST_64BIT_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
+! fi
+! if test "x${ac_cv_sizeof_long_long}" = "x8"; then
+    BFD_HOST_64BIT_LONG_LONG=1
+    test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
+    test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
+!   if test "x${ac_cv_sizeof_void_p}" = "x8" \
+!           -a "x${ac_cv_sizeof_long}" != "x8"; then
+      BFD_HOSTPTR_T="unsigned long long"
+    fi
+  fi

binutils-2.20.51.0.2-version.patch:
 Makefile.am |    6 !!!!!!
 Makefile.in |    6 !!!!!!
 2 files changed, 12 modifications(!)

Index: binutils-2.20.51.0.2-version.patch
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils-2.20.51.0.2-version.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- binutils-2.20.51.0.2-version.patch	12 Oct 2009 11:18:37 -0000	1.1
+++ binutils-2.20.51.0.2-version.patch	8 Apr 2010 15:57:31 -0000	1.2
@@ -1,36 +1,61 @@
---- ../binutils-2.20.51.0.2.orig/bfd/Makefile.am	2009-10-12 11:28:45.000000000 +0100
-+++ bfd/Makefile.am	2009-10-12 11:42:24.000000000 +0100
-@@ -951,12 +951,12 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
- 	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
- 	if test "x$(RELEASE)" = x ; then \
- 	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
--	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
--	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
-+	  bfd_version_string="\"$(VERSION)-%{release} $${bfd_version_date}\"" ;\
-+	  bfd_soversion="$(VERSION)-%{release}" ;\
- 	fi ;\
- 	sed -e "s, at bfd_version@,$$bfd_version," \
- 	    -e "s, at bfd_version_string@,$$bfd_version_string," \
--	    -e "s, at bfd_version_package@,$$bfd_version_package," \
-+	    -e "s, at bfd_version_package@,\"version \"," \
- 	    -e "s, at report_bugs_to@,$$report_bugs_to," \
- 	    < $(srcdir)/version.h > $@; \
- 	echo "$${bfd_soversion}" > libtool-soversion
---- ../binutils-2.20.51.0.2.orig/bfd/Makefile.in	2009-10-12 11:28:45.000000000 +0100
-+++ bfd/Makefile.in	2009-10-12 11:42:24.000000000 +0100
-@@ -1978,12 +1978,12 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
- 	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
- 	if test "x$(RELEASE)" = x ; then \
- 	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
--	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
--	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
-+	  bfd_version_string="\"$(VERSION)-%{release} $${bfd_version_date}\"" ;\
-+	  bfd_soversion="$(VERSION)-%{release}" ;\
- 	fi ;\
- 	sed -e "s, at bfd_version@,$$bfd_version," \
- 	    -e "s, at bfd_version_string@,$$bfd_version_string," \
--	    -e "s, at bfd_version_package@,$$bfd_version_package," \
-+	    -e "s, at bfd_version_package@,\"version \"," \
- 	    -e "s, at report_bugs_to@,$$report_bugs_to," \
- 	    < $(srcdir)/version.h > $@; \
- 	echo "$${bfd_soversion}" > libtool-soversion
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/Makefile.am ./bfd/Makefile.am
+*** ../binutils-2.20.51.0.7.original/bfd/Makefile.am	2010-04-08 15:07:55.000000000 +0100
+--- ./bfd/Makefile.am	2010-04-08 15:23:14.000000000 +0100
+*************** bfdver.h: $(srcdir)/version.h $(srcdir)/
+*** 953,964 ****
+  	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+  	if test "x$(RELEASE)" = x ; then \
+  	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+! 	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
+! 	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
+  	fi ;\
+  	sed -e "s, at bfd_version@,$$bfd_version," \
+  	    -e "s, at bfd_version_string@,$$bfd_version_string," \
+! 	    -e "s, at bfd_version_package@,$$bfd_version_package," \
+  	    -e "s, at report_bugs_to@,$$report_bugs_to," \
+  	    < $(srcdir)/version.h > $@; \
+  	echo "$${bfd_soversion}" > libtool-soversion
+--- 953,964 ----
+  	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+  	if test "x$(RELEASE)" = x ; then \
+  	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+! 	  bfd_version_string="\"$(VERSION)-%{release} $${bfd_version_date}\"" ;\
+! 	  bfd_soversion="$(VERSION)-%{release}" ;\
+  	fi ;\
+  	sed -e "s, at bfd_version@,$$bfd_version," \
+  	    -e "s, at bfd_version_string@,$$bfd_version_string," \
+! 	    -e "s, at bfd_version_package@,\"version \"," \
+  	    -e "s, at report_bugs_to@,$$report_bugs_to," \
+  	    < $(srcdir)/version.h > $@; \
+  	echo "$${bfd_soversion}" > libtool-soversion
+diff -rcp ../binutils-2.20.51.0.7.original/bfd/Makefile.in ./bfd/Makefile.in
+*** ../binutils-2.20.51.0.7.original/bfd/Makefile.in	2010-04-08 15:07:55.000000000 +0100
+--- ./bfd/Makefile.in	2010-04-08 15:23:14.000000000 +0100
+*************** bfdver.h: $(srcdir)/version.h $(srcdir)/
+*** 1982,1993 ****
+  	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+  	if test "x$(RELEASE)" = x ; then \
+  	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+! 	  bfd_version_string="\"$(VERSION).$${bfd_version_date}\"" ;\
+! 	  bfd_soversion="$(VERSION).$${bfd_version_date}" ;\
+  	fi ;\
+  	sed -e "s, at bfd_version@,$$bfd_version," \
+  	    -e "s, at bfd_version_string@,$$bfd_version_string," \
+! 	    -e "s, at bfd_version_package@,$$bfd_version_package," \
+  	    -e "s, at report_bugs_to@,$$report_bugs_to," \
+  	    < $(srcdir)/version.h > $@; \
+  	echo "$${bfd_soversion}" > libtool-soversion
+--- 1982,1993 ----
+  	report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
+  	if test "x$(RELEASE)" = x ; then \
+  	  bfd_version_date=`sed -n -e 's/.*DATE //p' < $(srcdir)/version.h` ;\
+! 	  bfd_version_string="\"$(VERSION)-%{release} $${bfd_version_date}\"" ;\
+! 	  bfd_soversion="$(VERSION)-%{release}" ;\
+  	fi ;\
+  	sed -e "s, at bfd_version@,$$bfd_version," \
+  	    -e "s, at bfd_version_string@,$$bfd_version_string," \
+! 	    -e "s, at bfd_version_package@,\"version \"," \
+  	    -e "s, at report_bugs_to@,$$report_bugs_to," \
+  	    < $(srcdir)/version.h > $@; \
+  	echo "$${bfd_soversion}" > libtool-soversion
+


Index: binutils.spec
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/binutils.spec,v
retrieving revision 1.193
retrieving revision 1.194
diff -u -p -r1.193 -r1.194
--- binutils.spec	4 Mar 2010 13:18:00 -0000	1.193
+++ binutils.spec	8 Apr 2010 15:57:31 -0000	1.194
@@ -16,8 +16,8 @@
 
 Summary: A GNU collection of binary utilities
 Name: %{?cross}binutils%{?_with_debug:-debug}
-Version: 2.20.51.0.2
-Release: 17%{?dist}
+Version: 2.20.51.0.7
+Release: 1%{?dist}
 License: GPLv3+
 Group: Development/Tools
 URL: http://sources.redhat.com/binutils
@@ -30,15 +30,9 @@ Patch04: binutils-2.20.51.0.2-envvar-rev
 Patch05: binutils-2.20.51.0.2-version.patch
 Patch06: binutils-2.20.51.0.2-set-long-long.patch
 Patch07: binutils-2.20.51.0.2-build-id.patch
-Patch08: binutils-2.20.51.0.2-add-needed.patch
-Patch09: binutils-2.20.51.0.2-ifunc-ld-s.patch
-Patch10: binutils-2.20.51.0.2-lwp.patch
-Patch11: binutils-2.20.51.0.2-enable-gold.patch
-Patch12: binutils-2.20.51.0.2-gas-expr.patch
-Patch13: binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch
-Patch14: binutils-2.20.51.0.2-x86-hash-table.patch
-Patch15: binutils-2.20.51.0.2-copy-osabi.patch
-Patch16: binutils-2.20.51.0.2-do-not-set-ifunc.patch
+Patch08: binutils-2.20.51.0.2-copy-osabi.patch
+Patch09: binutils-2.20.51.0.7-do-not-bind-unique-symbols-locally.patch
+Patch10: binutils-2.20.51.0.7-dwarf4.patch
 
 %define gold_arches %ix86 x86_64
 
@@ -138,15 +132,9 @@ libelf instead of BFD.
 %patch05 -p0 -b .version~
 %patch06 -p0 -b .set-long-long~
 %patch07 -p0 -b .build-id~
-%patch08 -p0 -b .add-needed~
-%patch09 -p0 -b .ifunc-ld-s~
-%patch10 -p0 -b .lwp~
-%patch11 -p0 -b .enable-gold~
-%patch12 -p0 -b .gas-expr~
-%patch13 -p0 -b .hidden-plt~
-%patch14 -p0 -b .hash-table~
-%patch15 -p0 -b .copy-osabi~
-%patch16 -p0 -b .no-ifunc~
+%patch08 -p0 -b .copy-osabi~
+%patch09 -p0 -b .do-not-bind-unique~
+%patch10 -p0 -b .dwarf4~
 
 # We cannot run autotools as there is an exact requirement of autoconf-2.59.
 
@@ -449,6 +437,20 @@ exit 0
 %endif # %{isnative}
 
 %changelog
+* Thu Apr   8 2010 Nick Clifton <nickc at redhat.com> - 2.20.51.0.7-1
+- Rebase on 2.20.51.0.7 tarball.
+- Delete redundant patches:
+  binutils-2.20.51.0.2-add-needed.patch,
+  binutils-2.20.51.0.2-do-not-set-ifunc.patch,
+  binutils-2.20.51.0.2-enable-gold.patch,
+  binutils-2.20.51.0.2-gas-expr.patch,
+  binutils-2.20.51.0.2-ifunc-ld-s.patch,
+  binutils-2.20.51.0.2-lwp.patch,
+  binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch,
+  binutils-2.20.51.0.2-x86-hash-table.patch,
+- Do not allow unique symbols to be bound locally.  (PR ld/11434)
+- Add support for DWARF4 debug information.
+
 * Thu Mar   4 2010 Nick Clifton <nickc at redhat.com> - 2.20.51.0.2-17
 - Do not set ELFOSABI_LINUX on binaries which just link to IFUNC using DSOs.  (BZ 568941)
 


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/devel/sources,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -p -r1.48 -r1.49
--- sources	12 Oct 2009 11:18:37 -0000	1.48
+++ sources	8 Apr 2010 15:57:31 -0000	1.49
@@ -1 +1 @@
-b01b185a5eab43190fb83efaeb2ffef9  binutils-2.20.51.0.2.tar.bz2
+8b2608344fc9750afe1ff37121681504  binutils-2.20.51.0.7.tar.bz2


--- binutils-2.20.51.0.2-add-needed.patch DELETED ---


--- binutils-2.20.51.0.2-do-not-set-ifunc.patch DELETED ---


--- binutils-2.20.51.0.2-enable-gold.patch DELETED ---


--- binutils-2.20.51.0.2-gas-expr.patch DELETED ---


--- binutils-2.20.51.0.2-ifunc-ld-s.patch DELETED ---


--- binutils-2.20.51.0.2-lwp.patch DELETED ---


--- binutils-2.20.51.0.2-ppc-hidden-plt-relocs.patch DELETED ---


--- binutils-2.20.51.0.2-x86-hash-table.patch DELETED ---



More information about the scm-commits mailing list