packages: binutils/binutils.spec, binutils/binutils-bug-13675.patch (NEW), =?UTF-8?Q?=20?=...

arekm arekm at pld-linux.org
Sat Feb 11 10:20:34 CET 2012


Author: arekm                        Date: Sat Feb 11 09:20:34 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel 3; upstream fix for noop on < i686; run test suite

---- Files affected:
packages/binutils:
   binutils.spec (1.356 -> 1.357) , binutils-bug-13675.patch (NONE -> 1.1)  (NEW), binutils-i586_nop.patch (1.1 -> NONE)  (REMOVED)

---- Diffs:

================================================================
Index: packages/binutils/binutils.spec
diff -u packages/binutils/binutils.spec:1.356 packages/binutils/binutils.spec:1.357
--- packages/binutils/binutils.spec:1.356	Fri Feb 10 23:45:31 2012
+++ packages/binutils/binutils.spec	Sat Feb 11 10:20:28 2012
@@ -6,6 +6,7 @@
 				# http://sourceware.org/ml/binutils/2008-03/msg00162.html
 %bcond_without	pax		# without PaX flags (for upstream bugreports)
 %bcond_without	default_ld	# default ld instead of gold
+%bcond_without	tests
 #
 Summary:	GNU Binary Utility Development Utilities
 Summary(de.UTF-8):	GNU Binary Utility Development Utilities
@@ -18,7 +19,7 @@
 Summary(uk.UTF-8):	Набір інструментів GNU для побудови виконуваних програм
 Name:		binutils
 Version:	2.22.52.0.1
-Release:	2
+Release:	3
 Epoch:		3
 License:	GPL v3+
 Group:		Development/Tools
@@ -37,7 +38,7 @@
 Patch7:		%{name}-libtool-m.patch
 Patch8:		%{name}-build-id.patch
 Patch9:		%{name}-tooldir.patch
-Patch10:	%{name}-i586_nop.patch
+Patch10:	%{name}-bug-13675.patch
 Patch11:	%{name}-weakdef.patch
 URL:		http://sources.redhat.com/binutils/
 BuildRequires:	autoconf >= 2.64
@@ -160,9 +161,7 @@
 %patch7 -p1
 %patch8 -p0
 %patch9 -p1
-%ifarch i386 i486 i586
 %patch10 -p1
-%endif
 %patch11 -p1
 
 # file contains hacks for ac 2.59 only
@@ -230,6 +229,8 @@
 
 %{__make}
 
+%{?with_tests:%{__make} check}
+
 %install
 rm -rf $RPM_BUILD_ROOT
 
@@ -362,6 +363,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.357  2012/02/11 09:20:28  arekm
+- rel 3; upstream fix for noop on < i686; run test suite
+
 Revision 1.356  2012/02/10 22:45:31  megabajt
 - added -weakdef.patch
 

================================================================
Index: packages/binutils/binutils-bug-13675.patch
diff -u /dev/null packages/binutils/binutils-bug-13675.patch:1.1
--- /dev/null	Sat Feb 11 10:20:34 2012
+++ packages/binutils/binutils-bug-13675.patch	Sat Feb 11 10:20:28 2012
@@ -0,0 +1,280 @@
+commit 7eb902bc9272afb419ab6fc5699eb7ed8beb104b
+Author: H.J. Lu <hjl.tools at gmail.com>
+Date:   Thu Feb 9 22:51:57 2012 +0000
+
+    Don't use multi byte nop instructions for i386
+    
+    bfd/
+    
+    2012-02-09  H.J. Lu  <hongjiu.lu at intel.com>
+    
+    	PR ld/13675
+    	* cpu-i386.c (bfd_arch_i386_fill): Updated to support multi byte
+    	nop instructions.
+    	(bfd_arch_i386_short_nop_fill): New.
+    	(bfd_arch_i386_long_nop_fill): Likewise.
+    	Use bfd_arch_i386_short_nop_fill in 32bit bfd_arch_info
+    	initializers.  Use bfd_arch_i386_long_nop_fill on 64bit
+    	bfd_arch_info initializers.
+    
+    	* cpu-k1om.c (bfd_arch_i386_fill): Renamed to ...
+    	(bfd_arch_i386_short_nop_fill): This.
+    	Update bfd_arch_info initializers.
+    	* cpu-l1om.c: Likewise.
+    
+    ld/testsuite/
+    
+    2012-02-09  H.J. Lu  <hongjiu.lu at intel.com>
+    
+    	PR ld/13675
+    	* ld-i386/tlsnopic.dd: Update no-op padding.
+    	* ld-i386/tlspic.dd: Likewise.
+
+diff --git a/bfd/cpu-i386.c b/bfd/cpu-i386.c
+index f8991cf..4cb59ed 100644
+--- a/bfd/cpu-i386.c
++++ b/bfd/cpu-i386.c
+@@ -25,7 +25,8 @@
+ #include "libbfd.h"
+ #include "libiberty.h"
+ 
+-extern void * bfd_arch_i386_fill (bfd_size_type, bfd_boolean, bfd_boolean);
++extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
++					    bfd_boolean);
+ 
+ static const bfd_arch_info_type *
+ bfd_i386_compatible (const bfd_arch_info_type *a,
+@@ -41,16 +42,16 @@ bfd_i386_compatible (const bfd_arch_info_type *a,
+   return compat;
+ }
+ 
+-/* Fill the buffer with zero or nop instruction if CODE is TRUE.  */
++/* Fill the buffer with zero or nop instruction if CODE is TRUE.  Use
++   multi byte nop instructions if LONG_NOP is TRUE.  */
+ 
+-void *
+-bfd_arch_i386_fill (bfd_size_type count,
+-		    bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
+-		    bfd_boolean code)
++static void *
++bfd_arch_i386_fill (bfd_size_type count, bfd_boolean code,
++		    bfd_boolean long_nop)
+ {
+   /* nop */
+   static const char nop_1[] = { 0x90 };	
+-  /* nopw */
++  /* xchg %ax,%ax */
+   static const char nop_2[] = { 0x66, 0x90 };
+   /* nopl (%[re]ax) */
+   static const char nop_3[] = { 0x0f, 0x1f, 0x00 };
+@@ -74,6 +75,7 @@ bfd_arch_i386_fill (bfd_size_type count,
+   static const char *const nops[] =
+     { nop_1, nop_2, nop_3, nop_4, nop_5,
+       nop_6, nop_7, nop_8, nop_9, nop_10 };
++  bfd_size_type nop_size = long_nop ? ARRAY_SIZE (nops) : 2;
+ 
+   void *fill = bfd_malloc (count);
+   if (fill == NULL)
+@@ -82,11 +84,11 @@ bfd_arch_i386_fill (bfd_size_type count,
+   if (code)
+     {
+       bfd_byte *p = fill;
+-      while (count >= ARRAY_SIZE (nops))
++      while (count >= nop_size)
+ 	{
+-	  memcpy (p, nops[ARRAY_SIZE (nops) - 1], ARRAY_SIZE (nops));
+-	  p += ARRAY_SIZE (nops);
+-	  count -= ARRAY_SIZE (nops);
++	  memcpy (p, nops[nop_size - 1], nop_size);
++	  p += nop_size;
++	  count -= nop_size;
+ 	}
+       if (count != 0)
+ 	memcpy (p, nops[count - 1], count);
+@@ -97,6 +99,26 @@ bfd_arch_i386_fill (bfd_size_type count,
+   return fill;
+ }
+ 
++/* Fill the buffer with zero or short nop instruction if CODE is TRUE.  */
++
++void *
++bfd_arch_i386_short_nop_fill (bfd_size_type count,
++			      bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
++			      bfd_boolean code)
++{
++  return bfd_arch_i386_fill (count, code, FALSE);
++}
++
++/* Fill the buffer with zero or long nop instruction if CODE is TRUE.  */
++
++static void *
++bfd_arch_i386_long_nop_fill (bfd_size_type count,
++			     bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
++			     bfd_boolean code)
++{
++  return bfd_arch_i386_fill (count, code, TRUE);
++}
++
+ static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
+ {
+   64, /* 64 bits in a word */
+@@ -110,7 +132,7 @@ static const bfd_arch_info_type bfd_x64_32_arch_intel_syntax =
+   FALSE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_long_nop_fill,
+   0
+ };
+ 
+@@ -127,7 +149,7 @@ static const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
+   FALSE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_long_nop_fill,
+   &bfd_x64_32_arch_intel_syntax,
+ };
+ 
+@@ -144,7 +166,7 @@ static const bfd_arch_info_type bfd_i386_arch_intel_syntax =
+   TRUE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   &bfd_x86_64_arch_intel_syntax
+ };
+ 
+@@ -161,7 +183,7 @@ static const bfd_arch_info_type i8086_arch =
+   FALSE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   &bfd_i386_arch_intel_syntax
+ };
+ 
+@@ -178,7 +200,7 @@ static const bfd_arch_info_type bfd_x64_32_arch =
+   FALSE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_long_nop_fill,
+   &i8086_arch
+ };
+ 
+@@ -195,7 +217,7 @@ static const bfd_arch_info_type bfd_x86_64_arch =
+   FALSE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_long_nop_fill,
+   &bfd_x64_32_arch
+ };
+ 
+@@ -212,6 +234,6 @@ const bfd_arch_info_type bfd_i386_arch =
+   TRUE,
+   bfd_i386_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   &bfd_x86_64_arch
+ };
+diff --git a/bfd/cpu-k1om.c b/bfd/cpu-k1om.c
+index f9958e4..54b6e58 100644
+--- a/bfd/cpu-k1om.c
++++ b/bfd/cpu-k1om.c
+@@ -23,7 +23,8 @@
+ #include "bfd.h"
+ #include "libbfd.h"
+ 
+-extern void * bfd_arch_i386_fill (bfd_size_type, bfd_boolean, bfd_boolean);
++extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
++					    bfd_boolean);
+ 
+ static const bfd_arch_info_type bfd_k1om_arch_intel_syntax =
+ {
+@@ -38,7 +39,7 @@ static const bfd_arch_info_type bfd_k1om_arch_intel_syntax =
+   TRUE,
+   bfd_default_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   0
+ };
+ 
+@@ -55,6 +56,6 @@ const bfd_arch_info_type bfd_k1om_arch =
+   TRUE,
+   bfd_default_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   &bfd_k1om_arch_intel_syntax
+ };
+diff --git a/bfd/cpu-l1om.c b/bfd/cpu-l1om.c
+index 0fabd49..46ac3a0 100644
+--- a/bfd/cpu-l1om.c
++++ b/bfd/cpu-l1om.c
+@@ -23,7 +23,8 @@
+ #include "bfd.h"
+ #include "libbfd.h"
+ 
+-extern void * bfd_arch_i386_fill (bfd_size_type, bfd_boolean, bfd_boolean);
++extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
++					    bfd_boolean);
+ 
+ static const bfd_arch_info_type bfd_l1om_arch_intel_syntax =
+ {
+@@ -38,7 +39,7 @@ static const bfd_arch_info_type bfd_l1om_arch_intel_syntax =
+   TRUE,
+   bfd_default_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   0
+ };
+ 
+@@ -55,6 +56,6 @@ const bfd_arch_info_type bfd_l1om_arch =
+   TRUE,
+   bfd_default_compatible,
+   bfd_default_scan,
+-  bfd_arch_i386_fill,
++  bfd_arch_i386_short_nop_fill,
+   &bfd_l1om_arch_intel_syntax
+ };
+diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
+index 037bfa0..b53cb8b 100644
+--- a/ld/testsuite/ChangeLog
++++ b/ld/testsuite/ChangeLog
+@@ -1,3 +1,9 @@
++2012-02-09  H.J. Lu  <hongjiu.lu at intel.com>
++
++	PR ld/13675
++	* ld-i386/tlsnopic.dd: Update no-op padding.
++	* ld-i386/tlspic.dd: Likewise. 
++
+ 2012-01-31  H.J. Lu  <hongjiu.lu at intel.com>
+ 
+ 	PR ld/13616
+diff --git a/ld/testsuite/ld-i386/tlsnopic.dd b/ld/testsuite/ld-i386/tlsnopic.dd
+index d6a16d0..027d288 100644
+--- a/ld/testsuite/ld-i386/tlsnopic.dd
++++ b/ld/testsuite/ld-i386/tlsnopic.dd
+@@ -156,4 +156,5 @@ Disassembly of section .text:
+     10ec:	8b 5d fc[ 	]+mov    -0x4\(%ebp\),%ebx
+     10ef:	c9[ 	]+leave *
+     10f0:	c3[ 	]+ret *
+-    10f1:	0f 1f 00[ 	]+nopl   \(%eax\)
++    10f1:	66 90[ 	]+xchg   %ax,%ax
++    10f3:	90[ 	]+nop
+diff --git a/ld/testsuite/ld-i386/tlspic.dd b/ld/testsuite/ld-i386/tlspic.dd
+index d85b385..ace06e6 100644
+--- a/ld/testsuite/ld-i386/tlspic.dd
++++ b/ld/testsuite/ld-i386/tlspic.dd
+@@ -406,4 +406,5 @@ Disassembly of section .text:
+  [0-9a-f]+:	8b 5d fc[ 	]+mov    -0x4\(%ebp\),%ebx
+  [0-9a-f]+:	c9[ 	]+leave *
+  [0-9a-f]+:	c3[ 	]+ret *
+- [0-9a-f]+:	0f 1f 00[ 	]+nopl   \(%eax\)
++ [0-9a-f]+:	66 90[ 	]+xchg   %ax,%ax
++ [0-9a-f]+:	90[ 	]+nop
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/binutils/binutils.spec?r1=1.356&r2=1.357&f=u



More information about the pld-cvs-commit mailing list