backport some testsuite fixes from upstream

This commit is contained in:
Kyle McMartin 2014-06-24 15:30:41 -04:00
parent adb0f8668a
commit cd1fc1360a
5 changed files with 287 additions and 1 deletions

View File

@ -0,0 +1,55 @@
commit 273dc279306c2b69fbc1407cc695397e4b015152
Author: Will Newton <will.newton@linaro.org>
Date: Fri May 16 15:22:58 2014 +0100
ld/aarch64: xfail non-PIC shared object tests on aarch64
aarch64 does not support building non-PIC shared objects, so mark
tests for these as xfail.
ld/testsuite/ChangeLog:
2014-05-20 Will Newton <will.newton@linaro.org>
* ld-shared/shared.exp: Mark non-PIC shared object tests
as xfail on aarch64.
#-- a/ld/testsuite/ChangeLog
#++ b/ld/testsuite/ChangeLog
#@ -1,3 +1,8 @@
+2014-05-20 Will Newton <will.newton@linaro.org>
+
+ * ld-shared/shared.exp: Mark non-PIC shared object tests
+ as xfail on aarch64.
+
2014-05-19 Andreas Tobler <andreast@fgznet.ch>
* ld-elf/shared.exp: Introduce the extralibs variable to control
diff --git a/ld/testsuite/ld-shared/shared.exp b/ld/testsuite/ld-shared/shared.exp
index 9996ece..c723ef7 100644
--- a/ld/testsuite/ld-shared/shared.exp
+++ b/ld/testsuite/ld-shared/shared.exp
@@ -244,6 +244,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
if [ string match $shared_needs_pic "yes" ] {
setup_xfail "arm*-*-linux*"
}
+ setup_xfail "aarch64*-*-linux*"
shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o shared
# Test ELF shared library relocations with a non-zero load
@@ -270,6 +271,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $srcdir/$subdir/main.c $tmpdir/mainnp.o]
if [ string match $shared_needs_pic "yes" ] {
setup_xfail "arm*-*-linux*"
}
+ setup_xfail "aarch64*-*-linux*"
shared_test shnp "shared (non PIC, load offset)" \
mainnp.o sh1np.o sh2np.o shared \
"-T $srcdir/$subdir/elf-offset.ld"
@@ -326,6 +328,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG $picflag" $srcdir/$subdir/main.c $tmpdir/m
if [ string match $shared_needs_pic "yes" ] {
setup_xfail "arm*-*-linux*"
}
+ setup_xfail "aarch64*-*-linux*"
shared_test shmpnp "shared (PIC main, non PIC so)" mainp.o sh1np.o sh2np.o shared
}
} else {

View File

@ -0,0 +1,42 @@
commit eea6dad2b3ae91189caa91145dd133bae0398d21
Author: Kyle McMartin <kyle@redhat.com>
Date: Fri Jun 20 11:14:09 2014 +0100
Similarly to the AArch64 patch, set DF_STATIC_TLS for consistency with
other architectures when we emit IE relocs in a shared library.
* elf32-arm.c (elf32_arm_check_relocs): Set DF_STATIC_TLS when
emitting initial-exec relocs when not linking an executable.
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -12711,6 +12711,9 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
default: tls_type = GOT_NORMAL; break;
}
+ if (!info->executable && (tls_type & GOT_TLS_IE))
+ info->flags |= DF_STATIC_TLS;
+
if (h != NULL)
{
h->got.refcount++;
--- a/ld/testsuite/ld-arm/tls-gdierelax2.d
+++ b/ld/testsuite/ld-arm/tls-gdierelax2.d
@@ -11,13 +11,13 @@ Disassembly of section .text:
[0-9a-f]+: e59f0004 ldr r0, \[pc, #4\] ; .*
[0-9a-f]+: e79f0000 ldr r0, \[pc, r0\]
[0-9a-f]+: e1a00000 nop ; .*
- [0-9a-f]+: 00008098 .word 0x00008098
- [0-9a-f]+: 0000809c .word 0x0000809c
+ [0-9a-f]+: 000080a0 .word 0x000080a0
+ [0-9a-f]+: 000080a4 .word 0x000080a4
[0-9a-f]+ <bar>:
[0-9a-f]+: 4801 ldr r0, \[pc, #4\] ; .*
[0-9a-f]+: 4478 add r0, pc
[0-9a-f]+: 6800 ldr r0, \[r0, #0\]
[0-9a-f]+: 46c0 nop ; .*
- [0-9a-f]+: 0000808a .word 0x0000808a
- [0-9a-f]+: 0000808c .word 0x0000808c
+ [0-9a-f]+: 00008092 .word 0x00008092
+ [0-9a-f]+: 00008094 .word 0x00008094

View File

@ -0,0 +1,57 @@
commit b35d44f1af711925bfa4344ef00470fee67122f1
Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Date: Wed Nov 27 13:43:39 2013 +0000
[ld/testsuite/]
2013-11-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* ld-plugin/lto.exp: Add -ffat-lto-objects.
* lib/ld-lib.exp (check_lto_available): Likewise.
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -57,7 +57,7 @@ set lto_link_tests {
"" "-O2"
{lto-3c.c} {} "libdummy.a"}
{"Build liblto-3.a"
- "" "-flto"
+ "" "-flto -ffat-lto-objects"
{lto-3b.c} {} "liblto-3.a"}
{"Build libdummy.a 5a"
"" "-flto"
@@ -111,7 +111,7 @@ set lto_link_tests {
"" ""
{pr12758a.s} {} "libdummy.a"}
{"Build libpr12758.a"
- "" "-flto -O2"
+ "" "-flto -O2 -ffat-lto-objects"
{pr12758b.c} {} "libpr12758.a"}
{"PR ld/12758"
"-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
@@ -120,13 +120,13 @@ set lto_link_tests {
"" ""
{pr12760a.c} {} "libdummy.a"}
{"Build libpr12760.a"
- "" "-flto -O2"
+ "" "-flto -O2 -ffat-lto-objects"
{pr12760b.c} {} "libpr12760.a"}
{"PR ld/12760"
"-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
{dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
{"Build libpr13183.a"
- "-T" "-flto -O2"
+ "-T" "-flto -O2 -ffat-lto-objects"
{pr13183a.c} {} "libpr13183.a"}
{"Build libdummy.a PR ld/13183"
"" "-flto -O2"
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -1643,7 +1643,7 @@ proc check_lto_available { } {
set f [open $src "w"]
puts $f ""
close $f
- set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -fuse-linker-plugin $src -o $output"]
+ set status [remote_exec host $CC "-shared -B[pwd]/tmpdir/ld/ -flto -ffat-lto-objects -fuse-linker-plugin $src -o $output"]
if { [lindex $status 0] == 0 } {
set lto_available_saved 1
} else {

View File

@ -0,0 +1,114 @@
From 4c6d802e592b3762a149c343bc5722e065e57841 Mon Sep 17 00:00:00 2001
From: H.J. Lu <hjl.tools@gmail.com>
Date: Wed, 26 Mar 2014 12:18:59 -0700
Subject: [PATCH] Scan all input files for symbol reference warning
This patch scans all input files for symbol reference warning if the
symbol reference doesn't exist in the current input file.
ld/
PR ld/16756
* ldmain.c (symbol_warning): New function.
(warning_callback): Use it. Scan all input files for a reference
to SYMBOL.
ld/testsuite/
PR ld/16756
* ld-plugin/lto.exp: Expect filename and line number for PR
ld/12760 test.
---
ld/ChangeLog | 7 ++++
ld/ldmain.c | 43 ++++++++++++++++----------
ld/testsuite/ChangeLog | 64 ++++++++++++++++++++++------------------
ld/testsuite/ld-plugin/lto.exp | 4 +-
4 files changed, 70 insertions(+), 48 deletions(-)
diff --git a/ld/ldmain.c b/ld/ldmain.c
index ffc9f84..14253a6 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -1150,6 +1150,25 @@ struct warning_callback_info
asymbol **asymbols;
};
+/* Look through the relocs to see if we can find a plausible address
+ for SYMBOL in ABFD. Return TRUE if found. Otherwise return FALSE. */
+
+static bfd_boolean
+symbol_warning (const char *warning, const char *symbol, bfd *abfd)
+{
+ struct warning_callback_info cinfo;
+
+ if (!bfd_generic_link_read_symbols (abfd))
+ einfo (_("%B%F: could not read symbols: %E\n"), abfd);
+
+ cinfo.found = FALSE;
+ cinfo.warning = warning;
+ cinfo.symbol = symbol;
+ cinfo.asymbols = bfd_get_outsymbols (abfd);
+ bfd_map_over_sections (abfd, warning_find_reloc, &cinfo);
+ return cinfo.found;
+}
+
/* This is called when there is a reference to a warning symbol. */
static bfd_boolean
--- a/ld/ldmain.c 2014-06-24 14:04:00.700594584 -0400
+++ b/ld/ldmain.c 2014-06-24 14:07:19.452270808 -0400
@@ -1172,24 +1172,14 @@
einfo ("%P: %s%s\n", _("warning: "), warning);
else if (symbol == NULL)
einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
- else if ((abfd->flags & BFD_PLUGIN) == 0)
+ else if (! symbol_warning (warning, symbol, abfd))
{
- struct warning_callback_info cinfo;
-
- /* Look through the relocs to see if we can find a plausible
- address. */
-
- if (!bfd_generic_link_read_symbols (abfd))
- einfo (_("%B%F: could not read symbols: %E\n"), abfd);
-
- cinfo.found = FALSE;
- cinfo.warning = warning;
- cinfo.symbol = symbol;
- cinfo.asymbols = bfd_get_outsymbols (abfd);
- bfd_map_over_sections (abfd, warning_find_reloc, &cinfo);
-
- if (! cinfo.found)
- einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
+ bfd *b;
+ /* Search all input files for a reference to SYMBOL. */
+ for (b = info->input_bfds; b; b = b->link_next)
+ if (b != abfd && symbol_warning (warning, symbol, b))
+ return TRUE;
+ einfo ("%B: %s%s\n", abfd, _("warning: "), warning);
}
return TRUE;
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index af7307f..53543a6 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -116,14 +116,14 @@ set lto_link_tests {
"-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12758a.o -Wl,--start-group tmpdir/libpr12758.a -Wl,--end-group" ""
{dummy.c} {} "pr12758.exe"}
{"Build libdummy.a PR ld/12760"
- "" ""
+ "" "-g -O0"
{pr12760a.c} {} "libdummy.a"}
{"Build libpr12760.a"
"" "-flto -O2 -ffat-lto-objects"
{pr12760b.c} {} "libpr12760.a"}
{"PR ld/12760"
"-O2 -Wl,-e,foo -nostdlib -flto -fuse-linker-plugin tmpdir/pr12760a.o -Wl,--start-group tmpdir/libpr12760.a -Wl,--end-group" ""
- {dummy.c} {} "pr12760.exe" "c" "warning: Bad bar"}
+ {dummy.c} {} "pr12760.exe" "c" "pr12760a.c:6: warning: Bad bar"}
{"Build libpr13183.a"
"-T" "-flto -O2 -ffat-lto-objects"
{pr13183a.c} {} "libpr13183.a"}
--
1.7.1

View File

@ -17,7 +17,7 @@
Summary: A GNU collection of binary utilities
Name: %{?cross}binutils%{?_with_debug:-debug}
Version: 2.24
Release: 15%{?dist}
Release: 16%{?dist}
License: GPLv3+
Group: Development/Tools
URL: http://sources.redhat.com/binutils
@ -59,6 +59,10 @@ Patch17: binutils-2.24-set-section-macros.patch
Patch18: binutils-2.24-fake-zlib-sections.patch
# Fix detections little endian PPC shared libraries
Patch19: binutils-2.24-ldforcele.patch
Patch20: binutils-2.24-arm-static-tls.patch
Patch21: binutils-2.24-fat-lto-objects.patch
Patch22: binutils-2.24-symbol-warning.patch
Patch23: binutils-2.24-aarch64-ld-shared-non-PIC-xfail.patch
Provides: bundled(libiberty)
@ -182,6 +186,10 @@ using libelf instead of BFD.
%ifarch ppc64le
%patch19 -p0 -b .ldforcele~
%endif
%patch20 -p1 -b .armstatictls~
%patch21 -p1 -b .fatlto~
%patch22 -p1 -b .symwarn~
%patch23 -p1 -b .ld-aarch64-xfails~
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
@ -492,6 +500,16 @@ exit 0
%endif # %{isnative}
%changelog
* Tue Jun 24 2014 Kyle McMartin <kyle@redhat.com> - 2.24-16
- Backport a couple LTO testsuite fixes from HEAD.
Default to -ffat-lto-objects for some ld tests, which was the default in
gcc 4.8, but changed in 4.9, and resulted in some failures.
- Add STATIC_TLS flag on ARM when IE relocs are emitted in a shared
library. Also fix up offsets in the testsuite resulting from the
addition of the flags.
- XFail some ld tests on AArch64 to cut some of the spurious testsuite
failures down.
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.24-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild