From: Matthias Klose Date: Thu, 18 Oct 2018 06:54:07 +0000 (+0100) Subject: branch-updates X-Git-Tag: archive/raspbian/2.31.1-7+rpi1^2~24 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=cf33c00d1f81b9443affdb3cc01fec21ba71e589;p=binutils.git branch-updates # DP: updates from the binutils-2.31 branch # git diff 0860693812fff944ab0602e72b762a4a2078da5b 32db9c46eb4292f94fb74f15724b40ce1a47eda4 Gbp-Pq: Name branch-updates.diff --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5ec906aa8..401b7f133 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,8 +1,66 @@ +2018-09-12 H.J. Lu + + PR ld/23499 + * elf.c (_bfd_elf_get_symbol_version_string): Return + _("") for corrupt symbol version info. + +2018-09-12 H.J. Lu + + PR ld/23499 + * elflink.c (bfd_elf_record_link_assignment): Always clear + h->verinfo.verdef when overriding a dynamic definition. + +2018-08-12 H.J. Lu + + PR ld/23428 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't + add X86_ISA_1_NEEDED property only if existing properties won't + be removed. + +2018-08-10 H.J. Lu + + PR ld/23486 + * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove + GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it. + (_bfd_x86_elf_link_setup_gnu_properties): Adding the + GNU_PROPERTY_X86_ISA_1_NEEDED, instead of + GNU_PROPERTY_X86_ISA_1_USED, property. + +2018-08-07 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Don't skip first + instruction of __tls_get_addr_opt stub. + (plt_stub_size): Omit ALWAYS_EMIT_R2SAVE condition when + dealing with __tls_get_addr_opt stub. + (build_tls_get_addr_stub, ppc_size_one_stub): Likewise. + +2018-08-01 Alan Modra + + * elf64-ppc.c (plt_stub_pad): Delay plt_stub_size call until needed. + (ppc_build_one_stub): Don't set stub_offset, instead assert that + it is sane. Don't adjust stub_offset for alignment. Adjust size + calculation. Use "targ" temp when calculating offsets. + (ppc_size_one_stub): Set stub_offset here. Use "targ" temp when + calculating offsets. Adjust for alignment before setting + tls_get_addr_opt_bctrl. + +2018-07-23 H.J. Lu + + PR ld/23428 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the + separate code program header is needed, make sure that the first + read-only PT_LOAD segment has no code by adding a + GNU_PROPERTY_X86_ISA_1_USED note. + +2018-07-18 Nick Clifton + + * development.sh: Set to true. + 2018-07-18 Nick Clifton 2.31.1 Release point. * version.m4: Set to 2.31.1 - * development.sh: Set to true. + * development.sh: Set to false. * configure: Regenerate. * po/bfd.pot: Regenerate. diff --git a/bfd/development.sh b/bfd/development.sh index 918150f30..27a7150e6 100644 --- a/bfd/development.sh +++ b/bfd/development.sh @@ -16,4 +16,4 @@ # along with this program. If not, see . # Controls whether to enable development-mode features by default. -development=false +development=true diff --git a/bfd/elf.c b/bfd/elf.c index 0f7537512..80410575b 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -1877,7 +1877,7 @@ _bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol, { Elf_Internal_Verneed *t; - version_string = ""; + version_string = _(""); for (t = elf_tdata (abfd)->verref; t != NULL; t = t->vn_nextref) diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 45d81777e..139ed1abc 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -10810,8 +10810,7 @@ plt_stub_size (struct ppc_link_hash_table *htab, && htab->params->tls_get_addr_opt) { size += 7 * 4; - if (ALWAYS_EMIT_R2SAVE - || stub_entry->stub_type == ppc_stub_plt_call_r2save) + if (stub_entry->stub_type == ppc_stub_plt_call_r2save) size += 6 * 4; } return size; @@ -10829,7 +10828,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab, bfd_vma plt_off) { int stub_align; - unsigned stub_size = plt_stub_size (htab, stub_entry, plt_off); + unsigned stub_size; bfd_vma stub_off = stub_entry->group->stub_sec->size; if (htab->params->plt_stub_align >= 0) @@ -10841,6 +10840,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab, } stub_align = 1 << -htab->params->plt_stub_align; + stub_size = plt_stub_size (htab, stub_entry, plt_off); if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align) > ((stub_size - 1) & -stub_align)) return stub_align - (stub_off & (stub_align - 1)); @@ -11055,8 +11055,7 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab, bfd_put_32 (obfd, MR_R3_R0, p), p += 4; if (r != NULL) r[0].r_offset += 7 * 4; - if (!ALWAYS_EMIT_R2SAVE - && stub_entry->stub_type != ppc_stub_plt_call_r2save) + if (stub_entry->stub_type != ppc_stub_plt_call_r2save) return build_plt_stub (htab, stub_entry, p, offset, r); bfd_put_32 (obfd, MFLR_R11, p), p += 4; @@ -11148,7 +11147,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) struct ppc_link_hash_table *htab; bfd_byte *loc; bfd_byte *p; - bfd_vma dest, off; + bfd_vma targ, off; Elf_Internal_Rela *r; asection *plt; @@ -11160,8 +11159,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) if (htab == NULL) return FALSE; - /* Make a note of the offset within the stubs for this entry. */ - stub_entry->stub_offset = stub_entry->group->stub_sec->size; + BFD_ASSERT (stub_entry->stub_offset >= stub_entry->group->stub_sec->size); loc = stub_entry->group->stub_sec->contents + stub_entry->stub_offset; htab->stub_count[stub_entry->stub_type - 1] += 1; @@ -11170,16 +11168,16 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) case ppc_stub_long_branch: case ppc_stub_long_branch_r2off: /* Branches are relative. This is where we are going to. */ - dest = (stub_entry->target_value + targ = (stub_entry->target_value + stub_entry->target_section->output_offset + stub_entry->target_section->output_section->vma); - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other); - off = dest; + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other); /* And this is where we are coming from. */ - off -= (stub_entry->stub_offset - + stub_entry->group->stub_sec->output_offset - + stub_entry->group->stub_sec->output_section->vma); + off = (stub_entry->stub_offset + + stub_entry->group->stub_sec->output_offset + + stub_entry->group->stub_sec->output_section->vma); + off = targ - off; p = loc; if (stub_entry->stub_type == ppc_stub_long_branch_r2off) @@ -11226,7 +11224,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) return FALSE; r->r_offset = p - 4 - stub_entry->group->stub_sec->contents; r->r_info = ELF64_R_INFO (0, R_PPC64_REL24); - r->r_addend = dest; + r->r_addend = targ; if (stub_entry->h != NULL) { struct elf_link_hash_entry **hashes; @@ -11278,13 +11276,13 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) return FALSE; } - dest = (stub_entry->target_value + targ = (stub_entry->target_value + stub_entry->target_section->output_offset + stub_entry->target_section->output_section->vma); if (stub_entry->stub_type != ppc_stub_plt_branch_r2off) - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other); + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other); - bfd_put_64 (htab->brlt->owner, dest, + bfd_put_64 (htab->brlt->owner, targ, htab->brlt->contents + br_entry->offset); if (br_entry->iter == htab->stub_iteration) @@ -11301,7 +11299,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + htab->brlt->output_offset + htab->brlt->output_section->vma); rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE); - rela.r_addend = dest; + rela.r_addend = targ; rl = htab->relbrlt->contents; rl += (htab->relbrlt->reloc_count++ @@ -11321,17 +11319,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) + htab->brlt->output_offset + htab->brlt->output_section->vma); r->r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE); - r->r_addend = dest; + r->r_addend = targ; } } - dest = (br_entry->offset + targ = (br_entry->offset + htab->brlt->output_offset + htab->brlt->output_section->vma); - off = (dest - - elf_gp (info->output_bfd) - - htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = (elf_gp (info->output_bfd) + + htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = targ - off; if (off + 0x80008000 > 0xffffffff || (off & 7) != 0) { @@ -11354,7 +11352,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) if (stub_entry->stub_type == ppc_stub_plt_branch_r2off) r[0].r_offset += 4; r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS); - r[0].r_addend = dest; + r[0].r_addend = targ; if (PPC_HA (off) != 0) { r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_HA); @@ -11439,8 +11437,8 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) } /* Now build the stub. */ - dest = stub_entry->plt_ent->plt.offset & ~1; - if (dest >= (bfd_vma) -2) + targ = stub_entry->plt_ent->plt.offset & ~1; + if (targ >= (bfd_vma) -2) abort (); plt = htab->elf.splt; @@ -11453,12 +11451,11 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) else plt = htab->pltlocal; } + targ += plt->output_offset + plt->output_section->vma; - dest += plt->output_offset + plt->output_section->vma; - - off = (dest - - elf_gp (info->output_bfd) - - htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = (elf_gp (info->output_bfd) + + htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = targ - off; if (off + 0x80008000 > 0xffffffff || (off & 7) != 0) { @@ -11473,15 +11470,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) return FALSE; } - if (htab->params->plt_stub_align != 0) - { - unsigned pad = plt_stub_pad (htab, stub_entry, off); - - stub_entry->group->stub_sec->size += pad; - stub_entry->stub_offset = stub_entry->group->stub_sec->size; - loc += pad; - } - r = NULL; if (info->emitrelocations) { @@ -11496,7 +11484,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) r[0].r_offset = loc - stub_entry->group->stub_sec->contents; if (bfd_big_endian (info->output_bfd)) r[0].r_offset += 2; - r[0].r_addend = dest; + r[0].r_addend = targ; } if (stub_entry->h != NULL && (stub_entry->h == htab->tls_get_addr_fd @@ -11515,7 +11503,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) return FALSE; } - stub_entry->group->stub_sec->size += p - loc; + stub_entry->group->stub_sec->size = stub_entry->stub_offset + (p - loc); if (htab->params->emit_stub_syms) { @@ -11567,7 +11555,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) struct ppc_stub_hash_entry *stub_entry; struct bfd_link_info *info; struct ppc_link_hash_table *htab; - bfd_vma off; + bfd_vma targ, off; int size; /* Massage our args to the form they really have. */ @@ -11578,6 +11566,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) if (htab == NULL) return FALSE; + /* Make a note of the offset within the stubs for this entry. */ + stub_entry->stub_offset = stub_entry->group->stub_sec->size; + if (stub_entry->h != NULL && stub_entry->h->save_res && stub_entry->h->elf.root.type == bfd_link_hash_defined @@ -11594,8 +11585,8 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) || stub_entry->stub_type == ppc_stub_plt_call_r2save) { asection *plt; - off = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1; - if (off >= (bfd_vma) -2) + targ = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1; + if (targ >= (bfd_vma) -2) abort (); plt = htab->elf.splt; if (!htab->elf.dynamic_sections_created @@ -11607,23 +11598,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) else plt = htab->pltlocal; } - off += (plt->output_offset - + plt->output_section->vma - - elf_gp (info->output_bfd) - - htab->sec_info[stub_entry->group->link_sec->id].toc_off); + targ += plt->output_offset + plt->output_section->vma; + + off = (elf_gp (info->output_bfd) + + htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = targ - off; + + if (htab->params->plt_stub_align != 0) + { + unsigned pad = plt_stub_pad (htab, stub_entry, off); + + stub_entry->group->stub_sec->size += pad; + stub_entry->stub_offset = stub_entry->group->stub_sec->size; + } size = plt_stub_size (htab, stub_entry, off); + if (stub_entry->h != NULL && (stub_entry->h == htab->tls_get_addr_fd || stub_entry->h == htab->tls_get_addr) && htab->params->tls_get_addr_opt - && (ALWAYS_EMIT_R2SAVE - || stub_entry->stub_type == ppc_stub_plt_call_r2save)) + && stub_entry->stub_type == ppc_stub_plt_call_r2save) stub_entry->group->tls_get_addr_opt_bctrl - = stub_entry->group->stub_sec->size + size - 5 * 4; + = stub_entry->stub_offset + size - 5 * 4; - if (htab->params->plt_stub_align) - size += plt_stub_pad (htab, stub_entry, off); if (info->emitrelocations) { stub_entry->group->stub_sec->reloc_count @@ -11642,12 +11640,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) bfd_vma r2off = 0; bfd_vma local_off = 0; - off = (stub_entry->target_value - + stub_entry->target_section->output_offset - + stub_entry->target_section->output_section->vma); - off -= (stub_entry->group->stub_sec->size - + stub_entry->group->stub_sec->output_offset - + stub_entry->group->stub_sec->output_section->vma); + targ = (stub_entry->target_value + + stub_entry->target_section->output_offset + + stub_entry->target_section->output_section->vma); + off = (stub_entry->stub_offset + + stub_entry->group->stub_sec->output_offset + + stub_entry->group->stub_sec->output_section->vma); /* Reset the stub type from the plt variant in case we now can reach with a shorter stub. */ @@ -11668,8 +11666,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) size += 4; if (PPC_LO (r2off) != 0) size += 4; - off -= size - 4; + off += size - 4; } + off = targ - off; local_off = PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other); @@ -11709,11 +11708,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg) } stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch; - off = (br_entry->offset - + htab->brlt->output_offset - + htab->brlt->output_section->vma - - elf_gp (info->output_bfd) - - htab->sec_info[stub_entry->group->link_sec->id].toc_off); + targ = (br_entry->offset + + htab->brlt->output_offset + + htab->brlt->output_section->vma); + off = (elf_gp (info->output_bfd) + + htab->sec_info[stub_entry->group->link_sec->id].toc_off); + off = targ - off; if (info->emitrelocations) { @@ -14877,10 +14877,13 @@ ppc64_elf_relocate_section (bfd *output_bfd, addend = 0; reloc_dest = DEST_STUB; - if ((stub_entry->stub_type == ppc_stub_plt_call + if (((stub_entry->stub_type == ppc_stub_plt_call + && ALWAYS_EMIT_R2SAVE) || stub_entry->stub_type == ppc_stub_plt_call_r2save) - && (ALWAYS_EMIT_R2SAVE - || stub_entry->stub_type == ppc_stub_plt_call_r2save) + && !(h != NULL + && (h == htab->tls_get_addr_fd + || h == htab->tls_get_addr) + && htab->params->tls_get_addr_opt) && rel + 1 < relend && rel[1].r_offset == rel->r_offset + 4 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE) diff --git a/bfd/elflink.c b/bfd/elflink.c index b24fb9584..02618bed8 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -686,13 +686,11 @@ bfd_elf_record_link_assignment (bfd *output_bfd, && !h->def_regular) h->root.type = bfd_link_hash_undefined; - /* If this symbol is not being provided by the linker script, and it is - currently defined by a dynamic object, but not by a regular object, - then clear out any version information because the symbol will not be - associated with the dynamic object any more. */ - if (!provide - && h->def_dynamic - && !h->def_regular) + /* If this symbol is currently defined by a dynamic object, but not + by a regular object, then clear out any version information because + the symbol will not be associated with the dynamic object any + more. */ + if (h->def_dynamic && !h->def_regular) h->verinfo.verdef = NULL; /* Make sure this symbol is not garbage collected. */ diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index a2497aab8..2d8f7b640 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, switch (pr_type) { case GNU_PROPERTY_X86_ISA_1_USED: + if (aprop == NULL || bprop == NULL) + { + /* Only one of APROP and BPROP can be NULL. */ + if (aprop != NULL) + { + /* Remove this property since the other input file doesn't + have it. */ + aprop->pr_kind = property_remove; + updated = TRUE; + } + break; + } + goto or_property; + case GNU_PROPERTY_X86_ISA_1_NEEDED: if (aprop != NULL && bprop != NULL) { +or_property: number = aprop->u.number; aprop->u.number = number | bprop->u.number; - /* Remove the property if ISA bits are empty. */ + /* Remove the property if all bits are empty. */ if (aprop->u.number == 0) { aprop->pr_kind = property_remove; @@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info, { if (aprop->u.number == 0) { - /* Remove APROP if ISA bits are empty. */ + /* Remove APROP if all bits are empty. */ aprop->pr_kind = property_remove; updated = TRUE; } } else { - /* Return TRUE if APROP is NULL and ISA bits of BPROP + /* Return TRUE if APROP is NULL and all bits of BPROP aren't empty to indicate that BPROP should be added to ABFD. */ updated = bprop->u.number != 0; @@ -2524,6 +2539,7 @@ _bfd_x86_elf_link_setup_gnu_properties const struct elf_backend_data *bed; unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2; unsigned int got_align; + bfd_boolean has_text = FALSE; features = 0; if (info->ibt) @@ -2538,24 +2554,75 @@ _bfd_x86_elf_link_setup_gnu_properties if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour && bfd_count_sections (pbfd) != 0) { + if (!has_text) + { + /* Check if there is no non-empty text section. */ + sec = bfd_get_section_by_name (pbfd, ".text"); + if (sec != NULL && sec->size != 0) + has_text = TRUE; + } + ebfd = pbfd; if (elf_properties (pbfd) != NULL) break; } - if (ebfd != NULL && features) + bed = get_elf_backend_data (info->output_bfd); + + htab = elf_x86_hash_table (info, bed->target_id); + if (htab == NULL) + return pbfd; + + if (ebfd != NULL) { - /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and - GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ - prop = _bfd_elf_get_property (ebfd, - GNU_PROPERTY_X86_FEATURE_1_AND, - 4); - prop->u.number |= features; - prop->pr_kind = property_number; + prop = NULL; + if (features) + { + /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and + GNU_PROPERTY_X86_FEATURE_1_SHSTK. */ + prop = _bfd_elf_get_property (ebfd, + GNU_PROPERTY_X86_FEATURE_1_AND, + 4); + prop->u.number |= features; + prop->pr_kind = property_number; + } + else if (has_text + && elf_tdata (info->output_bfd)->o->build_id.sec == NULL + && !htab->elf.dynamic_sections_created + && !info->traditional_format + && (info->output_bfd->flags & D_PAGED) != 0 + && info->separate_code) + { + /* If the separate code program header is needed, make sure + that the first read-only PT_LOAD segment has no code by + adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */ + elf_property_list *list; + bfd_boolean need_property = TRUE; + + for (list = elf_properties (ebfd); list; list = list->next) + switch (list->property.pr_type) + { + case GNU_PROPERTY_STACK_SIZE: + case GNU_PROPERTY_NO_COPY_ON_PROTECTED: + case GNU_PROPERTY_X86_ISA_1_NEEDED: + /* These properties won't be removed during merging. */ + need_property = FALSE; + break; + } + + if (need_property) + { + prop = _bfd_elf_get_property (ebfd, + GNU_PROPERTY_X86_ISA_1_NEEDED, + 4); + prop->u.number = GNU_PROPERTY_X86_ISA_1_486; + prop->pr_kind = property_number; + } + } /* Create the GNU property note section if needed. */ - if (pbfd == NULL) + if (prop != NULL && pbfd == NULL) { sec = bfd_make_section_with_flags (ebfd, NOTE_GNU_PROPERTY_SECTION_NAME, @@ -2581,12 +2648,6 @@ error_alignment: pbfd = _bfd_elf_link_setup_gnu_properties (info); - bed = get_elf_backend_data (info->output_bfd); - - htab = elf_x86_hash_table (info, bed->target_id); - if (htab == NULL) - return pbfd; - htab->r_info = init_table->r_info; htab->r_sym = init_table->r_sym; diff --git a/bfd/version.h b/bfd/version.h index 222d2e62c..4011fe4ee 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -16,7 +16,7 @@ In releases, the date is not included in either version strings or sonames. */ -#define BFD_VERSION_DATE 20180718 +#define BFD_VERSION_DATE 20181018 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 32f47d5e0..6ef8592ff 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2018-09-12 H.J. Lu + + PR ld/23499 + * readelf.c (get_symbol_version_string): Return _("") + for corrupt symbol version info. + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/binutils/readelf.c b/binutils/readelf.c index 1b50ba763..f4df697a7 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -11252,6 +11252,7 @@ get_symbol_version_string (Filedata * filedata, unsigned char data[2]; unsigned short vers_data; unsigned long offset; + unsigned short max_vd_ndx; if (!is_dynsym || version_info[DT_VERSIONTAGIDX (DT_VERSYM)] == 0) @@ -11269,6 +11270,8 @@ get_symbol_version_string (Filedata * filedata, if ((vers_data & VERSYM_HIDDEN) == 0 && vers_data == 0) return NULL; + max_vd_ndx = 0; + /* Usually we'd only see verdef for defined symbols, and verneed for undefined symbols. However, symbols defined by the linker in .dynbss for variables copied from a shared library in order to @@ -11311,6 +11314,9 @@ get_symbol_version_string (Filedata * filedata, ivd.vd_flags = BYTE_GET (evd.vd_flags); } + if ((ivd.vd_ndx & VERSYM_VERSION) > max_vd_ndx) + max_vd_ndx = ivd.vd_ndx & VERSYM_VERSION; + off += ivd.vd_next; } while (ivd.vd_ndx != (vers_data & VERSYM_VERSION) && ivd.vd_next != 0); @@ -11402,6 +11408,9 @@ get_symbol_version_string (Filedata * filedata, return (ivna.vna_name < strtab_size ? strtab + ivna.vna_name : _("")); } + else if ((max_vd_ndx || (vers_data & VERSYM_VERSION) != 1) + && (vers_data & VERSYM_VERSION) > max_vd_ndx) + return _(""); } return NULL; } diff --git a/gas/ChangeLog b/gas/ChangeLog index bb4541900..4944f892a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,64 @@ +2018-10-16 Matthew Malcomson + + * testsuite/gas/aarch64/illegal-dotproduct.d: New test. + * testsuite/gas/aarch64/illegal-dotproduct.l: New test. + * testsuite/gas/aarch64/illegal-dotproduct.s: New test. + +2018-10-05 H.J. Lu + + * testsuite/gas/i386/se1.s: Add enclv. + * testsuite/gas/i386/x86-64-se1.s: Likewise. + * testsuite/gas/i386/se1.d: Updated. + * testsuite/gas/i386/x86-64-se1.d: Likewise. + +2018-09-18 Tamar Christina + + * config/tc-aarch64.c (output_operand_error_report): Apply filtering to + current instead of head message. + +2018-09-17 Nick Clifton + + backport from mainline: + * 2018-08-14 Robert Yang + + * as.c (main): Improve check for input file matching output file. + +2018-08-10 H.J. Lu + + * testsuite/gas/i386/evex-no-scale.s: Removed. + * testsuite/gas/i386/evex-no-scale-32.d: Don't use + evex-no-scale.s. + * testsuite/gas/i386/evex-no-scale-64.d: Likewise. + * testsuite/gas/i386/evex-no-scale-32.s: New file. + * testsuite/gas/i386/evex-no-scale-64.s: Likewise. + +2018-08-10 H.J. Lu + + * testsuite/gas/i386/i386.exp: Run evex-no-scale-32 and + evex-no-scale-64 only for ELF targets. + +2018-07-31 Jan Beulich + + PR gas/23465 + * config/tc-i386.c (output_disp): Restrict scaling. + * testsuite/gas/i386/evex-no-scale.s, + testsuite/gas/i386/evex-no-scale-32.d + testsuite/gas/i386/evex-no-scale-64.d: New. + * testsuite/gas/i386/i386.exp: Run new tests. + +2018-07-30 John David Anglin + + * config/tc-hppa.c: Include "struc-symbol.h". + (pa_build_unwind_subspace): Use call_info->start_symbol->sy_frag + instead of frag_now for local symbol replacement. + +2018-07-18 H.J. Lu + + PR gas/23418 + * testsuite/gas/i386/xmmword.s: Add tests for vcvtps2qq, + vcvtps2uqq, vcvttps2qq and vcvttps2uqq. + * testsuite/gas/i386/xmmword.l: Updated. + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/gas/as.c b/gas/as.c index 02c7d2970..919c24a24 100644 --- a/gas/as.c +++ b/gas/as.c @@ -1254,14 +1254,27 @@ main (int argc, char ** argv) { struct stat sib; - if (stat (argv[i], &sib) == 0) + /* Check that the input file and output file are different. */ + if (stat (argv[i], &sib) == 0 + && sib.st_ino == sob.st_ino + /* POSIX emulating systems may support stat() but if the + underlying file system does not support a file serial number + of some kind then they will return 0 for the inode. So + two files with an inode of 0 may not actually be the same. + On real POSIX systems no ordinary file will ever have an + inode of 0. */ + && sib.st_ino != 0 + /* Different files may have the same inode number if they + reside on different devices, so check the st_dev field as + well. */ + && sib.st_dev == sob.st_dev) { - if (sib.st_ino == sob.st_ino && sib.st_ino != 0) - { - /* Don't let as_fatal remove the output file! */ - out_file_name = NULL; - as_fatal (_("The input and output files must be distinct")); - } + const char *saved_out_file_name = out_file_name; + + /* Don't let as_fatal remove the output file! */ + out_file_name = NULL; + as_fatal (_("The input '%s' and output '%s' files are the same"), + argv[i], saved_out_file_name); } } } diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 31985963e..c77de21d1 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -4809,7 +4809,7 @@ output_operand_error_report (char *str, bfd_boolean non_fatal_only) /* If we don't want to print non-fatal errors then don't consider them at all. */ if (curr->detail.kind != kind - || (non_fatal_only && !head->detail.non_fatal)) + || (non_fatal_only && !curr->detail.non_fatal)) continue; /* If there are multiple errors, pick up the one with the highest mismatching operand index. In the case of multiple errors with diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index e69fdb2b3..ccae68cb4 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -23,6 +23,7 @@ #include "as.h" #include "safe-ctype.h" +#include "struc-symbol.h" #include "subsegs.h" #include "dw2gencfi.h" @@ -5989,7 +5990,8 @@ pa_build_unwind_subspace (struct call_info *call_info) else { symbolP = symbol_new (name, now_seg, - S_GET_VALUE (call_info->start_symbol), frag_now); + S_GET_VALUE (call_info->start_symbol), + call_info->start_symbol->sy_frag); gas_assert (symbolP); S_CLEAR_EXTERNAL (symbolP); symbol_table_insert (symbolP); diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 2d20f1cae..bd179c13a 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -7857,7 +7857,8 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off) int size = disp_size (n); offsetT val = i.op[n].disps->X_add_number; - val = offset_in_range (val >> i.memshift, size); + val = offset_in_range (val >> (size == 1 ? i.memshift : 0), + size); p = frag_more (size); md_number_to_chars (p, val, size); } diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.d b/gas/testsuite/gas/aarch64/illegal-dotproduct.d new file mode 100644 index 000000000..8d8b1b850 --- /dev/null +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.d @@ -0,0 +1,4 @@ +#as: -march=armv8.2-a+dotprod +#name: Invalid dotproduct instructions. +#source: illegal-dotproduct.s +#error-output: illegal-dotproduct.l diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.l b/gas/testsuite/gas/aarch64/illegal-dotproduct.l new file mode 100644 index 000000000..06d0d78b8 --- /dev/null +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.l @@ -0,0 +1,13 @@ +[^:]+: Assembler messages: +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `udot V0.2S,V0.8B,V0.4B\[4\]' +[^:]+:[0-9]+: Error: operand mismatch -- `udot V0.4S,V0.8B,V0.4B\[4\]' +[^:]+:[0-9]+: Info: did you mean this\? +[^:]+:[0-9]+: Info: udot v0.2s, v0.8b, v0.4b\[4\] +[^:]+:[0-9]+: Info: other valid variant\(s\): +[^:]+:[0-9]+: Info: udot v0.4s, v0.16b, v0.4b\[4\] +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `sdot V0.2S,V0.8B,V0.4B\[4\]' +[^:]+:[0-9]+: Error: operand mismatch -- `sdot V0.2S,V0.8B,V0.4H\[4\]' +[^:]+:[0-9]+: Info: did you mean this\? +[^:]+:[0-9]+: Info: sdot v0.2s, v0.8b, v0.4b\[4\] +[^:]+:[0-9]+: Info: other valid variant\(s\): +[^:]+:[0-9]+: Info: sdot v0.4s, v0.16b, v0.4b\[4\] diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.s b/gas/testsuite/gas/aarch64/illegal-dotproduct.s new file mode 100644 index 000000000..9c714ae54 --- /dev/null +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.s @@ -0,0 +1,4 @@ +UDOT V0.2S, V0.8B, V0.4B[4] +UDOT V0.4S, V0.8B, V0.4B[4] +SDOT V0.2S, V0.8B, V0.4B[4] +SDOT V0.2S, V0.8B, V0.4H[4] diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.d b/gas/testsuite/gas/i386/evex-no-scale-32.d new file mode 100644 index 000000000..0a2860d32 --- /dev/null +++ b/gas/testsuite/gas/i386/evex-no-scale-32.d @@ -0,0 +1,12 @@ +#objdump: -dw +#name: ix86 EVEX no disp scaling + +.*: +file format .* + +Disassembly of section .text: + +0+ : + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40\(,%eiz,1\),%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 05 40 00 00 00 vmovaps 0x40,%zmm0 + +[a-f0-9]+: 67 62 f1 7c 48 28 06 40 00 vmovaps 0x40,%zmm0 diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.s b/gas/testsuite/gas/i386/evex-no-scale-32.s new file mode 100644 index 000000000..e28c73f2a --- /dev/null +++ b/gas/testsuite/gas/i386/evex-no-scale-32.s @@ -0,0 +1,7 @@ + .allow_index_reg + .text +disp: + vmovaps 64(,%eax), %zmm0 + vmovaps 64(,%eiz), %zmm0 + vmovaps 64, %zmm0 + addr16 vmovaps 64, %zmm0 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.d b/gas/testsuite/gas/i386/evex-no-scale-64.d new file mode 100644 index 000000000..d52d947ab --- /dev/null +++ b/gas/testsuite/gas/i386/evex-no-scale-64.d @@ -0,0 +1,14 @@ +#objdump: -dw +#name: x86-64 EVEX no disp scaling + +.*: +file format .* + +Disassembly of section .text: + +0+ : + +[a-f0-9]+: 62 f1 7c 48 28 05 00 fc ff ff vmovaps -0x400\(%rip\),%zmm0 # .* + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%rax,1\),%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 25 40 00 00 00 addr32 vmovaps 0x40,%zmm0 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.s b/gas/testsuite/gas/i386/evex-no-scale-64.s new file mode 100644 index 000000000..bc3749cc0 --- /dev/null +++ b/gas/testsuite/gas/i386/evex-no-scale-64.s @@ -0,0 +1,9 @@ + .allow_index_reg + .text +disp: + vmovaps -1024(%rip), %zmm0 + vmovaps 64(,%rax), %zmm0 + vmovaps 64(,%riz), %zmm0 + vmovaps 64(,%eax), %zmm0 + vmovaps 64(,%eiz), %zmm0 + vmovaps 64, %zmm0 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 9cc927a96..398786247 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -525,6 +525,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_dump_test "nop-5" run_dump_test "nop-6" + run_dump_test "evex-no-scale-32" + if { [gas_64_check] } then { run_dump_test "att-regs" run_dump_test "intel-regs" @@ -1017,6 +1019,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t run_dump_test "x86-64-nop-4" run_dump_test "x86-64-nop-5" run_dump_test "x86-64-nop-6" + + run_dump_test "evex-no-scale-64" } set ASFLAGS "$old_ASFLAGS" diff --git a/gas/testsuite/gas/i386/se1.d b/gas/testsuite/gas/i386/se1.d index ff2685c78..d7800ab88 100644 --- a/gas/testsuite/gas/i386/se1.d +++ b/gas/testsuite/gas/i386/se1.d @@ -10,4 +10,5 @@ Disassembly of section .text: 0+ <_start>: [ ]*[a-f0-9]+: 0f 01 cf encls [ ]*[a-f0-9]+: 0f 01 d7 enclu +[ ]*[a-f0-9]+: 0f 01 c0 enclv #pass diff --git a/gas/testsuite/gas/i386/se1.s b/gas/testsuite/gas/i386/se1.s index 1b57ac87f..92d57952c 100644 --- a/gas/testsuite/gas/i386/se1.s +++ b/gas/testsuite/gas/i386/se1.s @@ -5,3 +5,4 @@ _start: encls enclu + enclv diff --git a/gas/testsuite/gas/i386/x86-64-se1.d b/gas/testsuite/gas/i386/x86-64-se1.d index 29494f009..a51521940 100644 --- a/gas/testsuite/gas/i386/x86-64-se1.d +++ b/gas/testsuite/gas/i386/x86-64-se1.d @@ -10,4 +10,5 @@ Disassembly of section .text: 0+ <_start>: [ ]*[a-f0-9]+: 0f 01 cf encls [ ]*[a-f0-9]+: 0f 01 d7 enclu +[ ]*[a-f0-9]+: 0f 01 c0 enclv #pass diff --git a/gas/testsuite/gas/i386/x86-64-se1.s b/gas/testsuite/gas/i386/x86-64-se1.s index 1b57ac87f..92d57952c 100644 --- a/gas/testsuite/gas/i386/x86-64-se1.s +++ b/gas/testsuite/gas/i386/x86-64-se1.s @@ -5,3 +5,4 @@ _start: encls enclu + enclv diff --git a/gas/testsuite/gas/i386/xmmword.l b/gas/testsuite/gas/i386/xmmword.l index ce3af8d15..7d25cb3de 100644 --- a/gas/testsuite/gas/i386/xmmword.l +++ b/gas/testsuite/gas/i386/xmmword.l @@ -99,3 +99,7 @@ .*:127: Error: .* `vpmovzxwq' .*:128: Error: .* `vpmovzxwq' .*:129: Error: .* `vpmovzxwq' +.*:131: Error: .* `vcvtps2qq' +.*:132: Error: .* `vcvtps2uqq' +.*:133: Error: .* `vcvttps2qq' +.*:134: Error: .* `vcvttps2uqq' diff --git a/gas/testsuite/gas/i386/xmmword.s b/gas/testsuite/gas/i386/xmmword.s index 47d2d8d59..ffe7aca3c 100644 --- a/gas/testsuite/gas/i386/xmmword.s +++ b/gas/testsuite/gas/i386/xmmword.s @@ -127,3 +127,8 @@ xmmword: vpmovzxwq xmm0{k7}, xmmword ptr [eax] vpmovzxwq ymm0, xmmword ptr [eax] vpmovzxwq ymm0{k7}, xmmword ptr [eax] + + vcvtps2qq xmm0, xmmword ptr [rax] + vcvtps2uqq xmm0, xmmword ptr [rax] + vcvttps2qq xmm0, xmmword ptr [rax] + vcvttps2uqq xmm0, xmmword ptr [rax] diff --git a/gold/ChangeLog b/gold/ChangeLog index 18af5e69b..cf998d901 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,15 @@ +2018-08-06 Cary Coutant + + PR gold/23455 + * options.h (General_options): Add --warn-drop-version option. + * symtab.cc (Symbol_table::set_dynsym_indexes): Check it. + +2018-08-06 Cary Coutant + + * target.h (Sized_target::record_gnu_property): Change first two + parameters to unsigned int. + * x86_64.cc (Target_x86_64::record_gnu_property): Likewise. + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/gold/options.h b/gold/options.h index 98d6be800..11054981c 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1361,6 +1361,10 @@ class General_options DEFINE_bool_ignore(warn_constructors, options::TWO_DASHES, '\0', N_("Ignored"), N_("Ignored")); + DEFINE_bool(warn_drop_version, options::TWO_DASHES, '\0', false, + N_("Warn when discarding version information"), + N_("Do not warn when discarding version information")); + DEFINE_bool(warn_execstack, options::TWO_DASHES, '\0', false, N_("Warn if the stack is executable"), N_("Do not warn if the stack is executable")); diff --git a/gold/symtab.cc b/gold/symtab.cc index aa7644156..759e0d022 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -2623,11 +2623,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index, versions->record_version(this, dynpool, sym); else { - gold_warning(_("discarding version information for " - "%s@%s, defined in unused shared library %s " - "(linked with --as-needed)"), - sym->name(), sym->version(), - sym->object()->name().c_str()); + if (parameters->options().warn_drop_version()) + gold_warning(_("discarding version information for " + "%s@%s, defined in unused shared library %s " + "(linked with --as-needed)"), + sym->name(), sym->version(), + sym->object()->name().c_str()); sym->clear_version(); } } diff --git a/gold/target.h b/gold/target.h index bb312067b..bbc87396f 100644 --- a/gold/target.h +++ b/gold/target.h @@ -1147,7 +1147,8 @@ class Sized_target : public Target // Record a target-specific program property in the .note.gnu.property // section. virtual void - record_gnu_property(int, int, size_t, const unsigned char*, const Object*) + record_gnu_property(unsigned int, unsigned int, size_t, + const unsigned char*, const Object*) { } // Merge the target-specific program properties from the current object. diff --git a/gold/x86_64.cc b/gold/x86_64.cc index 27f273d64..9d742f6f1 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -1307,7 +1307,8 @@ class Target_x86_64 : public Sized_target // Record a target-specific program property in the .note.gnu.property // section. void - record_gnu_property(int, int, size_t, const unsigned char*, const Object*); + record_gnu_property(unsigned int, unsigned int, size_t, + const unsigned char*, const Object*); // Merge the target-specific program properties from the current object. void @@ -1579,7 +1580,7 @@ Target_x86_64::rela_irelative_section(Layout* layout) template void Target_x86_64::record_gnu_property( - int, int pr_type, + unsigned int, unsigned int pr_type, size_t pr_datasz, const unsigned char* pr_data, const Object* object) { diff --git a/ld/ChangeLog b/ld/ChangeLog index c07e442c8..fb979d737 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,101 @@ +2018-08-12 H.J. Lu + + * testsuite/ld-x86-64/pr23486b.d: Swap pr23486a.s and pr23486a.s. + +2018-08-12 H.J. Lu + + PR ld/23428 + * testsuite/ld-elf/dummy.s: New file. + * testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property. + * testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428. + +2018-08-10 H.J. Lu + + PR ld/23486 + * testsuite/ld-i386/i386.exp: Run PR ld/23486 tests. + * testsuite/ld-x86-64/x86-64.exp: Likewise. + * testsuite/ld-i386/pr23486a.d: New file. + * testsuite/ld-i386/pr23486b.d: Likewise. + * testsuite/ld-x86-64/pr23486a-x32.d: Likewise. + * testsuite/ld-x86-64/pr23486a.d: Likewise. + * testsuite/ld-x86-64/pr23486a.s: Likewise. + * testsuite/ld-x86-64/pr23486b-x32.d: Likewise. + * testsuite/ld-x86-64/pr23486b.d: Likewise. + * testsuite/ld-x86-64/pr23486b.s: Likewise. + * testsuite/ld-i386/property-3.r: Remove "x86 ISA used". + * testsuite/ld-i386/property-4.r: Likewise. + * testsuite/ld-i386/property-5.r: Likewise. + * testsuite/ld-i386/property-x86-ibt3a.d: Likewise. + * testsuite/ld-i386/property-x86-ibt3b.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3a.d: Likewise. + * testsuite/ld-i386/property-x86-shstk3b.d: Likewise. + * testsuite/ld-x86-64/property-3.r: Likewise. + * testsuite/ld-x86-64/property-4.r: Likewise. + * testsuite/ld-x86-64/property-5.r: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise. + * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise. + +2018-08-10 H.J. Lu + + * testsuite/ld-x86-64/property-x86-3.s: Use ".p2align 2" to + align .note.gnu.property section if __64_bit__ is undefined. + +2018-08-01 Alan Modra + + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with hash-style + specified. + +2018-08-01 Alan Modra + + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with plt alignment. + * testsuite/ld-powerpc/tlsopt5.s: Add extra call. + * testsuite/ld-powerpc/tlsopt5.wf: Adjust expected output. + * testsuite/ld-powerpc/tlsopt5.d: Likewise. + +2018-08-07 Nick Clifton + + * po/bg.po: Updated Bulgarian translation. + +2018-08-01 Roland McGrath + + * testsuite/ld-aarch64/ifunc-1-local.d: Adjust regexps to match + the offsets emitted by aarch64-elf configurations. + * testsuite/ld-aarch64/ifunc-1.d: Likewise. + * testsuite/ld-aarch64/ifunc-2-local.d: Likewise. + * testsuite/ld-aarch64/ifunc-2.d: Likewise. + * testsuite/ld-aarch64/ifunc-21.d: Likewise. + * testsuite/ld-aarch64/ifunc-3a.d: Likewise. + +2018-07-23 H.J. Lu + + PR ld/23428 + * testsuite/ld-elf/linux-x86.S: New file. + * testsuite/ld-elf/linux-x86.exp: Likewise. + * testsuite/ld-elf/pr23428.c: Likewise. + * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld + for Linux/x86 targets. + * testsuite/ld-i386/abs-iamcu.d: Likewise. + * testsuite/ld-i386/abs.d: Likewise. + * testsuite/ld-i386/pr12718.d: Likewise. + * testsuite/ld-i386/pr12921.d: Likewise. + * testsuite/ld-x86-64/abs-k1om.d: Likewise. + * testsuite/ld-x86-64/abs-l1om.d: Likewise. + * testsuite/ld-x86-64/abs.d: Likewise. + * testsuite/ld-x86-64/pr12718.d: Likewise. + * testsuite/ld-x86-64/pr12921.d: Likewise. + * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property + section. + * testsuite/ld-scripts/print-memory-usage.t: Likewise. + * testsuite/ld-scripts/size-2.t: Likewise. + * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to + create executable if language is "asm". + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/ld/po/bg.po b/ld/po/bg.po index 5e8e81881..bf6ecd9b6 100644 --- a/ld/po/bg.po +++ b/ld/po/bg.po @@ -13,7 +13,7 @@ msgstr "" "Project-Id-Version: ld 2.30.90\n" "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" "POT-Creation-Date: 2018-06-24 19:43+0100\n" -"PO-Revision-Date: 2018-06-28 22:58+0300\n" +"PO-Revision-Date: 2018-07-26 20:34+0300\n" "Last-Translator: Румен Петров \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -33,7 +33,7 @@ msgstr "%X%P: cref_hash_lookup не успя: %E\n" #: ldcref.c:186 msgid "%X%P: cref alloc failed: %E\n" -msgstr "%X%P: пропадна заделяне(на памет) за cref: %E\n" +msgstr "%X%P: не успя заделянето на памет в cref: %E\n" #: ldcref.c:371 #, c-format @@ -62,7 +62,7 @@ msgstr "Без имена\n" #: ldcref.c:413 ldcref.c:565 msgid "%P: symbol `%pT' missing from main hash table\n" -msgstr "%P: име '%pT' липсва в главната хеш-таблица\n" +msgstr "%P: в главния речник липсва името '%pT'\n" #: ldcref.c:517 ldcref.c:628 ldmain.c:1211 ldmisc.c:335 pe-dll.c:715 #: pe-dll.c:1296 pe-dll.c:1417 pe-dll.c:1535 earm_wince_pe.c:1430 @@ -87,7 +87,7 @@ msgstr "%X%P: %C: забранено е кръстосана отпратка о #: ldctor.c:83 msgid "%X%P: different relocs used in set %s\n" -msgstr "%X%P: различни \"преместванията\" се използват в множеството %s\n" +msgstr "%X%P: различни \"премествания\" се използват в набора %s\n" #: ldctor.c:101 msgid "%X%P: different object file formats composing set %s\n" @@ -103,7 +103,7 @@ msgstr "%X%P: раздел %s не поддържа преместване %s з #: ldctor.c:321 msgid "%X%P: unsupported size %d for set %s\n" -msgstr "%X%P: неподдържан размер %d за множеството %s\n" +msgstr "%X%P: неподдържан размер %d за набор %s\n" #: ldctor.c:344 msgid "" @@ -202,7 +202,7 @@ msgstr "%F%P:%pS не може да се върне обратно брояч н #: ldexp.c:1167 msgid "%F%P:%s: hash creation failed\n" -msgstr "%F%P:%s: пропадна създаването на хеш\n" +msgstr "%F%P:%s: не успя създаването на хеш\n" #: ldexp.c:1519 ldexp.c:1545 ldexp.c:1605 msgid "%F%P:%pS: nonconstant expression for %s\n" @@ -210,7 +210,7 @@ msgstr "%F%P:%pS: не е константен изразът за %s\n" #: ldexp.c:1631 ldlang.c:1234 ldlang.c:3187 ldlang.c:7174 msgid "%F%P: can not create hash table: %E\n" -msgstr "%F%P: не може да се създаде хеш-таблицата: %E\n" +msgstr "%F%P: не може да се създаде речник: %E\n" #: ldfile.c:132 eaarch64cloudabi.c:656 eaarch64cloudabib.c:656 #: eaarch64elf.c:656 eaarch64elf32.c:656 eaarch64elf32b.c:656 @@ -286,12 +286,12 @@ msgstr "%F%P: не може да се създаде хеш-таблицата: #: eshlelf_vxworks.c:370 ev850.c:387 ev850_rh850.c:387 exgateelf.c:341 #, c-format msgid "attempt to open %s failed\n" -msgstr "опита да се отвори %s не успя\n" +msgstr "опитът да се отвори %s не успя\n" #: ldfile.c:134 #, c-format msgid "attempt to open %s succeeded\n" -msgstr "опита да се отвори %s успя\n" +msgstr "опитът да се отвори %s успя\n" #: ldfile.c:140 msgid "%F%P: invalid BFD target `%s'\n" @@ -353,7 +353,7 @@ msgstr "%F%P:%pS: грешка: синоним за област памет по #: ldlang.c:1372 msgid "%F%P:%pS: error: redefinition of memory region alias `%s'\n" -msgstr "%F%P:%pS: грешка: повторен определение на синоним за област памет '%s'\n" +msgstr "%F%P:%pS: грешка: повторено определение на синоним за област памет '%s'\n" #: ldlang.c:1379 msgid "%F%P:%pS: error: memory region `%s' for alias `%s' does not exist\n" @@ -361,7 +361,7 @@ msgstr "%F%P:%pS: грешка: област памет '%s' за синоним #: ldlang.c:1438 ldlang.c:1477 msgid "%F%P: failed creating section `%s': %E\n" -msgstr "%F%P: пропадна създаването на раздел '%s': %E\n" +msgstr "%F%P: не успя създаването на раздел '%s': %E\n" #: ldlang.c:1998 msgid "" @@ -439,7 +439,7 @@ msgstr "%F%P: %pB: файлът не е разпознат: %E\n" #: ldlang.c:2854 msgid "%F%P: %pB: member %pB in archive is not an object\n" -msgstr "%F%P: %pB: членът, на архива %pB, не е обект\n" +msgstr "%F%P: %pB: членът на архива %pB не е обект\n" #: ldlang.c:2869 ldlang.c:2883 eaarch64cloudabi.c:776 eaarch64cloudabib.c:776 #: eaarch64elf.c:776 eaarch64elf32.c:776 eaarch64elf32b.c:776 @@ -518,7 +518,7 @@ msgstr "%F%P: %pB: грешка при добавяне на имената: %E\ #: ldlang.c:3157 msgid "%P: warning: could not find any targets that match endianness requirement\n" -msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба(на байтовете)\n" +msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба на байтовете\n" #: ldlang.c:3171 msgid "%F%P: target %s not found\n" @@ -546,7 +546,7 @@ msgstr "%X%P: не е определено задължителното име ' #: ldlang.c:3770 msgid "%F%P: %s not found for insert\n" -msgstr "%F%P: %s не е намерен(за добавяне)\n" +msgstr "%F%P: %s не е намерен за добавяне\n" #: ldlang.c:4011 msgid " load address 0x%V" @@ -598,7 +598,7 @@ msgstr "%X%P: %pB раздел '%s' не се побира в област '%s'\ #: ldlang.c:5050 msgid "%F%P:%pS: non constant or forward reference address expression for section %s\n" -msgstr "%F%P:%pS: адресния израз не е константен или отпратка за по нататък при раздел %s\n" +msgstr "%F%P:%pS: адресният израз не е константен или е отпратка за по нататък при раздел %s\n" #: ldlang.c:5075 msgid "%X%P: internal error on COFF shared library section %s\n" @@ -664,7 +664,7 @@ msgstr "%X%P: %s архитектурата на входен файл '%pB' е #: ldlang.c:6332 msgid "%X%P: failed to merge target specific data of file %pB\n" -msgstr "%X%P: пропадна сливането, на специфични за резултата данни, от файл %pB\n" +msgstr "%X%P: не успя сливането на целеви данни от файл %pB\n" #: ldlang.c:6403 msgid "%F%P: could not define common symbol `%pT': %E\n" @@ -704,7 +704,7 @@ msgstr "%F%P:%pS: грешка: зададено е подравняване с #: ldlang.c:7198 msgid "%F%P: %s: plugin reported error after all symbols read\n" -msgstr "%F%P: %s: приставката рапортува грешка, след прочитане на всички имена\n" +msgstr "%F%P: %s: приставката отчете грешка след прочитане на всички имена\n" #: ldlang.c:7602 msgid "%F%P: multiple STARTUP files\n" @@ -805,11 +805,11 @@ msgstr "%P: грешка при свързване, изтриване на из #: ldmain.c:490 msgid "%F%P: %pB: final close failed: %E\n" -msgstr "%F%P: %pB: пропадна заключителното затваряне: %E\n" +msgstr "%F%P: %pB: не успя заключителното затваряне: %E\n" #: ldmain.c:517 msgid "%F%P: unable to open for source of copy `%s'\n" -msgstr "%F%P: не можа да се отвори източника на копието '%s'\n" +msgstr "%F%P: не можа да се отвори източникът на копието '%s'\n" #: ldmain.c:520 msgid "%F%P: unable to open for destination of copy `%s'\n" @@ -1017,7 +1017,7 @@ msgstr "%P: вътрешна грешка: прекратяване на %s:%d\n #: ldmisc.c:703 msgid "%F%P: please report this bug\n" -msgstr "%F%P: моля, рапортувайте този проблем\n" +msgstr "%F%P: моля, докладвайте този проблем\n" #. Output for noisy == 2 is intended to follow the GNU standards. #: ldver.c:37 @@ -1048,7 +1048,7 @@ msgstr " Поддържани подражавания:\n" #: ldwrite.c:60 ldwrite.c:206 ldwrite.c:258 ldwrite.c:299 msgid "%F%P: bfd_new_link_order failed\n" -msgstr "%F%P: пропадна bfd_new_link_order\n" +msgstr "%F%P: bfd_new_link_order не успя\n" #: ldwrite.c:368 msgid "%F%P: cannot create split section name for %s\n" @@ -1056,7 +1056,7 @@ msgstr "%F%P: при разцепване на раздел, не можа да #: ldwrite.c:380 msgid "%F%P: clone section failed: %E\n" -msgstr "%F%P: пропадна копирането на раздел: %E\n" +msgstr "%F%P: не успя раздвояването на раздел: %E\n" #: ldwrite.c:418 #, c-format @@ -1065,7 +1065,7 @@ msgstr "%8x други\n" #: ldwrite.c:588 msgid "%F%P: final link failed: %E\n" -msgstr "%F%P: пропадна заключителното свързване: %E\n" +msgstr "%F%P: не успя заключителното свързване: %E\n" #: lexsup.c:102 lexsup.c:276 msgid "KEYWORD" @@ -1490,7 +1490,7 @@ msgstr "" #: lexsup.c:350 msgid "Set default hash table size close to " -msgstr "Установява размер по подразбиране на таблицат за хеш близък до <ЧИСЛО>" +msgstr "Установява размер, по подразбиране, на речника близък до <ЧИСЛО>" #: lexsup.c:353 msgid "Print option help" @@ -1776,15 +1776,15 @@ msgstr "Предупреждение, ако споделен обект съд #: lexsup.c:518 msgid "Warn if an object has alternate ELF machine code" -msgstr "Предупреждение ако обекта е с друг ELF ELF код за машина" +msgstr "Предупреждение, ако обекта е с друг ELF код за машина" #: lexsup.c:522 msgid "Report unresolved symbols as warnings" -msgstr "Рапортуване като предупреждения, на несвързани имена" +msgstr "Докладване на несвързани имена като предупреждения" #: lexsup.c:525 msgid "Report unresolved symbols as errors" -msgstr "Рапортуване, като грешки, на несвързани имена" +msgstr "Докладване на несвързани имена като грешки" #: lexsup.c:527 msgid "Include all objects from following archives" @@ -2332,12 +2332,12 @@ msgstr "%X%P: не може да се създаде раздел .reloc: %E\n" #: pe-dll.c:1100 #, c-format msgid "%X%P: error: ordinal used twice: %d (%s vs %s)\n" -msgstr "%X%P: грешка, номера е използван два пъти: %d (%s с/у %s)\n" +msgstr "%X%P: грешка, номерът е използван два пъти: %d (%s с/у %s)\n" #: pe-dll.c:1136 #, c-format msgid "%X%P: error: export ordinal too large: %d\n" -msgstr "%X%P: грешка: номера е твърде голям: %d\n" +msgstr "%X%P: грешка: номерът е твърде голям: %d\n" #: pe-dll.c:1452 #, c-format @@ -2346,7 +2346,7 @@ msgstr "Сведение: разрешаване на %s със свързван #: pe-dll.c:1458 msgid "%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line; this should work unless it involves constant data structures referencing symbols from auto-imported DLLs\n" -msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред.Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n" +msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред. Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n" #. Huh? Shouldn't happen, but punt if it does. #: pe-dll.c:1527 @@ -2370,7 +2370,7 @@ msgstr "; липсва съдържание\n" #: pe-dll.c:2780 msgid "%X%P: %C: variable '%pT' can't be auto-imported; please read the documentation for ld's --enable-auto-import for details\n" -msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се прочете в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n" +msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се провери в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n" #: pe-dll.c:2807 #, c-format @@ -2469,7 +2469,7 @@ msgstr "%F%P: приставката не можа да задели памет #: plugin.c:1138 msgid "%F%P: %s: plugin reported error claiming file\n" -msgstr "%F%P: %s: приставката рапортува грешка, при твърденията за файла\n" +msgstr "%F%P: %s: приставката отчете грешка при твърденията за файла\n" #: plugin.c:1248 msgid "%P: %s: error in plugin cleanup: %d (ignored)\n" @@ -2547,7 +2547,7 @@ msgstr "%P: %s: грешка при почистване на приставка #: eshlelf_nto.c:81 eshlelf_vxworks.c:81 ev850.c:81 ev850_rh850.c:81 #: exgateelf.c:81 msgid "%F%P: map sections to segments failed: %E\n" -msgstr "%F%P: пропадна свързването на раздел към част: %E\n" +msgstr "%F%P: не успя свързването на раздел към част: %E\n" #: eaarch64cloudabi.c:101 eaarch64cloudabib.c:101 eaarch64elf.c:101 #: eaarch64elf32.c:101 eaarch64elf32b.c:101 eaarch64elfb.c:101 @@ -5051,31 +5051,31 @@ msgstr "%F%P: не се чете %s\n" #: eaix5ppc.c:390 eaix5rs6.c:390 eaixppc.c:390 eaixrs6.c:390 eppcmacos.c:390 msgid "%P: warning: ignoring invalid -D number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -D %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -D %s\n" #: eaix5ppc.c:398 eaix5rs6.c:398 eaixppc.c:398 eaixrs6.c:398 eppcmacos.c:398 msgid "%P: warning: ignoring invalid -H number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -H %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -H %s\n" #: eaix5ppc.c:510 eaix5rs6.c:510 eaixppc.c:510 eaixrs6.c:510 eppcmacos.c:510 msgid "%P: warning: ignoring invalid -bmaxdata number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxdata %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxdata %s\n" #: eaix5ppc.c:519 eaix5rs6.c:519 eaixppc.c:519 eaixrs6.c:519 eppcmacos.c:519 msgid "%P: warning: ignoring invalid -bmaxstack number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxstack %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxstack %s\n" #: eaix5ppc.c:532 eaix5rs6.c:532 eaixppc.c:532 eaixrs6.c:532 eppcmacos.c:532 msgid "%P: warning: ignoring invalid module type %s\n" -msgstr "%P: предупреждение: изоставяне на неправиен тип на модул %s\n" +msgstr "%P: предупреждение: пропускане на неправиен тип на модул %s\n" #: eaix5ppc.c:562 eaix5rs6.c:562 eaixppc.c:562 eaixrs6.c:562 eppcmacos.c:562 msgid "%P: warning: ignoring invalid -pD number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -pD %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -pD %s\n" #: eaix5ppc.c:585 eaix5rs6.c:585 eaixppc.c:585 eaixrs6.c:585 eppcmacos.c:585 msgid "%P: warning: ignoring invalid -pT number %s\n" -msgstr "%P: предупреждение: изоставяне на неправилно число за -pT %s\n" +msgstr "%P: предупреждение: пропускане на неправилно число за -pT %s\n" #: eaix5ppc.c:714 eaix5rs6.c:714 eaixppc.c:714 eaixrs6.c:714 eppcmacos.c:714 msgid "%F%P: bfd_xcoff_link_record_set failed: %E\n" @@ -5252,7 +5252,7 @@ msgstr " --[no-]leading-underscore Изрично установява #: emcorepe.c:392 eppcpe.c:392 eshpe.c:392 #, c-format msgid " --thumb-entry= Set the entry point to be Thumb \n" -msgstr " --thumb-entry=<знак> Установяване на входяща точка да е отбелязания <знак>\n" +msgstr " --thumb-entry=<знак> Установяване на входяща точка на отбелязания <знак>\n" #: earm_wince_pe.c:393 earmpe.c:393 ei386pe.c:393 ei386pe_posix.c:393 #: emcorepe.c:393 eppcpe.c:393 eshpe.c:393 @@ -5264,7 +5264,7 @@ msgstr " --[no-]insert-timestamp Използва истинска #: ei386pep.c:375 emcorepe.c:394 eppcpe.c:394 eshpe.c:394 #, c-format msgid " This makes binaries non-deterministic\n" -msgstr " Това прави двоичните файлове неопределяеми\n" +msgstr " Това прави двоичните файлове несравними\n" #: earm_wince_pe.c:396 earmpe.c:396 ei386pe.c:396 ei386pe_posix.c:396 #: ei386pep.c:377 emcorepe.c:396 eppcpe.c:396 eshpe.c:396 @@ -5440,7 +5440,7 @@ msgid "" " greater than 2 gigabytes\n" msgstr "" " --large-address-aware Програмата поддържа виртуални адреси\n" -" по-голями от 2 гигабайта\n" +" по-големи от 2 гигабайта\n" #: earm_wince_pe.c:420 earmpe.c:420 ei386pe.c:420 ei386pe_posix.c:420 #: emcorepe.c:420 eppcpe.c:420 eshpe.c:420 @@ -5450,7 +5450,7 @@ msgid "" " addresses greater than 2 gigabytes\n" msgstr "" " --disable-large-address-aware Програмата не поддържа виртуални\n" -" адреси по-голями от 2 гигабайта\n" +" адреси по-големи от 2 гигабайта\n" #: earm_wince_pe.c:421 earmpe.c:421 ei386pe.c:421 ei386pe_posix.c:421 #: ei386pep.c:399 emcorepe.c:421 eppcpe.c:421 eshpe.c:421 @@ -5479,7 +5479,7 @@ msgid "" " --dynamicbase Image base address may be relocated using\n" " address space layout randomization (ASLR)\n" msgstr "" -" --dynamicbase Основния адрес на образа може да бъде преместен\n" +" --dynamicbase Основният адрес на образа може да бъде преместен\n" " като се използва случаен адрес\n" #: earm_wince_pe.c:424 earmpe.c:424 ei386pe.c:424 ei386pe_posix.c:424 @@ -5492,13 +5492,13 @@ msgstr " --forceinteg Налагане на проверка за #: ei386pep.c:404 emcorepe.c:425 eppcpe.c:425 eshpe.c:425 #, c-format msgid " --nxcompat Image is compatible with data execution prevention\n" -msgstr " --nxcompat Образа е съвместим с предотвратяване на изпълнение на данни\n" +msgstr " --nxcompat Образът е съвместим с предотвратяване на изпълнение на данни\n" #: earm_wince_pe.c:426 earmpe.c:426 ei386pe.c:426 ei386pe_posix.c:426 #: ei386pep.c:405 emcorepe.c:426 eppcpe.c:426 eshpe.c:426 #, c-format msgid " --no-isolation Image understands isolation but do not isolate the image\n" -msgstr " --no-isolation Образа поддържа изолиране, но да не се изолира\n" +msgstr " --no-isolation Образът поддържа изолиране, но да не се изолира\n" #: earm_wince_pe.c:427 earmpe.c:427 ei386pe.c:427 ei386pe_posix.c:427 #: emcorepe.c:427 eppcpe.c:427 eshpe.c:427 @@ -5507,7 +5507,7 @@ msgid "" " --no-seh Image does not use SEH. No SE handler may\n" " be called in this image\n" msgstr "" -" --no-seh Образа не използва SEH. В този образ не\n" +" --no-seh Образът не използва SEH. В този образ не\n" " може да се извиква SE подръжка\n" #: earm_wince_pe.c:428 earmpe.c:428 ei386pe.c:428 ei386pe_posix.c:428 @@ -5526,7 +5526,7 @@ msgstr " --wdmdriver Използване на WDM модел з #: ei386pep.c:409 emcorepe.c:430 eppcpe.c:430 eshpe.c:430 #, c-format msgid " --tsaware Image is Terminal Server aware\n" -msgstr " --tsaware Образа поддържа \"Terminal Server\"\n" +msgstr " --tsaware Образът поддържа \"Terminal Server\"\n" #: earm_wince_pe.c:431 earmpe.c:431 ei386pe.c:431 ei386pe_posix.c:431 #: ei386pep.c:410 emcorepe.c:431 eppcpe.c:431 eshpe.c:431 @@ -5603,7 +5603,7 @@ msgstr "" #: earm_wince_pe.c:1302 earmpe.c:1302 ei386pe.c:1302 ei386pe_posix.c:1302 #: ei386pep.c:1305 emcorepe.c:1302 eppcpe.c:1302 eshpe.c:1302 msgid "%F%P: cannot perform PE operations on non PE output file '%pB'\n" -msgstr "%F%P: не може да се извърши \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n" +msgstr "%F%P: не може да се извършат \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n" #: earm_wince_pe.c:1442 earmpe.c:1442 ei386pe.c:1442 ei386pe_posix.c:1442 #: ei386pep.c:1426 emcorepe.c:1442 eppcpe.c:1442 eshpe.c:1442 @@ -5649,7 +5649,7 @@ msgstr "%P: предупреждение: '--thumb-entry %s' прегазва '- #: earmnto.c:577 earmpe.c:1876 earmsymbian.c:577 ei386pe.c:1876 #: ei386pe_posix.c:1876 emcorepe.c:1876 eppcpe.c:1876 eshpe.c:1876 msgid "%P: warning: cannot find thumb start symbol %s\n" -msgstr "%P: предупреждение: не е намерен, като начален, отбелязания знак %s\n" +msgstr "%P: предупреждение: не е намерен, като начален, отбелязаният знак %s\n" #: earmelf.c:603 earmelf_fbsd.c:603 earmelf_fuchsia.c:603 earmelf_linux.c:603 #: earmelf_linux_eabi.c:603 earmelf_linux_fdpiceabi.c:603 earmelf_nacl.c:603 @@ -5700,7 +5700,7 @@ msgstr "%P: неразпознат вид STM32L4XX поправка '%s'\n" #: earmelfb_nacl.c:2851 earmelfb_nbsd.c:2851 earmnto.c:2826 earmsymbian.c:2851 #, c-format msgid " --thumb-entry= Set the entry point to be Thumb symbol \n" -msgstr " --thumb-entry=<знак> Установява входяща точка да е отбелязания <знак>\n" +msgstr " --thumb-entry=<знак> Установява входяща точка на отбелязания <знак>\n" #: earmelf.c:2852 earmelf_fbsd.c:2859 earmelf_fuchsia.c:2852 #: earmelf_linux.c:2852 earmelf_linux_eabi.c:2852 @@ -6667,7 +6667,7 @@ msgstr "" #: eelf32xtensa.c:561 msgid "%F%P: failed to create .xtensa.info section\n" -msgstr "%F%P: пропадна създаването на раздел .xtensa.info\n" +msgstr "%F%P: не успя създаването на раздел .xtensa.info\n" #: eelf32xtensa.c:4073 #, c-format @@ -6945,7 +6945,7 @@ msgid "" " --no-seh Image does not use SEH; no SE handler may\n" " be called in this image\n" msgstr "" -" --no-seh Образа не използва SEH. В този образ не може\n" +" --no-seh Образът не използва SEH. В този образ не може\n" " да се извиква SE подръжка\n" #: ei386pep.c:908 diff --git a/ld/testsuite/ld-aarch64/ifunc-1-local.d b/ld/testsuite/ld-aarch64/ifunc-1-local.d index bcba0aa02..178363786 100644 --- a/ld/testsuite/ld-aarch64/ifunc-1-local.d +++ b/ld/testsuite/ld-aarch64/ifunc-1-local.d @@ -3,7 +3,7 @@ #target: aarch64*-*-* #... -0+(110|180) <__GI_foo>: +0+(110|180|1a0) <(__GI_)?foo>: #... -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180)@plt> +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180|0x1a0)@plt> #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-1.d b/ld/testsuite/ld-aarch64/ifunc-1.d index f408bfff7..0274ac009 100644 --- a/ld/testsuite/ld-aarch64/ifunc-1.d +++ b/ld/testsuite/ld-aarch64/ifunc-1.d @@ -3,7 +3,7 @@ #target: aarch64*-*-* #... -0+(130|1a0) : +0+(130|1a0|1c8) : #... -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt> +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt> #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-2-local.d b/ld/testsuite/ld-aarch64/ifunc-2-local.d index fb1bb40e3..a3d9e15f8 100644 --- a/ld/testsuite/ld-aarch64/ifunc-2-local.d +++ b/ld/testsuite/ld-aarch64/ifunc-2-local.d @@ -3,9 +3,9 @@ #target: aarch64*-*-* #... -0+(110|180) <__GI_foo>: +0+(110|180|1a0) <__GI_foo>: #... -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180)@plt> +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180|1a0)@plt> [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*> -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170) +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170|190) #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-2.d b/ld/testsuite/ld-aarch64/ifunc-2.d index 16c75ead4..eb6fa0ccf 100644 --- a/ld/testsuite/ld-aarch64/ifunc-2.d +++ b/ld/testsuite/ld-aarch64/ifunc-2.d @@ -3,9 +3,9 @@ #target: aarch64*-*-* #... -0+(130|1a0) : +0+(130|1a0|1c8) : #... -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt> +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt> [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*> -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190) +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190|1b8) #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-21.d b/ld/testsuite/ld-aarch64/ifunc-21.d index b501bd671..a16186b58 100644 --- a/ld/testsuite/ld-aarch64/ifunc-21.d +++ b/ld/testsuite/ld-aarch64/ifunc-21.d @@ -11,7 +11,7 @@ Contents of section .text: [0-9a-f]+ .* Contents of section .got.plt: [0-9a-f]+ 0+ 0+ 0+ 0+ .* - 10298 0+ 0+ [0-9a-f]+ [0-9a-f]+ .* + (10298|102b8) 0+ 0+ [0-9a-f]+ [0-9a-f]+ .* Disassembly of section .text: @@ -20,7 +20,7 @@ Disassembly of section .text: .* : .*: 90000080 adrp x0, 10000 <.*> - .*: .* ldr x0, \[x0, #672\] + .*: .* ldr x0, \[x0, #(672|704)\] .*: d65f03c0 ret #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-3a.d b/ld/testsuite/ld-aarch64/ifunc-3a.d index a01a75c90..4919d9689 100644 --- a/ld/testsuite/ld-aarch64/ifunc-3a.d +++ b/ld/testsuite/ld-aarch64/ifunc-3a.d @@ -4,7 +4,7 @@ #target: aarch64*-*-* #... -0+(150|1d0) <__GI_foo>: +0+(150|1d0|1e8) <__GI_foo>: #... -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0)@plt> +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0|1e8)@plt> #pass diff --git a/ld/testsuite/ld-aarch64/ifunc-9.d b/ld/testsuite/ld-aarch64/ifunc-9.d index 3b4e99525..e92159127 100644 --- a/ld/testsuite/ld-aarch64/ifunc-9.d +++ b/ld/testsuite/ld-aarch64/ifunc-9.d @@ -1,3 +1,4 @@ #ld: --export-dynamic -#error: .*dynamic STT_GNU_IFUNC symbol `foo' with pointer equality in `.*.o' can not be used when making an executable; recompile with -fPIE and relink with -pie +#objdump: -dr #target: aarch64*-*-* +#... diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s new file mode 100644 index 000000000..403f98000 --- /dev/null +++ b/ld/testsuite/ld-elf/dummy.s @@ -0,0 +1 @@ +# Dummy diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S new file mode 100644 index 000000000..d94abc110 --- /dev/null +++ b/ld/testsuite/ld-elf/linux-x86.S @@ -0,0 +1,91 @@ + .text + .globl _start + .type _start,@function + .p2align 4 +_start: + xorl %ebp, %ebp +#ifdef __LP64__ + popq %rdi + movq %rsp, %rsi + andq $~15, %rsp +#elif defined __x86_64__ + mov (%rsp),%edi + addl $4,%esp + movl %esp, %esi + andl $~15, %esp +#else + popl %esi + movl %esp, %ecx + andl $~15, %esp + + subl $8,%esp + pushl %ecx + pushl %esi +#endif + + call main + + hlt + + .type syscall, @function + .globl syscall + .p2align 4 +syscall: +#ifdef __x86_64__ + movq %rdi, %rax /* Syscall number -> rax. */ + movq %rsi, %rdi /* shift arg1 - arg5. */ + movq %rdx, %rsi + movq %rcx, %rdx + movq %r8, %r10 + movq %r9, %r8 + movq 8(%rsp),%r9 /* arg6 is on the stack. */ + syscall /* Do the system call. */ +#else + push %ebp + push %edi + push %esi + push %ebx + mov 0x2c(%esp),%ebp + mov 0x28(%esp),%edi + mov 0x24(%esp),%esi + mov 0x20(%esp),%edx + mov 0x1c(%esp),%ecx + mov 0x18(%esp),%ebx + mov 0x14(%esp),%eax + int $0x80 + pop %ebx + pop %esi + pop %edi + pop %ebp +#endif + ret /* Return to caller. */ + .size syscall, .-syscall + .section .note.GNU-stack,"",@progbits + + .section ".note.gnu.property", "a" +#ifdef __LP64__ + .p2align 3 +#else + .p2align 2 +#endif + .long 1f - 0f /* name length */ + .long 5f - 2f /* data length */ + .long 5 /* note type */ +0: .asciz "GNU" /* vendor name */ +1: +#ifdef __LP64__ + .p2align 3 +#else + .p2align 2 +#endif +2: .long 0xc0000002 /* pr_type. */ + .long 4f - 3f /* pr_datasz. */ +3: + .long 0x2 +4: +#ifdef __LP64__ + .p2align 3 +#else + .p2align 2 +#endif +5: diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp new file mode 100644 index 000000000..f6f5a8085 --- /dev/null +++ b/ld/testsuite/ld-elf/linux-x86.exp @@ -0,0 +1,46 @@ +# Expect script for simple native Linux/x86 tests. +# Copyright (C) 2018 Free Software Foundation, Inc. +# +# This file is part of the GNU Binutils. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. +# + +# Test very simple native Linux/x86 programs with linux-x86.S. +if { ![isnative] || [which $CC] == 0 \ + || (![istarget "i?86-*-linux*"] \ + && ![istarget "x86_64-*-linux*"] \ + && ![istarget "amd64-*-linux*"]) } { + return +} + +# Add $PLT_CFLAGS if PLT is expected. +global PLT_CFLAGS +# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required. +global NOPIE_CFLAGS NOPIE_LDFLAGS + +run_ld_link_exec_tests [list \ + [list \ + "Run PR ld/23428 test" \ + "--no-dynamic-linker -z separate-code" \ + "" \ + { linux-x86.S pr23428.c dummy.s } \ + "pr23428" \ + "pass.out" \ + "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \ + "asm" \ + ] \ +] diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c new file mode 100644 index 000000000..3631ed792 --- /dev/null +++ b/ld/testsuite/ld-elf/pr23428.c @@ -0,0 +1,43 @@ +#include +#include +#include + +#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1) + +int +main (int argc, char **argv) +{ + char **ev = &argv[argc + 1]; + char **evp = ev; + ElfW(auxv_t) *av; + const ElfW(Phdr) *phdr = NULL; + size_t phnum = 0; + size_t loadnum = 0; + int fd = STDOUT_FILENO; + size_t i; + + while (*evp++ != NULL) + ; + + av = (ElfW(auxv_t) *) evp; + + for (; av->a_type != AT_NULL; ++av) + switch (av->a_type) + { + case AT_PHDR: + phdr = (const void *) av->a_un.a_val; + break; + case AT_PHNUM: + phnum = av->a_un.a_val; + break; + } + + for (i = 0; i < phnum; i++, phdr++) + if (phdr->p_type == PT_LOAD) + loadnum++; + + syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n")); + + syscall (SYS_exit, !loadnum); + return 0; +} diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp index b58139e9d..3909c0eaa 100644 --- a/ld/testsuite/ld-elf/sec64k.exp +++ b/ld/testsuite/ld-elf/sec64k.exp @@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"] foreach sfile $sfiles { puts $ofd "#source: $sfile" } if { [istarget spu*-*-*] } { puts $ofd "#ld: --local-store 0:0" + } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } { + puts $ofd "#ld: -z noseparate-code" } else { puts $ofd "#ld:" } diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d index ac9beff2e..aba7d6b03 100644 --- a/ld/testsuite/ld-i386/abs-iamcu.d +++ b/ld/testsuite/ld-i386/abs-iamcu.d @@ -2,7 +2,7 @@ #source: abs.s #source: zero.s #as: --32 -march=iamcu -#ld: -m elf_iamcu +#ld: -m elf_iamcu -z noseparate-code #objdump: -rs -j .text .*: file format .* diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d index e660aca52..191ee4456 100644 --- a/ld/testsuite/ld-i386/abs.d +++ b/ld/testsuite/ld-i386/abs.d @@ -2,7 +2,7 @@ #as: --32 #source: abs.s #source: zero.s -#ld: -melf_i386 +#ld: -melf_i386 -z noseparate-code #objdump: -rs .*: file format .* diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp index 6d794fe65..78dad0257 100644 --- a/ld/testsuite/ld-i386/i386.exp +++ b/ld/testsuite/ld-i386/i386.exp @@ -462,6 +462,8 @@ run_dump_test "pr23189" run_dump_test "pr23194" run_dump_test "pr23372a" run_dump_test "pr23372b" +run_dump_test "pr23486a" +run_dump_test "pr23486b" if { !([istarget "i?86-*-linux*"] || [istarget "i?86-*-gnu*"] diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d index ec51540a4..7eba52d95 100644 --- a/ld/testsuite/ld-i386/pr12718.d +++ b/ld/testsuite/ld-i386/pr12718.d @@ -1,6 +1,6 @@ #name: PR ld/12718 #as: --32 -#ld: -melf_i386 +#ld: -melf_i386 -z noseparate-code #readelf: -S There are 5 section headers, starting at offset 0x[0-9a-f]+: diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d index e49079b3c..ea2da3eb5 100644 --- a/ld/testsuite/ld-i386/pr12921.d +++ b/ld/testsuite/ld-i386/pr12921.d @@ -1,6 +1,6 @@ #name: PR ld/12921 #as: --32 -#ld: -melf_i386 +#ld: -melf_i386 -z noseparate-code #readelf: -S --wide There are 7 section headers, starting at offset 0x[0-9a-f]+: diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d new file mode 100644 index 000000000..41a6dcf7d --- /dev/null +++ b/ld/testsuite/ld-i386/pr23486a.d @@ -0,0 +1,10 @@ +#source: ../ld-x86-64/pr23486a.s +#source: ../ld-x86-64/pr23486b.s +#as: --32 +#ld: -r -m elf_i386 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d new file mode 100644 index 000000000..08019b727 --- /dev/null +++ b/ld/testsuite/ld-i386/pr23486b.d @@ -0,0 +1,10 @@ +#source: ../ld-x86-64/pr23486b.s +#source: ../ld-x86-64/pr23486a.s +#as: --32 +#ld: -r -m elf_i386 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r index 0ed91f592..d03203c1e 100644 --- a/ld/testsuite/ld-i386/property-3.r +++ b/ld/testsuite/ld-i386/property-3.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 - x86 ISA used: 586, SSE x86 ISA needed: i486, 586 #pass diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r index cb2bc15d9..da295eb6c 100644 --- a/ld/testsuite/ld-i386/property-4.r +++ b/ld/testsuite/ld-i386/property-4.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 - x86 ISA used: i486, 586, SSE x86 ISA needed: i486, 586, SSE #pass diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r index 552965058..e4141594b 100644 --- a/ld/testsuite/ld-i386/property-5.r +++ b/ld/testsuite/ld-i386/property-5.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x900000 - x86 ISA used: i486, 586, SSE x86 ISA needed: i486, 586, SSE #pass diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d index 4bb35b00f..0aedea161 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt3a.d +++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: i486, 586, SSE2, SSE3 - x86 ISA needed: 586, SSE, SSE3, SSE4_1 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d index 418d58a8f..bd69ac647 100644 --- a/ld/testsuite/ld-i386/property-x86-ibt3b.d +++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: i486, 586, SSE2, SSE3 - x86 ISA needed: 586, SSE, SSE3, SSE4_1 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d index e261038f6..76d2a39f2 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk3a.d +++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: i486, 586, SSE2, SSE3 - x86 ISA needed: 586, SSE, SSE3, SSE4_1 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d index 25f3d2361..e770ecffa 100644 --- a/ld/testsuite/ld-i386/property-x86-shstk3b.d +++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: i486, 586, SSE2, SSE3 - x86 ISA needed: 586, SSE, SSE3, SSE4_1 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1 diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp index 612d91402..86892b96b 100644 --- a/ld/testsuite/ld-ifunc/ifunc.exp +++ b/ld/testsuite/ld-ifunc/ifunc.exp @@ -713,7 +713,7 @@ run_ld_link_exec_tests [list \ # That does not happen for the pr23169 testcase where the resolver is # in the executable (which is relocated last by ld.so). if { [isnative] - && ![istarget "powerpc-*-*"] } { + && !([istarget "powerpc-*-*"] || [istarget "aarch64*-*-*"]) } { run_ld_link_exec_tests [list \ [list \ "Run pr23169a" \ diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld index b22eaa12c..f89855a08 100644 --- a/ld/testsuite/ld-linkonce/zeroeh.ld +++ b/ld/testsuite/ld-linkonce/zeroeh.ld @@ -2,4 +2,5 @@ SECTIONS { .text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) } .gcc_except_table 0x2000 : { *(.gcc_except_table) } .eh_frame 0x4000 : { *(.eh_frame) } + /DISCARD/ : { *(.note.gnu.property) } } diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 0359ba28c..de762966e 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -221,7 +221,7 @@ set ppc64elftests { "tlsopt4"} {"TLS DLL" "-shared -melf64ppc --version-script tlsdll.ver" "" "-a64" {tlsdll.s} {} "tlsdll.so"} - {"TLS opt 5" "-melf64ppc --no-plt-align -shared --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s} + {"TLS opt 5" "-melf64ppc -shared --hash-style=both --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s} {{objdump -dr tlsopt5.d} {readelf -wf tlsopt5.wf}} "tlsopt5"} {"sym@tocbase" "-shared -melf64ppc" "" "-a64" {symtocbase-1.s symtocbase-2.s} diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d index 4521a9b42..4caf1832e 100644 --- a/ld/testsuite/ld-powerpc/tlsopt5.d +++ b/ld/testsuite/ld-powerpc/tlsopt5.d @@ -8,6 +8,13 @@ Disassembly of section \.text: +.* <.*\.plt_call\.foo>: +.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\) +.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\) +.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12 +.*: (20 04 80 4e|4e 80 04 20) bctr + \.\.\. + .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>: .*: (00 00 63 e9|e9 63 00 00) ld r11,0\(r3\) .*: (08 00 83 e9|e9 83 00 08) ld r12,8\(r3\) @@ -19,17 +26,21 @@ Disassembly of section \.text: .*: (a6 02 68 7d|7d 68 02 a6) mflr r11 .*: (08 00 61 f9|f9 61 00 08) std r11,8\(r1\) .*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\) -.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\) +.*: (30 80 82 e9|e9 82 80 30) ld r12,-32720\(r2\) .*: (a6 03 89 7d|7d 89 03 a6) mtctr r12 .*: (21 04 80 4e|4e 80 04 21) bctrl .*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\) .*: (08 00 61 e9|e9 61 00 08) ld r11,8\(r1\) .*: (a6 03 68 7d|7d 68 03 a6) mtlr r11 .*: (20 00 80 4e|4e 80 00 20) blr + \.\.\. .* <_start>: .*: (08 80 62 38|38 62 80 08) addi r3,r2,-32760 -.*: (b9 ff ff 4b|4b ff ff b9) bl .* +.*: (9d ff ff 4b|4b ff ff 9d) bl .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22> +.*: (00 00 00 60|60 00 00 00) nop +.*: (75 ff ff 4b|4b ff ff 75) bl .* <.*\.plt_call\.foo> +.*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\) .*: (00 00 00 60|60 00 00 00) nop .* .* @@ -50,5 +61,8 @@ Disassembly of section \.text: .*: (08 00 6b e9|e9 6b 00 08) ld r11,8\(r11\) .*: (20 04 80 4e|4e 80 04 20) bctr +.* : +.* (c8 ff ff 4b|4b ff ff c8) b .* + .* <__tls_get_addr_opt@plt>: -.*: (c8 ff ff 4b|4b ff ff c8) b .* +.*: (c4 ff ff 4b|4b ff ff c4) b .* diff --git a/ld/testsuite/ld-powerpc/tlsopt5.s b/ld/testsuite/ld-powerpc/tlsopt5.s index 70902ef96..7cb82db1f 100644 --- a/ld/testsuite/ld-powerpc/tlsopt5.s +++ b/ld/testsuite/ld-powerpc/tlsopt5.s @@ -1,7 +1,10 @@ .globl _start + .weak foo _start: .cfi_startproc addi 3,2,gd@got@tlsgd bl __tls_get_addr(gd@tlsgd) nop + bl foo + nop .cfi_endproc diff --git a/ld/testsuite/ld-powerpc/tlsopt5.wf b/ld/testsuite/ld-powerpc/tlsopt5.wf index af8cb76d1..f0453610e 100644 --- a/ld/testsuite/ld-powerpc/tlsopt5.wf +++ b/ld/testsuite/ld-powerpc/tlsopt5.wf @@ -7,11 +7,10 @@ Contents of the \.eh_frame section: Data alignment factor: -8 Return address column: 65 Augmentation data: 1b - DW_CFA_def_cfa: r1 ofs 0 0+14 0+14 0+18 FDE cie=0+ pc=.* - DW_CFA_advance_loc: 48 to .* + DW_CFA_advance_loc: 80 to .* DW_CFA_offset_extended_sf: r65 at cfa\+8 DW_CFA_advance_loc: 16 to .* DW_CFA_restore_extended: r65 diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t index 5ff057a5e..6eda1d2dc 100644 --- a/ld/testsuite/ld-scripts/print-memory-usage.t +++ b/ld/testsuite/ld-scripts/print-memory-usage.t @@ -11,4 +11,6 @@ SECTIONS *(.data) *(.rw) } + + /DISCARD/ : { *(.note.gnu.property) } } diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t index 723863995..c3c4eddab 100644 --- a/ld/testsuite/ld-scripts/size-2.t +++ b/ld/testsuite/ld-scripts/size-2.t @@ -18,4 +18,5 @@ SECTIONS LONG (SIZEOF (.tdata)) LONG (SIZEOF (.tbss)) } :image + /DISCARD/ : { *(.note.gnu.property) } } diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d index 2c26639fc..6b0fde0ee 100644 --- a/ld/testsuite/ld-x86-64/abs-k1om.d +++ b/ld/testsuite/ld-x86-64/abs-k1om.d @@ -2,7 +2,7 @@ #source: ../ld-i386/abs.s #source: ../ld-i386/zero.s #as: --64 -march=k1om -#ld: -m elf_k1om +#ld: -m elf_k1om -z noseparate-code #objdump: -rs -j .text .*: file format .* diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d index 1fb96d44b..f87869f9d 100644 --- a/ld/testsuite/ld-x86-64/abs-l1om.d +++ b/ld/testsuite/ld-x86-64/abs-l1om.d @@ -2,7 +2,7 @@ #source: ../ld-i386/abs.s #source: ../ld-i386/zero.s #as: --64 -march=l1om -#ld: -m elf_l1om +#ld: -m elf_l1om -z noseparate-code #objdump: -rs -j .text #target: x86_64-*-linux* diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d index b24b01863..d99ab4685 100644 --- a/ld/testsuite/ld-x86-64/abs.d +++ b/ld/testsuite/ld-x86-64/abs.d @@ -1,7 +1,7 @@ #name: Absolute non-overflowing relocs #source: ../ld-i386/abs.s #source: ../ld-i386/zero.s -#ld: +#ld: -z noseparate-code #objdump: -rs .*: file format .* diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d index 07d17325d..2c503ffba 100644 --- a/ld/testsuite/ld-x86-64/pr12718.d +++ b/ld/testsuite/ld-x86-64/pr12718.d @@ -1,6 +1,6 @@ #name: PR ld/12718 #as: --64 -#ld: -melf_x86_64 +#ld: -melf_x86_64 -z noseparate-code #readelf: -S --wide There are 5 section headers, starting at offset 0x[0-9a-f]+: diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d index 6fe6abee0..1162d5581 100644 --- a/ld/testsuite/ld-x86-64/pr12921.d +++ b/ld/testsuite/ld-x86-64/pr12921.d @@ -1,6 +1,6 @@ #name: PR ld/12921 #as: --64 -#ld: -melf_x86_64 +#ld: -melf_x86_64 -z noseparate-code #readelf: -S --wide There are 7 section headers, starting at offset 0x[0-9a-f]+: diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d new file mode 100644 index 000000000..6d9fa68cd --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d @@ -0,0 +1,10 @@ +#source: pr23486a.s +#source: pr23486b.s +#as: --x32 +#ld: -r -m elf32_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d new file mode 100644 index 000000000..dc2b7bf76 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486a.d @@ -0,0 +1,10 @@ +#source: pr23486a.s +#source: pr23486b.s +#as: --64 -defsym __64_bit__=1 +#ld: -r -m elf_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s new file mode 100644 index 000000000..a07d0c7ce --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486a.s @@ -0,0 +1,30 @@ + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length. */ + .long 4f - 1f /* data length. */ + /* NT_GNU_PROPERTY_TYPE_0 */ + .long 5 /* note type. */ +0: + .asciz "GNU" /* vendor name. */ +1: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + /* GNU_PROPERTY_X86_ISA_1_USED */ + .long 0xc0000000 /* pr_type. */ + .long 3f - 2f /* pr_datasz. */ +2: + .long 0xa +3: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +4: diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d new file mode 100644 index 000000000..0445e69d8 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d @@ -0,0 +1,10 @@ +#source: pr23486b.s +#source: pr23486a.s +#as: --x32 +#ld: -r -m elf32_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d new file mode 100644 index 000000000..dd0fe8814 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486b.d @@ -0,0 +1,10 @@ +#source: pr23486b.s +#source: pr23486a.s +#as: --64 -defsym __64_bit__=1 +#ld: -r -m elf_x86_64 +#readelf: -n + +Displaying notes found in: .note.gnu.property + Owner Data size Description + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586 diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s new file mode 100644 index 000000000..c5167eeb6 --- /dev/null +++ b/ld/testsuite/ld-x86-64/pr23486b.s @@ -0,0 +1,30 @@ + .section ".note.gnu.property", "a" +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + .long 1f - 0f /* name length. */ + .long 4f - 1f /* data length. */ + /* NT_GNU_PROPERTY_TYPE_0 */ + .long 5 /* note type. */ +0: + .asciz "GNU" /* vendor name. */ +1: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif + /* GNU_PROPERTY_X86_ISA_1_NEEDED */ + .long 0xc0000001 /* pr_type. */ + .long 3f - 2f /* pr_datasz. */ +2: + .long 0x3 +3: +.ifdef __64_bit__ + .p2align 3 +.else + .p2align 2 +.endif +4: diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r index 0ed91f592..d03203c1e 100644 --- a/ld/testsuite/ld-x86-64/property-3.r +++ b/ld/testsuite/ld-x86-64/property-3.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 - x86 ISA used: 586, SSE x86 ISA needed: i486, 586 #pass diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r index cb2bc15d9..da295eb6c 100644 --- a/ld/testsuite/ld-x86-64/property-4.r +++ b/ld/testsuite/ld-x86-64/property-4.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x800000 - x86 ISA used: i486, 586, SSE x86 ISA needed: i486, 586, SSE #pass diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r index 552965058..e4141594b 100644 --- a/ld/testsuite/ld-x86-64/property-5.r +++ b/ld/testsuite/ld-x86-64/property-5.r @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0 Properties: stack size: 0x900000 - x86 ISA used: i486, 586, SSE x86 ISA needed: i486, 586, SSE #pass diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s index be8cc9efb..239cf622f 100644 --- a/ld/testsuite/ld-x86-64/property-x86-3.s +++ b/ld/testsuite/ld-x86-64/property-x86-3.s @@ -41,7 +41,11 @@ 3: .section ".note.gnu.property", "a" +.ifdef __64_bit__ .p2align 3 +.else + .p2align 2 +.endif .long 1f - 0f /* name length. */ .long 3f - 1f /* data length. */ /* NT_GNU_PROPERTY_TYPE_0 */ diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d index 011426f5a..4cec728dc 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d index 1b4229a03..a8df49a35 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d index 290ed6abf..c11262671 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d index 1142e0327..f10dffdc2 100644 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d index 819542d18..0147a3c7b 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d index 4c5d0e0a1..1f8c2dc92 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d index ba181e0bc..7ca2539ca 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d index 5216f385d..f66a40e44 100644 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d @@ -6,6 +6,5 @@ Displaying notes found in: .note.gnu.property Owner Data size Description - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1 - x86 ISA needed: i486, 586, SSE2, SSE3 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3 diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 6edb9e86f..ae21e554a 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -403,6 +403,10 @@ run_dump_test "pr23372a" run_dump_test "pr23372a-x32" run_dump_test "pr23372b" run_dump_test "pr23372b-x32" +run_dump_test "pr23486a" +run_dump_test "pr23486a-x32" +run_dump_test "pr23486b" +run_dump_test "pr23486b-x32" if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} { return diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index cfbefe902..109509188 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } { continue } - if { [ string match "c++" $lang ] } { + if { [ string match "asm" $lang ] } { + set link_proc ld_link + set link_cmd $ld + } elseif { [ string match "c++" $lang ] } { set link_proc ld_link set link_cmd $CXX } else { diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index d04963a9f..bf533f4bd 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,30 @@ +2018-10-16 Matthew Malcomson + + * aarch64-opc.c (struct operand_qualifier_data): Change qualifier data + corresponding to AARCH64_OPND_QLF_S_4B qualifier. + +2018-10-05 H.J. Lu + + * i386-dis.c (rm_table): Add enclv. + * i386-opc.tbl: Add enclv. + * i386-tbl.h: Regenerated. + +2018-07-18 H.J. Lu + + PR gas/23418 + * i386-opc.h (Byte): Update comments. + (Word): Likewise. + (Dword): Likewise. + (Fword): Likewise. + (Qword): Likewise. + (Tbyte): Likewise. + (Xmmword): Likewise. + (Ymmword): Likewise. + (Zmmword): Likewise. + * i386-opc.tbl: Split vcvtps2qq, vcvtps2uqq, vcvttps2qq and + vcvttps2uqq. + * i386-tbl.h: Regenerated. + 2018-07-18 Nick Clifton 2.31.1 Release point. diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c index ba2af7bfc..e59240c98 100644 --- a/opcodes/aarch64-opc.c +++ b/opcodes/aarch64-opc.c @@ -698,7 +698,7 @@ struct operand_qualifier_data aarch64_opnd_qualifiers[] = {4, 1, 0x2, "s", OQK_OPD_VARIANT}, {8, 1, 0x3, "d", OQK_OPD_VARIANT}, {16, 1, 0x4, "q", OQK_OPD_VARIANT}, - {1, 4, 0x0, "4b", OQK_OPD_VARIANT}, + {4, 1, 0x0, "4b", OQK_OPD_VARIANT}, {1, 4, 0x0, "4b", OQK_OPD_VARIANT}, {1, 8, 0x0, "8b", OQK_OPD_VARIANT}, @@ -2501,6 +2501,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx, else num = 16; num = num / aarch64_get_qualifier_esize (qualifier) - 1; + assert (aarch64_get_qualifier_nelem (qualifier) == 1); /* Index out-of-range. */ if (!value_in_range_p (opnd->reglane.index, 0, num)) diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 42d219cb1..78436879f 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -12321,7 +12321,7 @@ static const struct dis386 rm_table[][8] = { }, { /* RM_0F01_REG_0 */ - { Bad_Opcode }, + { "enclv", { Skip_MODRM }, 0 }, { "vmcall", { Skip_MODRM }, 0 }, { "vmlaunch", { Skip_MODRM }, 0 }, { "vmresume", { Skip_MODRM }, 0 }, diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h index 9a22b3c95..f43b5e11e 100644 --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -736,23 +736,23 @@ enum RegMem, /* Memory. */ Mem, - /* BYTE memory. */ + /* BYTE size. */ Byte, - /* WORD memory. 2 byte */ + /* WORD size. 2 byte */ Word, - /* DWORD memory. 4 byte */ + /* DWORD size. 4 byte */ Dword, - /* FWORD memory. 6 byte */ + /* FWORD size. 6 byte */ Fword, - /* QWORD memory. 8 byte */ + /* QWORD size. 8 byte */ Qword, - /* TBYTE memory. 10 byte */ + /* TBYTE size. 10 byte */ Tbyte, - /* XMMWORD memory. */ + /* XMMWORD size. */ Xmmword, - /* YMMWORD memory. */ + /* YMMWORD size. */ Ymmword, - /* ZMMWORD memory. */ + /* ZMMWORD size. */ Zmmword, /* Unspecified memory size. */ Unspecified, diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index fad588ae3..99f4d6635 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -4100,6 +4100,7 @@ xsavec64, 1, 0xfc7, 0x4, 2, CpuXSAVEC|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No encls, 0, 0xf01cf, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } enclu, 0, 0xf01d7, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } +enclv, 0, 0xf01c0, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 } // SGX instructions end. @@ -5408,11 +5409,13 @@ vcvtpd2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3| vcvtpd2uqq, 3, 0x6679, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=2|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|StaticRounding|SAE, { Imm8, RegZMM, RegZMM } vcvtps2qq, 2, 0x667B, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=5|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegYMM|Dword|YMMword|Unspecified|BaseIndex, RegZMM } -vcvtps2qq, 2, 0x667B, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM } +vcvtps2qq, 2, 0x667B, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM, RegXMM } +vcvtps2qq, 2, 0x667B, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex, RegXMM } vcvtps2qq, 2, 0x667B, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=4|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|XMMword|Unspecified|BaseIndex, RegYMM } vcvtps2qq, 3, 0x667B, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|StaticRounding|SAE, { Imm8, RegYMM, RegZMM } vcvtps2uqq, 2, 0x6679, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=5|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegYMM|Dword|YMMword|Unspecified|BaseIndex, RegZMM } -vcvtps2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM } +vcvtps2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM, RegXMM } +vcvtps2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex, RegXMM } vcvtps2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=4|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|XMMword|Unspecified|BaseIndex, RegYMM } vcvtps2uqq, 3, 0x6679, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|StaticRounding|SAE, { Imm8, RegYMM, RegZMM } @@ -5442,11 +5445,13 @@ vcvttpd2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3 vcvttpd2uqq, 3, 0x6678, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=2|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|SAE, { Imm8, RegZMM, RegZMM } vcvttps2qq, 2, 0x667A, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=5|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegYMM|Dword|YMMword|Unspecified|BaseIndex, RegZMM } -vcvttps2qq, 2, 0x667A, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM } +vcvttps2qq, 2, 0x667A, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM, RegXMM } +vcvttps2qq, 2, 0x667A, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex, RegXMM } vcvttps2qq, 2, 0x667A, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=4|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|XMMword|Unspecified|BaseIndex, RegYMM } vcvttps2qq, 3, 0x667A, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|SAE, { Imm8, RegYMM, RegZMM } vcvttps2uqq, 2, 0x6678, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=5|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegYMM|Dword|YMMword|Unspecified|BaseIndex, RegZMM } -vcvttps2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|Qword|Unspecified|BaseIndex, RegXMM } +vcvttps2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM, RegXMM } +vcvttps2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=2|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=3|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Dword|Qword|Unspecified|BaseIndex, RegXMM } vcvttps2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|VexOpcode=0|VexW=1|Broadcast|Disp8MemShift=4|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|XMMword|Unspecified|BaseIndex, RegYMM } vcvttps2uqq, 3, 0x6678, None, 1, CpuAVX512DQ, Modrm|EVex=1|Masking=3|VexOpcode=0|VexW=1|IgnoreSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|SAE, { Imm8, RegYMM, RegZMM } diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h index d513275de..42ac313ec 100644 --- a/opcodes/i386-tbl.h +++ b/opcodes/i386-tbl.h @@ -83658,6 +83658,20 @@ const insn_template i386_optab[] = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, + { "enclv", 0, 0xf01c0, None, 3, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 } } } }, { "vcvtpd2udqx", 2, 0x79, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, @@ -87881,6 +87895,23 @@ const insn_template i386_optab[] = { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } } }, + { "vcvtps2qq", 2, 0x667B, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } } } }, { "vcvtps2qq", 2, 0x667B, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, @@ -87892,8 +87923,8 @@ const insn_template i386_optab[] = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, @@ -87952,6 +87983,23 @@ const insn_template i386_optab[] = { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } } }, + { "vcvtps2uqq", 2, 0x6679, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } } } }, { "vcvtps2uqq", 2, 0x6679, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, @@ -87963,8 +88011,8 @@ const insn_template i386_optab[] = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, @@ -88412,6 +88460,23 @@ const insn_template i386_optab[] = { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } } }, + { "vcvttps2qq", 2, 0x667A, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } } } }, { "vcvttps2qq", 2, 0x667A, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, @@ -88423,8 +88488,8 @@ const insn_template i386_optab[] = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, @@ -88483,6 +88548,23 @@ const insn_template i386_optab[] = { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } } } }, + { "vcvttps2uqq", 2, 0x6678, None, 1, + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 } }, + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } }, + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0 } } } }, { "vcvttps2uqq", 2, 0x6678, None, 1, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, @@ -88494,8 +88576,8 @@ const insn_template i386_optab[] = 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0 }, - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }, { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt index ef75e38e7..d8a9cce1e 100644 --- a/opcodes/s390-opc.txt +++ b/opcodes/s390-opc.txt @@ -1126,7 +1126,7 @@ e561 tbeginc SIL_RDU "constrained transaction begin" zEC12 zarch htm b2f8 tend S_00 "transaction end" zEC12 zarch htm c7 bpp SMI_U0RDP "branch prediction preload" zEC12 zarch c5 bprp MII_UPP "branch prediction relative preload" zEC12 zarch -b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch +b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch htm b2fa niai IE_UU "next instruction access intent" zEC12 zarch b98f crdte RRF_RURR2 "compare and replace DAT table entry" zEC12 zarch optparm e3000000009f lat RXY_RRRD "load and trap 32 bit" zEC12 zarch