forked from pool/binutils
This commit is contained in:
parent
5449084e1a
commit
0a23a04b2b
@ -1,29 +0,0 @@
|
|||||||
--- ld/configure.tgt
|
|
||||||
+++ ld/configure.tgt
|
|
||||||
@@ -71,7 +71,7 @@
|
|
||||||
arm*-*-symbianelf*) targ_emul=armsymbian;;
|
|
||||||
arm-*-kaos*) targ_emul=armelf ;;
|
|
||||||
arm9e-*-elf) targ_emul=armelf ;;
|
|
||||||
-arm*b-*-linux-*eabi) targ_emul=armelfb_linux_eabi
|
|
||||||
+arm*b-*-linux-*eabi*) targ_emul=armelfb_linux_eabi
|
|
||||||
targ_extra_emuls=armelf_linux_eabi
|
|
||||||
targ_extra_libpath=$targ_extra_emuls
|
|
||||||
;;
|
|
||||||
@@ -79,7 +79,7 @@
|
|
||||||
targ_extra_emuls="armelfb armelf armelf_linux"
|
|
||||||
targ_extra_libpath="armelf_linux"
|
|
||||||
;;
|
|
||||||
-arm*-*-linux-*eabi) targ_emul=armelf_linux_eabi
|
|
||||||
+arm*-*-linux-*eabi*) targ_emul=armelf_linux_eabi
|
|
||||||
targ_extra_emuls=armelfb_linux_eabi
|
|
||||||
targ_extra_libpath=$targ_extra_emuls
|
|
||||||
;;
|
|
||||||
@@ -87,7 +87,7 @@
|
|
||||||
targ_extra_emuls="armelf armelfb armelfb_linux"
|
|
||||||
targ_extra_libpath="armelfb_linux"
|
|
||||||
;;
|
|
||||||
-arm*-*-uclinux*eabi) targ_emul=armelf_linux_eabi
|
|
||||||
+arm*-*-uclinux*eabi*) targ_emul=armelf_linux_eabi
|
|
||||||
targ_extra_emuls=armelfb_linux_eabi
|
|
||||||
targ_extra_libpath=$targ_extra_emuls
|
|
||||||
;;
|
|
@ -1,27 +0,0 @@
|
|||||||
Index: binutils-2.21.0/bfd/config.bfd
|
|
||||||
===================================================================
|
|
||||||
--- binutils-2.21.0.orig/bfd/config.bfd 2011-04-01 14:04:23.000000000 +0200
|
|
||||||
+++ binutils-2.21.0/bfd/config.bfd 2011-06-17 15:20:41.000000000 +0200
|
|
||||||
@@ -641,7 +641,7 @@ case "${targ}" in
|
|
||||||
targ_selvecs="bfd_elf32_i386_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec"
|
|
||||||
want64=true
|
|
||||||
;;
|
|
||||||
- x86_64-*-mingw*)
|
|
||||||
+ x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep )
|
|
||||||
targ_defvec=x86_64pe_vec
|
|
||||||
targ_selvecs="x86_64pe_vec x86_64pei_vec bfd_elf64_x86_64_vec bfd_elf64_l1om_vec i386pe_vec i386pei_vec bfd_elf32_i386_vec"
|
|
||||||
want64=true
|
|
||||||
Index: binutils-2.21.0/ld/configure.tgt
|
|
||||||
===================================================================
|
|
||||||
--- binutils-2.21.0.orig/ld/configure.tgt 2011-04-01 14:04:28.000000000 +0200
|
|
||||||
+++ binutils-2.21.0/ld/configure.tgt 2011-06-17 15:21:29.000000000 +0200
|
|
||||||
@@ -278,6 +278,9 @@ i[3-7]86-*-cygwin*) targ_emul=i386pe ;
|
|
||||||
test "$targ" != "$host" && LIB_PATH='${tooldir}/lib/w32api' ;;
|
|
||||||
i[3-7]86-*-mingw32*) targ_emul=i386pe ;
|
|
||||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
|
||||||
+x86_64-*-pe | x86_64-*-pep) targ_emul=i386pep ;
|
|
||||||
+ targ_extra_emuls=i386pe ;
|
|
||||||
+ targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o" ;;
|
|
||||||
x86_64-*-mingw*) targ_emul=i386pep ;
|
|
||||||
targ_extra_emuls=i386pe
|
|
||||||
targ_extra_ofiles="deffilep.o pep-dll.o pe-dll.o" ;;
|
|
@ -1,65 +0,0 @@
|
|||||||
From: Michael Matz <matz at suse dot de>
|
|
||||||
To: Ian Lance Taylor <iant at google dot com>
|
|
||||||
Cc: binutils at sourceware dot org
|
|
||||||
Subject: Re: Make no-copy-dt-needed default?
|
|
||||||
|
|
||||||
|
|
||||||
* ldmain.c (add_DT_NEEDED_for_dynamic): Default to FALSE.
|
|
||||||
* ld.texinfo (--copy-dt-needed-entries): Mention new default.
|
|
||||||
|
|
||||||
Index: ld.texinfo
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cvs/src/src/ld/ld.texinfo,v
|
|
||||||
retrieving revision 1.279
|
|
||||||
diff -u -p -r1.279 ld.texinfo
|
|
||||||
--- ld/ld.texinfo 9 Aug 2011 13:10:44 -0000 1.279
|
|
||||||
+++ ld/ld.texinfo 16 Aug 2011 15:58:50 -0000
|
|
||||||
@@ -1258,21 +1258,20 @@ option.
|
|
||||||
@itemx --no-copy-dt-needed-entries
|
|
||||||
This option affects the treatment of dynamic libraries referred to
|
|
||||||
by DT_NEEDED tags @emph{inside} ELF dynamic libraries mentioned on the
|
|
||||||
-command line. Normally the linker will add a DT_NEEDED tag to the
|
|
||||||
+command line. Normally the linker won't add a DT_NEEDED tag to the
|
|
||||||
output binary for each library mentioned in a DT_NEEDED tag in an
|
|
||||||
-input dynamic library. With @option{--no-copy-dt-needed-entries}
|
|
||||||
+input dynamic library. With @option{--copy-dt-needed-entries}
|
|
||||||
specified on the command line however any dynamic libraries that
|
|
||||||
-follow it will have their DT_NEEDED entries ignored. The default
|
|
||||||
-behaviour can be restored with @option{--copy-dt-needed-entries}.
|
|
||||||
+follow it will have their DT_NEEDED entries added. The default
|
|
||||||
+behaviour can be restored with @option{--no-copy-dt-needed-entries}.
|
|
||||||
|
|
||||||
This option also has an effect on the resolution of symbols in dynamic
|
|
||||||
-libraries. With the default setting dynamic libraries mentioned on
|
|
||||||
-the command line will be recursively searched, following their
|
|
||||||
-DT_NEEDED tags to other libraries, in order to resolve symbols
|
|
||||||
-required by the output binary. With
|
|
||||||
-@option{--no-copy-dt-needed-entries} specified however the searching
|
|
||||||
-of dynamic libraries that follow it will stop with the dynamic
|
|
||||||
-library itself. No DT_NEEDED links will be traversed to resolve
|
|
||||||
+libraries. With @option{--copy-dt-needed-entries} dynamic libraries
|
|
||||||
+mentioned on the command line will be recursively searched, following
|
|
||||||
+their DT_NEEDED tags to other libraries, in order to resolve symbols
|
|
||||||
+required by the output binary. With the default setting however
|
|
||||||
+the searching of dynamic libraries that follow it will stop with the
|
|
||||||
+dynamic library itself. No DT_NEEDED links will be traversed to resolve
|
|
||||||
symbols.
|
|
||||||
|
|
||||||
@cindex cross reference table
|
|
||||||
Index: ldmain.c
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cvs/src/src/ld/ldmain.c,v
|
|
||||||
retrieving revision 1.158
|
|
||||||
diff -u -p -r1.158 ldmain.c
|
|
||||||
--- ld/ldmain.c 4 Aug 2011 20:47:46 -0000 1.158
|
|
||||||
+++ ld/ldmain.c 16 Aug 2011 15:58:50 -0000
|
|
||||||
@@ -105,7 +105,7 @@ bfd_boolean add_DT_NEEDED_for_regular;
|
|
||||||
/* True means create DT_NEEDED entries for dynamic libraries that
|
|
||||||
are DT_NEEDED by dynamic libraries specifically mentioned on
|
|
||||||
the command line. */
|
|
||||||
-bfd_boolean add_DT_NEEDED_for_dynamic = TRUE;
|
|
||||||
+bfd_boolean add_DT_NEEDED_for_dynamic;
|
|
||||||
|
|
||||||
/* TRUE if we should demangle symbol names. */
|
|
||||||
bfd_boolean demangling;
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
* elf64-ppc.c (ppc64_elf_edit_toc): Ignore can_optimize bit if
|
|
||||||
we haven't seen expected -mcmodel=medium/large code relocs.
|
|
||||||
|
|
||||||
Index: bfd/elf64-ppc.c
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
|
|
||||||
retrieving revision 1.360
|
|
||||||
diff -u -p -r1.360 elf64-ppc.c
|
|
||||||
--- bfd/elf64-ppc.c 14 Aug 2011 08:11:56 -0000 1.360
|
|
||||||
+++ bfd/elf64-ppc.c 19 Aug 2011 02:13:57 -0000
|
|
||||||
@@ -8267,7 +8362,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
|
|
||||||
some_unused = 1;
|
|
||||||
last = 0;
|
|
||||||
}
|
|
||||||
- else if (*drop)
|
|
||||||
+ else if (*drop & ref_from_discarded)
|
|
||||||
{
|
|
||||||
some_unused = 1;
|
|
||||||
last = ref_from_discarded;
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
|||||||
===================================================================
|
|
||||||
RCS file: /cvs/src/src/bfd/elflink.c,v
|
|
||||||
retrieving revision 1.414
|
|
||||||
retrieving revision 1.415
|
|
||||||
diff -u -r1.414 -r1.415
|
|
||||||
--- src/bfd/elflink.c 2011/07/11 15:03:05 1.414
|
|
||||||
+++ src/bfd/elflink.c 2011/07/11 18:39:13 1.415
|
|
||||||
@@ -5525,7 +5525,8 @@
|
|
||||||
{
|
|
||||||
asection *s;
|
|
||||||
|
|
||||||
- if (inputobj->flags & (DYNAMIC | EXEC_P | BFD_LINKER_CREATED))
|
|
||||||
+ if (inputobj->flags
|
|
||||||
+ & (DYNAMIC | EXEC_P | BFD_PLUGIN | BFD_LINKER_CREATED))
|
|
||||||
continue;
|
|
||||||
s = bfd_get_section_by_name (inputobj, ".note.GNU-stack");
|
|
||||||
if (s)
|
|
@ -1,337 +0,0 @@
|
|||||||
--- binutils/readelf.c 2011/04/28 17:23:16 1.545
|
|
||||||
+++ binutils/readelf.c 2011/06/08 15:59:07 1.546
|
|
||||||
@@ -4548,7 +4554,7 @@
|
|
||||||
dynamic_strings = (char *) get_data (NULL, file, section->sh_offset,
|
|
||||||
1, section->sh_size,
|
|
||||||
_("dynamic strings"));
|
|
||||||
- dynamic_strings_length = section->sh_size;
|
|
||||||
+ dynamic_strings_length = dynamic_strings == NULL ? 0 : section->sh_size;
|
|
||||||
}
|
|
||||||
else if (section->sh_type == SHT_SYMTAB_SHNDX)
|
|
||||||
{
|
|
||||||
@@ -5029,6 +5035,8 @@
|
|
||||||
start = (unsigned char *) get_data (NULL, file, section->sh_offset,
|
|
||||||
1, section->sh_size,
|
|
||||||
_("section data"));
|
|
||||||
+ if (start == NULL)
|
|
||||||
+ continue;
|
|
||||||
|
|
||||||
indices = start;
|
|
||||||
size = (section->sh_size / section->sh_entsize) - 1;
|
|
||||||
@@ -5734,6 +5742,7 @@
|
|
||||||
aux.symtab = GET_ELF_SYMBOLS (file, sec);
|
|
||||||
|
|
||||||
strsec = section_headers + sec->sh_link;
|
|
||||||
+ assert (aux.strtab == NULL);
|
|
||||||
aux.strtab = (char *) get_data (NULL, file, strsec->sh_offset,
|
|
||||||
1, strsec->sh_size,
|
|
||||||
_("string table"));
|
|
||||||
@@ -5816,11 +5825,11 @@
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- aux.info_size = sec->sh_size;
|
|
||||||
aux.info_addr = sec->sh_addr;
|
|
||||||
aux.info = (unsigned char *) get_data (NULL, file, sec->sh_offset, 1,
|
|
||||||
- aux.info_size,
|
|
||||||
+ sec->sh_size,
|
|
||||||
_("unwind info"));
|
|
||||||
+ aux.info_size = aux.info == NULL ? 0 : sec->sh_size;
|
|
||||||
|
|
||||||
printf (_("\nUnwind section "));
|
|
||||||
|
|
||||||
@@ -6147,6 +6156,7 @@
|
|
||||||
aux.symtab = GET_ELF_SYMBOLS (file, sec);
|
|
||||||
|
|
||||||
strsec = section_headers + sec->sh_link;
|
|
||||||
+ assert (aux.strtab == NULL);
|
|
||||||
aux.strtab = (char *) get_data (NULL, file, strsec->sh_offset,
|
|
||||||
1, strsec->sh_size,
|
|
||||||
_("string table"));
|
|
||||||
@@ -6273,7 +6283,6 @@
|
|
||||||
arm_sec->sec = sec;
|
|
||||||
arm_sec->data = get_data (NULL, aux->file, sec->sh_offset, 1,
|
|
||||||
sec->sh_size, _("unwind data"));
|
|
||||||
-
|
|
||||||
arm_sec->rela = NULL;
|
|
||||||
arm_sec->nrelas = 0;
|
|
||||||
|
|
||||||
@@ -7032,6 +7041,7 @@
|
|
||||||
aux.symtab = GET_ELF_SYMBOLS (file, sec);
|
|
||||||
|
|
||||||
strsec = section_headers + sec->sh_link;
|
|
||||||
+ assert (aux.strtab == NULL);
|
|
||||||
aux.strtab = get_data (NULL, file, strsec->sh_offset,
|
|
||||||
1, strsec->sh_size, _("string table"));
|
|
||||||
aux.strtab_size = aux.strtab != NULL ? strsec->sh_size : 0;
|
|
||||||
@@ -7541,7 +7551,7 @@
|
|
||||||
dynamic_strings = (char *) get_data (NULL, file, offset, 1,
|
|
||||||
str_tab_len,
|
|
||||||
_("dynamic string table"));
|
|
||||||
- dynamic_strings_length = str_tab_len;
|
|
||||||
+ dynamic_strings_length = dynamic_strings == NULL ? 0 : str_tab_len;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8079,9 +8089,9 @@
|
|
||||||
edefs = (Elf_External_Verdef *)
|
|
||||||
get_data (NULL, file, section->sh_offset, 1,section->sh_size,
|
|
||||||
_("version definition section"));
|
|
||||||
- endbuf = (char *) edefs + section->sh_size;
|
|
||||||
if (!edefs)
|
|
||||||
break;
|
|
||||||
+ endbuf = (char *) edefs + section->sh_size;
|
|
||||||
|
|
||||||
for (idx = cnt = 0; cnt < section->sh_info; ++cnt)
|
|
||||||
{
|
|
||||||
@@ -8198,9 +8208,9 @@
|
|
||||||
section->sh_offset, 1,
|
|
||||||
section->sh_size,
|
|
||||||
_("version need section"));
|
|
||||||
- endbuf = (char *) eneed + section->sh_size;
|
|
||||||
if (!eneed)
|
|
||||||
break;
|
|
||||||
+ endbuf = (char *) eneed + section->sh_size;
|
|
||||||
|
|
||||||
for (idx = cnt = 0; cnt < section->sh_info; ++cnt)
|
|
||||||
{
|
|
||||||
@@ -8416,9 +8426,10 @@
|
|
||||||
Elf_External_Vernaux evna;
|
|
||||||
unsigned long a_off;
|
|
||||||
|
|
||||||
- get_data (&evn, file, offset, sizeof (evn), 1,
|
|
||||||
- _("version need"));
|
|
||||||
-
|
|
||||||
+ if (get_data (&evn, file, offset, sizeof (evn), 1,
|
|
||||||
+ _("version need")) == NULL)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
ivn.vn_aux = BYTE_GET (evn.vn_aux);
|
|
||||||
ivn.vn_next = BYTE_GET (evn.vn_next);
|
|
||||||
|
|
||||||
@@ -8426,11 +8437,17 @@
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
- get_data (&evna, file, a_off, sizeof (evna),
|
|
||||||
- 1, _("version need aux (2)"));
|
|
||||||
-
|
|
||||||
- ivna.vna_next = BYTE_GET (evna.vna_next);
|
|
||||||
- ivna.vna_other = BYTE_GET (evna.vna_other);
|
|
||||||
+ if (get_data (&evna, file, a_off, sizeof (evna),
|
|
||||||
+ 1, _("version need aux (2)")) == NULL)
|
|
||||||
+ {
|
|
||||||
+ ivna.vna_next = 0;
|
|
||||||
+ ivna.vna_other = 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ ivna.vna_next = BYTE_GET (evna.vna_next);
|
|
||||||
+ ivna.vna_other = BYTE_GET (evna.vna_other);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
a_off += ivna.vna_next;
|
|
||||||
}
|
|
||||||
@@ -8471,11 +8488,17 @@
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
- get_data (&evd, file, offset, sizeof (evd), 1,
|
|
||||||
- _("version def"));
|
|
||||||
-
|
|
||||||
- ivd.vd_next = BYTE_GET (evd.vd_next);
|
|
||||||
- ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
|
|
||||||
+ if (get_data (&evd, file, offset, sizeof (evd), 1,
|
|
||||||
+ _("version def")) == NULL)
|
|
||||||
+ {
|
|
||||||
+ ivd.vd_next = 0;
|
|
||||||
+ ivd.vd_ndx = 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ ivd.vd_next = BYTE_GET (evd.vd_next);
|
|
||||||
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
offset += ivd.vd_next;
|
|
||||||
}
|
|
||||||
@@ -8489,10 +8512,11 @@
|
|
||||||
|
|
||||||
ivd.vd_aux = BYTE_GET (evd.vd_aux);
|
|
||||||
|
|
||||||
- get_data (&evda, file,
|
|
||||||
- offset - ivd.vd_next + ivd.vd_aux,
|
|
||||||
- sizeof (evda), 1,
|
|
||||||
- _("version def aux"));
|
|
||||||
+ if (get_data (&evda, file,
|
|
||||||
+ offset - ivd.vd_next + ivd.vd_aux,
|
|
||||||
+ sizeof (evda), 1,
|
|
||||||
+ _("version def aux")) == NULL)
|
|
||||||
+ break;
|
|
||||||
|
|
||||||
ivda.vda_name = BYTE_GET (evda.vda_name);
|
|
||||||
|
|
||||||
@@ -9153,8 +9177,8 @@
|
|
||||||
print_symbol (25, psym->st_name < strtab_size
|
|
||||||
? strtab + psym->st_name : _("<corrupt>"));
|
|
||||||
|
|
||||||
- if (section->sh_type == SHT_DYNSYM &&
|
|
||||||
- version_info[DT_VERSIONTAGIDX (DT_VERSYM)] != 0)
|
|
||||||
+ if (section->sh_type == SHT_DYNSYM
|
|
||||||
+ && version_info[DT_VERSIONTAGIDX (DT_VERSYM)] != 0)
|
|
||||||
{
|
|
||||||
unsigned char data[2];
|
|
||||||
unsigned short vers_data;
|
|
||||||
@@ -9166,8 +9190,9 @@
|
|
||||||
(file, version_info[DT_VERSIONTAGIDX (DT_VERSYM)],
|
|
||||||
sizeof data + si * sizeof (vers_data));
|
|
||||||
|
|
||||||
- get_data (&data, file, offset + si * sizeof (vers_data),
|
|
||||||
- sizeof (data), 1, _("version data"));
|
|
||||||
+ if (get_data (&data, file, offset + si * sizeof (vers_data),
|
|
||||||
+ sizeof (data), 1, _("version data")) == NULL)
|
|
||||||
+ break;
|
|
||||||
|
|
||||||
vers_data = byte_get (data, 2);
|
|
||||||
|
|
||||||
@@ -9195,8 +9220,14 @@
|
|
||||||
{
|
|
||||||
unsigned long vna_off;
|
|
||||||
|
|
||||||
- get_data (&evn, file, offset, sizeof (evn), 1,
|
|
||||||
- _("version need"));
|
|
||||||
+ if (get_data (&evn, file, offset, sizeof (evn), 1,
|
|
||||||
+ _("version need")) == NULL)
|
|
||||||
+ {
|
|
||||||
+ ivna.vna_next = 0;
|
|
||||||
+ ivna.vna_other = 0;
|
|
||||||
+ ivna.vna_name = 0;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
ivn.vn_aux = BYTE_GET (evn.vn_aux);
|
|
||||||
ivn.vn_next = BYTE_GET (evn.vn_next);
|
|
||||||
@@ -9207,13 +9238,20 @@
|
|
||||||
{
|
|
||||||
Elf_External_Vernaux evna;
|
|
||||||
|
|
||||||
- get_data (&evna, file, vna_off,
|
|
||||||
- sizeof (evna), 1,
|
|
||||||
- _("version need aux (3)"));
|
|
||||||
-
|
|
||||||
- ivna.vna_other = BYTE_GET (evna.vna_other);
|
|
||||||
- ivna.vna_next = BYTE_GET (evna.vna_next);
|
|
||||||
- ivna.vna_name = BYTE_GET (evna.vna_name);
|
|
||||||
+ if (get_data (&evna, file, vna_off,
|
|
||||||
+ sizeof (evna), 1,
|
|
||||||
+ _("version need aux (3)")) == NULL)
|
|
||||||
+ {
|
|
||||||
+ ivna.vna_next = 0;
|
|
||||||
+ ivna.vna_other = 0;
|
|
||||||
+ ivna.vna_name = 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ ivna.vna_other = BYTE_GET (evna.vna_other);
|
|
||||||
+ ivna.vna_next = BYTE_GET (evna.vna_next);
|
|
||||||
+ ivna.vna_name = BYTE_GET (evna.vna_name);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
vna_off += ivna.vna_next;
|
|
||||||
}
|
|
||||||
@@ -9260,12 +9298,19 @@
|
|
||||||
{
|
|
||||||
Elf_External_Verdef evd;
|
|
||||||
|
|
||||||
- get_data (&evd, file, off, sizeof (evd),
|
|
||||||
- 1, _("version def"));
|
|
||||||
-
|
|
||||||
- ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
|
|
||||||
- ivd.vd_aux = BYTE_GET (evd.vd_aux);
|
|
||||||
- ivd.vd_next = BYTE_GET (evd.vd_next);
|
|
||||||
+ if (get_data (&evd, file, off, sizeof (evd),
|
|
||||||
+ 1, _("version def")) == NULL)
|
|
||||||
+ {
|
|
||||||
+ ivd.vd_ndx = 0;
|
|
||||||
+ ivd.vd_aux = 0;
|
|
||||||
+ ivd.vd_next = 0;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
|
|
||||||
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
|
|
||||||
+ ivd.vd_next = BYTE_GET (evd.vd_next);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
off += ivd.vd_next;
|
|
||||||
}
|
|
||||||
@@ -9275,8 +9320,9 @@
|
|
||||||
off -= ivd.vd_next;
|
|
||||||
off += ivd.vd_aux;
|
|
||||||
|
|
||||||
- get_data (&evda, file, off, sizeof (evda),
|
|
||||||
- 1, _("version def aux"));
|
|
||||||
+ if (get_data (&evda, file, off, sizeof (evda),
|
|
||||||
+ 1, _("version def aux")) == NULL)
|
|
||||||
+ break;
|
|
||||||
|
|
||||||
ivda.vda_name = BYTE_GET (evda.vda_name);
|
|
||||||
|
|
||||||
@@ -10361,12 +10407,17 @@
|
|
||||||
|
|
||||||
snprintf (buf, sizeof (buf), _("%s section data"), section->name);
|
|
||||||
section->address = sec->sh_addr;
|
|
||||||
- section->size = sec->sh_size;
|
|
||||||
section->start = (unsigned char *) get_data (NULL, (FILE *) file,
|
|
||||||
sec->sh_offset, 1,
|
|
||||||
sec->sh_size, buf);
|
|
||||||
- if (uncompress_section_contents (§ion->start, §ion->size))
|
|
||||||
- sec->sh_size = section->size;
|
|
||||||
+ if (section->start == NULL)
|
|
||||||
+ section->size = 0;
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ section->size = sec->sh_size;
|
|
||||||
+ if (uncompress_section_contents (§ion->start, §ion->size))
|
|
||||||
+ sec->sh_size = section->size;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (section->start == NULL)
|
|
||||||
return 0;
|
|
||||||
@@ -11934,6 +11985,9 @@
|
|
||||||
offset = offset_from_vma (file, pltgot, global_end - pltgot);
|
|
||||||
data = (unsigned char *) get_data (NULL, file, offset,
|
|
||||||
global_end - pltgot, 1, _("GOT"));
|
|
||||||
+ if (data == NULL)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
printf (_("\nPrimary GOT:\n"));
|
|
||||||
printf (_(" Canonical gp value: "));
|
|
||||||
print_vma (pltgot + 0x7ff0, LONG_HEX);
|
|
||||||
@@ -12030,6 +12084,9 @@
|
|
||||||
offset = offset_from_vma (file, mips_pltgot, end - mips_pltgot);
|
|
||||||
data = (unsigned char *) get_data (NULL, file, offset, end - mips_pltgot,
|
|
||||||
1, _("PLT GOT"));
|
|
||||||
+ if (data == NULL)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
printf (_("\nPLT GOT:\n\n"));
|
|
||||||
printf (_(" Reserved entries:\n"));
|
|
||||||
printf (_(" %*s %*s Purpose\n"),
|
|
||||||
@@ -12108,8 +12165,6 @@
|
|
||||||
strtab = (char *) get_data (NULL, file, string_sec->sh_offset, 1,
|
|
||||||
string_sec->sh_size,
|
|
||||||
_("liblist string table"));
|
|
||||||
- strtab_size = string_sec->sh_size;
|
|
||||||
-
|
|
||||||
if (strtab == NULL
|
|
||||||
|| section->sh_entsize != sizeof (Elf32_External_Lib))
|
|
||||||
{
|
|
||||||
@@ -12117,6 +12172,7 @@
|
|
||||||
free (elib);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+ strtab_size = string_sec->sh_size;
|
|
||||||
|
|
||||||
printf (_("\nLibrary list section '%s' contains %lu entries:\n"),
|
|
||||||
SECTION_NAME (section),
|
|
@ -1,170 +0,0 @@
|
|||||||
Index: bfd/elf32-s390.c
|
|
||||||
===================================================================
|
|
||||||
--- bfd/elf32-s390.c.orig 2010-10-25 17:54:14.000000000 +0200
|
|
||||||
+++ bfd/elf32-s390.c 2011-01-10 17:46:32.000000000 +0100
|
|
||||||
@@ -2504,13 +2504,34 @@ elf_s390_relocate_section (output_bfd, i
|
|
||||||
unresolved_reloc = FALSE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
- case R_390_8:
|
|
||||||
- case R_390_16:
|
|
||||||
- case R_390_32:
|
|
||||||
case R_390_PC16:
|
|
||||||
case R_390_PC16DBL:
|
|
||||||
case R_390_PC32DBL:
|
|
||||||
case R_390_PC32:
|
|
||||||
+ /* This is strictly required only for PC32DBL, which
|
|
||||||
+ is not handled by ld.so, but let's be helpful to the user also
|
|
||||||
+ in the other cases. */
|
|
||||||
+ if (info->shared
|
|
||||||
+ && !SYMBOL_REFERENCES_LOCAL (info, h)
|
|
||||||
+ && (input_section->flags & SEC_ALLOC) != 0
|
|
||||||
+ && (input_section->flags & SEC_READONLY) != 0
|
|
||||||
+ && (!h->def_regular
|
|
||||||
+ || r_type != R_390_PC32DBL
|
|
||||||
+ || h->type != STT_FUNC
|
|
||||||
+ || ELF_ST_VISIBILITY (h->other) != STV_PROTECTED))
|
|
||||||
+ {
|
|
||||||
+ (*_bfd_error_handler)
|
|
||||||
+ (_("%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"),
|
|
||||||
+ input_bfd, elf_howto_table[r_type].name,
|
|
||||||
+ h->root.root.string);
|
|
||||||
+ bfd_set_error (bfd_error_bad_value);
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+ /* Fall through. */
|
|
||||||
+
|
|
||||||
+ case R_390_8:
|
|
||||||
+ case R_390_16:
|
|
||||||
+ case R_390_32:
|
|
||||||
if ((input_section->flags & SEC_ALLOC) == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
Index: bfd/elf64-s390.c
|
|
||||||
===================================================================
|
|
||||||
--- bfd/elf64-s390.c.orig 2010-10-25 17:54:15.000000000 +0200
|
|
||||||
+++ bfd/elf64-s390.c 2011-01-10 17:46:32.000000000 +0100
|
|
||||||
@@ -2497,15 +2497,36 @@ elf_s390_relocate_section (bfd *output_b
|
|
||||||
unresolved_reloc = FALSE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
- case R_390_8:
|
|
||||||
- case R_390_16:
|
|
||||||
- case R_390_32:
|
|
||||||
- case R_390_64:
|
|
||||||
case R_390_PC16:
|
|
||||||
case R_390_PC16DBL:
|
|
||||||
case R_390_PC32:
|
|
||||||
case R_390_PC32DBL:
|
|
||||||
case R_390_PC64:
|
|
||||||
+ /* This is strictly required only for PC32DBL, which
|
|
||||||
+ is not handled by ld.so, but let's be helpful to the user also
|
|
||||||
+ in the other cases. */
|
|
||||||
+ if (info->shared
|
|
||||||
+ && !SYMBOL_REFERENCES_LOCAL (info, h)
|
|
||||||
+ && (input_section->flags & SEC_ALLOC) != 0
|
|
||||||
+ && (input_section->flags & SEC_READONLY) != 0
|
|
||||||
+ && (!h->def_regular
|
|
||||||
+ || r_type != R_390_PC32DBL
|
|
||||||
+ || h->type != STT_FUNC
|
|
||||||
+ || ELF_ST_VISIBILITY (h->other) != STV_PROTECTED))
|
|
||||||
+ {
|
|
||||||
+ (*_bfd_error_handler)
|
|
||||||
+ (_("%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"),
|
|
||||||
+ input_bfd, elf_howto_table[r_type].name,
|
|
||||||
+ h->root.root.string);
|
|
||||||
+ bfd_set_error (bfd_error_bad_value);
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+ /* Fall through. */
|
|
||||||
+
|
|
||||||
+ case R_390_8:
|
|
||||||
+ case R_390_16:
|
|
||||||
+ case R_390_32:
|
|
||||||
+ case R_390_64:
|
|
||||||
if ((input_section->flags & SEC_ALLOC) == 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
Index: ld/testsuite/ld-elfvers/vers.exp
|
|
||||||
===================================================================
|
|
||||||
--- ld/testsuite/ld-elfvers/vers.exp.orig 2010-11-05 04:54:21.000000000 +0100
|
|
||||||
+++ ld/testsuite/ld-elfvers/vers.exp 2011-01-10 17:47:22.000000000 +0100
|
|
||||||
@@ -97,6 +97,7 @@ if [istarget mips*-*-*] {
|
|
||||||
|
|
||||||
case $target_triplet in {
|
|
||||||
{ ia64-*-* } { set as_options "-x" }
|
|
||||||
+ { s390-*-linux-* } { set as_options "-march=z900" }
|
|
||||||
{ sparc-*-* } { set as_options "-Av9a" }
|
|
||||||
default { set as_options "" }
|
|
||||||
}
|
|
||||||
@@ -768,8 +769,9 @@ proc build_exec { test source execname f
|
|
||||||
pass $test
|
|
||||||
}
|
|
||||||
|
|
||||||
-if [istarget x86_64-*-linux*] {
|
|
||||||
- # x86_64 doesn't like non-pic shared libraries
|
|
||||||
+if { [istarget x86_64-*-linux*] \
|
|
||||||
+ || [istarget s390*-*-linux*] } {
|
|
||||||
+ # x86_64 and s390 don't like non-pic shared libraries
|
|
||||||
set pic "yes"
|
|
||||||
} else {
|
|
||||||
set pic "no"
|
|
||||||
Index: ld/testsuite/ld-elfvsb/elfvsb.exp
|
|
||||||
===================================================================
|
|
||||||
--- ld/testsuite/ld-elfvsb/elfvsb.exp.orig 2010-02-09 11:46:26.000000000 +0100
|
|
||||||
+++ ld/testsuite/ld-elfvsb/elfvsb.exp 2011-01-10 17:46:32.000000000 +0100
|
|
||||||
@@ -292,6 +292,7 @@ proc visibility_run {visibility} {
|
|
||||||
setup_xfail "sparc*-*-linux*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
if { ![istarget hppa*64*-*-linux*] } {
|
|
||||||
setup_xfail "hppa*-*-linux*"
|
|
||||||
@@ -333,6 +334,7 @@ proc visibility_run {visibility} {
|
|
||||||
setup_xfail "alpha*-*-linux*"
|
|
||||||
setup_xfail "mips*-*-linux*"
|
|
||||||
}
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
if { ![istarget hppa*64*-*-linux*] } {
|
|
||||||
setup_xfail "hppa*-*-linux*"
|
|
||||||
@@ -402,6 +404,7 @@ proc visibility_run {visibility} {
|
|
||||||
setup_xfail "sparc*-*-linux*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
if { ![istarget hppa*64*-*-linux*] } {
|
|
||||||
setup_xfail "hppa*-*-linux*"
|
|
||||||
Index: ld/testsuite/ld-shared/shared.exp
|
|
||||||
===================================================================
|
|
||||||
--- ld/testsuite/ld-shared/shared.exp.orig 2010-10-28 11:08:35.000000000 +0200
|
|
||||||
+++ ld/testsuite/ld-shared/shared.exp 2011-01-10 17:48:12.000000000 +0100
|
|
||||||
@@ -234,7 +234,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $
|
|
||||||
setup_xfail "sparc*-*-linux*"
|
|
||||||
}
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
- setup_xfail "s390x-*-linux*"
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
if [ string match $shared_needs_pic "yes" ] {
|
|
||||||
setup_xfail "arm*-*-linux*"
|
|
||||||
}
|
|
||||||
@@ -257,7 +257,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $
|
|
||||||
setup_xfail "sparc*-*-linux*"
|
|
||||||
}
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
- setup_xfail "s390x-*-linux*"
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
if [ string match $shared_needs_pic "yes" ] {
|
|
||||||
setup_xfail "arm*-*-linux*"
|
|
||||||
}
|
|
||||||
@@ -310,7 +310,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG $p
|
|
||||||
setup_xfail "sparc*-*-linux*"
|
|
||||||
}
|
|
||||||
setup_xfail "x86_64-*-linux*"
|
|
||||||
- setup_xfail "s390x-*-linux*"
|
|
||||||
+ setup_xfail "s390*-*-linux*"
|
|
||||||
if [ string match $shared_needs_pic "yes" ] {
|
|
||||||
setup_xfail "arm*-*-linux*"
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
Index: libiberty/configure
|
|
||||||
===================================================================
|
|
||||||
--- libiberty/configure.orig 2010-11-05 11:31:22.000000000 +0100
|
|
||||||
+++ libiberty/configure 2011-01-10 17:45:26.000000000 +0100
|
|
||||||
@@ -4865,7 +4865,7 @@ if [ "${shared}" = "yes" ]; then
|
|
||||||
*-fpic* ) PICFLAG=-fpic ;;
|
|
||||||
* ) PICFLAG=-fPIC ;;
|
|
||||||
esac ;;
|
|
||||||
- s390*-*-*) PICFLAG=-fpic ;;
|
|
||||||
+ s390*-*-*) PICFLAG=-fPIC ;;
|
|
||||||
sh*-*-*) PICFLAG=-fPIC ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
Index: libiberty/configure.ac
|
|
||||||
===================================================================
|
|
||||||
--- libiberty/configure.ac.orig 2010-11-05 00:41:21.000000000 +0100
|
|
||||||
+++ libiberty/configure.ac 2011-01-10 17:45:33.000000000 +0100
|
|
||||||
@@ -216,7 +216,7 @@ if [[ "${shared}" = "yes" ]]; then
|
|
||||||
*-fpic* ) PICFLAG=-fpic ;;
|
|
||||||
* ) PICFLAG=-fPIC ;;
|
|
||||||
esac ;;
|
|
||||||
- s390*-*-*) PICFLAG=-fpic ;;
|
|
||||||
+ s390*-*-*) PICFLAG=-fPIC ;;
|
|
||||||
sh*-*-*) PICFLAG=-fPIC ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
Loading…
Reference in New Issue
Block a user