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