Rebase on FSF binutils 2.26.1 release.
- Retire: binutils-2.26-formatting.patch - Retire: binutils-2.26-Bsymbolic_PIE.patch - Retire: binutils-rh1312151.patch - Retire: binutils-2.26-fix-GOT-offset-calculation.patch - Retire: binutils-2.26-common-definitions.patch - Retire: binutils-2.26-x86-PIE-relocations.patch
This commit is contained in:
parent
a302c15623
commit
e9bb253066
@ -1,146 +0,0 @@
|
||||
diff -upr binutils-2.26.orig/ld/ld.texinfo binutils-2.26/ld/ld.texinfo
|
||||
--- binutils-2.26.orig/ld/ld.texinfo 2016-02-16 10:45:43.245336561 +0000
|
||||
+++ binutils-2.26/ld/ld.texinfo 2016-02-16 10:47:04.670763451 +0000
|
||||
@@ -1325,15 +1325,21 @@ libraries.
|
||||
When creating a shared library, bind references to global symbols to the
|
||||
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.
|
||||
+within the shared library. This option can also be used with the
|
||||
+@option{--export-dynamic} option, when creating a position independent
|
||||
+executable, to bind references to global symbols to the definition within
|
||||
+the executable. This option is only meaningful on ELF platforms which
|
||||
+support shared libraries and position independent executables.
|
||||
|
||||
@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 can also be used with the @option{--export-dynamic} option,
|
||||
+when creating a position independent executable, to bind references
|
||||
+to global function symbols to the definition within the executable.
|
||||
This option is only meaningful on ELF platforms which support shared
|
||||
-libraries.
|
||||
+libraries and position independent executables.
|
||||
|
||||
@kindex --dynamic-list=@var{dynamic-list-file}
|
||||
@item --dynamic-list=@var{dynamic-list-file}
|
||||
diff -upr binutils-2.26.orig/ld/lexsup.c binutils-2.26/ld/lexsup.c
|
||||
--- binutils-2.26.orig/ld/lexsup.c 2016-02-16 10:45:43.246336567 +0000
|
||||
+++ binutils-2.26/ld/lexsup.c 2016-02-16 10:47:04.671763456 +0000
|
||||
@@ -1586,15 +1586,14 @@ parse_args (unsigned argc, char **argv)
|
||||
/* We may have -Bsymbolic, -Bsymbolic-functions, --dynamic-list-data,
|
||||
--dynamic-list-cpp-new, --dynamic-list-cpp-typeinfo and
|
||||
--dynamic-list FILE. -Bsymbolic and -Bsymbolic-functions are
|
||||
- for shared libraries. -Bsymbolic overrides all others and vice
|
||||
- versa. */
|
||||
+ for PIC outputs. -Bsymbolic overrides all others and vice versa. */
|
||||
switch (command_line.symbolic)
|
||||
{
|
||||
case symbolic_unset:
|
||||
break;
|
||||
case symbolic:
|
||||
- /* -Bsymbolic is for shared library only. */
|
||||
- if (bfd_link_dll (&link_info))
|
||||
+ /* -Bsymbolic is for PIC output only. */
|
||||
+ if (bfd_link_pic (&link_info))
|
||||
{
|
||||
link_info.symbolic = TRUE;
|
||||
/* Should we free the unused memory? */
|
||||
@@ -1603,8 +1602,8 @@ parse_args (unsigned argc, char **argv)
|
||||
}
|
||||
break;
|
||||
case symbolic_functions:
|
||||
- /* -Bsymbolic-functions is for shared library only. */
|
||||
- if (bfd_link_dll (&link_info))
|
||||
+ /* -Bsymbolic-functions is for PIC output only. */
|
||||
+ if (bfd_link_pic (&link_info))
|
||||
command_line.dynamic_list = dynamic_list_data;
|
||||
break;
|
||||
}
|
||||
diff -upr binutils-2.26.orig/ld/testsuite/ld-i386/i386.exp binutils-2.26/ld/testsuite/ld-i386/i386.exp
|
||||
--- binutils-2.26.orig/ld/testsuite/ld-i386/i386.exp 2016-02-16 10:45:43.319336949 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-i386/i386.exp 2016-02-16 10:47:04.672763461 +0000
|
||||
@@ -319,6 +319,7 @@ run_dump_test "load5a"
|
||||
run_dump_test "load5b"
|
||||
run_dump_test "load6"
|
||||
run_dump_test "pr19175"
|
||||
+run_dump_test "pr19615"
|
||||
|
||||
if { !([istarget "i?86-*-linux*"]
|
||||
|| [istarget "i?86-*-gnu*"]
|
||||
--- /dev/null 2016-02-16 08:27:18.513962320 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-i386/pr19615.s 2016-02-16 10:56:11.886632341 +0000
|
||||
@@ -0,0 +1,13 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start, @function
|
||||
+_start:
|
||||
+ ret
|
||||
+
|
||||
+ .globl xyzzy /* This symbol should be exported */
|
||||
+ .type xyzzy, @function
|
||||
+xyzzy:
|
||||
+ ret
|
||||
+
|
||||
+ .section ".xyzzy_ptr","aw",%progbits
|
||||
+ .dc.a xyzzy
|
||||
--- /dev/null 2016-02-16 08:27:18.513962320 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-i386/pr19615.d 2016-02-16 10:56:11.886632341 +0000
|
||||
@@ -0,0 +1,13 @@
|
||||
+#as: --32
|
||||
+#ld: -pie -Bsymbolic -E -melf_i386
|
||||
+#readelf: -r --wide --dyn-syms
|
||||
+
|
||||
+Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
|
||||
+ Offset Info Type Sym. Value Symbol's Name
|
||||
+[0-9a-f]+ +[0-9a-f]+ +R_386_RELATIVE +
|
||||
+
|
||||
+Symbol table '.dynsym' contains [0-9]+ entries:
|
||||
+ Num: Value Size Type Bind Vis Ndx Name
|
||||
+#...
|
||||
+[ ]*[a-f0-9]+: [a-f0-9]+ 0 FUNC GLOBAL DEFAULT [a-f0-9]+ xyzzy
|
||||
+#...
|
||||
--- /dev/null 2016-02-16 08:27:18.513962320 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-x86-64/pr19615.s 2016-02-16 10:57:55.386174958 +0000
|
||||
@@ -0,0 +1,13 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start, @function
|
||||
+_start:
|
||||
+ ret
|
||||
+
|
||||
+ .globl xyzzy /* This symbol should be exported */
|
||||
+ .type xyzzy, @function
|
||||
+xyzzy:
|
||||
+ ret
|
||||
+
|
||||
+ .section ".xyzzy_ptr","aw",%progbits
|
||||
+ .dc.a xyzzy
|
||||
--- /dev/null 2016-02-16 08:27:18.513962320 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-x86-64/pr19615.d 2016-02-16 10:57:55.386174958 +0000
|
||||
@@ -0,0 +1,13 @@
|
||||
+#as: --64
|
||||
+#ld: -pie -Bsymbolic -E -melf_x86_64
|
||||
+#readelf: -r --wide --dyn-syms
|
||||
+
|
||||
+Relocation section '.rela.dyn' at offset 0x[0-9a-f]+ contains 1 entries:
|
||||
+ Offset Info Type Symbol's Value Symbol's Name \+ Addend
|
||||
+[0-9a-f]+ +[0-9a-f]+ +R_X86_64_RELATIVE +[0-9]+
|
||||
+
|
||||
+Symbol table '.dynsym' contains [0-9]+ entries:
|
||||
+ Num: Value Size Type Bind Vis Ndx Name
|
||||
+#...
|
||||
+[ ]*[a-f0-9]+: [a-f0-9]+ 0 FUNC GLOBAL DEFAULT [a-f0-9]+ xyzzy
|
||||
+#...
|
||||
--- binutils-2.26.orig/ld/testsuite/ld-x86-64/x86-64.exp 2016-02-16 10:45:43.443337600 +0000
|
||||
+++ binutils-2.26/ld/testsuite/ld-x86-64/x86-64.exp 2016-02-16 11:01:02.418162157 +0000
|
||||
@@ -353,6 +353,7 @@ run_dump_test "pr19013-x32"
|
||||
run_dump_test "pr19013-nacl"
|
||||
run_dump_test "pr19162"
|
||||
run_dump_test "pr19175"
|
||||
+run_dump_test "pr19615"
|
||||
|
||||
# Add $PLT_CFLAGS if PLT is expected.
|
||||
global PLT_CFLAGS
|
@ -1,21 +0,0 @@
|
||||
--- binutils-2.26.orig/bfd/elflink.c 2016-03-14 17:11:13.628349614 +0000
|
||||
+++ binutils-2.26/bfd/elflink.c 2016-03-14 17:20:56.512569366 +0000
|
||||
@@ -1485,13 +1485,16 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||
represent variables; this can cause confusion in principle, but
|
||||
any such confusion would seem to indicate an erroneous program or
|
||||
shared library. We also permit a common symbol in a regular
|
||||
- object to override a weak symbol in a shared object. */
|
||||
+ object to override a weak symbol in a shared object. A common
|
||||
+ symbol in executable also overrides a symbol in a shared object. */
|
||||
|
||||
if (newdyn
|
||||
&& newdef
|
||||
&& (olddef
|
||||
|| (h->root.type == bfd_link_hash_common
|
||||
- && (newweak || newfunc))))
|
||||
+ && (newweak
|
||||
+ || newfunc
|
||||
+ || (!olddyn && bfd_link_executable (info))))))
|
||||
{
|
||||
*override = TRUE;
|
||||
newdef = FALSE;
|
@ -1,17 +0,0 @@
|
||||
--- binutils-2.26.orig/bfd/elf32-i386.c 2016-02-29 15:47:45.172597805 +0000
|
||||
+++ binutils-2.26/bfd/elf32-i386.c 2016-02-29 15:48:42.161904973 +0000
|
||||
@@ -4016,10 +4016,12 @@ elf_i386_relocate_section (bfd *output_b
|
||||
|
||||
/* It is relative to .got.plt section. */
|
||||
if (h->got.offset != (bfd_vma) -1)
|
||||
- /* Use GOT entry. */
|
||||
+ /* Use GOT entry. Mask off the least significant bit in
|
||||
+ GOT offset which may be set by R_386_GOT32 processing
|
||||
+ below. */
|
||||
relocation = (htab->elf.sgot->output_section->vma
|
||||
+ htab->elf.sgot->output_offset
|
||||
- + h->got.offset - offplt);
|
||||
+ + (h->got.offset & ~1) - offplt);
|
||||
else
|
||||
/* Use GOTPLT entry. */
|
||||
relocation = (h->plt.offset / plt_entry_size - 1 + 3) * 4;
|
@ -1,297 +0,0 @@
|
||||
--- ../binutils-2.26.orig/bfd/coff-i386.c 2016-02-04 10:31:44.684793142 +0000
|
||||
+++ bfd/coff-i386.c 2016-02-04 10:32:02.106891045 +0000
|
||||
@@ -139,41 +139,41 @@ coff_i386_reloc (bfd *abfd,
|
||||
#define DOIT(x) \
|
||||
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
|
||||
|
||||
- if (diff != 0)
|
||||
- {
|
||||
- reloc_howto_type *howto = reloc_entry->howto;
|
||||
- unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
+ if (diff != 0)
|
||||
+ {
|
||||
+ reloc_howto_type *howto = reloc_entry->howto;
|
||||
+ unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
+
|
||||
+ switch (howto->size)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ {
|
||||
+ char x = bfd_get_8 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_8 (abfd, x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
- switch (howto->size)
|
||||
+ case 1:
|
||||
{
|
||||
- case 0:
|
||||
- {
|
||||
- char x = bfd_get_8 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_8 (abfd, x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 1:
|
||||
- {
|
||||
- short x = bfd_get_16 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 2:
|
||||
- {
|
||||
- long x = bfd_get_32 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
+ short x = bfd_get_16 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
- default:
|
||||
- abort ();
|
||||
+ case 2:
|
||||
+ {
|
||||
+ long x = bfd_get_32 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
}
|
||||
- }
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ abort ();
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/* Now let bfd_perform_relocation finish everything up. */
|
||||
return bfd_reloc_continue;
|
||||
--- ../binutils-2.26.orig/bfd/coff-x86_64.c 2016-02-04 10:31:44.686793153 +0000
|
||||
+++ bfd/coff-x86_64.c 2016-02-04 10:33:02.044227862 +0000
|
||||
@@ -138,59 +138,61 @@ coff_amd64_reloc (bfd *abfd,
|
||||
#define DOIT(x) \
|
||||
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
|
||||
|
||||
- if (diff != 0)
|
||||
- {
|
||||
- reloc_howto_type *howto = reloc_entry->howto;
|
||||
- unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
-
|
||||
- /* FIXME: We do not have an end address for data, so we cannot
|
||||
- accurately range check any addresses computed against it.
|
||||
- cf: PR binutils/17512: file: 1085-1761-0.004.
|
||||
- For now we do the best that we can. */
|
||||
- if (addr < (unsigned char *) data || addr > ((unsigned char *) data) + input_section->size)
|
||||
+ if (diff != 0)
|
||||
+ {
|
||||
+ reloc_howto_type *howto = reloc_entry->howto;
|
||||
+ unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
+
|
||||
+ /* FIXME: We do not have an end address for data, so we cannot
|
||||
+ accurately range check any addresses computed against it.
|
||||
+ cf: PR binutils/17512: file: 1085-1761-0.004.
|
||||
+ For now we do the best that we can. */
|
||||
+ if (addr < (unsigned char *) data
|
||||
+ || addr > ((unsigned char *) data) + input_section->size)
|
||||
+ {
|
||||
+ bfd_set_error (bfd_error_bad_value);
|
||||
+ return bfd_reloc_notsupported;
|
||||
+ }
|
||||
+
|
||||
+ switch (howto->size)
|
||||
+ {
|
||||
+ case 0:
|
||||
{
|
||||
- bfd_set_error (bfd_error_bad_value);
|
||||
- return bfd_reloc_notsupported;
|
||||
+ char x = bfd_get_8 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_8 (abfd, x, addr);
|
||||
}
|
||||
+ break;
|
||||
|
||||
- switch (howto->size)
|
||||
+ case 1:
|
||||
{
|
||||
- case 0:
|
||||
- {
|
||||
- char x = bfd_get_8 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_8 (abfd, x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 1:
|
||||
- {
|
||||
- short x = bfd_get_16 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 2:
|
||||
- {
|
||||
- long x = bfd_get_32 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
- case 4:
|
||||
- {
|
||||
- long long x = bfd_get_64 (abfd, addr);
|
||||
- DOIT (x);
|
||||
- bfd_put_64 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- default:
|
||||
- bfd_set_error (bfd_error_bad_value);
|
||||
- return bfd_reloc_notsupported;
|
||||
+ short x = bfd_get_16 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
}
|
||||
- }
|
||||
+ break;
|
||||
+
|
||||
+ case 2:
|
||||
+ {
|
||||
+ long x = bfd_get_32 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 4:
|
||||
+ {
|
||||
+ long long x = bfd_get_64 (abfd, addr);
|
||||
+ DOIT (x);
|
||||
+ bfd_put_64 (abfd, (bfd_vma) x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ bfd_set_error (bfd_error_bad_value);
|
||||
+ return bfd_reloc_notsupported;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/* Now let bfd_perform_relocation finish everything up. */
|
||||
return bfd_reloc_continue;
|
||||
--- ../binutils-2.26.orig/bfd/elf64-s390.c 2016-02-09 15:01:11.983640775 +0000
|
||||
+++ bfd/elf64-s390.c 2016-02-09 15:01:37.675779605 +0000
|
||||
@@ -337,10 +337,10 @@ elf_s390_reloc_name_lookup (bfd *abfd AT
|
||||
&& strcasecmp (elf_howto_table[i].name, r_name) == 0)
|
||||
return &elf_howto_table[i];
|
||||
|
||||
- if (strcasecmp (elf64_s390_vtinherit_howto.name, r_name) == 0)
|
||||
- return &elf64_s390_vtinherit_howto;
|
||||
- if (strcasecmp (elf64_s390_vtentry_howto.name, r_name) == 0)
|
||||
- return &elf64_s390_vtentry_howto;
|
||||
+ if (strcasecmp (elf64_s390_vtinherit_howto.name, r_name) == 0)
|
||||
+ return &elf64_s390_vtinherit_howto;
|
||||
+ if (strcasecmp (elf64_s390_vtentry_howto.name, r_name) == 0)
|
||||
+ return &elf64_s390_vtentry_howto;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
--- ../binutils-2.26.orig/bfd/pe-mips.c 2016-02-09 15:01:11.995640840 +0000
|
||||
+++ bfd/pe-mips.c 2016-02-09 15:31:21.348317265 +0000
|
||||
@@ -95,44 +95,44 @@ coff_mips_reloc (bfd *abfd,
|
||||
#define DOIT(x) \
|
||||
x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + (diff >> howto->rightshift)) & howto->dst_mask))
|
||||
|
||||
- if (diff != 0)
|
||||
- {
|
||||
- reloc_howto_type *howto = reloc_entry->howto;
|
||||
- unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
+ if (diff != 0)
|
||||
+ {
|
||||
+ reloc_howto_type *howto = reloc_entry->howto;
|
||||
+ unsigned char *addr = (unsigned char *) data + reloc_entry->address;
|
||||
+
|
||||
+ switch (howto->size)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ {
|
||||
+ char x = bfd_get_8 (abfd, addr);
|
||||
+
|
||||
+ DOIT (x);
|
||||
+ bfd_put_8 (abfd, x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 1:
|
||||
+ {
|
||||
+ short x = bfd_get_16 (abfd, addr);
|
||||
+
|
||||
+ DOIT (x);
|
||||
+ bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
- switch (howto->size)
|
||||
+ case 2:
|
||||
{
|
||||
- case 0:
|
||||
- {
|
||||
- char x = bfd_get_8 (abfd, addr);
|
||||
-
|
||||
- DOIT (x);
|
||||
- bfd_put_8 (abfd, x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 1:
|
||||
- {
|
||||
- short x = bfd_get_16 (abfd, addr);
|
||||
-
|
||||
- DOIT (x);
|
||||
- bfd_put_16 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case 2:
|
||||
- {
|
||||
- long x = bfd_get_32 (abfd, addr);
|
||||
-
|
||||
- DOIT (x);
|
||||
- bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
- }
|
||||
- break;
|
||||
+ long x = bfd_get_32 (abfd, addr);
|
||||
|
||||
- default:
|
||||
- abort ();
|
||||
+ DOIT (x);
|
||||
+ bfd_put_32 (abfd, (bfd_vma) x, addr);
|
||||
}
|
||||
- }
|
||||
+ break;
|
||||
+
|
||||
+ default:
|
||||
+ abort ();
|
||||
+ }
|
||||
+ }
|
||||
|
||||
/* Now let bfd_perform_relocation finish everything up. */
|
||||
return bfd_reloc_continue;
|
||||
--- ../binutils-2.26.orig/gas/config/tc-ia64.c 2016-02-09 15:01:12.086641332 +0000
|
||||
+++ gas/config/tc-ia64.c 2016-02-09 15:30:18.562003661 +0000
|
||||
@@ -4360,7 +4360,8 @@ dot_prologue (int dummy ATTRIBUTE_UNUSED
|
||||
as_warn (_("Pointless use of zero first operand to .prologue"));
|
||||
else
|
||||
mask = e.X_add_number;
|
||||
- n = popcount (mask);
|
||||
+
|
||||
+ n = popcount (mask);
|
||||
|
||||
if (sep == ',')
|
||||
parse_operand_and_eval (&e, 0);
|
@ -1,46 +0,0 @@
|
||||
--- binutils-2.26.orig/bfd/elf32-i386.c 2016-03-18 10:04:17.245507884 +0000
|
||||
+++ binutils-2.26/bfd/elf32-i386.c 2016-03-18 10:05:59.336070167 +0000
|
||||
@@ -1830,7 +1830,8 @@ do_size:
|
||||
&& (sec->flags & SEC_ALLOC) != 0
|
||||
&& (r_type != R_386_PC32
|
||||
|| (h != NULL
|
||||
- && (! SYMBOLIC_BIND (info, h)
|
||||
+ && (! (bfd_link_pie (info)
|
||||
+ || SYMBOLIC_BIND (info, h))
|
||||
|| h->root.type == bfd_link_hash_defweak
|
||||
|| !h->def_regular))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
@@ -4287,8 +4288,8 @@ r_386_got32:
|
||||
else if (h != NULL
|
||||
&& h->dynindx != -1
|
||||
&& (r_type == R_386_PC32
|
||||
- || !bfd_link_pic (info)
|
||||
- || !SYMBOLIC_BIND (info, h)
|
||||
+ || !(bfd_link_executable (info)
|
||||
+ || SYMBOLIC_BIND (info, h))
|
||||
|| !h->def_regular))
|
||||
outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
|
||||
else
|
||||
--- binutils-2.26.orig/bfd/elf64-x86-64.c 2016-03-18 10:04:17.244507878 +0000
|
||||
+++ binutils-2.26/bfd/elf64-x86-64.c 2016-03-18 10:06:46.686331624 +0000
|
||||
@@ -2029,7 +2029,8 @@ do_size:
|
||||
&& (sec->flags & SEC_ALLOC) != 0
|
||||
&& (! IS_X86_64_PCREL_TYPE (r_type)
|
||||
|| (h != NULL
|
||||
- && (! SYMBOLIC_BIND (info, h)
|
||||
+ && (! (bfd_link_pie (info)
|
||||
+ || SYMBOLIC_BIND (info, h))
|
||||
|| h->root.type == bfd_link_hash_defweak
|
||||
|| !h->def_regular))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
@@ -4631,8 +4632,8 @@ direct:
|
||||
else if (h != NULL
|
||||
&& h->dynindx != -1
|
||||
&& (IS_X86_64_PCREL_TYPE (r_type)
|
||||
- || ! bfd_link_pic (info)
|
||||
- || ! SYMBOLIC_BIND (info, h)
|
||||
+ || !(bfd_link_executable (info)
|
||||
+ || SYMBOLIC_BIND (info, h))
|
||||
|| ! h->def_regular))
|
||||
{
|
||||
outrel.r_info = htab->r_info (h->dynindx, r_type);
|
@ -1,22 +0,0 @@
|
||||
--- binutils-2.26.orig/bfd/elflink.c 2016-02-26 13:21:54.134859610 +0000
|
||||
+++ binutils-2.26/bfd/elflink.c 2016-02-26 13:22:49.083168157 +0000
|
||||
@@ -555,6 +555,19 @@ bfd_elf_record_link_assignment (bfd *out
|
||||
if (h == NULL)
|
||||
return provide;
|
||||
|
||||
+ if (h->versioned == unknown)
|
||||
+ {
|
||||
+ /* Set versioned if symbol version is unknown. */
|
||||
+ char *version = strrchr (name, ELF_VER_CHR);
|
||||
+ if (version)
|
||||
+ {
|
||||
+ if (version > name && version[-1] != ELF_VER_CHR)
|
||||
+ h->versioned = versioned_hidden;
|
||||
+ else
|
||||
+ h->versioned = versioned;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
switch (h->root.type)
|
||||
{
|
||||
case bfd_link_hash_defined:
|
@ -21,8 +21,8 @@
|
||||
|
||||
Summary: A GNU collection of binary utilities
|
||||
Name: %{?cross}binutils%{?_with_debug:-debug}
|
||||
Version: 2.26
|
||||
Release: 23%{?dist}
|
||||
Version: 2.26.1
|
||||
Release: 1%{?dist}
|
||||
License: GPLv3+
|
||||
Group: Development/Tools
|
||||
URL: http://sources.redhat.com/binutils
|
||||
@ -53,20 +53,20 @@ Patch11: binutils-2.23.52.0.1-addr2line-dynsymtab.patch
|
||||
# Fix detections little endian PPC shared libraries
|
||||
Patch12: binutils-2.24-ldforcele.patch
|
||||
Patch13: binutils-2.25.1-cleansweep.patch
|
||||
Patch14: binutils-2.26-formatting.patch
|
||||
# Patch14: binutils-2.26-formatting.patch
|
||||
Patch15: binutils-2.26-fix-compile-warnings.patch
|
||||
# Enable -Bsymbolic and -Bsymbolic-functions to PIE
|
||||
Patch16: binutils-2.26-Bsymbolic_PIE.patch
|
||||
# Patch16: binutils-2.26-Bsymbolic_PIE.patch
|
||||
# Import H.J.Lu's Kernel LTO patch.
|
||||
Patch17: binutils-2.26-lto.patch
|
||||
# Import fix for PR 19698
|
||||
Patch18: binutils-rh1312151.patch
|
||||
# Patch18: binutils-rh1312151.patch
|
||||
# Import fix for PR 19601
|
||||
Patch19: binutils-2.26-fix-GOT-offset-calculation.patch
|
||||
# Patch19: binutils-2.26-fix-GOT-offset-calculation.patch
|
||||
# Import fix for PR 19579
|
||||
Patch20: binutils-2.26-common-definitions.patch
|
||||
# Patch20: binutils-2.26-common-definitions.patch
|
||||
# Import fix for PR 19827
|
||||
Patch21: binutils-2.26-x86-PIE-relocations.patch
|
||||
# Patch21: binutils-2.26-x86-PIE-relocations.patch
|
||||
|
||||
Provides: bundled(libiberty)
|
||||
|
||||
@ -188,14 +188,14 @@ using libelf instead of BFD.
|
||||
%patch12 -p1 -b .ldforcele~
|
||||
%endif
|
||||
%patch13 -p0
|
||||
%patch14 -p0
|
||||
# %patch14 -p0
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
# %patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
# %patch18 -p1
|
||||
# %patch19 -p1
|
||||
# %patch20 -p1
|
||||
# %patch21 -p1
|
||||
|
||||
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
|
||||
|
||||
@ -519,6 +519,15 @@ exit 0
|
||||
%endif # %{isnative}
|
||||
|
||||
%changelog
|
||||
* Mon Aug 15 2016 Nick Clifton <nickc@redhat.com> 2.26.1-1
|
||||
- Rebase on FSF binutils 2.26.1 release.
|
||||
- Retire: binutils-2.26-formatting.patch
|
||||
- Retire: binutils-2.26-Bsymbolic_PIE.patch
|
||||
- Retire: binutils-rh1312151.patch
|
||||
- Retire: binutils-2.26-fix-GOT-offset-calculation.patch
|
||||
- Retire: binutils-2.26-common-definitions.patch
|
||||
- Retire: binutils-2.26-x86-PIE-relocations.patch
|
||||
|
||||
* Mon Jun 13 2016 Nick Clifton <nickc@redhat.com> 2.26-23
|
||||
- Enable support for GCC's LTO.
|
||||
(#1342618)
|
||||
|
Loading…
Reference in New Issue
Block a user