+2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/23499
+ * elf.c (_bfd_elf_get_symbol_version_string): Return
+ _("<corrupt>") for corrupt symbol version info.
+
+2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ 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 <amodra@gmail.com>
+
+ * 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 <amodra@gmail.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <nickc@redhat.com>
+
+ * development.sh: Set to true.
+
2018-07-18 Nick Clifton <nickc@redhat.com>
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.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Controls whether to enable development-mode features by default.
-development=false
+development=true
{
Elf_Internal_Verneed *t;
- version_string = "";
+ version_string = _("<corrupt>");
for (t = elf_tdata (abfd)->verref;
t != NULL;
t = t->vn_nextref)
&& 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;
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)
}
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));
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;
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;
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;
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)
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;
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)
+ 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++
+ 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)
{
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);
}
/* 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;
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)
{
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)
{
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
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)
{
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. */
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
|| 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
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
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. */
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);
}
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)
{
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)
&& !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. */
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;
{
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;
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)
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,
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;
In releases, the date is not included in either version strings or
sonames. */
-#define BFD_VERSION_DATE 20180718
+#define BFD_VERSION_DATE 20180919
#define BFD_VERSION @bfd_version@
#define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
#define REPORT_BUGS_TO @report_bugs_to@
+2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/23499
+ * readelf.c (get_symbol_version_string): Return _("<corrupt>")
+ for corrupt symbol version info.
+
2018-07-18 Nick Clifton <nickc@redhat.com>
2.31.1 Release point.
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)
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
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);
return (ivna.vna_name < strtab_size
? strtab + ivna.vna_name : _("<corrupt>"));
}
+ else if ((max_vd_ndx || (vers_data & VERSYM_VERSION) != 1)
+ && (vers_data & VERSYM_VERSION) > max_vd_ndx)
+ return _("<corrupt>");
}
return NULL;
}
+2018-09-18 Tamar Christina <tamar.christina@arm.com>
+
+ * config/tc-aarch64.c (output_operand_error_report): Apply filtering to
+ current instead of head message.
+
+2018-09-17 Nick Clifton <nickc@redhat.com>
+
+ backport from mainline:
+ * 2018-08-14 Robert Yang <liezhi.yang@windriver.com>
+
+ * as.c (main): Improve check for input file matching output file.
+
+2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ * testsuite/gas/i386/i386.exp: Run evex-no-scale-32 and
+ evex-no-scale-64 only for ELF targets.
+
+2018-07-31 Jan Beulich <jbeulich@suse.com>
+
+ 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 <danglin@gcc.gnu.org>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <nickc@redhat.com>
2.31.1 Release point.
{
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);
}
}
}
/* 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
#include "as.h"
#include "safe-ctype.h"
+#include "struc-symbol.h"
#include "subsegs.h"
#include "dw2gencfi.h"
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);
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);
}
--- /dev/null
+#objdump: -dw
+#name: ix86 EVEX no disp scaling
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <disp>:
+ +[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
--- /dev/null
+ .allow_index_reg
+ .text
+disp:
+ vmovaps 64(,%eax), %zmm0
+ vmovaps 64(,%eiz), %zmm0
+ vmovaps 64, %zmm0
+ addr16 vmovaps 64, %zmm0
--- /dev/null
+#objdump: -dw
+#name: x86-64 EVEX no disp scaling
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <disp>:
+ +[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
--- /dev/null
+ .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
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"
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"
.*:127: Error: .* `vpmovzxwq'
.*:128: Error: .* `vpmovzxwq'
.*:129: Error: .* `vpmovzxwq'
+.*:131: Error: .* `vcvtps2qq'
+.*:132: Error: .* `vcvtps2uqq'
+.*:133: Error: .* `vcvttps2qq'
+.*:134: Error: .* `vcvttps2uqq'
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]
+2018-08-06 Cary Coutant <ccoutant@gmail.com>
+
+ 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 <ccoutant@gmail.com>
+
+ * 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 <nickc@redhat.com>
2.31.1 Release point.
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"));
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();
}
}
// 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.
// 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
template<int size>
void
Target_x86_64<size>::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)
{
+2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * testsuite/ld-x86-64/pr23486b.d: Swap pr23486a.s and pr23486a.s.
+
+2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ 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 <hongjiu.lu@intel.com>
+
+ * 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 <amodra@gmail.com>
+
+ * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with hash-style
+ specified.
+
+2018-08-01 Alan Modra <amodra@gmail.com>
+
+ * 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 <nickc@redhat.com>
+
+ * po/bg.po: Updated Bulgarian translation.
+
+2018-08-01 Roland McGrath <mcgrathr@google.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ 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 <nickc@redhat.com>
2.31.1 Release point.
"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: Румен Петров <transl@roumenpetrov.info>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"Language: bg\n"
#: ldcref.c:186
msgid "%X%P: cref alloc failed: %E\n"
-msgstr "%X%P: пÑ\80опадна заделÑ\8fне(на памеÑ\82) за cref: %E\n"
+msgstr "%X%P: не Ñ\83Ñ\81пÑ\8f заделÑ\8fнеÑ\82о на памеÑ\82 в cref: %E\n"
#: ldcref.c:371
#, c-format
#: ldcref.c:413 ldcref.c:565
msgid "%P: symbol `%pT' missing from main hash table\n"
-msgstr "%P: име '%pT' липÑ\81ва в главнаÑ\82а Ñ\85еÑ\88-Ñ\82аблиÑ\86а\n"
+msgstr "%P: в главниÑ\8f Ñ\80еÑ\87ник липÑ\81ва имеÑ\82о '%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
#: 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"
#: ldctor.c:321
msgid "%X%P: unsupported size %d for set %s\n"
-msgstr "%X%P: неподдÑ\8aÑ\80жан Ñ\80азмеÑ\80 %d за множеÑ\81Ñ\82воÑ\82о %s\n"
+msgstr "%X%P: неподдÑ\8aÑ\80жан Ñ\80азмеÑ\80 %d за набоÑ\80 %s\n"
#: ldctor.c:344
msgid ""
#: ldexp.c:1167
msgid "%F%P:%s: hash creation failed\n"
-msgstr "%F%P:%s: пÑ\80опадна създаването на хеш\n"
+msgstr "%F%P:%s: не Ñ\83Ñ\81пÑ\8f създаването на хеш\n"
#: ldexp.c:1519 ldexp.c:1545 ldexp.c:1605
msgid "%F%P:%pS: nonconstant expression for %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: не може да Ñ\81е Ñ\81Ñ\8aздаде Ñ\85еÑ\88-Ñ\82аблиÑ\86аÑ\82а: %E\n"
+msgstr "%F%P: не може да Ñ\81е Ñ\81Ñ\8aздаде Ñ\80еÑ\87ник: %E\n"
#: ldfile.c:132 eaarch64cloudabi.c:656 eaarch64cloudabib.c:656
#: eaarch64elf.c:656 eaarch64elf32.c:656 eaarch64elf32b.c:656
#: 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"
#: 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"
#: ldlang.c:1438 ldlang.c:1477
msgid "%F%P: failed creating section `%s': %E\n"
-msgstr "%F%P: пÑ\80опадна създаването на раздел '%s': %E\n"
+msgstr "%F%P: не Ñ\83Ñ\81пÑ\8f създаването на раздел '%s': %E\n"
#: ldlang.c:1998
msgid ""
#: 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
#: 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"
#: 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"
#: 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"
#: ldlang.c:6332
msgid "%X%P: failed to merge target specific data of file %pB\n"
-msgstr "%X%P: пÑ\80опадна Ñ\81ливанеÑ\82о, на Ñ\81пеÑ\86иÑ\84иÑ\87ни за Ñ\80езÑ\83лÑ\82аÑ\82а данни, от файл %pB\n"
+msgstr "%X%P: не Ñ\83Ñ\81пÑ\8f Ñ\81ливанеÑ\82о на Ñ\86елеви данни от файл %pB\n"
#: ldlang.c:6403
msgid "%F%P: could not define common symbol `%pT': %E\n"
#: 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"
#: ldmain.c:490
msgid "%F%P: %pB: final close failed: %E\n"
-msgstr "%F%P: %pB: пÑ\80опадна заключителното затваряне: %E\n"
+msgstr "%F%P: %pB: не Ñ\83Ñ\81пÑ\8f заключителното затваряне: %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"
#: 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
#: 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"
#: ldwrite.c:380
msgid "%F%P: clone section failed: %E\n"
-msgstr "%F%P: пÑ\80опадна копиÑ\80ането на раздел: %E\n"
+msgstr "%F%P: не Ñ\83Ñ\81пÑ\8f Ñ\80аздвоÑ\8fването на раздел: %E\n"
#: ldwrite.c:418
#, c-format
#: ldwrite.c:588
msgid "%F%P: final link failed: %E\n"
-msgstr "%F%P: пÑ\80опадна заключителното свързване: %E\n"
+msgstr "%F%P: не Ñ\83Ñ\81пÑ\8f заключителното свързване: %E\n"
#: lexsup.c:102 lexsup.c:276
msgid "KEYWORD"
#: lexsup.c:350
msgid "Set default hash table size close to <NUMBER>"
-msgstr "Установява размер по подразбиране на таблицат за хеш близък до <ЧИСЛО>"
+msgstr "Установява размер, по подразбиране, на речника близък до <ЧИСЛО>"
#: lexsup.c:353
msgid "Print option help"
#: 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 "РапоÑ\80Ñ\82Ñ\83ване каÑ\82о пÑ\80едÑ\83пÑ\80еждениÑ\8f, на неÑ\81вÑ\8aÑ\80зани имена"
+msgstr "Ð\94окладване на неÑ\81вÑ\8aÑ\80зани имена каÑ\82о пÑ\80едÑ\83пÑ\80еждениÑ\8f"
#: lexsup.c:525
msgid "Report unresolved symbols as errors"
-msgstr "РапоÑ\80Ñ\82Ñ\83ване, каÑ\82о гÑ\80еÑ\88ки, на неÑ\81вÑ\8aÑ\80зани имена"
+msgstr "Ð\94окладване на неÑ\81вÑ\8aÑ\80зани имена каÑ\82о гÑ\80еÑ\88ки"
#: lexsup.c:527
msgid "Include all objects from following archives"
#: 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
#: 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
#: 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
#: 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"
#: 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: пÑ\80опадна свързването на раздел към част: %E\n"
+msgstr "%F%P: не Ñ\83Ñ\81пÑ\8f свързването на раздел към част: %E\n"
#: eaarch64cloudabi.c:101 eaarch64cloudabib.c:101 eaarch64elf.c:101
#: eaarch64elf32.c:101 eaarch64elf32b.c:101 eaarch64elfb.c:101
#: 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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -D %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -H %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -bmaxdata %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -bmaxstack %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправиен тип на модул %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправиен тип на модул %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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -pD %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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: пÑ\80едÑ\83пÑ\80еждение: изоÑ\81Ñ\82авÑ\8fне на неправилно число за -pT %s\n"
+msgstr "%P: пÑ\80едÑ\83пÑ\80еждение: пÑ\80опÑ\83Ñ\81кане на неправилно число за -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"
#: emcorepe.c:392 eppcpe.c:392 eshpe.c:392
#, c-format
msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n"
-msgstr " --thumb-entry=<знак> УÑ\81Ñ\82ановÑ\8fване на вÑ\85одÑ\8fÑ\89а Ñ\82оÑ\87ка да е отбелязания <знак>\n"
+msgstr " --thumb-entry=<знак> УÑ\81Ñ\82ановÑ\8fване на вÑ\85одÑ\8fÑ\89а Ñ\82оÑ\87ка на отбелязания <знак>\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
#: 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
" 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
" 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
" --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
#: 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
" --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
#: 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
#: 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: не може да Ñ\81е извÑ\8aÑ\80Ñ\88и \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n"
+msgstr "%F%P: не може да Ñ\81е извÑ\8aÑ\80Ñ\88аÑ\82 \"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
#: 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
#: earmelfb_nacl.c:2851 earmelfb_nbsd.c:2851 earmnto.c:2826 earmsymbian.c:2851
#, c-format
msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
-msgstr " --thumb-entry=<знак> УÑ\81Ñ\82ановÑ\8fва вÑ\85одÑ\8fÑ\89а Ñ\82оÑ\87ка да е отбелязания <знак>\n"
+msgstr " --thumb-entry=<знак> УÑ\81Ñ\82ановÑ\8fва вÑ\85одÑ\8fÑ\89а Ñ\82оÑ\87ка на отбелязания <знак>\n"
#: earmelf.c:2852 earmelf_fbsd.c:2859 earmelf_fuchsia.c:2852
#: earmelf_linux.c:2852 earmelf_linux_eabi.c:2852
#: eelf32xtensa.c:561
msgid "%F%P: failed to create .xtensa.info section\n"
-msgstr "%F%P: пÑ\80опадна създаването на раздел .xtensa.info\n"
+msgstr "%F%P: не Ñ\83Ñ\81пÑ\8f създаването на раздел .xtensa.info\n"
#: eelf32xtensa.c:4073
#, c-format
" --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
#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
#target: aarch64*-*-*
#...
-0+(130|1a0) <foo>:
+0+(130|1a0|1c8) <foo>:
#...
-[ \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
#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
#target: aarch64*-*-*
#...
-0+(130|1a0) <foo>:
+0+(130|1a0|1c8) <foo>:
#...
-[ \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
[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:
.* <bar>:
.*: 90000080 adrp x0, 10000 <.*>
- .*: .* ldr x0, \[x0, #672\]
+ .*: .* ldr x0, \[x0, #(672|704)\]
.*: d65f03c0 ret
#pass
#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
#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*-*-*
+#...
--- /dev/null
+ .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:
--- /dev/null
+# 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" \
+ ] \
+]
--- /dev/null
+#include <unistd.h>
+#include <link.h>
+#include <syscall.h>
+
+#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;
+}
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:"
}
#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 .*
#as: --32
#source: abs.s
#source: zero.s
-#ld: -melf_i386
+#ld: -melf_i386 -z noseparate-code
#objdump: -rs
.*: file format .*
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*"]
#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]+:
#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]+:
--- /dev/null
+#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
--- /dev/null
+#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
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
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
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
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
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
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
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
# 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" \
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
.gcc_except_table 0x2000 : { *(.gcc_except_table) }
.eh_frame 0x4000 : { *(.eh_frame) }
+ /DISCARD/ : { *(.note.gnu.property) }
}
"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}
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\)
.*: (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
.*
.*
.*: (08 00 6b e9|e9 6b 00 08) ld r11,8\(r11\)
.*: (20 04 80 4e|4e 80 04 20) bctr
+.* <foo@plt>:
+.* (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 .*
.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
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
*(.data)
*(.rw)
}
+
+ /DISCARD/ : { *(.note.gnu.property) }
}
LONG (SIZEOF (.tdata))
LONG (SIZEOF (.tbss))
} :image
+ /DISCARD/ : { *(.note.gnu.property) }
}
#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 .*
#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*
#name: Absolute non-overflowing relocs
#source: ../ld-i386/abs.s
#source: ../ld-i386/zero.s
-#ld:
+#ld: -z noseparate-code
#objdump: -rs
.*: file format .*
#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]+:
#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]+:
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+ .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:
--- /dev/null
+#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
--- /dev/null
+#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
--- /dev/null
+ .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:
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
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
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
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 */
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
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
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
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
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
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
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
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
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
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 {
+2018-07-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ 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 <nickc@redhat.com>
2.31.1 Release point.
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,
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 }
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 }
{ { 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,
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,
{ { 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,
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,
{ { 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,
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,
{ { 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,
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,
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