Fix /usr/bin/ld: final link failed: File truncated error on hppa.
This commit is contained in:
parent
d9e3b59069
commit
6d4b2867f8
3 changed files with 29 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2016-01-31 John David Anglin <danglin@gcc.gnu.org>
|
||||
|
||||
PR ld/19526
|
||||
* elf32-hppa.c (elf32_hppa_final_link): Don't sort non-regular output
|
||||
files.
|
||||
* elf64-hppa.c (elf32_hppa_final_link): Likewise. Remove retval.
|
||||
|
||||
2016-01-30 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/19539
|
||||
|
|
|
@ -3245,6 +3245,8 @@ tpoff (struct bfd_link_info *info, bfd_vma address)
|
|||
static bfd_boolean
|
||||
elf32_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
struct stat buf;
|
||||
|
||||
/* Invoke the regular ELF linker to do all the work. */
|
||||
if (!bfd_elf_final_link (abfd, info))
|
||||
return FALSE;
|
||||
|
@ -3254,6 +3256,13 @@ elf32_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
if (bfd_link_relocatable (info))
|
||||
return TRUE;
|
||||
|
||||
/* Do not attempt to sort non-regular files. This is here
|
||||
especially for configure scripts and kernel builds which run
|
||||
tests with "ld [...] -o /dev/null". */
|
||||
if (stat (abfd->filename, &buf) != 0
|
||||
|| !S_ISREG(buf.st_mode))
|
||||
return TRUE;
|
||||
|
||||
return elf_hppa_sort_unwind (abfd);
|
||||
}
|
||||
|
||||
|
|
|
@ -2945,7 +2945,7 @@ elf_hppa_record_segment_addrs (bfd *abfd,
|
|||
static bfd_boolean
|
||||
elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
{
|
||||
bfd_boolean retval;
|
||||
struct stat buf;
|
||||
struct elf64_hppa_link_hash_table *hppa_info = hppa_link_hash_table (info);
|
||||
|
||||
if (hppa_info == NULL)
|
||||
|
@ -3029,7 +3029,8 @@ elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
info);
|
||||
|
||||
/* Invoke the regular ELF backend linker to do all the work. */
|
||||
retval = bfd_elf_final_link (abfd, info);
|
||||
if (!bfd_elf_final_link (abfd, info))
|
||||
return FALSE;
|
||||
|
||||
elf_link_hash_traverse (elf_hash_table (info),
|
||||
elf_hppa_remark_useless_dynamic_symbols,
|
||||
|
@ -3037,10 +3038,17 @@ elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||
|
||||
/* If we're producing a final executable, sort the contents of the
|
||||
unwind section. */
|
||||
if (retval && !bfd_link_relocatable (info))
|
||||
retval = elf_hppa_sort_unwind (abfd);
|
||||
if (bfd_link_relocatable (info))
|
||||
return TRUE;
|
||||
|
||||
return retval;
|
||||
/* Do not attempt to sort non-regular files. This is here
|
||||
especially for configure scripts and kernel builds which run
|
||||
tests with "ld [...] -o /dev/null". */
|
||||
if (stat (abfd->filename, &buf) != 0
|
||||
|| !S_ISREG(buf.st_mode))
|
||||
return TRUE;
|
||||
|
||||
return elf_hppa_sort_unwind (abfd);
|
||||
}
|
||||
|
||||
/* Relocate the given INSN. VALUE should be the actual value we want
|
||||
|
|
Loading…
Reference in a new issue