Rebase on FSF binutils 2.29.1 release.
- Retire: binutils-2.29-ppc64-plt-localentry0-disable.patch - Retire: binutils-2.29-non-elf-orphan-skip.patch
This commit is contained in:
parent
f9311f0bfc
commit
2ed6d815cc
@ -572,8 +572,8 @@ diff -rup binutils-2.26.orig/ld/emultempl/avrelf.em binutils-2.26/ld/emultempl/a
|
||||
--- binutils-2.26.orig/ld/emultempl/avrelf.em 2016-02-19 09:35:36.698003274 +0000
|
||||
+++ binutils-2.26/ld/emultempl/avrelf.em 2016-02-19 09:35:54.915106577 +0000
|
||||
@@ -209,7 +209,7 @@ avr_finish (void)
|
||||
else
|
||||
elf_elfheader (abfd)->e_flags &= ~EF_AVR_LINKRELAX_PREPARED;
|
||||
elf_elfheader (abfd)->e_flags &= ~EF_AVR_LINKRELAX_PREPARED;
|
||||
}
|
||||
|
||||
- finish_default ();
|
||||
+ gld${EMULATION_NAME}_finish ();
|
||||
@ -592,7 +592,7 @@ diff -rup binutils-2.26.orig/ld/emultempl/elf32.em binutils-2.26/ld/emultempl/el
|
||||
|
||||
if [ "x${USE_LIBPATH}" = xyes ] ; then
|
||||
@@ -1795,6 +1796,8 @@ output_rel_find (asection *sec, int isdy
|
||||
return last;
|
||||
in->owner, in);
|
||||
}
|
||||
|
||||
+static int orphan_init_done = 0;
|
||||
|
@ -1,147 +0,0 @@
|
||||
--- binutils.orig/ld/emultempl/elf32.em 2017-09-14 15:35:45.971100712 +0100
|
||||
+++ binutils-2.29/ld/emultempl/elf32.em 2017-09-14 15:40:30.315782167 +0100
|
||||
@@ -2011,6 +2011,29 @@ output_rel_find (asection *sec, int isdy
|
||||
|
||||
static int orphan_init_done = 0;
|
||||
|
||||
+/* Return whether IN is suitable to be part of OUT. */
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elf_orphan_compatible (asection *in, asection *out)
|
||||
+{
|
||||
+ /* Non-zero sh_info implies a section with SHF_INFO_LINK with
|
||||
+ unknown semantics for the generic linker, or a SHT_REL/SHT_RELA
|
||||
+ section where sh_info specifies a symbol table. (We won't see
|
||||
+ SHT_GROUP, SHT_SYMTAB or SHT_DYNSYM sections here.) We clearly
|
||||
+ can't merge SHT_REL/SHT_RELA using differing symbol tables, and
|
||||
+ shouldn't merge sections with differing unknown semantics. */
|
||||
+ if (elf_section_data (out)->this_hdr.sh_info
|
||||
+ != elf_section_data (in)->this_hdr.sh_info)
|
||||
+ return FALSE;
|
||||
+ /* We can't merge two sections with differing SHF_EXCLUDE when doing
|
||||
+ a relocatable link. */
|
||||
+ if (bfd_link_relocatable (&link_info)
|
||||
+ && ((elf_section_flags (out) ^ elf_section_flags (in)) & SHF_EXCLUDE) != 0)
|
||||
+ return FALSE;
|
||||
+ return _bfd_elf_match_sections_by_type (link_info.output_bfd, out,
|
||||
+ in->owner, in);
|
||||
+}
|
||||
+
|
||||
/* Place an orphan section. We use this to put random SHF_ALLOC
|
||||
sections in the right segment. */
|
||||
|
||||
@@ -2067,8 +2090,9 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
lang_output_section_statement_type *os;
|
||||
lang_output_section_statement_type *match_by_name = NULL;
|
||||
int isdyn = 0;
|
||||
- int iself = s->owner->xvec->flavour == bfd_target_elf_flavour;
|
||||
- unsigned int sh_type = iself ? elf_section_type (s) : SHT_NULL;
|
||||
+ int elfinput = s->owner->xvec->flavour == bfd_target_elf_flavour;
|
||||
+ int elfoutput = link_info.output_bfd->xvec->flavour == bfd_target_elf_flavour;
|
||||
+ unsigned int sh_type = elfinput ? elf_section_type (s) : SHT_NULL;
|
||||
flagword flags;
|
||||
asection *nexts;
|
||||
|
||||
@@ -2076,7 +2100,7 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
&& link_info.combreloc
|
||||
&& (s->flags & SEC_ALLOC))
|
||||
{
|
||||
- if (iself)
|
||||
+ if (elfinput)
|
||||
switch (sh_type)
|
||||
{
|
||||
case SHT_RELA:
|
||||
@@ -2098,6 +2122,8 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
}
|
||||
|
||||
if (!bfd_link_relocatable (&link_info)
|
||||
+ && elfinput
|
||||
+ && elfoutput
|
||||
&& (s->flags & SEC_ALLOC) != 0
|
||||
&& (elf_section_flags (s) & SHF_GNU_MBIND) != 0)
|
||||
{
|
||||
@@ -2148,23 +2174,18 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
lang_insert_orphan to create a new output section. */
|
||||
constraint = SPECIAL;
|
||||
|
||||
- /* SEC_EXCLUDE is cleared when doing a relocatable link. But
|
||||
- we can't merge 2 input sections with the same name when only
|
||||
- one of them has SHF_EXCLUDE. Don't merge 2 sections with
|
||||
- different sh_info. */
|
||||
+ /* Check to see if we already have an output section statement
|
||||
+ with this name, and its bfd section has compatible flags.
|
||||
+ If the section already exists but does not have any flags
|
||||
+ set, then it has been created by the linker, possibly as a
|
||||
+ result of a --section-start command line switch. */
|
||||
if (os->bfd_section != NULL
|
||||
- && (elf_section_data (os->bfd_section)->this_hdr.sh_info
|
||||
- == elf_section_data (s)->this_hdr.sh_info)
|
||||
&& (os->bfd_section->flags == 0
|
||||
- || ((!bfd_link_relocatable (&link_info)
|
||||
- || (iself && (((elf_section_flags (s)
|
||||
- ^ elf_section_flags (os->bfd_section))
|
||||
- & SHF_EXCLUDE) == 0)))
|
||||
- && ((s->flags ^ os->bfd_section->flags)
|
||||
+ || (((s->flags ^ os->bfd_section->flags)
|
||||
& (SEC_LOAD | SEC_ALLOC)) == 0
|
||||
- && _bfd_elf_match_sections_by_type (link_info.output_bfd,
|
||||
- os->bfd_section,
|
||||
- s->owner, s))))
|
||||
+ && (!elfinput
|
||||
+ || !elfoutput
|
||||
+ || elf_orphan_compatible (s, os->bfd_section)))))
|
||||
{
|
||||
/* We already have an output section statement with this
|
||||
name, and its bfd section has compatible flags.
|
||||
@@ -2253,8 +2274,8 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
else if ((flags & SEC_ALLOC) == 0)
|
||||
;
|
||||
else if ((flags & SEC_LOAD) != 0
|
||||
- && ((iself && sh_type == SHT_NOTE)
|
||||
- || (!iself && CONST_STRNEQ (secname, ".note"))))
|
||||
+ && ((elfinput && sh_type == SHT_NOTE)
|
||||
+ || (!elfinput && CONST_STRNEQ (secname, ".note"))))
|
||||
place = &hold[orphan_interp];
|
||||
else if ((flags & (SEC_LOAD | SEC_HAS_CONTENTS | SEC_THREAD_LOCAL)) == 0)
|
||||
place = &hold[orphan_bss];
|
||||
@@ -2264,8 +2285,8 @@ gld${EMULATION_NAME}_place_orphan (asect
|
||||
place = &hold[orphan_tdata];
|
||||
else if ((flags & SEC_READONLY) == 0)
|
||||
place = &hold[orphan_data];
|
||||
- else if (((iself && (sh_type == SHT_RELA || sh_type == SHT_REL))
|
||||
- || (!iself && CONST_STRNEQ (secname, ".rel")))
|
||||
+ else if (((elfinput && (sh_type == SHT_RELA || sh_type == SHT_REL))
|
||||
+ || (!elfinput && CONST_STRNEQ (secname, ".rel")))
|
||||
&& (flags & SEC_LOAD) != 0)
|
||||
place = &hold[orphan_rel];
|
||||
else if ((flags & SEC_CODE) == 0)
|
||||
diff -rup binutils.orig/bfd/elf32-i386.c binutils-2.29/bfd/elf32-i386.c
|
||||
--- binutils.orig/bfd/elf32-i386.c 2017-09-15 10:27:16.828950825 +0100
|
||||
+++ binutils-2.29/bfd/elf32-i386.c 2017-09-15 10:27:38.962692771 +0100
|
||||
@@ -6921,8 +6921,9 @@ elf_i386_link_setup_gnu_properties (stru
|
||||
for (abfd = info->input_bfds;
|
||||
abfd != NULL;
|
||||
abfd = abfd->link.next)
|
||||
- if ((abfd->flags
|
||||
- & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
|
||||
+ && (abfd->flags
|
||||
+ & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
{
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = abfd;
|
||||
diff -rup binutils.orig/bfd/elf64-x86-64.c binutils-2.29/bfd/elf64-x86-64.c
|
||||
--- binutils.orig/bfd/elf64-x86-64.c 2017-09-15 10:27:16.820950918 +0100
|
||||
+++ binutils-2.29/bfd/elf64-x86-64.c 2017-09-15 10:28:02.621416935 +0100
|
||||
@@ -7466,8 +7466,9 @@ error_alignment:
|
||||
for (abfd = info->input_bfds;
|
||||
abfd != NULL;
|
||||
abfd = abfd->link.next)
|
||||
- if ((abfd->flags
|
||||
- & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
|
||||
+ && (abfd->flags
|
||||
+ & (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
{
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = abfd;
|
@ -1,116 +0,0 @@
|
||||
diff -rup binutils.orig/bfd/elf64-ppc.c binutils-2.29/bfd/elf64-ppc.c
|
||||
--- binutils.orig/bfd/elf64-ppc.c 2017-07-31 10:48:13.642980052 +0100
|
||||
+++ binutils-2.29/bfd/elf64-ppc.c 2017-07-31 10:48:37.386711582 +0100
|
||||
@@ -4010,6 +4010,10 @@ struct ppc_link_hash_entry
|
||||
with non-standard calling convention. */
|
||||
unsigned int save_res:1;
|
||||
|
||||
+ /* Set if a duplicate symbol with non-zero localentry is detected,
|
||||
+ even when the duplicate symbol does not provide a definition. */
|
||||
+ unsigned int non_zero_localentry:1;
|
||||
+
|
||||
/* Contexts in which symbol is used in the GOT (or TOC).
|
||||
TLS_GD .. TLS_EXPLICIT bits are or'd into the mask as the
|
||||
corresponding relocs are encountered during check_relocs.
|
||||
@@ -5018,7 +5022,7 @@ ppc64_elf_merge_symbol_attribute (struct
|
||||
|
||||
static bfd_boolean
|
||||
ppc64_elf_merge_symbol (struct elf_link_hash_entry *h,
|
||||
- const Elf_Internal_Sym *isym ATTRIBUTE_UNUSED,
|
||||
+ const Elf_Internal_Sym *isym,
|
||||
asection **psec ATTRIBUTE_UNUSED,
|
||||
bfd_boolean newdef ATTRIBUTE_UNUSED,
|
||||
bfd_boolean olddef ATTRIBUTE_UNUSED,
|
||||
@@ -5026,6 +5030,8 @@ ppc64_elf_merge_symbol (struct elf_link_
|
||||
const asection *oldsec ATTRIBUTE_UNUSED)
|
||||
{
|
||||
((struct ppc_link_hash_entry *) h)->fake = 0;
|
||||
+ if ((STO_PPC64_LOCAL_MASK & isym->st_other) != 0)
|
||||
+ ((struct ppc_link_hash_entry *) h)->non_zero_localentry = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -6332,6 +6338,7 @@ is_elfv2_localentry0 (struct elf_link_ha
|
||||
&& h->type == STT_FUNC
|
||||
&& h->root.type == bfd_link_hash_defined
|
||||
&& (STO_PPC64_LOCAL_MASK & h->other) == 0
|
||||
+ && !((struct ppc_link_hash_entry *) h)->non_zero_localentry
|
||||
&& is_ppc64_elf (h->root.u.def.section->owner)
|
||||
&& abiversion (h->root.u.def.section->owner) >= 2);
|
||||
}
|
||||
@@ -8346,10 +8353,28 @@ ppc64_elf_tls_setup (struct bfd_link_inf
|
||||
else if (!htab->do_multi_toc)
|
||||
htab->params->no_multi_toc = 1;
|
||||
|
||||
+ /* Default to --no-plt-localentry, as this option can cause problems
|
||||
+ with symbol interposition. For example, glibc libpthread.so and
|
||||
+ libc.so duplicate many pthread symbols, with a fallback
|
||||
+ implementation in libc.so. In some cases the fallback does more
|
||||
+ work than the pthread implementation. __pthread_condattr_destroy
|
||||
+ is one such symbol: the libpthread.so implementation is
|
||||
+ localentry:0 while the libc.so implementation is localentry:8.
|
||||
+ An app that "cleverly" uses dlopen to only load necessary
|
||||
+ libraries at runtime may omit loading libpthread.so when not
|
||||
+ running multi-threaded, which then results in the libc.so
|
||||
+ fallback symbols being used and ld.so complaining. Now there
|
||||
+ are workarounds in ld (see non_zero_localentry) to detect the
|
||||
+ pthread situation, but that may not be the only case where
|
||||
+ --plt-localentry can cause trouble. */
|
||||
if (htab->params->plt_localentry0 < 0)
|
||||
- htab->params->plt_localentry0
|
||||
- = elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
|
||||
- FALSE, FALSE, FALSE) != NULL;
|
||||
+ htab->params->plt_localentry0 = 0;
|
||||
+ if (htab->params->plt_localentry0
|
||||
+ && elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
|
||||
+ FALSE, FALSE, FALSE) == NULL)
|
||||
+ info->callbacks->einfo
|
||||
+ (_("%P: warning: --plt-localentry is especially dangerous without "
|
||||
+ "ld.so support to detect ABI violations.\n"));
|
||||
|
||||
htab->tls_get_addr = ((struct ppc_link_hash_entry *)
|
||||
elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
|
||||
diff -rup binutils.orig/gold/powerpc.cc binutils-2.29/gold/powerpc.cc
|
||||
--- binutils.orig/gold/powerpc.cc 2017-07-31 10:48:13.621980289 +0100
|
||||
+++ binutils-2.29/gold/powerpc.cc 2017-07-31 10:48:37.387711571 +0100
|
||||
@@ -7660,8 +7660,10 @@ Target_powerpc<size, big_endian>::scan_r
|
||||
{
|
||||
if (parameters->options().user_set_plt_localentry())
|
||||
plt_localentry0 = parameters->options().plt_localentry();
|
||||
- else
|
||||
- plt_localentry0 = symtab->lookup("GLIBC_2.26", NULL) != NULL;
|
||||
+ if (plt_localentry0
|
||||
+ && symtab->lookup("GLIBC_2.26", NULL) == NULL)
|
||||
+ gold_warning(_("--plt-localentry is especially dangerous without "
|
||||
+ "ld.so support to detect ABI violations"));
|
||||
}
|
||||
this->plt_localentry0_ = plt_localentry0;
|
||||
this->plt_localentry0_init_ = true;
|
||||
diff -rup binutils.orig/ld/ld.texinfo binutils-2.29/ld/ld.texinfo
|
||||
--- binutils.orig/ld/ld.texinfo 2017-07-31 10:48:13.601980515 +0100
|
||||
+++ binutils-2.29/ld/ld.texinfo 2017-07-31 10:48:37.388711559 +0100
|
||||
@@ -7600,6 +7600,24 @@ barrier in the call stub, or use LD_BIND
|
||||
looks for calls to commonly used functions that create threads, and if
|
||||
seen, adds the necessary barriers. Use these options to change the
|
||||
default behaviour.
|
||||
+
|
||||
+@cindex PowerPC64 ELFv2 PLT localentry optimization
|
||||
+@kindex --plt-localentry
|
||||
+@kindex --no-plt-localentry
|
||||
+@item --plt-localentry
|
||||
+@itemx --no-localentry
|
||||
+ELFv2 functions with localentry:0 are those with a single entry point,
|
||||
+ie. global entry == local entry, and that have no requirement on r2
|
||||
+(the TOC/GOT pointer) or r12, and guarantee r2 is unchanged on return.
|
||||
+Such an external function can be called via the PLT without saving r2
|
||||
+or restoring it on return, avoiding a common load-hit-store for small
|
||||
+functions. The optimization is attractive, with up to 40% reduction
|
||||
+in execution time for a small function, but can result in symbol
|
||||
+interposition failures. Also, minor changes in a shared library,
|
||||
+including system libraries, can cause a function that was localentry:0
|
||||
+to become localentry:8. This will result in a dynamic loader
|
||||
+complaint and failure to run. The option is experimental, use with
|
||||
+care. @option{--no-plt-localentry} is the default.
|
||||
@end table
|
||||
|
||||
@ifclear GENERIC
|
BIN
binutils-2.29.1.tar.xz
Normal file
BIN
binutils-2.29.1.tar.xz
Normal file
Binary file not shown.
130
binutils.spec
130
binutils.spec
@ -7,7 +7,7 @@
|
||||
# --without=testsuite: Do not run the testsuite. Default is to run it.
|
||||
# --with=testsuite: Run the testsuite. Default when --with=debug is not to run it.
|
||||
|
||||
#---Start of Configure Options-----------------------------------------------------------------------
|
||||
#---Start of Configure Options-----------------------------------------------
|
||||
|
||||
# BZ 1124342: Provide a way to enable deterministic archives.
|
||||
# BZ 1195883: But do not do this by default.
|
||||
@ -37,7 +37,7 @@
|
||||
%undefine with_testsuite
|
||||
%endif
|
||||
|
||||
#----End of Configure Options-----------------------------------------------------------------------
|
||||
#----End of Configure Options------------------------------------------------
|
||||
|
||||
%if 0%{!?binutils_target:1}
|
||||
%define binutils_target %{_target_platform}
|
||||
@ -49,12 +49,12 @@
|
||||
%define enable_shared 0
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
Summary: A GNU collection of binary utilities
|
||||
Name: %{?cross}binutils%{?_with_debug:-debug}
|
||||
Version: 2.29
|
||||
Release: 9%{?dist}
|
||||
Version: 2.29.1
|
||||
Release: 1%{?dist}
|
||||
License: GPLv3+
|
||||
Group: Development/Tools
|
||||
URL: http://sources.redhat.com/binutils
|
||||
@ -67,65 +67,62 @@ Source: http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.xz
|
||||
|
||||
Source2: binutils-2.19.50.0.1-output-format.sed
|
||||
|
||||
# Purpose: Use /lib64 and /usr/lib64 instead of /lib and /usr/lib in the
|
||||
# default library search path of 64-bit targets.
|
||||
# Purpose: Use /lib64 and /usr/lib64 instead of /lib and /usr/lib in the
|
||||
# default library search path of 64-bit targets.
|
||||
# Lifetime: Permanent, but it should not be. This is a bug in the libtool
|
||||
# sources used in both binutils and gcc, (specifically the libtool.m4
|
||||
# file). These are based on a version released in 2009 (2.2.6?) rather
|
||||
# than the latest version. (Definitely fixed in libtool version 2.4.6).
|
||||
# sources used in both binutils and gcc, (specifically the
|
||||
# libtool.m4 file). These are based on a version released in 2009
|
||||
# (2.2.6?) rather than the latest version. (Definitely fixed in
|
||||
# libtool version 2.4.6).
|
||||
Patch01: binutils-2.20.51.0.2-libtool-lib64.patch
|
||||
|
||||
# Purpose: Appends a RHEL or Fedora release string to the generic binutils version string.
|
||||
# Purpose: Appends a RHEL or Fedora release string to the generic binutils
|
||||
# version string.
|
||||
# Lifetime: Permanent. This is a RHEL/Fedora specific patch.
|
||||
Patch02: binutils-2.25-version.patch
|
||||
|
||||
# Purpose: Prevent a seg-fault when attempting to pad a section with a NULL padding pointer.
|
||||
# Purpose: Prevent a seg-fault when attempting to pad a section with a NULL
|
||||
# padding pointer.
|
||||
# Lifetime: Permanent - but should be contributed upstream and fixed.
|
||||
# FIXME: Need a test case to reproduce the potential bug so
|
||||
# FIXME: Need a test case to reproduce the potential bug so
|
||||
# that the patch can be contributes.
|
||||
Patch04: binutils-2.20.51.0.10-sec-merge-emit.patch
|
||||
Patch03: binutils-2.20.51.0.10-sec-merge-emit.patch
|
||||
|
||||
# Purpose: Exports the demangle.h header file (associated with the libiberty sources) with
|
||||
# the binutils-devel rpm.
|
||||
# Purpose: Exports the demangle.h header file (associated with the libiberty
|
||||
# sources) with the binutils-devel rpm.
|
||||
# Lifetime: Permanent. This is a RHEL/Fedora specific patch.
|
||||
Patch06: binutils-2.22.52.0.1-export-demangle.h.patch
|
||||
Patch04: binutils-2.22.52.0.1-export-demangle.h.patch
|
||||
|
||||
# Purpose: Disables the check in the BFD library's header file that config.h has been
|
||||
# included before the bfd.h header. See BZ #845084 for more details.
|
||||
# Lifetime: Permanent - but it should not be. The bfd.h header defines various types that
|
||||
# are dependent upon configuration options, so he order of inclusion is important.
|
||||
# FIXME: It would be better if the packages using the BFD header were fixed so
|
||||
# that they do include the header files in the correct order. It may also be
|
||||
# necessary to add a way for a package to tell the bfd.h header that this check
|
||||
# is not necessary.
|
||||
Patch07: binutils-2.22.52.0.4-no-config-h-check.patch
|
||||
# Purpose: Disables the check in the BFD library's header file that config.h
|
||||
# has been included before the bfd.h header. See BZ #845084 for
|
||||
# more details.
|
||||
# Lifetime: Permanent - but it should not be. The bfd.h header defines
|
||||
# various types that are dependent upon configuration options, so
|
||||
# the order of inclusion is important.
|
||||
# FIXME: It would be better if the packages using the BFD header were
|
||||
# fixed so that they do include the header files in the correct
|
||||
# order. It may also be necessary to add a way for a package to
|
||||
# tell the bfd.h header that this check is not necessary.
|
||||
Patch05: binutils-2.22.52.0.4-no-config-h-check.patch
|
||||
|
||||
# Purpose: Import H.J.Lu's Kernel LTO patch.
|
||||
# Lifetime: Permanent, but needs continual updating.
|
||||
# FIXME: Try removing....
|
||||
Patch11: binutils-2.26-lto.patch
|
||||
# FIXME: Try removing....
|
||||
Patch06: binutils-2.26-lto.patch
|
||||
|
||||
# Purpose: Skip PR14918 linker test for ARM native targets.
|
||||
# Lifetime: Permanent - but it should not be.
|
||||
# FIXME: This patch should be contributed upstream.
|
||||
Patch12: binutils-2.29-skip-rp14918-test-for-arm.patch
|
||||
# FIXME: This patch should be contributed upstream.
|
||||
Patch07: binutils-2.29-skip-rp14918-test-for-arm.patch
|
||||
|
||||
# Purpose: Include the filename concerned in readelf error messages.
|
||||
# Lifetime: Permanent. This patch changes the format of readelf's output, making it
|
||||
# better (IMHO) but also potentially breaking tools that depend upon readelf's
|
||||
# current format. Hence it remains a local patch.
|
||||
Patch13: binutils-2.29-filename-in-error-messages.patch
|
||||
# Lifetime: Permanent. This patch changes the format of readelf's output,
|
||||
# making it better (IMHO) but also potentially breaking tools that
|
||||
# depend upon readelf's current format. Hence it remains a local
|
||||
# patch.
|
||||
Patch08: binutils-2.29-filename-in-error-messages.patch
|
||||
|
||||
# Purpose: Do not enable the PPC64 plt-localentry0 linker optimization by default.
|
||||
# Lifetime: Fixed in 2.29.1.
|
||||
Patch15: binutils-2.29-ppc64-plt-localentry0-disable.patch
|
||||
|
||||
# Purpose: Prevent a seg-fault in the linker by not attempting to place orphan ELF
|
||||
# sections into a non-ELF output section.
|
||||
# Lifetime: Fixed in 2.29.1.
|
||||
Patch16: binutils-2.29-non-elf-orphan-skip.patch
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
Provides: bundled(libiberty)
|
||||
|
||||
@ -200,7 +197,7 @@ Requires(preun): %{_sbindir}/alternatives
|
||||
%define _gnu %{nil}
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%description
|
||||
Binutils is a collection of binary utilities, including ar (for
|
||||
@ -215,7 +212,7 @@ of an object or archive file), strings (for listing printable strings
|
||||
from files), strip (for discarding symbols), and addr2line (for
|
||||
converting addresses to file and line).
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%package devel
|
||||
Summary: BFD and opcodes static and dynamic libraries and header files
|
||||
@ -244,20 +241,18 @@ dynamic libraries.
|
||||
Developers starting new projects are strongly encouraged to consider
|
||||
using libelf instead of BFD.
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%prep
|
||||
%setup -q -n binutils-%{version}
|
||||
%patch01 -p1
|
||||
%patch02 -p1
|
||||
%patch03 -p1
|
||||
%patch04 -p1
|
||||
%patch06 -p1
|
||||
%patch07 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch05 -p1
|
||||
%patch06 -p1
|
||||
%patch07 -p1
|
||||
%patch08 -p1
|
||||
|
||||
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
|
||||
|
||||
@ -295,7 +290,7 @@ touch */configure
|
||||
%define _target_platform %{_arch}-%{_vendor}-%{_host_os}
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%build
|
||||
echo target is %{binutils_target}
|
||||
@ -415,7 +410,7 @@ uuencode binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}.tar.b
|
||||
rm -f binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
|
||||
%endif
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
@ -539,12 +534,12 @@ if [ -x gold/ld-new ]; then
|
||||
cat %{?cross}gold.lang >> %{?cross}binutils.lang
|
||||
fi
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%post
|
||||
%if "%{build_gold}" == "both"
|
||||
@ -568,7 +563,7 @@ rm -rf %{buildroot}
|
||||
|
||||
exit 0
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%preun
|
||||
%if "%{build_gold}" == "both"
|
||||
@ -592,7 +587,7 @@ fi
|
||||
|
||||
exit 0
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%if %{isnative}
|
||||
%postun
|
||||
@ -606,7 +601,7 @@ exit 0
|
||||
fi
|
||||
%endif # isnative
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
%files -f %{?cross}binutils.lang
|
||||
%defattr(-,root,root,-)
|
||||
@ -636,10 +631,11 @@ exit 0
|
||||
%endif # enable_shared
|
||||
|
||||
%if %{isnative}
|
||||
|
||||
%if %{with docs}
|
||||
%{_infodir}/[^b]*info*
|
||||
%{_infodir}/binutils*info*
|
||||
%endif
|
||||
%endif # with docs
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
@ -647,14 +643,20 @@ exit 0
|
||||
%{_libdir}/lib*.a
|
||||
%{_libdir}/libbfd.so
|
||||
%{_libdir}/libopcodes.so
|
||||
|
||||
%if %{with docs}
|
||||
%{_infodir}/bfd*info*
|
||||
%endif # with docs
|
||||
|
||||
%endif # isnative
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
%changelog
|
||||
* Tue Sep 26 2017 Nick Clifton <nickc@redhat.com> 2.29.1-1
|
||||
- Rebase on FSF binutils 2.29.1 release.
|
||||
- Retire: binutils-2.29-ppc64-plt-localentry0-disable.patch
|
||||
- Retire: binutils-2.29-non-elf-orphan-skip.patch
|
||||
|
||||
* Thu Sep 14 2017 Nick Clifton <nickc@redhat.com> 2.29-10
|
||||
- Extend fix for PR 21884.
|
||||
(#1491023)
|
||||
|
Loading…
Reference in New Issue
Block a user