1 # DP: updates from the binutils-2.31 branch
3 # git diff 0860693812fff944ab0602e72b762a4a2078da5b 2b05e5e2064c4aad54c0fbb3e48af41f2aa7d8dc
5 diff --git a/bfd/ChangeLog b/bfd/ChangeLog
6 index 5ec906aa8e..4486ee89eb 100644
10 +2018-12-12 Alan Modra <amodra@gmail.com>
13 + 2018-10-20 Alan Modra <amodra@gmail.com>
15 + * elf.c (section_match): Don't require a size match for SHT_SYMTAB
18 +2018-12-01 H.J. Lu <hongjiu.lu@intel.com>
21 + * elf-properties.c (_bfd_elf_link_setup_gnu_properties): Don't
22 + merge .note.gnu.property section in IR inputs.
24 +2018-11-30 Alan Modra <amodra@gmail.com>
27 + * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't add local
28 + entry offset for ifuncs.
30 +2018-11-27 Tamar Christina <tamar.christina@arm.com>
32 + Backport from mainline
34 + * elfnn-aarch64.c (_bfd_aarch64_adrp_p): Use existing constants.
35 + (_bfd_aarch64_erratum_843419_branch_to_stub): Use _bfd_aarch64_adrp_p.
36 + (struct erratum_835769_branch_to_stub_clear_data): New.
37 + (_bfd_aarch64_erratum_843419_clear_stub): New.
38 + (clear_erratum_843419_entry): New.
39 + (elfNN_aarch64_tls_relax): Use it.
40 + (elfNN_aarch64_relocate_section): Pass input_section.
41 + (aarch64_map_one_stub): Handle branch type none as valid.
43 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
45 + Backport from mainline
46 + 2018-11-09 Cupertino Miranda <cmiranda@synopsys.com>
47 + * arc-got.h (arc_got_entry_type_for_reloc): Changed to
48 + correct static TLS relocs.
49 + * elf32-arc.c (elf_arc_check_relocs): Introduced warning to
50 + TLS relocs which require -fPIC.
51 + (arc_create_forced_local_got_entries_for_tls): Created.
52 + Traverses list of GOT entries to be resolved statically
54 + (elf_arc_finish_dynamic_sections): Changed. Calls
55 + arc_create_forced_local_got_entries_for_tls for each known
56 + possibly GOT symbol.
58 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
60 + Backport from mainline
61 + 2018-11-09 Claudiu Zissulescu <claziss@synopsys.com>
62 + * arc-got.h (arc_get_local_got_ents): Revamp it; use
63 + elf_local_got_ents to store the local got list.
64 + (get_got_entry_list_for_symbo): Restructure it.
65 + * elf32-arc.c (elf_arc_relocate_section): Correct the call to
66 + get_got_entry_list_for_symbol.
68 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
70 + Backport from mainline
71 + 2018-09-06 Cupertino Miranda <cmiranda@synopsys.com>
72 + * arc-got.h (relocate_fix_got_relocs_for_got_info): Changed. Take
73 + TLS section alignment in consideration for this relocation.
74 + * elf32-arc.c (FINAL_SECTSTART): Added this formula macro.
75 + (ARC_TLS_DTPOFF) Updated reloc to use new created macro instead.
77 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
79 + Backport from mainline
80 + 2018-08-01 Cupertino Miranda <cmiranda@synopsys.com>
81 + * arc-got.h (relocate_fix_got_relocs_for_got_info): Changed, fixed
82 + TCB_SIZE offsize to include section alignment.
83 + * elf32-arc.c (arc_special_overflow_checks): Likewise.
85 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
87 + Backport from mainline
88 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
89 + * elf32-arc.c (elf_arc_check_relocs): Changed.
91 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
93 + Backport from mainline
94 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
95 + * elf32-arc.c (elf_arc_check_relocs): Changed.
97 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
99 + Backport from mainline
100 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
101 + * elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case
104 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
106 + Backport from mainline
107 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>a
108 + * arc-got.h (get_got_entry_list_for_symbol): Changed.
109 + * ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed.
110 + (elf_arc_link_hash_newfunc): Changed.
111 + (arc_elf_link_hash_table_create): Removed old initializations.
112 + (elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed.
114 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
117 + * elflink.c (_bfd_elf_link_assign_sym_version): Hide symbols
118 + defined in discarded input sections.
120 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
123 + * elf.c (_bfd_elf_get_symbol_version_string): Return
124 + _("<corrupt>") for corrupt symbol version info.
126 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
129 + * elflink.c (bfd_elf_record_link_assignment): Always clear
130 + h->verinfo.verdef when overriding a dynamic definition.
132 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
135 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
136 + add X86_ISA_1_NEEDED property only if existing properties won't
139 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
142 + * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
143 + GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
144 + (_bfd_x86_elf_link_setup_gnu_properties): Adding the
145 + GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
146 + GNU_PROPERTY_X86_ISA_1_USED, property.
148 +2018-08-07 Alan Modra <amodra@gmail.com>
150 + * elf64-ppc.c (ppc64_elf_relocate_section): Don't skip first
151 + instruction of __tls_get_addr_opt stub.
152 + (plt_stub_size): Omit ALWAYS_EMIT_R2SAVE condition when
153 + dealing with __tls_get_addr_opt stub.
154 + (build_tls_get_addr_stub, ppc_size_one_stub): Likewise.
156 +2018-08-01 Alan Modra <amodra@gmail.com>
158 + * elf64-ppc.c (plt_stub_pad): Delay plt_stub_size call until needed.
159 + (ppc_build_one_stub): Don't set stub_offset, instead assert that
160 + it is sane. Don't adjust stub_offset for alignment. Adjust size
161 + calculation. Use "targ" temp when calculating offsets.
162 + (ppc_size_one_stub): Set stub_offset here. Use "targ" temp when
163 + calculating offsets. Adjust for alignment before setting
164 + tls_get_addr_opt_bctrl.
166 +2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
169 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
170 + separate code program header is needed, make sure that the first
171 + read-only PT_LOAD segment has no code by adding a
172 + GNU_PROPERTY_X86_ISA_1_USED note.
174 +2018-07-18 Nick Clifton <nickc@redhat.com>
176 + * development.sh: Set to true.
178 2018-07-18 Nick Clifton <nickc@redhat.com>
180 2.31.1 Release point.
181 * version.m4: Set to 2.31.1
182 - * development.sh: Set to true.
183 + * development.sh: Set to false.
184 * configure: Regenerate.
185 * po/bfd.pot: Regenerate.
187 diff --git a/bfd/arc-got.h b/bfd/arc-got.h
188 index a86061bcb3..253578b90c 100644
195 +#define align_power(addr, align) \
196 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
201 @@ -51,27 +54,26 @@ struct got_entry
202 enum tls_got_entries existing_entries;
205 +/* Return the local got list, if not defined, create an empty one. */
207 static struct got_entry **
208 arc_get_local_got_ents (bfd * abfd)
210 - static struct got_entry **local_got_ents = NULL;
212 - if (local_got_ents == NULL)
213 + if (elf_local_got_ents (abfd) == NULL)
216 - Elf_Internal_Shdr *symtab_hdr = &((elf_tdata (abfd))->symtab_hdr);
218 - size = symtab_hdr->sh_info * sizeof (bfd_vma);
219 - local_got_ents = (struct got_entry **)
220 - bfd_alloc (abfd, sizeof (struct got_entry *) * size);
221 - if (local_got_ents == NULL)
224 - memset (local_got_ents, 0, sizeof (struct got_entry *) * size);
225 - elf_local_got_ents (abfd) = local_got_ents;
226 + bfd_size_type amt = (elf_tdata (abfd)->symtab_hdr.sh_info
227 + * sizeof (*elf_local_got_ents (abfd)));
228 + elf_local_got_ents (abfd) = bfd_zmalloc (amt);
229 + if (elf_local_got_ents (abfd) == NULL)
231 + _bfd_error_handler (_("%pB: cannot allocate memory for local "
232 + "GOT entries"), abfd);
233 + bfd_set_error (bfd_error_bad_value);
238 - return local_got_ents;
239 + return elf_local_got_ents (abfd);
242 static struct got_entry *
243 @@ -156,15 +158,15 @@ get_got_entry_list_for_symbol (bfd *abfd,
244 unsigned long r_symndx,
245 struct elf_link_hash_entry *h)
248 + struct elf_arc_link_hash_entry *h1 =
249 + ((struct elf_arc_link_hash_entry *) h);
252 - return &h->got.glist;
253 + return &h1->got_ents;
257 - struct got_entry **local_got_ents
258 - = arc_get_local_got_ents (abfd);
259 - return &local_got_ents[r_symndx];
260 + return arc_get_local_got_ents (abfd) + r_symndx;
264 @@ -206,7 +208,7 @@ arc_got_entry_type_for_reloc (reloc_howto_type *howto)
265 __LINE__, name_for_global_symbol (H)); \
268 - if (h->dynindx == -1 && !h->forced_local) \
269 + if (H->dynindx == -1 && !H->forced_local) \
270 if (! bfd_elf_link_record_dynamic_symbol (info, H)) \
272 htab->s##SECNAME->size += 4; \
273 @@ -282,6 +284,7 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
277 + || h->forced_local == TRUE
278 || (! elf_hash_table (info)->dynamic_sections_created
279 || (bfd_link_pic (info)
280 && SYMBOL_REFERENCES_LOCAL (info, h))))
281 @@ -329,23 +332,31 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
282 BFD_ASSERT (tls_sec && tls_sec->output_section);
283 bfd_vma sec_vma = tls_sec->output_section->vma;
285 - bfd_put_32 (output_bfd,
286 - sym_value - sec_vma,
287 + if (h == NULL || h->forced_local
288 + || !elf_hash_table (info)->dynamic_sections_created)
290 + bfd_put_32 (output_bfd,
291 + sym_value - sec_vma
292 + + (elf_hash_table (info)->dynamic_sections_created
295 + tls_sec->alignment_power))),
296 htab->sgot->contents + entry->offset
297 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
300 - ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
301 - "@ %lx, for symbol %s\n",
302 - (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
304 - (long) (sym_value - sec_vma),
305 - (long) (htab->sgot->output_section->vma
306 - + htab->sgot->output_offset->vma
308 - + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
311 + ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
312 + "@ %lx, for symbol %s\n",
313 + (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
315 + (long) (sym_value - sec_vma),
316 + (long) (htab->sgot->output_section->vma
317 + + htab->sgot->output_offset
319 + + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
326 @@ -357,7 +368,10 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
328 bfd_put_32 (output_bfd,
330 - + (elf_hash_table (info)->dynamic_sections_created ? 0 : TCB_SIZE),
331 + + (elf_hash_table (info)->dynamic_sections_created
333 + : (align_power (TCB_SIZE,
334 + tls_sec->alignment_power))),
335 htab->sgot->contents + entry->offset
336 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
338 @@ -368,7 +382,7 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
340 (long) (sym_value - sec_vma),
341 (long) (htab->sgot->output_section->vma
342 - + htab->sgot->output_offset->vma
343 + + htab->sgot->output_offset
345 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
347 diff --git a/bfd/development.sh b/bfd/development.sh
348 index 918150f30b..27a7150e6d 100644
349 --- a/bfd/development.sh
350 +++ b/bfd/development.sh
352 # along with this program. If not, see <http://www.gnu.org/licenses/>.
354 # Controls whether to enable development-mode features by default.
357 diff --git a/bfd/elf-properties.c b/bfd/elf-properties.c
358 index 50c0e9d703..944e1744a8 100644
359 --- a/bfd/elf-properties.c
360 +++ b/bfd/elf-properties.c
361 @@ -350,7 +350,8 @@ _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
363 /* Merge .note.gnu.property sections. */
364 for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
365 - if (abfd != first_pbfd && (abfd->flags & DYNAMIC) == 0)
366 + if (abfd != first_pbfd
367 + && (abfd->flags & (DYNAMIC | BFD_PLUGIN)) == 0)
369 elf_property_list *null_ptr = NULL;
370 elf_property_list **listp = &null_ptr;
371 diff --git a/bfd/elf.c b/bfd/elf.c
372 index 0f75375128..828241d48a 100644
375 @@ -1299,15 +1299,15 @@ static bfd_boolean
376 section_match (const Elf_Internal_Shdr * a,
377 const Elf_Internal_Shdr * b)
380 - a->sh_type == b->sh_type
381 - && (a->sh_flags & ~ SHF_INFO_LINK)
382 - == (b->sh_flags & ~ SHF_INFO_LINK)
383 - && a->sh_addralign == b->sh_addralign
384 - && a->sh_size == b->sh_size
385 - && a->sh_entsize == b->sh_entsize
386 - /* FIXME: Check sh_addr ? */
388 + if (a->sh_type != b->sh_type
389 + || ((a->sh_flags ^ b->sh_flags) & ~SHF_INFO_LINK) != 0
390 + || a->sh_addralign != b->sh_addralign
391 + || a->sh_entsize != b->sh_entsize)
393 + if (a->sh_type == SHT_SYMTAB
394 + || a->sh_type == SHT_STRTAB)
396 + return a->sh_size == b->sh_size;
399 /* Find a section in OBFD that has the same characteristics
400 @@ -1877,7 +1877,7 @@ _bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol,
402 Elf_Internal_Verneed *t;
404 - version_string = "";
405 + version_string = _("<corrupt>");
406 for (t = elf_tdata (abfd)->verref;
409 diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
410 index a48ef0ca15..495fa342d3 100644
411 --- a/bfd/elf32-arc.c
412 +++ b/bfd/elf32-arc.c
413 @@ -160,6 +160,18 @@ struct arc_relocation_data
414 const char * symbol_name;
417 +/* ARC ELF linker hash entry. */
418 +struct elf_arc_link_hash_entry
420 + struct elf_link_hash_entry root;
422 + /* Track dynamic relocs copied for this symbol. */
423 + struct elf_dyn_relocs *dyn_relocs;
425 + struct got_entry *got_ents;
429 /* Should be included at this location due to static declarations
430 defined before this point. */
432 @@ -281,15 +293,6 @@ struct arc_reloc_map
433 unsigned char elf_reloc_val;
436 -/* ARC ELF linker hash entry. */
437 -struct elf_arc_link_hash_entry
439 - struct elf_link_hash_entry root;
441 - /* Track dynamic relocs copied for this symbol. */
442 - struct elf_dyn_relocs *dyn_relocs;
445 /* ARC ELF linker hash table. */
446 struct elf_arc_link_hash_table
448 @@ -301,28 +304,28 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry,
449 struct bfd_hash_table *table,
452 + struct elf_arc_link_hash_entry * ret =
453 + (struct elf_arc_link_hash_entry *) entry;
455 /* Allocate the structure if it has not already been allocated by a
459 - entry = (struct bfd_hash_entry *)
460 - bfd_hash_allocate (table,
461 - sizeof (struct elf_arc_link_hash_entry));
466 + ret = (struct elf_arc_link_hash_entry *)
467 + bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry));
469 + return (struct bfd_hash_entry *) ret;
471 /* Call the allocation method of the superclass. */
472 - entry = _bfd_elf_link_hash_newfunc (entry, table, string);
474 + ret = ((struct elf_arc_link_hash_entry *)
475 + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
479 - struct elf_arc_link_hash_entry *eh;
481 - eh = (struct elf_arc_link_hash_entry *) entry;
482 - eh->dyn_relocs = NULL;
483 + ret->dyn_relocs = NULL;
484 + ret->got_ents = NULL;
488 + return (struct bfd_hash_entry *) ret;
491 /* Destroy an ARC ELF linker hash table. */
492 @@ -352,11 +355,6 @@ arc_elf_link_hash_table_create (bfd *abfd)
496 - ret->elf.init_got_refcount.refcount = 0;
497 - ret->elf.init_got_refcount.glist = NULL;
498 - ret->elf.init_got_offset.offset = 0;
499 - ret->elf.init_got_offset.glist = NULL;
501 ret->elf.root.hash_table_free = elf_arc_link_hash_table_free;
503 return &ret->elf.root;
504 @@ -1200,11 +1198,14 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
505 + (reloc_data.reloc_offset))))
506 #define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
507 + reloc_data.sym_section->output_offset)
508 +#define FINAL_SECTSTART \
509 + (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
510 #define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
511 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
512 #define TLS_REL (bfd_signed_vma) \
513 ((elf_hash_table (info))->tls_sec->output_section->vma)
514 -#define TLS_TBSS (8)
515 +#define TLS_TBSS (align_power(TCB_SIZE, \
516 + reloc_data.sym_section->alignment_power))
520 @@ -1615,10 +1616,14 @@ elf_arc_relocate_section (bfd * output_bfd,
521 while (h->root.type == bfd_link_hash_indirect
522 || h->root.type == bfd_link_hash_warning)
524 - struct elf_link_hash_entry *h_old = h;
525 + struct elf_arc_link_hash_entry *ah_old =
526 + (struct elf_arc_link_hash_entry *) h;
527 h = (struct elf_link_hash_entry *) h->root.u.i.link;
528 - if (h->got.glist == 0 && h_old->got.glist != h->got.glist)
529 - h->got.glist = h_old->got.glist;
530 + struct elf_arc_link_hash_entry *ah =
531 + (struct elf_arc_link_hash_entry *) h;
533 + if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents)
534 + ah->got_ents = ah_old->got_ents;
537 /* TODO: Need to validate what was the intention. */
538 @@ -1636,6 +1641,8 @@ elf_arc_relocate_section (bfd * output_bfd,
540 if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
542 + struct elf_arc_link_hash_entry *ah =
543 + (struct elf_arc_link_hash_entry *) h;
544 /* TODO: Change it to use arc_do_relocation with
545 ARC_32 reloc. Try to use ADD_RELA macro. */
547 @@ -1645,8 +1652,8 @@ elf_arc_relocate_section (bfd * output_bfd,
548 + reloc_data.sym_section->output_section->vma)
551 - BFD_ASSERT (h->got.glist);
552 - bfd_vma got_offset = h->got.glist->offset;
553 + BFD_ASSERT (ah->got_ents);
554 + bfd_vma got_offset = ah->got_ents->offset;
555 bfd_put_32 (output_bfd, relocation,
556 htab->sgot->contents + got_offset);
558 @@ -1717,7 +1724,7 @@ elf_arc_relocate_section (bfd * output_bfd,
559 reloc_data.should_relocate = TRUE;
561 struct got_entry **list
562 - = get_got_entry_list_for_symbol (output_bfd, r_symndx, h);
563 + = get_got_entry_list_for_symbol (input_bfd, r_symndx, h);
565 reloc_data.got_offset_value
566 = relocate_fix_got_relocs_for_got_info (list,
567 @@ -1956,40 +1963,45 @@ elf_arc_check_relocs (bfd * abfd,
568 if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
570 else /* Global one. */
571 - h = sym_hashes[r_symndx - symtab_hdr->sh_info];
573 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
574 + while (h->root.type == bfd_link_hash_indirect
575 + || h->root.type == bfd_link_hash_warning)
576 + h = (struct elf_link_hash_entry *) h->root.u.i.link;
584 - /* During shared library creation, these relocs should not
585 - appear in a shared library (as memory will be read only
586 - and the dynamic linker can not resolve these. However
587 - the error should not occur for e.g. debugging or
588 - non-readonly sections. */
590 - && (bfd_link_dll (info) && !bfd_link_pie (info))
591 - && (sec->flags & SEC_ALLOC) != 0
592 - && (sec->flags & SEC_READONLY) != 0
593 - && ((sec->flags & SEC_CODE) != 0
594 - || (sec->flags & SEC_DEBUGGING) != 0))
598 - name = h->root.root.string;
600 - /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
603 - /* xgettext:c-format */
604 - (_("%pB: relocation %s against `%s' can not be used"
605 - " when making a shared object; recompile with -fPIC"),
607 - arc_elf_howto (r_type)->name,
609 - bfd_set_error (bfd_error_bad_value);
614 + /* During shared library creation, these relocs should not
615 + appear in a shared library (as memory will be read only
616 + and the dynamic linker can not resolve these. However
617 + the error should not occur for e.g. debugging or
618 + non-readonly sections. */
620 + && (bfd_link_dll (info) && !bfd_link_pie (info))
621 + && (sec->flags & SEC_ALLOC) != 0
622 + && (sec->flags & SEC_READONLY) != 0
623 + && ((sec->flags & SEC_CODE) != 0
624 + || (sec->flags & SEC_DEBUGGING) != 0))
628 + name = h->root.root.string;
632 + /* xgettext:c-format */
633 + (_("%pB: relocation %s against `%s' can not be used"
634 + " when making a shared object; recompile with -fPIC"),
636 + arc_elf_howto (r_type)->name,
638 + bfd_set_error (bfd_error_bad_value);
642 /* In some cases we are not setting the 'non_got_ref'
643 flag, even though the relocations don't require a GOT
644 @@ -2031,13 +2043,33 @@ elf_arc_check_relocs (bfd * abfd,
649 + if (h->forced_local == 0)
653 /* Add info to the symbol got_entry_list. */
654 if (is_reloc_for_GOT (howto)
655 || is_reloc_for_TLS (howto))
657 + if (bfd_link_dll (info) && !bfd_link_pie (info)
658 + && (r_type == R_ARC_TLS_LE_32 || r_type == R_ARC_TLS_LE_S9))
662 + name = h->root.root.string;
664 + /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
667 + /* xgettext:c-format */
668 + (_("%pB: relocation %s against `%s' can not be used"
669 + " when making a shared object; recompile with -fPIC"),
671 + arc_elf_howto (r_type)->name,
673 + bfd_set_error (bfd_error_bad_value);
676 if (! _bfd_elf_create_got_section (dynobj, info))
679 @@ -2404,7 +2436,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
680 create respective dynamic relocs. */
681 /* TODO: Make function to get list and not access the list directly. */
682 /* TODO: Move function to relocate_section create this relocs eagerly. */
683 - create_got_dynrelocs_for_got_info (&h->got.glist,
684 + struct elf_arc_link_hash_entry *ah =
685 + (struct elf_arc_link_hash_entry *) h;
686 + create_got_dynrelocs_for_got_info (&ah->got_ents,
690 @@ -2413,6 +2447,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
692 struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
694 + if (arc_htab == NULL)
698 || (h->root.type != bfd_link_hash_defined
699 && h->root.type != bfd_link_hash_defweak)
700 @@ -2455,6 +2492,39 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
701 s = bfd_get_linker_section (dynobj, SECTION); \
705 +struct obfd_info_group {
707 + struct bfd_link_info *info;
711 +arc_create_forced_local_got_entries_for_tls (struct bfd_hash_entry *bh,
714 + struct elf_arc_link_hash_entry * h =
715 + (struct elf_arc_link_hash_entry *) bh;
716 + struct obfd_info_group *tmp = (struct obfd_info_group *) data;
718 + if (h->got_ents != NULL)
722 + struct got_entry *list = h->got_ents;
724 + while (list != NULL)
726 + create_got_dynrelocs_for_single_entry (list, tmp->output_bfd,
728 + (struct elf_link_hash_entry *) h);
737 /* Function : elf_arc_finish_dynamic_sections
738 Brief : Finish up the dynamic sections handling.
740 @@ -2588,6 +2658,12 @@ elf_arc_finish_dynamic_sections (bfd * output_bfd,
744 + struct obfd_info_group group;
745 + group.output_bfd = output_bfd;
747 + bfd_hash_traverse (&info->hash->table,
748 + arc_create_forced_local_got_entries_for_tls, &group);
753 diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
754 index 45d81777eb..746506ef09 100644
755 --- a/bfd/elf64-ppc.c
756 +++ b/bfd/elf64-ppc.c
757 @@ -10810,8 +10810,7 @@ plt_stub_size (struct ppc_link_hash_table *htab,
758 && htab->params->tls_get_addr_opt)
761 - if (ALWAYS_EMIT_R2SAVE
762 - || stub_entry->stub_type == ppc_stub_plt_call_r2save)
763 + if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
767 @@ -10829,7 +10828,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
771 - unsigned stub_size = plt_stub_size (htab, stub_entry, plt_off);
772 + unsigned stub_size;
773 bfd_vma stub_off = stub_entry->group->stub_sec->size;
775 if (htab->params->plt_stub_align >= 0)
776 @@ -10841,6 +10840,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
779 stub_align = 1 << -htab->params->plt_stub_align;
780 + stub_size = plt_stub_size (htab, stub_entry, plt_off);
781 if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
782 > ((stub_size - 1) & -stub_align))
783 return stub_align - (stub_off & (stub_align - 1));
784 @@ -11055,8 +11055,7 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
785 bfd_put_32 (obfd, MR_R3_R0, p), p += 4;
787 r[0].r_offset += 7 * 4;
788 - if (!ALWAYS_EMIT_R2SAVE
789 - && stub_entry->stub_type != ppc_stub_plt_call_r2save)
790 + if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
791 return build_plt_stub (htab, stub_entry, p, offset, r);
793 bfd_put_32 (obfd, MFLR_R11, p), p += 4;
794 @@ -11148,7 +11147,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
795 struct ppc_link_hash_table *htab;
800 Elf_Internal_Rela *r;
803 @@ -11160,8 +11159,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
807 - /* Make a note of the offset within the stubs for this entry. */
808 - stub_entry->stub_offset = stub_entry->group->stub_sec->size;
809 + BFD_ASSERT (stub_entry->stub_offset >= stub_entry->group->stub_sec->size);
810 loc = stub_entry->group->stub_sec->contents + stub_entry->stub_offset;
812 htab->stub_count[stub_entry->stub_type - 1] += 1;
813 @@ -11170,16 +11168,16 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
814 case ppc_stub_long_branch:
815 case ppc_stub_long_branch_r2off:
816 /* Branches are relative. This is where we are going to. */
817 - dest = (stub_entry->target_value
818 + targ = (stub_entry->target_value
819 + stub_entry->target_section->output_offset
820 + stub_entry->target_section->output_section->vma);
821 - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
823 + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
825 /* And this is where we are coming from. */
826 - off -= (stub_entry->stub_offset
827 - + stub_entry->group->stub_sec->output_offset
828 - + stub_entry->group->stub_sec->output_section->vma);
829 + off = (stub_entry->stub_offset
830 + + stub_entry->group->stub_sec->output_offset
831 + + stub_entry->group->stub_sec->output_section->vma);
835 if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
836 @@ -11226,7 +11224,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
838 r->r_offset = p - 4 - stub_entry->group->stub_sec->contents;
839 r->r_info = ELF64_R_INFO (0, R_PPC64_REL24);
840 - r->r_addend = dest;
841 + r->r_addend = targ;
842 if (stub_entry->h != NULL)
844 struct elf_link_hash_entry **hashes;
845 @@ -11278,13 +11276,13 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
849 - dest = (stub_entry->target_value
850 + targ = (stub_entry->target_value
851 + stub_entry->target_section->output_offset
852 + stub_entry->target_section->output_section->vma);
853 if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
854 - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
855 + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
857 - bfd_put_64 (htab->brlt->owner, dest,
858 + bfd_put_64 (htab->brlt->owner, targ,
859 htab->brlt->contents + br_entry->offset);
861 if (br_entry->iter == htab->stub_iteration)
862 @@ -11301,7 +11299,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
863 + htab->brlt->output_offset
864 + htab->brlt->output_section->vma);
865 rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
866 - rela.r_addend = dest;
867 + rela.r_addend = targ;
869 rl = htab->relbrlt->contents;
870 rl += (htab->relbrlt->reloc_count++
871 @@ -11321,17 +11319,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
872 + htab->brlt->output_offset
873 + htab->brlt->output_section->vma);
874 r->r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
875 - r->r_addend = dest;
876 + r->r_addend = targ;
880 - dest = (br_entry->offset
881 + targ = (br_entry->offset
882 + htab->brlt->output_offset
883 + htab->brlt->output_section->vma);
886 - - elf_gp (info->output_bfd)
887 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
888 + off = (elf_gp (info->output_bfd)
889 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
892 if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
894 @@ -11354,7 +11352,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
895 if (stub_entry->stub_type == ppc_stub_plt_branch_r2off)
897 r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS);
898 - r[0].r_addend = dest;
899 + r[0].r_addend = targ;
900 if (PPC_HA (off) != 0)
902 r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_HA);
903 @@ -11439,8 +11437,8 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
906 /* Now build the stub. */
907 - dest = stub_entry->plt_ent->plt.offset & ~1;
908 - if (dest >= (bfd_vma) -2)
909 + targ = stub_entry->plt_ent->plt.offset & ~1;
910 + if (targ >= (bfd_vma) -2)
913 plt = htab->elf.splt;
914 @@ -11453,12 +11451,11 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
916 plt = htab->pltlocal;
918 + targ += plt->output_offset + plt->output_section->vma;
920 - dest += plt->output_offset + plt->output_section->vma;
923 - - elf_gp (info->output_bfd)
924 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
925 + off = (elf_gp (info->output_bfd)
926 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
929 if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
931 @@ -11473,15 +11470,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
935 - if (htab->params->plt_stub_align != 0)
937 - unsigned pad = plt_stub_pad (htab, stub_entry, off);
939 - stub_entry->group->stub_sec->size += pad;
940 - stub_entry->stub_offset = stub_entry->group->stub_sec->size;
945 if (info->emitrelocations)
947 @@ -11496,7 +11484,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
948 r[0].r_offset = loc - stub_entry->group->stub_sec->contents;
949 if (bfd_big_endian (info->output_bfd))
951 - r[0].r_addend = dest;
952 + r[0].r_addend = targ;
954 if (stub_entry->h != NULL
955 && (stub_entry->h == htab->tls_get_addr_fd
956 @@ -11515,7 +11503,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
960 - stub_entry->group->stub_sec->size += p - loc;
961 + stub_entry->group->stub_sec->size = stub_entry->stub_offset + (p - loc);
963 if (htab->params->emit_stub_syms)
965 @@ -11567,7 +11555,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
966 struct ppc_stub_hash_entry *stub_entry;
967 struct bfd_link_info *info;
968 struct ppc_link_hash_table *htab;
973 /* Massage our args to the form they really have. */
974 @@ -11578,6 +11566,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
978 + /* Make a note of the offset within the stubs for this entry. */
979 + stub_entry->stub_offset = stub_entry->group->stub_sec->size;
981 if (stub_entry->h != NULL
982 && stub_entry->h->save_res
983 && stub_entry->h->elf.root.type == bfd_link_hash_defined
984 @@ -11594,8 +11585,8 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
985 || stub_entry->stub_type == ppc_stub_plt_call_r2save)
988 - off = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1;
989 - if (off >= (bfd_vma) -2)
990 + targ = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1;
991 + if (targ >= (bfd_vma) -2)
993 plt = htab->elf.splt;
994 if (!htab->elf.dynamic_sections_created
995 @@ -11607,23 +11598,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
997 plt = htab->pltlocal;
999 - off += (plt->output_offset
1000 - + plt->output_section->vma
1001 - - elf_gp (info->output_bfd)
1002 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1003 + targ += plt->output_offset + plt->output_section->vma;
1005 + off = (elf_gp (info->output_bfd)
1006 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1009 + if (htab->params->plt_stub_align != 0)
1011 + unsigned pad = plt_stub_pad (htab, stub_entry, off);
1013 + stub_entry->group->stub_sec->size += pad;
1014 + stub_entry->stub_offset = stub_entry->group->stub_sec->size;
1017 size = plt_stub_size (htab, stub_entry, off);
1019 if (stub_entry->h != NULL
1020 && (stub_entry->h == htab->tls_get_addr_fd
1021 || stub_entry->h == htab->tls_get_addr)
1022 && htab->params->tls_get_addr_opt
1023 - && (ALWAYS_EMIT_R2SAVE
1024 - || stub_entry->stub_type == ppc_stub_plt_call_r2save))
1025 + && stub_entry->stub_type == ppc_stub_plt_call_r2save)
1026 stub_entry->group->tls_get_addr_opt_bctrl
1027 - = stub_entry->group->stub_sec->size + size - 5 * 4;
1028 + = stub_entry->stub_offset + size - 5 * 4;
1030 - if (htab->params->plt_stub_align)
1031 - size += plt_stub_pad (htab, stub_entry, off);
1032 if (info->emitrelocations)
1034 stub_entry->group->stub_sec->reloc_count
1035 @@ -11642,12 +11640,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1037 bfd_vma local_off = 0;
1039 - off = (stub_entry->target_value
1040 - + stub_entry->target_section->output_offset
1041 - + stub_entry->target_section->output_section->vma);
1042 - off -= (stub_entry->group->stub_sec->size
1043 - + stub_entry->group->stub_sec->output_offset
1044 - + stub_entry->group->stub_sec->output_section->vma);
1045 + targ = (stub_entry->target_value
1046 + + stub_entry->target_section->output_offset
1047 + + stub_entry->target_section->output_section->vma);
1048 + off = (stub_entry->stub_offset
1049 + + stub_entry->group->stub_sec->output_offset
1050 + + stub_entry->group->stub_sec->output_section->vma);
1052 /* Reset the stub type from the plt variant in case we now
1053 can reach with a shorter stub. */
1054 @@ -11668,8 +11666,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1056 if (PPC_LO (r2off) != 0)
1063 local_off = PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
1065 @@ -11709,11 +11708,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1068 stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch;
1069 - off = (br_entry->offset
1070 - + htab->brlt->output_offset
1071 - + htab->brlt->output_section->vma
1072 - - elf_gp (info->output_bfd)
1073 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1074 + targ = (br_entry->offset
1075 + + htab->brlt->output_offset
1076 + + htab->brlt->output_section->vma);
1077 + off = (elf_gp (info->output_bfd)
1078 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1081 if (info->emitrelocations)
1083 @@ -13530,7 +13530,8 @@ write_plt_relocs_for_local_syms (struct bfd_link_info *info)
1086 val = sym->st_value + ent->addend;
1087 - val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
1088 + if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC)
1089 + val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
1090 if (sym_sec != NULL && sym_sec->output_section != NULL)
1091 val += sym_sec->output_offset + sym_sec->output_section->vma;
1093 @@ -14877,10 +14878,13 @@ ppc64_elf_relocate_section (bfd *output_bfd,
1095 reloc_dest = DEST_STUB;
1097 - if ((stub_entry->stub_type == ppc_stub_plt_call
1098 + if (((stub_entry->stub_type == ppc_stub_plt_call
1099 + && ALWAYS_EMIT_R2SAVE)
1100 || stub_entry->stub_type == ppc_stub_plt_call_r2save)
1101 - && (ALWAYS_EMIT_R2SAVE
1102 - || stub_entry->stub_type == ppc_stub_plt_call_r2save)
1104 + && (h == htab->tls_get_addr_fd
1105 + || h == htab->tls_get_addr)
1106 + && htab->params->tls_get_addr_opt)
1108 && rel[1].r_offset == rel->r_offset + 4
1109 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
1110 diff --git a/bfd/elflink.c b/bfd/elflink.c
1111 index b24fb95848..46091b6341 100644
1114 @@ -686,13 +686,11 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
1116 h->root.type = bfd_link_hash_undefined;
1118 - /* If this symbol is not being provided by the linker script, and it is
1119 - currently defined by a dynamic object, but not by a regular object,
1120 - then clear out any version information because the symbol will not be
1121 - associated with the dynamic object any more. */
1124 - && !h->def_regular)
1125 + /* If this symbol is currently defined by a dynamic object, but not
1126 + by a regular object, then clear out any version information because
1127 + the symbol will not be associated with the dynamic object any
1129 + if (h->def_dynamic && !h->def_regular)
1130 h->verinfo.verdef = NULL;
1132 /* Make sure this symbol is not garbage collected. */
1133 @@ -2360,10 +2358,19 @@ _bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data)
1137 + bed = get_elf_backend_data (info->output_bfd);
1139 /* We only need version numbers for symbols defined in regular
1141 if (!h->def_regular)
1144 + /* Hide symbols defined in discarded input sections. */
1145 + if ((h->root.type == bfd_link_hash_defined
1146 + || h->root.type == bfd_link_hash_defweak)
1147 + && discarded_section (h->root.u.def.section))
1148 + (*bed->elf_backend_hide_symbol) (info, h, TRUE);
1153 bed = get_elf_backend_data (info->output_bfd);
1154 diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
1155 index cf321f32c2..d4964b1b11 100644
1156 --- a/bfd/elfnn-aarch64.c
1157 +++ b/bfd/elfnn-aarch64.c
1158 @@ -3845,7 +3845,7 @@ _bfd_aarch64_erratum_835769_scan (bfd *input_bfd,
1160 _bfd_aarch64_adrp_p (uint32_t insn)
1162 - return ((insn & 0x9f000000) == 0x90000000);
1163 + return ((insn & AARCH64_ADRP_OP_MASK) == AARCH64_ADRP_OP);
1167 @@ -5074,7 +5074,7 @@ _bfd_aarch64_erratum_843419_branch_to_stub (struct bfd_hash_entry *gen_entry,
1168 + stub_entry->adrp_offset);
1169 insn = bfd_getl32 (contents + stub_entry->adrp_offset);
1171 - if ((insn & AARCH64_ADRP_OP_MASK) != AARCH64_ADRP_OP)
1172 + if (!_bfd_aarch64_adrp_p (insn))
1175 bfd_signed_vma imm =
1176 @@ -5939,6 +5939,64 @@ bad_ifunc_reloc:
1177 # define movz_hw_R0 (0x52c00000)
1180 +/* Structure to hold payload for _bfd_aarch64_erratum_843419_clear_stub,
1181 + it is used to identify the stub information to reset. */
1183 +struct erratum_843419_branch_to_stub_clear_data
1185 + bfd_vma adrp_offset;
1186 + asection *output_section;
1189 +/* Clear the erratum information for GEN_ENTRY if the ADRP_OFFSET and
1190 + section inside IN_ARG matches. The clearing is done by setting the
1191 + stub_type to none. */
1194 +_bfd_aarch64_erratum_843419_clear_stub (struct bfd_hash_entry *gen_entry,
1197 + struct elf_aarch64_stub_hash_entry *stub_entry
1198 + = (struct elf_aarch64_stub_hash_entry *) gen_entry;
1199 + struct erratum_843419_branch_to_stub_clear_data *data
1200 + = (struct erratum_843419_branch_to_stub_clear_data *) in_arg;
1202 + if (stub_entry->target_section != data->output_section
1203 + || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer
1204 + || stub_entry->adrp_offset != data->adrp_offset)
1207 + /* Change the stub type instead of removing the entry, removing from the hash
1208 + table would be slower and we have already reserved the memory for the entry
1209 + so there wouldn't be much gain. Changing the stub also keeps around a
1210 + record of what was there before. */
1211 + stub_entry->stub_type = aarch64_stub_none;
1213 + /* We're done and there could have been only one matching stub at that
1214 + particular offset, so abort further traversal. */
1218 +/* TLS Relaxations may relax an adrp sequence that matches the erratum 843419
1219 + sequence. In this case the erratum no longer applies and we need to remove
1220 + the entry from the pending stub generation. This clears matching adrp insn
1221 + at ADRP_OFFSET in INPUT_SECTION in the stub table defined in GLOBALS. */
1224 +clear_erratum_843419_entry (struct elf_aarch64_link_hash_table *globals,
1225 + bfd_vma adrp_offset, asection *input_section)
1227 + if (globals->fix_erratum_843419)
1229 + struct erratum_843419_branch_to_stub_clear_data data;
1230 + data.adrp_offset = adrp_offset;
1231 + data.output_section = input_section;
1233 + bfd_hash_traverse (&globals->stub_hash_table,
1234 + _bfd_aarch64_erratum_843419_clear_stub, &data);
1238 /* Handle TLS relaxations. Relaxing is possible for symbols that use
1239 R_AARCH64_TLSDESC_ADR_{PAGE, LD64_LO12_NC, ADD_LO12_NC} during a static
1241 @@ -5949,8 +6007,9 @@ bad_ifunc_reloc:
1243 static bfd_reloc_status_type
1244 elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1245 - bfd *input_bfd, bfd_byte *contents,
1246 - Elf_Internal_Rela *rel, struct elf_link_hash_entry *h)
1247 + bfd *input_bfd, asection *input_section,
1248 + bfd_byte *contents, Elf_Internal_Rela *rel,
1249 + struct elf_link_hash_entry *h)
1251 bfd_boolean is_local = h == NULL;
1252 unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
1253 @@ -5971,6 +6030,9 @@ elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1255 Where R is x for LP64, and w for ILP32. */
1256 bfd_putl32 (movz_R0, contents + rel->r_offset);
1257 + /* We have relaxed the adrp into a mov, we may have to clear any
1258 + pending erratum fixes. */
1259 + clear_erratum_843419_entry (globals, rel->r_offset, input_section);
1260 return bfd_reloc_continue;
1263 @@ -6261,6 +6323,9 @@ elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1265 insn = bfd_getl32 (contents + rel->r_offset);
1266 bfd_putl32 (movz_R0 | (insn & 0x1f), contents + rel->r_offset);
1267 + /* We have relaxed the adrp into a mov, we may have to clear any
1268 + pending erratum fixes. */
1269 + clear_erratum_843419_entry (globals, rel->r_offset, input_section);
1271 return bfd_reloc_continue;
1273 @@ -6485,7 +6550,8 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
1274 howto = elfNN_aarch64_howto_from_bfd_reloc (bfd_r_type);
1275 BFD_ASSERT (howto != NULL);
1276 r_type = howto->type;
1277 - r = elfNN_aarch64_tls_relax (globals, input_bfd, contents, rel, h);
1278 + r = elfNN_aarch64_tls_relax (globals, input_bfd, input_section,
1279 + contents, rel, h);
1280 unresolved_reloc = 0;
1283 @@ -8076,6 +8142,8 @@ aarch64_map_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1284 if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
1287 + case aarch64_stub_none:
1292 diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
1293 index a2497aab86..2d8f7b640b 100644
1294 --- a/bfd/elfxx-x86.c
1295 +++ b/bfd/elfxx-x86.c
1296 @@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
1299 case GNU_PROPERTY_X86_ISA_1_USED:
1300 + if (aprop == NULL || bprop == NULL)
1302 + /* Only one of APROP and BPROP can be NULL. */
1303 + if (aprop != NULL)
1305 + /* Remove this property since the other input file doesn't
1307 + aprop->pr_kind = property_remove;
1314 case GNU_PROPERTY_X86_ISA_1_NEEDED:
1315 if (aprop != NULL && bprop != NULL)
1318 number = aprop->u.number;
1319 aprop->u.number = number | bprop->u.number;
1320 - /* Remove the property if ISA bits are empty. */
1321 + /* Remove the property if all bits are empty. */
1322 if (aprop->u.number == 0)
1324 aprop->pr_kind = property_remove;
1325 @@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
1327 if (aprop->u.number == 0)
1329 - /* Remove APROP if ISA bits are empty. */
1330 + /* Remove APROP if all bits are empty. */
1331 aprop->pr_kind = property_remove;
1337 - /* Return TRUE if APROP is NULL and ISA bits of BPROP
1338 + /* Return TRUE if APROP is NULL and all bits of BPROP
1339 aren't empty to indicate that BPROP should be added
1341 updated = bprop->u.number != 0;
1342 @@ -2524,6 +2539,7 @@ _bfd_x86_elf_link_setup_gnu_properties
1343 const struct elf_backend_data *bed;
1344 unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
1345 unsigned int got_align;
1346 + bfd_boolean has_text = FALSE;
1350 @@ -2538,24 +2554,75 @@ _bfd_x86_elf_link_setup_gnu_properties
1351 if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
1352 && bfd_count_sections (pbfd) != 0)
1356 + /* Check if there is no non-empty text section. */
1357 + sec = bfd_get_section_by_name (pbfd, ".text");
1358 + if (sec != NULL && sec->size != 0)
1364 if (elf_properties (pbfd) != NULL)
1368 - if (ebfd != NULL && features)
1369 + bed = get_elf_backend_data (info->output_bfd);
1371 + htab = elf_x86_hash_table (info, bed->target_id);
1377 - /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
1378 - GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
1379 - prop = _bfd_elf_get_property (ebfd,
1380 - GNU_PROPERTY_X86_FEATURE_1_AND,
1382 - prop->u.number |= features;
1383 - prop->pr_kind = property_number;
1387 + /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
1388 + GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
1389 + prop = _bfd_elf_get_property (ebfd,
1390 + GNU_PROPERTY_X86_FEATURE_1_AND,
1392 + prop->u.number |= features;
1393 + prop->pr_kind = property_number;
1396 + && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
1397 + && !htab->elf.dynamic_sections_created
1398 + && !info->traditional_format
1399 + && (info->output_bfd->flags & D_PAGED) != 0
1400 + && info->separate_code)
1402 + /* If the separate code program header is needed, make sure
1403 + that the first read-only PT_LOAD segment has no code by
1404 + adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
1405 + elf_property_list *list;
1406 + bfd_boolean need_property = TRUE;
1408 + for (list = elf_properties (ebfd); list; list = list->next)
1409 + switch (list->property.pr_type)
1411 + case GNU_PROPERTY_STACK_SIZE:
1412 + case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
1413 + case GNU_PROPERTY_X86_ISA_1_NEEDED:
1414 + /* These properties won't be removed during merging. */
1415 + need_property = FALSE;
1419 + if (need_property)
1421 + prop = _bfd_elf_get_property (ebfd,
1422 + GNU_PROPERTY_X86_ISA_1_NEEDED,
1424 + prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
1425 + prop->pr_kind = property_number;
1429 /* Create the GNU property note section if needed. */
1431 + if (prop != NULL && pbfd == NULL)
1433 sec = bfd_make_section_with_flags (ebfd,
1434 NOTE_GNU_PROPERTY_SECTION_NAME,
1435 @@ -2581,12 +2648,6 @@ error_alignment:
1437 pbfd = _bfd_elf_link_setup_gnu_properties (info);
1439 - bed = get_elf_backend_data (info->output_bfd);
1441 - htab = elf_x86_hash_table (info, bed->target_id);
1445 htab->r_info = init_table->r_info;
1446 htab->r_sym = init_table->r_sym;
1448 diff --git a/bfd/version.h b/bfd/version.h
1449 index 222d2e62c3..474ae188a8 100644
1454 In releases, the date is not included in either version strings or
1456 -#define BFD_VERSION_DATE 20180718
1457 +#define BFD_VERSION_DATE 20181214
1458 #define BFD_VERSION @bfd_version@
1459 #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
1460 #define REPORT_BUGS_TO @report_bugs_to@
1461 diff --git a/binutils/ChangeLog b/binutils/ChangeLog
1462 index 32f47d5e07..6ef8592ff2 100644
1463 --- a/binutils/ChangeLog
1464 +++ b/binutils/ChangeLog
1466 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
1469 + * readelf.c (get_symbol_version_string): Return _("<corrupt>")
1470 + for corrupt symbol version info.
1472 2018-07-18 Nick Clifton <nickc@redhat.com>
1474 2.31.1 Release point.
1475 diff --git a/binutils/readelf.c b/binutils/readelf.c
1476 index 1b50ba7631..f4df697a7d 100644
1477 --- a/binutils/readelf.c
1478 +++ b/binutils/readelf.c
1479 @@ -11252,6 +11252,7 @@ get_symbol_version_string (Filedata * filedata,
1480 unsigned char data[2];
1481 unsigned short vers_data;
1482 unsigned long offset;
1483 + unsigned short max_vd_ndx;
1486 || version_info[DT_VERSIONTAGIDX (DT_VERSYM)] == 0)
1487 @@ -11269,6 +11270,8 @@ get_symbol_version_string (Filedata * filedata,
1488 if ((vers_data & VERSYM_HIDDEN) == 0 && vers_data == 0)
1493 /* Usually we'd only see verdef for defined symbols, and verneed for
1494 undefined symbols. However, symbols defined by the linker in
1495 .dynbss for variables copied from a shared library in order to
1496 @@ -11311,6 +11314,9 @@ get_symbol_version_string (Filedata * filedata,
1497 ivd.vd_flags = BYTE_GET (evd.vd_flags);
1500 + if ((ivd.vd_ndx & VERSYM_VERSION) > max_vd_ndx)
1501 + max_vd_ndx = ivd.vd_ndx & VERSYM_VERSION;
1505 while (ivd.vd_ndx != (vers_data & VERSYM_VERSION) && ivd.vd_next != 0);
1506 @@ -11402,6 +11408,9 @@ get_symbol_version_string (Filedata * filedata,
1507 return (ivna.vna_name < strtab_size
1508 ? strtab + ivna.vna_name : _("<corrupt>"));
1510 + else if ((max_vd_ndx || (vers_data & VERSYM_VERSION) != 1)
1511 + && (vers_data & VERSYM_VERSION) > max_vd_ndx)
1512 + return _("<corrupt>");
1516 diff --git a/gas/ChangeLog b/gas/ChangeLog
1517 index bb4541900d..d923a2c9d5 100644
1521 +2018-12-09 H.J. Lu <hongjiu.lu@intel.com>
1524 + * config/tc-i386.h (TC_FORCE_RELOCATION_LOCAL): Put back
1525 + BFD_RELOC_X86_64_GOTPCREL.
1526 + * testsuite/gas/i386/i386.exp: Run x86-64-gotpcrel-2.
1527 + * testsuite/gas/i386/x86-64-gotpcrel-2.d: New file.
1528 + * testsuite/gas/i386/x86-64-gotpcrel-2.s: Likewise.
1529 + * testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d: Likewise.
1531 +2018-11-05 H.J. Lu <hongjiu.lu@intel.com>
1534 + * config/tc-i386.c (output_disp): Disable GOT relaxation with
1536 + * testsuite/gas/i386/mixed-mode-reloc32.d: Updated.
1538 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
1540 + * testsuite/gas/arm/undefined-insn-arm.d: Widen pe skip.
1541 + * testsuite/gas/arm/undefined-insn-thumb.d: Likewise.
1543 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
1545 + * testsuite/gas/arm/undefined-insn-arm.d: New test.
1546 + * testsuite/gas/arm/undefined-insn-thumb.d: New test.
1547 + * testsuite/gas/arm/undefined-insn.s: New test.
1549 +2018-10-16 Matthew Malcomson <matthew.malcomson@arm.com>
1551 + * testsuite/gas/aarch64/illegal-dotproduct.d: New test.
1552 + * testsuite/gas/aarch64/illegal-dotproduct.l: New test.
1553 + * testsuite/gas/aarch64/illegal-dotproduct.s: New test.
1555 +2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
1557 + * testsuite/gas/i386/se1.s: Add enclv.
1558 + * testsuite/gas/i386/x86-64-se1.s: Likewise.
1559 + * testsuite/gas/i386/se1.d: Updated.
1560 + * testsuite/gas/i386/x86-64-se1.d: Likewise.
1562 +2018-09-18 Tamar Christina <tamar.christina@arm.com>
1564 + * config/tc-aarch64.c (output_operand_error_report): Apply filtering to
1565 + current instead of head message.
1567 +2018-09-17 Nick Clifton <nickc@redhat.com>
1569 + backport from mainline:
1570 + * 2018-08-14 Robert Yang <liezhi.yang@windriver.com>
1572 + * as.c (main): Improve check for input file matching output file.
1574 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
1576 + * testsuite/gas/i386/evex-no-scale.s: Removed.
1577 + * testsuite/gas/i386/evex-no-scale-32.d: Don't use
1579 + * testsuite/gas/i386/evex-no-scale-64.d: Likewise.
1580 + * testsuite/gas/i386/evex-no-scale-32.s: New file.
1581 + * testsuite/gas/i386/evex-no-scale-64.s: Likewise.
1583 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
1585 + * testsuite/gas/i386/i386.exp: Run evex-no-scale-32 and
1586 + evex-no-scale-64 only for ELF targets.
1588 +2018-07-31 Jan Beulich <jbeulich@suse.com>
1591 + * config/tc-i386.c (output_disp): Restrict scaling.
1592 + * testsuite/gas/i386/evex-no-scale.s,
1593 + testsuite/gas/i386/evex-no-scale-32.d
1594 + testsuite/gas/i386/evex-no-scale-64.d: New.
1595 + * testsuite/gas/i386/i386.exp: Run new tests.
1597 +2018-07-30 John David Anglin <danglin@gcc.gnu.org>
1599 + * config/tc-hppa.c: Include "struc-symbol.h".
1600 + (pa_build_unwind_subspace): Use call_info->start_symbol->sy_frag
1601 + instead of frag_now for local symbol replacement.
1603 +2018-07-18 H.J. Lu <hongjiu.lu@intel.com>
1606 + * testsuite/gas/i386/xmmword.s: Add tests for vcvtps2qq,
1607 + vcvtps2uqq, vcvttps2qq and vcvttps2uqq.
1608 + * testsuite/gas/i386/xmmword.l: Updated.
1610 2018-07-18 Nick Clifton <nickc@redhat.com>
1612 2.31.1 Release point.
1613 diff --git a/gas/as.c b/gas/as.c
1614 index 02c7d2970b..919c24a24a 100644
1617 @@ -1254,14 +1254,27 @@ main (int argc, char ** argv)
1621 - if (stat (argv[i], &sib) == 0)
1622 + /* Check that the input file and output file are different. */
1623 + if (stat (argv[i], &sib) == 0
1624 + && sib.st_ino == sob.st_ino
1625 + /* POSIX emulating systems may support stat() but if the
1626 + underlying file system does not support a file serial number
1627 + of some kind then they will return 0 for the inode. So
1628 + two files with an inode of 0 may not actually be the same.
1629 + On real POSIX systems no ordinary file will ever have an
1631 + && sib.st_ino != 0
1632 + /* Different files may have the same inode number if they
1633 + reside on different devices, so check the st_dev field as
1635 + && sib.st_dev == sob.st_dev)
1637 - if (sib.st_ino == sob.st_ino && sib.st_ino != 0)
1639 - /* Don't let as_fatal remove the output file! */
1640 - out_file_name = NULL;
1641 - as_fatal (_("The input and output files must be distinct"));
1643 + const char *saved_out_file_name = out_file_name;
1645 + /* Don't let as_fatal remove the output file! */
1646 + out_file_name = NULL;
1647 + as_fatal (_("The input '%s' and output '%s' files are the same"),
1648 + argv[i], saved_out_file_name);
1652 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
1653 index 31985963e3..c77de21d19 100644
1654 --- a/gas/config/tc-aarch64.c
1655 +++ b/gas/config/tc-aarch64.c
1656 @@ -4809,7 +4809,7 @@ output_operand_error_report (char *str, bfd_boolean non_fatal_only)
1657 /* If we don't want to print non-fatal errors then don't consider them
1659 if (curr->detail.kind != kind
1660 - || (non_fatal_only && !head->detail.non_fatal))
1661 + || (non_fatal_only && !curr->detail.non_fatal))
1663 /* If there are multiple errors, pick up the one with the highest
1664 mismatching operand index. In the case of multiple errors with
1665 diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
1666 index e69fdb2b39..ccae68cb40 100644
1667 --- a/gas/config/tc-hppa.c
1668 +++ b/gas/config/tc-hppa.c
1672 #include "safe-ctype.h"
1673 +#include "struc-symbol.h"
1674 #include "subsegs.h"
1675 #include "dw2gencfi.h"
1677 @@ -5989,7 +5990,8 @@ pa_build_unwind_subspace (struct call_info *call_info)
1680 symbolP = symbol_new (name, now_seg,
1681 - S_GET_VALUE (call_info->start_symbol), frag_now);
1682 + S_GET_VALUE (call_info->start_symbol),
1683 + call_info->start_symbol->sy_frag);
1684 gas_assert (symbolP);
1685 S_CLEAR_EXTERNAL (symbolP);
1686 symbol_table_insert (symbolP);
1687 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
1688 index 2d20f1cae9..a288a31844 100644
1689 --- a/gas/config/tc-i386.c
1690 +++ b/gas/config/tc-i386.c
1691 @@ -7857,7 +7857,8 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
1692 int size = disp_size (n);
1693 offsetT val = i.op[n].disps->X_add_number;
1695 - val = offset_in_range (val >> i.memshift, size);
1696 + val = offset_in_range (val >> (size == 1 ? i.memshift : 0),
1698 p = frag_more (size);
1699 md_number_to_chars (p, val, size);
1701 @@ -7942,12 +7943,13 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
1702 /* Check for "call/jmp *mem", "mov mem, %reg",
1703 "test %reg, mem" and "binop mem, %reg" where binop
1704 is one of adc, add, and, cmp, or, sbb, sub, xor
1705 - instructions. Always generate R_386_GOT32X for
1706 - "sym*GOT" operand in 32-bit mode. */
1707 - if ((generate_relax_relocations
1710 - && i.rm.regmem == 5))
1711 + instructions without data prefix. Always generate
1712 + R_386_GOT32X for "sym*GOT" operand in 32-bit mode. */
1713 + if (i.prefix[DATA_PREFIX] == 0
1714 + && (generate_relax_relocations
1717 + && i.rm.regmem == 5))
1719 || (i.rm.mode == 0 && i.rm.regmem == 5))
1720 && ((i.operands == 1
1721 diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
1722 index 833047980b..830ac5724f 100644
1723 --- a/gas/config/tc-i386.h
1724 +++ b/gas/config/tc-i386.h
1725 @@ -174,6 +174,7 @@ extern int tc_i386_fix_adjustable (struct fix *);
1726 (GENERIC_FORCE_RELOCATION_LOCAL (FIX) \
1727 || (FIX)->fx_r_type == BFD_RELOC_386_PLT32 \
1728 || (FIX)->fx_r_type == BFD_RELOC_386_GOTPC \
1729 + || (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCREL \
1730 || (FIX)->fx_r_type == BFD_RELOC_X86_64_GOTPCRELX \
1731 || (FIX)->fx_r_type == BFD_RELOC_X86_64_REX_GOTPCRELX)
1733 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.d b/gas/testsuite/gas/aarch64/illegal-dotproduct.d
1734 new file mode 100644
1735 index 0000000000..8d8b1b8506
1737 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.d
1739 +#as: -march=armv8.2-a+dotprod
1740 +#name: Invalid dotproduct instructions.
1741 +#source: illegal-dotproduct.s
1742 +#error-output: illegal-dotproduct.l
1743 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.l b/gas/testsuite/gas/aarch64/illegal-dotproduct.l
1744 new file mode 100644
1745 index 0000000000..06d0d78b8d
1747 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.l
1749 +[^:]+: Assembler messages:
1750 +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `udot V0.2S,V0.8B,V0.4B\[4\]'
1751 +[^:]+:[0-9]+: Error: operand mismatch -- `udot V0.4S,V0.8B,V0.4B\[4\]'
1752 +[^:]+:[0-9]+: Info: did you mean this\?
1753 +[^:]+:[0-9]+: Info: udot v0.2s, v0.8b, v0.4b\[4\]
1754 +[^:]+:[0-9]+: Info: other valid variant\(s\):
1755 +[^:]+:[0-9]+: Info: udot v0.4s, v0.16b, v0.4b\[4\]
1756 +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `sdot V0.2S,V0.8B,V0.4B\[4\]'
1757 +[^:]+:[0-9]+: Error: operand mismatch -- `sdot V0.2S,V0.8B,V0.4H\[4\]'
1758 +[^:]+:[0-9]+: Info: did you mean this\?
1759 +[^:]+:[0-9]+: Info: sdot v0.2s, v0.8b, v0.4b\[4\]
1760 +[^:]+:[0-9]+: Info: other valid variant\(s\):
1761 +[^:]+:[0-9]+: Info: sdot v0.4s, v0.16b, v0.4b\[4\]
1762 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.s b/gas/testsuite/gas/aarch64/illegal-dotproduct.s
1763 new file mode 100644
1764 index 0000000000..9c714ae54d
1766 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.s
1768 +UDOT V0.2S, V0.8B, V0.4B[4]
1769 +UDOT V0.4S, V0.8B, V0.4B[4]
1770 +SDOT V0.2S, V0.8B, V0.4B[4]
1771 +SDOT V0.2S, V0.8B, V0.4H[4]
1772 diff --git a/gas/testsuite/gas/arm/undefined-insn-arm.d b/gas/testsuite/gas/arm/undefined-insn-arm.d
1773 new file mode 100644
1774 index 0000000000..175e778b50
1776 +++ b/gas/testsuite/gas/arm/undefined-insn-arm.d
1778 +#name: Undefined binary printing in arm mode
1779 +#skip: *-*-pe *-*-vxworks
1780 +#source: undefined-insn.s
1781 +#objdump: -D -b binary -m armv5te
1783 diff --git a/gas/testsuite/gas/arm/undefined-insn-thumb.d b/gas/testsuite/gas/arm/undefined-insn-thumb.d
1784 new file mode 100644
1785 index 0000000000..a5b4159f1e
1787 +++ b/gas/testsuite/gas/arm/undefined-insn-thumb.d
1789 +#name: Undefined binary printing in thumb mode
1790 +#skip: *-*-pe *-*-vxworks
1791 +#source: undefined-insn.s
1792 +#objdump: -D -b binary -m armv5te -M force-thumb
1794 diff --git a/gas/testsuite/gas/arm/undefined-insn.s b/gas/testsuite/gas/arm/undefined-insn.s
1795 new file mode 100644
1796 index 0000000000..cf59a03d1d
1798 +++ b/gas/testsuite/gas/arm/undefined-insn.s
1801 diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.d b/gas/testsuite/gas/i386/evex-no-scale-32.d
1802 new file mode 100644
1803 index 0000000000..0a2860d32e
1805 +++ b/gas/testsuite/gas/i386/evex-no-scale-32.d
1808 +#name: ix86 EVEX no disp scaling
1810 +.*: +file format .*
1812 +Disassembly of section .text:
1815 + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0
1816 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40\(,%eiz,1\),%zmm0
1817 + +[a-f0-9]+: 62 f1 7c 48 28 05 40 00 00 00 vmovaps 0x40,%zmm0
1818 + +[a-f0-9]+: 67 62 f1 7c 48 28 06 40 00 vmovaps 0x40,%zmm0
1819 diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.s b/gas/testsuite/gas/i386/evex-no-scale-32.s
1820 new file mode 100644
1821 index 0000000000..e28c73f2a3
1823 +++ b/gas/testsuite/gas/i386/evex-no-scale-32.s
1828 + vmovaps 64(,%eax), %zmm0
1829 + vmovaps 64(,%eiz), %zmm0
1831 + addr16 vmovaps 64, %zmm0
1832 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.d b/gas/testsuite/gas/i386/evex-no-scale-64.d
1833 new file mode 100644
1834 index 0000000000..d52d947ab3
1836 +++ b/gas/testsuite/gas/i386/evex-no-scale-64.d
1839 +#name: x86-64 EVEX no disp scaling
1841 +.*: +file format .*
1843 +Disassembly of section .text:
1846 + +[a-f0-9]+: 62 f1 7c 48 28 05 00 fc ff ff vmovaps -0x400\(%rip\),%zmm0 # .*
1847 + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%rax,1\),%zmm0
1848 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0
1849 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0
1850 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 25 40 00 00 00 addr32 vmovaps 0x40,%zmm0
1851 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0
1852 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.s b/gas/testsuite/gas/i386/evex-no-scale-64.s
1853 new file mode 100644
1854 index 0000000000..bc3749cc0c
1856 +++ b/gas/testsuite/gas/i386/evex-no-scale-64.s
1861 + vmovaps -1024(%rip), %zmm0
1862 + vmovaps 64(,%rax), %zmm0
1863 + vmovaps 64(,%riz), %zmm0
1864 + vmovaps 64(,%eax), %zmm0
1865 + vmovaps 64(,%eiz), %zmm0
1867 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
1868 index 9cc927a962..952902cbb6 100644
1869 --- a/gas/testsuite/gas/i386/i386.exp
1870 +++ b/gas/testsuite/gas/i386/i386.exp
1871 @@ -525,6 +525,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
1872 run_dump_test "nop-5"
1873 run_dump_test "nop-6"
1875 + run_dump_test "evex-no-scale-32"
1877 if { [gas_64_check] } then {
1878 run_dump_test "att-regs"
1879 run_dump_test "intel-regs"
1880 @@ -1011,12 +1013,15 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
1882 run_dump_test "x86-64-gotpcrel"
1883 run_dump_test "x86-64-gotpcrel-no-relax"
1884 + run_dump_test "x86-64-gotpcrel-2"
1886 run_dump_test "x86-64-addend"
1887 run_dump_test "x86-64-nop-3"
1888 run_dump_test "x86-64-nop-4"
1889 run_dump_test "x86-64-nop-5"
1890 run_dump_test "x86-64-nop-6"
1892 + run_dump_test "evex-no-scale-64"
1895 set ASFLAGS "$old_ASFLAGS"
1896 diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d b/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d
1897 new file mode 100644
1898 index 0000000000..41b9ac2cc3
1900 +++ b/gas/testsuite/gas/i386/ilp32/x86-64-gotpcrel-2.d
1902 +#source: ../x86-64-gotpcrel-2.s
1903 +#as: --x32 -mrelax-relocations=no
1905 +#name: x86-64 (ILP32) gotpcrel (2)
1907 +.*: +file format .*
1910 +Disassembly of section .text:
1913 + +[a-f0-9]+: 48 8b 05 00 00 00 00 mov 0x0\(%rip\),%rax # 7 <foo\+0x7> 3: R_X86_64_GOTPCREL foo-0x4
1915 diff --git a/gas/testsuite/gas/i386/mixed-mode-reloc32.d b/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1916 index a2ef6a0b85..59234bc9be 100644
1917 --- a/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1918 +++ b/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1921 RELOCATION RECORDS FOR \[.text\]:
1922 OFFSET[ ]+TYPE[ ]+VALUE[ ]*
1923 -[0-9a-f]+[ ]+R_386_GOT32X[ ]+xtrn[ ]*
1924 +[0-9a-f]+[ ]+R_386_GOT32[ ]+xtrn[ ]*
1925 [0-9a-f]+[ ]+R_386_PLT32[ ]+xtrn[ ]*
1926 [0-9a-f]+[ ]+R_386_GOT32X[ ]+xtrn[ ]*
1927 [0-9a-f]+[ ]+R_386_PLT32[ ]+xtrn[ ]*
1928 diff --git a/gas/testsuite/gas/i386/se1.d b/gas/testsuite/gas/i386/se1.d
1929 index ff2685c781..d7800ab885 100644
1930 --- a/gas/testsuite/gas/i386/se1.d
1931 +++ b/gas/testsuite/gas/i386/se1.d
1932 @@ -10,4 +10,5 @@ Disassembly of section .text:
1934 [ ]*[a-f0-9]+: 0f 01 cf encls
1935 [ ]*[a-f0-9]+: 0f 01 d7 enclu
1936 +[ ]*[a-f0-9]+: 0f 01 c0 enclv
1938 diff --git a/gas/testsuite/gas/i386/se1.s b/gas/testsuite/gas/i386/se1.s
1939 index 1b57ac87fe..92d57952c0 100644
1940 --- a/gas/testsuite/gas/i386/se1.s
1941 +++ b/gas/testsuite/gas/i386/se1.s
1942 @@ -5,3 +5,4 @@ _start:
1947 diff --git a/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d
1948 new file mode 100644
1949 index 0000000000..3d07631bd6
1951 +++ b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.d
1953 +#as: -mrelax-relocations=no
1956 +.*: +file format .*
1959 +Disassembly of section .text:
1962 + +[a-f0-9]+: 48 8b 05 00 00 00 00 mov 0x0\(%rip\),%rax # 7 <foo\+0x7> 3: R_X86_64_GOTPCREL foo-0x4
1964 diff --git a/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s
1965 new file mode 100644
1966 index 0000000000..db5ddf579a
1968 +++ b/gas/testsuite/gas/i386/x86-64-gotpcrel-2.s
1972 + movq foo@GOTPCREL(%rip), %rax
1973 diff --git a/gas/testsuite/gas/i386/x86-64-se1.d b/gas/testsuite/gas/i386/x86-64-se1.d
1974 index 29494f0090..a515219406 100644
1975 --- a/gas/testsuite/gas/i386/x86-64-se1.d
1976 +++ b/gas/testsuite/gas/i386/x86-64-se1.d
1977 @@ -10,4 +10,5 @@ Disassembly of section .text:
1979 [ ]*[a-f0-9]+: 0f 01 cf encls
1980 [ ]*[a-f0-9]+: 0f 01 d7 enclu
1981 +[ ]*[a-f0-9]+: 0f 01 c0 enclv
1983 diff --git a/gas/testsuite/gas/i386/x86-64-se1.s b/gas/testsuite/gas/i386/x86-64-se1.s
1984 index 1b57ac87fe..92d57952c0 100644
1985 --- a/gas/testsuite/gas/i386/x86-64-se1.s
1986 +++ b/gas/testsuite/gas/i386/x86-64-se1.s
1987 @@ -5,3 +5,4 @@ _start:
1992 diff --git a/gas/testsuite/gas/i386/xmmword.l b/gas/testsuite/gas/i386/xmmword.l
1993 index ce3af8d150..7d25cb3de2 100644
1994 --- a/gas/testsuite/gas/i386/xmmword.l
1995 +++ b/gas/testsuite/gas/i386/xmmword.l
1997 .*:127: Error: .* `vpmovzxwq'
1998 .*:128: Error: .* `vpmovzxwq'
1999 .*:129: Error: .* `vpmovzxwq'
2000 +.*:131: Error: .* `vcvtps2qq'
2001 +.*:132: Error: .* `vcvtps2uqq'
2002 +.*:133: Error: .* `vcvttps2qq'
2003 +.*:134: Error: .* `vcvttps2uqq'
2004 diff --git a/gas/testsuite/gas/i386/xmmword.s b/gas/testsuite/gas/i386/xmmword.s
2005 index 47d2d8d595..ffe7aca3cb 100644
2006 --- a/gas/testsuite/gas/i386/xmmword.s
2007 +++ b/gas/testsuite/gas/i386/xmmword.s
2008 @@ -127,3 +127,8 @@ xmmword:
2009 vpmovzxwq xmm0{k7}, xmmword ptr [eax]
2010 vpmovzxwq ymm0, xmmword ptr [eax]
2011 vpmovzxwq ymm0{k7}, xmmword ptr [eax]
2013 + vcvtps2qq xmm0, xmmword ptr [rax]
2014 + vcvtps2uqq xmm0, xmmword ptr [rax]
2015 + vcvttps2qq xmm0, xmmword ptr [rax]
2016 + vcvttps2uqq xmm0, xmmword ptr [rax]
2017 diff --git a/gold/ChangeLog b/gold/ChangeLog
2018 index 18af5e69b1..cf998d901a 100644
2019 --- a/gold/ChangeLog
2020 +++ b/gold/ChangeLog
2022 +2018-08-06 Cary Coutant <ccoutant@gmail.com>
2025 + * options.h (General_options): Add --warn-drop-version option.
2026 + * symtab.cc (Symbol_table::set_dynsym_indexes): Check it.
2028 +2018-08-06 Cary Coutant <ccoutant@gmail.com>
2030 + * target.h (Sized_target::record_gnu_property): Change first two
2031 + parameters to unsigned int.
2032 + * x86_64.cc (Target_x86_64::record_gnu_property): Likewise.
2034 2018-07-18 Nick Clifton <nickc@redhat.com>
2036 2.31.1 Release point.
2037 diff --git a/gold/options.h b/gold/options.h
2038 index 98d6be8009..11054981c9 100644
2039 --- a/gold/options.h
2040 +++ b/gold/options.h
2041 @@ -1361,6 +1361,10 @@ class General_options
2042 DEFINE_bool_ignore(warn_constructors, options::TWO_DASHES, '\0',
2043 N_("Ignored"), N_("Ignored"));
2045 + DEFINE_bool(warn_drop_version, options::TWO_DASHES, '\0', false,
2046 + N_("Warn when discarding version information"),
2047 + N_("Do not warn when discarding version information"));
2049 DEFINE_bool(warn_execstack, options::TWO_DASHES, '\0', false,
2050 N_("Warn if the stack is executable"),
2051 N_("Do not warn if the stack is executable"));
2052 diff --git a/gold/symtab.cc b/gold/symtab.cc
2053 index aa7644156f..759e0d0222 100644
2054 --- a/gold/symtab.cc
2055 +++ b/gold/symtab.cc
2056 @@ -2623,11 +2623,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
2057 versions->record_version(this, dynpool, sym);
2060 - gold_warning(_("discarding version information for "
2061 - "%s@%s, defined in unused shared library %s "
2062 - "(linked with --as-needed)"),
2063 - sym->name(), sym->version(),
2064 - sym->object()->name().c_str());
2065 + if (parameters->options().warn_drop_version())
2066 + gold_warning(_("discarding version information for "
2067 + "%s@%s, defined in unused shared library %s "
2068 + "(linked with --as-needed)"),
2069 + sym->name(), sym->version(),
2070 + sym->object()->name().c_str());
2071 sym->clear_version();
2074 diff --git a/gold/target.h b/gold/target.h
2075 index bb312067b5..bbc87396f6 100644
2078 @@ -1147,7 +1147,8 @@ class Sized_target : public Target
2079 // Record a target-specific program property in the .note.gnu.property
2082 - record_gnu_property(int, int, size_t, const unsigned char*, const Object*)
2083 + record_gnu_property(unsigned int, unsigned int, size_t,
2084 + const unsigned char*, const Object*)
2087 // Merge the target-specific program properties from the current object.
2088 diff --git a/gold/x86_64.cc b/gold/x86_64.cc
2089 index 27f273d64b..9d742f6f13 100644
2090 --- a/gold/x86_64.cc
2091 +++ b/gold/x86_64.cc
2092 @@ -1307,7 +1307,8 @@ class Target_x86_64 : public Sized_target<size, false>
2093 // Record a target-specific program property in the .note.gnu.property
2096 - record_gnu_property(int, int, size_t, const unsigned char*, const Object*);
2097 + record_gnu_property(unsigned int, unsigned int, size_t,
2098 + const unsigned char*, const Object*);
2100 // Merge the target-specific program properties from the current object.
2102 @@ -1579,7 +1580,7 @@ Target_x86_64<size>::rela_irelative_section(Layout* layout)
2105 Target_x86_64<size>::record_gnu_property(
2107 + unsigned int, unsigned int pr_type,
2108 size_t pr_datasz, const unsigned char* pr_data,
2109 const Object* object)
2111 diff --git a/include/ChangeLog b/include/ChangeLog
2112 index 7decb4fd7b..e0b82bc338 100644
2113 --- a/include/ChangeLog
2114 +++ b/include/ChangeLog
2116 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
2118 + Backport from mainline
2119 + 2018-08-01 Cupertino Miranda <cmiranda@synopsys.com>
2120 + * arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula.
2122 2018-07-18 Nick Clifton <nickc@redhat.com>
2124 2.31.1 Release point.
2125 diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def
2126 index a6db724da9..61edd6e67a 100644
2127 --- a/include/elf/arc-reloc.def
2128 +++ b/include/elf/arc-reloc.def
2129 @@ -468,7 +468,7 @@ ARC_RELOC_HOWTO(ARC_TLS_DTPOFF, 67, \
2133 - ( ME ( S - SECTSTART ) + A ))
2134 + ( ME ( S - FINAL_SECTSTART ) + A ))
2136 ARC_RELOC_HOWTO(ARC_TLS_DTPOFF_S9, 73, \
2138 @@ -489,7 +489,7 @@ ARC_RELOC_HOWTO(ARC_TLS_LE_32, 75, \
2142 - ( ME ( ( ( ( S + A ) + TCB_SIZE ) - TLS_REL ) ) ))
2143 + ( ME ( ( ( ( S + A ) + TLS_TBSS ) - TLS_REL ) ) ))
2145 ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
2147 diff --git a/ld/ChangeLog b/ld/ChangeLog
2148 index c07e442c84..38963b90cf 100644
2152 +2018-11-30 Alan Modra <amodra@gmail.com>
2154 + * testsuite/ld-powerpc/pr23937.d,
2155 + * testsuite/ld-powerpc/pr23937.s: New test.
2156 + * testsuite/ld-powerpc/powerpc.exp: Run it.
2158 +2018-11-27 Tamar Christina <tamar.christina@arm.com>
2161 + * testsuite/ld-aarch64/aarch64-elf.exp: Add erratum843419_tls_ie.
2162 + * testsuite/ld-aarch64/erratum843419_tls_ie.d: New test.
2163 + * testsuite/ld-aarch64/erratum843419_tls_ie.s: New test.
2165 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
2168 + * testsuite/ld-i386/i386.exp: Run pr23854.
2169 + * testsuite/ld-x86-64/x86-64.exp: Likewwise.
2170 + * testsuite/ld-i386/pr23854.d: New file.
2171 + * testsuite/ld-i386/pr23854.s: Likewwise.
2172 + * testsuite/ld-i386/pr23854.d: Likewwise.
2173 + * testsuite/ld-x86-64/pr23854.d: Likewwise.
2174 + * testsuite/ld-x86-64/pr23854.s: Likewwise.
2176 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
2179 + * testsuite/ld-plugin/lto.exp: Run PR ld/23818 test.
2180 + * testsuite/ld-plugin/pr23818.d: New file.
2181 + * testsuite/ld-plugin/pr23818.t: Likewise.
2182 + * testsuite/ld-plugin/pr23818a.c: Likewise.
2183 + * testsuite/ld-plugin/pr23818b.c: Likewise.
2185 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
2187 + * testsuite/ld-x86-64/pr23486b.d: Swap pr23486a.s and pr23486a.s.
2189 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
2192 + * testsuite/ld-elf/dummy.s: New file.
2193 + * testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
2194 + * testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
2196 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
2199 + * testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
2200 + * testsuite/ld-x86-64/x86-64.exp: Likewise.
2201 + * testsuite/ld-i386/pr23486a.d: New file.
2202 + * testsuite/ld-i386/pr23486b.d: Likewise.
2203 + * testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
2204 + * testsuite/ld-x86-64/pr23486a.d: Likewise.
2205 + * testsuite/ld-x86-64/pr23486a.s: Likewise.
2206 + * testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
2207 + * testsuite/ld-x86-64/pr23486b.d: Likewise.
2208 + * testsuite/ld-x86-64/pr23486b.s: Likewise.
2209 + * testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
2210 + * testsuite/ld-i386/property-4.r: Likewise.
2211 + * testsuite/ld-i386/property-5.r: Likewise.
2212 + * testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
2213 + * testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
2214 + * testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
2215 + * testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
2216 + * testsuite/ld-x86-64/property-3.r: Likewise.
2217 + * testsuite/ld-x86-64/property-4.r: Likewise.
2218 + * testsuite/ld-x86-64/property-5.r: Likewise.
2219 + * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
2220 + * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
2221 + * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
2222 + * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
2223 + * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
2224 + * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
2225 + * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
2226 + * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
2228 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
2230 + * testsuite/ld-x86-64/property-x86-3.s: Use ".p2align 2" to
2231 + align .note.gnu.property section if __64_bit__ is undefined.
2233 +2018-08-01 Alan Modra <amodra@gmail.com>
2235 + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with hash-style
2238 +2018-08-01 Alan Modra <amodra@gmail.com>
2240 + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with plt alignment.
2241 + * testsuite/ld-powerpc/tlsopt5.s: Add extra call.
2242 + * testsuite/ld-powerpc/tlsopt5.wf: Adjust expected output.
2243 + * testsuite/ld-powerpc/tlsopt5.d: Likewise.
2245 +2018-08-07 Nick Clifton <nickc@redhat.com>
2247 + * po/bg.po: Updated Bulgarian translation.
2249 +2018-08-01 Roland McGrath <mcgrathr@google.com>
2251 + * testsuite/ld-aarch64/ifunc-1-local.d: Adjust regexps to match
2252 + the offsets emitted by aarch64-elf configurations.
2253 + * testsuite/ld-aarch64/ifunc-1.d: Likewise.
2254 + * testsuite/ld-aarch64/ifunc-2-local.d: Likewise.
2255 + * testsuite/ld-aarch64/ifunc-2.d: Likewise.
2256 + * testsuite/ld-aarch64/ifunc-21.d: Likewise.
2257 + * testsuite/ld-aarch64/ifunc-3a.d: Likewise.
2259 +2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
2262 + * testsuite/ld-elf/linux-x86.S: New file.
2263 + * testsuite/ld-elf/linux-x86.exp: Likewise.
2264 + * testsuite/ld-elf/pr23428.c: Likewise.
2265 + * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
2266 + for Linux/x86 targets.
2267 + * testsuite/ld-i386/abs-iamcu.d: Likewise.
2268 + * testsuite/ld-i386/abs.d: Likewise.
2269 + * testsuite/ld-i386/pr12718.d: Likewise.
2270 + * testsuite/ld-i386/pr12921.d: Likewise.
2271 + * testsuite/ld-x86-64/abs-k1om.d: Likewise.
2272 + * testsuite/ld-x86-64/abs-l1om.d: Likewise.
2273 + * testsuite/ld-x86-64/abs.d: Likewise.
2274 + * testsuite/ld-x86-64/pr12718.d: Likewise.
2275 + * testsuite/ld-x86-64/pr12921.d: Likewise.
2276 + * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
2278 + * testsuite/ld-scripts/print-memory-usage.t: Likewise.
2279 + * testsuite/ld-scripts/size-2.t: Likewise.
2280 + * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
2281 + create executable if language is "asm".
2283 2018-07-18 Nick Clifton <nickc@redhat.com>
2285 2.31.1 Release point.
2286 diff --git a/ld/po/bg.po b/ld/po/bg.po
2287 index 5e8e818818..bf6ecd9b61 100644
2290 @@ -13,7 +13,7 @@ msgstr ""
2291 "Project-Id-Version: ld 2.30.90\n"
2292 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
2293 "POT-Creation-Date: 2018-06-24 19:43+0100\n"
2294 -"PO-Revision-Date: 2018-06-28 22:58+0300\n"
2295 +"PO-Revision-Date: 2018-07-26 20:34+0300\n"
2296 "Last-Translator: Румен Петров <transl@roumenpetrov.info>\n"
2297 "Language-Team: Bulgarian <dict@ludost.net>\n"
2299 @@ -33,7 +33,7 @@ msgstr "%X%P: cref_hash_lookup не успя: %E\n"
2302 msgid "%X%P: cref alloc failed: %E\n"
2303 -msgstr "%X%P: пропадна заделяне(на памет) за cref: %E\n"
2304 +msgstr "%X%P: не успя заделянето на памет в cref: %E\n"
2308 @@ -62,7 +62,7 @@ msgstr "Без имена\n"
2310 #: ldcref.c:413 ldcref.c:565
2311 msgid "%P: symbol `%pT' missing from main hash table\n"
2312 -msgstr "%P: име '%pT' липсва в главната хеш-таблица\n"
2313 +msgstr "%P: в главния речник липсва името '%pT'\n"
2315 #: ldcref.c:517 ldcref.c:628 ldmain.c:1211 ldmisc.c:335 pe-dll.c:715
2316 #: pe-dll.c:1296 pe-dll.c:1417 pe-dll.c:1535 earm_wince_pe.c:1430
2317 @@ -87,7 +87,7 @@ msgstr "%X%P: %C: забранено е кръстосана отпратка о
2320 msgid "%X%P: different relocs used in set %s\n"
2321 -msgstr "%X%P: различни \"преместванията\" се използват в множеството %s\n"
2322 +msgstr "%X%P: различни \"премествания\" се използват в набора %s\n"
2325 msgid "%X%P: different object file formats composing set %s\n"
2326 @@ -103,7 +103,7 @@ msgstr "%X%P: раздел %s не поддържа преместване %s з
2329 msgid "%X%P: unsupported size %d for set %s\n"
2330 -msgstr "%X%P: неподдържан размер %d за множеството %s\n"
2331 +msgstr "%X%P: неподдържан размер %d за набор %s\n"
2335 @@ -202,7 +202,7 @@ msgstr "%F%P:%pS не може да се върне обратно брояч н
2338 msgid "%F%P:%s: hash creation failed\n"
2339 -msgstr "%F%P:%s: пропадна създаването на хеш\n"
2340 +msgstr "%F%P:%s: не успя създаването на хеш\n"
2342 #: ldexp.c:1519 ldexp.c:1545 ldexp.c:1605
2343 msgid "%F%P:%pS: nonconstant expression for %s\n"
2344 @@ -210,7 +210,7 @@ msgstr "%F%P:%pS: не е константен изразът за %s\n"
2346 #: ldexp.c:1631 ldlang.c:1234 ldlang.c:3187 ldlang.c:7174
2347 msgid "%F%P: can not create hash table: %E\n"
2348 -msgstr "%F%P: не може да се създаде хеш-таблицата: %E\n"
2349 +msgstr "%F%P: не може да се създаде речник: %E\n"
2351 #: ldfile.c:132 eaarch64cloudabi.c:656 eaarch64cloudabib.c:656
2352 #: eaarch64elf.c:656 eaarch64elf32.c:656 eaarch64elf32b.c:656
2353 @@ -286,12 +286,12 @@ msgstr "%F%P: не може да се създаде хеш-таблицата:
2354 #: eshlelf_vxworks.c:370 ev850.c:387 ev850_rh850.c:387 exgateelf.c:341
2356 msgid "attempt to open %s failed\n"
2357 -msgstr "опита да се отвори %s не успя\n"
2358 +msgstr "опитът да се отвори %s не успя\n"
2362 msgid "attempt to open %s succeeded\n"
2363 -msgstr "опита да се отвори %s успя\n"
2364 +msgstr "опитът да се отвори %s успя\n"
2367 msgid "%F%P: invalid BFD target `%s'\n"
2368 @@ -353,7 +353,7 @@ msgstr "%F%P:%pS: грешка: синоним за област памет по
2371 msgid "%F%P:%pS: error: redefinition of memory region alias `%s'\n"
2372 -msgstr "%F%P:%pS: грешка: повторен определение на синоним за област памет '%s'\n"
2373 +msgstr "%F%P:%pS: грешка: повторено определение на синоним за област памет '%s'\n"
2376 msgid "%F%P:%pS: error: memory region `%s' for alias `%s' does not exist\n"
2377 @@ -361,7 +361,7 @@ msgstr "%F%P:%pS: грешка: област памет '%s' за синоним
2379 #: ldlang.c:1438 ldlang.c:1477
2380 msgid "%F%P: failed creating section `%s': %E\n"
2381 -msgstr "%F%P: пропадна създаването на раздел '%s': %E\n"
2382 +msgstr "%F%P: не успя създаването на раздел '%s': %E\n"
2386 @@ -439,7 +439,7 @@ msgstr "%F%P: %pB: файлът не е разпознат: %E\n"
2389 msgid "%F%P: %pB: member %pB in archive is not an object\n"
2390 -msgstr "%F%P: %pB: членът, на архива %pB, не е обект\n"
2391 +msgstr "%F%P: %pB: членът на архива %pB не е обект\n"
2393 #: ldlang.c:2869 ldlang.c:2883 eaarch64cloudabi.c:776 eaarch64cloudabib.c:776
2394 #: eaarch64elf.c:776 eaarch64elf32.c:776 eaarch64elf32b.c:776
2395 @@ -518,7 +518,7 @@ msgstr "%F%P: %pB: грешка при добавяне на имената: %E\
2398 msgid "%P: warning: could not find any targets that match endianness requirement\n"
2399 -msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба(на байтовете)\n"
2400 +msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба на байтовете\n"
2403 msgid "%F%P: target %s not found\n"
2404 @@ -546,7 +546,7 @@ msgstr "%X%P: не е определено задължителното име '
2407 msgid "%F%P: %s not found for insert\n"
2408 -msgstr "%F%P: %s не е намерен(за добавяне)\n"
2409 +msgstr "%F%P: %s не е намерен за добавяне\n"
2412 msgid " load address 0x%V"
2413 @@ -598,7 +598,7 @@ msgstr "%X%P: %pB раздел '%s' не се побира в област '%s'\
2416 msgid "%F%P:%pS: non constant or forward reference address expression for section %s\n"
2417 -msgstr "%F%P:%pS: адресния израз не е константен или отпратка за по нататък при раздел %s\n"
2418 +msgstr "%F%P:%pS: адресният израз не е константен или е отпратка за по нататък при раздел %s\n"
2421 msgid "%X%P: internal error on COFF shared library section %s\n"
2422 @@ -664,7 +664,7 @@ msgstr "%X%P: %s архитектурата на входен файл '%pB' е
2425 msgid "%X%P: failed to merge target specific data of file %pB\n"
2426 -msgstr "%X%P: пропадна сливането, на специфични за резултата данни, от файл %pB\n"
2427 +msgstr "%X%P: не успя сливането на целеви данни от файл %pB\n"
2430 msgid "%F%P: could not define common symbol `%pT': %E\n"
2431 @@ -704,7 +704,7 @@ msgstr "%F%P:%pS: грешка: зададено е подравняване с
2434 msgid "%F%P: %s: plugin reported error after all symbols read\n"
2435 -msgstr "%F%P: %s: приставката рапортува грешка, след прочитане на всички имена\n"
2436 +msgstr "%F%P: %s: приставката отчете грешка след прочитане на всички имена\n"
2439 msgid "%F%P: multiple STARTUP files\n"
2440 @@ -805,11 +805,11 @@ msgstr "%P: грешка при свързване, изтриване на из
2443 msgid "%F%P: %pB: final close failed: %E\n"
2444 -msgstr "%F%P: %pB: пропадна заключителното затваряне: %E\n"
2445 +msgstr "%F%P: %pB: не успя заключителното затваряне: %E\n"
2448 msgid "%F%P: unable to open for source of copy `%s'\n"
2449 -msgstr "%F%P: не можа да се отвори източника на копието '%s'\n"
2450 +msgstr "%F%P: не можа да се отвори източникът на копието '%s'\n"
2453 msgid "%F%P: unable to open for destination of copy `%s'\n"
2454 @@ -1017,7 +1017,7 @@ msgstr "%P: вътрешна грешка: прекратяване на %s:%d\n
2457 msgid "%F%P: please report this bug\n"
2458 -msgstr "%F%P: моля, рапортувайте този проблем\n"
2459 +msgstr "%F%P: моля, докладвайте този проблем\n"
2461 #. Output for noisy == 2 is intended to follow the GNU standards.
2463 @@ -1048,7 +1048,7 @@ msgstr " Поддържани подражавания:\n"
2465 #: ldwrite.c:60 ldwrite.c:206 ldwrite.c:258 ldwrite.c:299
2466 msgid "%F%P: bfd_new_link_order failed\n"
2467 -msgstr "%F%P: пропадна bfd_new_link_order\n"
2468 +msgstr "%F%P: bfd_new_link_order не успя\n"
2471 msgid "%F%P: cannot create split section name for %s\n"
2472 @@ -1056,7 +1056,7 @@ msgstr "%F%P: при разцепване на раздел, не можа да
2475 msgid "%F%P: clone section failed: %E\n"
2476 -msgstr "%F%P: пропадна копирането на раздел: %E\n"
2477 +msgstr "%F%P: не успя раздвояването на раздел: %E\n"
2481 @@ -1065,7 +1065,7 @@ msgstr "%8x други\n"
2484 msgid "%F%P: final link failed: %E\n"
2485 -msgstr "%F%P: пропадна заключителното свързване: %E\n"
2486 +msgstr "%F%P: не успя заключителното свързване: %E\n"
2488 #: lexsup.c:102 lexsup.c:276
2490 @@ -1490,7 +1490,7 @@ msgstr ""
2493 msgid "Set default hash table size close to <NUMBER>"
2494 -msgstr "Установява размер по подразбиране на таблицат за хеш близък до <ЧИСЛО>"
2495 +msgstr "Установява размер, по подразбиране, на речника близък до <ЧИСЛО>"
2498 msgid "Print option help"
2499 @@ -1776,15 +1776,15 @@ msgstr "Предупреждение, ако споделен обект съд
2502 msgid "Warn if an object has alternate ELF machine code"
2503 -msgstr "Предупреждение ако обекта е с друг ELF ELF код за машина"
2504 +msgstr "Предупреждение, ако обекта е с друг ELF код за машина"
2507 msgid "Report unresolved symbols as warnings"
2508 -msgstr "Рапортуване като предупреждения, на несвързани имена"
2509 +msgstr "Докладване на несвързани имена като предупреждения"
2512 msgid "Report unresolved symbols as errors"
2513 -msgstr "Рапортуване, като грешки, на несвързани имена"
2514 +msgstr "Докладване на несвързани имена като грешки"
2517 msgid "Include all objects from following archives"
2518 @@ -2332,12 +2332,12 @@ msgstr "%X%P: не може да се създаде раздел .reloc: %E\n"
2521 msgid "%X%P: error: ordinal used twice: %d (%s vs %s)\n"
2522 -msgstr "%X%P: грешка, номера е използван два пъти: %d (%s с/у %s)\n"
2523 +msgstr "%X%P: грешка, номерът е използван два пъти: %d (%s с/у %s)\n"
2527 msgid "%X%P: error: export ordinal too large: %d\n"
2528 -msgstr "%X%P: грешка: номера е твърде голям: %d\n"
2529 +msgstr "%X%P: грешка: номерът е твърде голям: %d\n"
2533 @@ -2346,7 +2346,7 @@ msgstr "Сведение: разрешаване на %s със свързван
2536 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"
2537 -msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред.Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n"
2538 +msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред. Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n"
2540 #. Huh? Shouldn't happen, but punt if it does.
2542 @@ -2370,7 +2370,7 @@ msgstr "; липсва съдържание\n"
2545 msgid "%X%P: %C: variable '%pT' can't be auto-imported; please read the documentation for ld's --enable-auto-import for details\n"
2546 -msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се прочете в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n"
2547 +msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се провери в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n"
2551 @@ -2469,7 +2469,7 @@ msgstr "%F%P: приставката не можа да задели памет
2554 msgid "%F%P: %s: plugin reported error claiming file\n"
2555 -msgstr "%F%P: %s: приставката рапортува грешка, при твърденията за файла\n"
2556 +msgstr "%F%P: %s: приставката отчете грешка при твърденията за файла\n"
2559 msgid "%P: %s: error in plugin cleanup: %d (ignored)\n"
2560 @@ -2547,7 +2547,7 @@ msgstr "%P: %s: грешка при почистване на приставка
2561 #: eshlelf_nto.c:81 eshlelf_vxworks.c:81 ev850.c:81 ev850_rh850.c:81
2563 msgid "%F%P: map sections to segments failed: %E\n"
2564 -msgstr "%F%P: пропадна свързването на раздел към част: %E\n"
2565 +msgstr "%F%P: не успя свързването на раздел към част: %E\n"
2567 #: eaarch64cloudabi.c:101 eaarch64cloudabib.c:101 eaarch64elf.c:101
2568 #: eaarch64elf32.c:101 eaarch64elf32b.c:101 eaarch64elfb.c:101
2569 @@ -5051,31 +5051,31 @@ msgstr "%F%P: не се чете %s\n"
2571 #: eaix5ppc.c:390 eaix5rs6.c:390 eaixppc.c:390 eaixrs6.c:390 eppcmacos.c:390
2572 msgid "%P: warning: ignoring invalid -D number %s\n"
2573 -msgstr "%P: предупреждение: изоставяне на неправилно число за -D %s\n"
2574 +msgstr "%P: предупреждение: пропускане на неправилно число за -D %s\n"
2576 #: eaix5ppc.c:398 eaix5rs6.c:398 eaixppc.c:398 eaixrs6.c:398 eppcmacos.c:398
2577 msgid "%P: warning: ignoring invalid -H number %s\n"
2578 -msgstr "%P: предупреждение: изоставяне на неправилно число за -H %s\n"
2579 +msgstr "%P: предупреждение: пропускане на неправилно число за -H %s\n"
2581 #: eaix5ppc.c:510 eaix5rs6.c:510 eaixppc.c:510 eaixrs6.c:510 eppcmacos.c:510
2582 msgid "%P: warning: ignoring invalid -bmaxdata number %s\n"
2583 -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxdata %s\n"
2584 +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxdata %s\n"
2586 #: eaix5ppc.c:519 eaix5rs6.c:519 eaixppc.c:519 eaixrs6.c:519 eppcmacos.c:519
2587 msgid "%P: warning: ignoring invalid -bmaxstack number %s\n"
2588 -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxstack %s\n"
2589 +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxstack %s\n"
2591 #: eaix5ppc.c:532 eaix5rs6.c:532 eaixppc.c:532 eaixrs6.c:532 eppcmacos.c:532
2592 msgid "%P: warning: ignoring invalid module type %s\n"
2593 -msgstr "%P: предупреждение: изоставяне на неправиен тип на модул %s\n"
2594 +msgstr "%P: предупреждение: пропускане на неправиен тип на модул %s\n"
2596 #: eaix5ppc.c:562 eaix5rs6.c:562 eaixppc.c:562 eaixrs6.c:562 eppcmacos.c:562
2597 msgid "%P: warning: ignoring invalid -pD number %s\n"
2598 -msgstr "%P: предупреждение: изоставяне на неправилно число за -pD %s\n"
2599 +msgstr "%P: предупреждение: пропускане на неправилно число за -pD %s\n"
2601 #: eaix5ppc.c:585 eaix5rs6.c:585 eaixppc.c:585 eaixrs6.c:585 eppcmacos.c:585
2602 msgid "%P: warning: ignoring invalid -pT number %s\n"
2603 -msgstr "%P: предупреждение: изоставяне на неправилно число за -pT %s\n"
2604 +msgstr "%P: предупреждение: пропускане на неправилно число за -pT %s\n"
2606 #: eaix5ppc.c:714 eaix5rs6.c:714 eaixppc.c:714 eaixrs6.c:714 eppcmacos.c:714
2607 msgid "%F%P: bfd_xcoff_link_record_set failed: %E\n"
2608 @@ -5252,7 +5252,7 @@ msgstr " --[no-]leading-underscore Изрично установява
2609 #: emcorepe.c:392 eppcpe.c:392 eshpe.c:392
2611 msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n"
2612 -msgstr " --thumb-entry=<знак> Установяване на входяща точка да е отбелязания <знак>\n"
2613 +msgstr " --thumb-entry=<знак> Установяване на входяща точка на отбелязания <знак>\n"
2615 #: earm_wince_pe.c:393 earmpe.c:393 ei386pe.c:393 ei386pe_posix.c:393
2616 #: emcorepe.c:393 eppcpe.c:393 eshpe.c:393
2617 @@ -5264,7 +5264,7 @@ msgstr " --[no-]insert-timestamp Използва истинска
2618 #: ei386pep.c:375 emcorepe.c:394 eppcpe.c:394 eshpe.c:394
2620 msgid " This makes binaries non-deterministic\n"
2621 -msgstr " Това прави двоичните файлове неопределяеми\n"
2622 +msgstr " Това прави двоичните файлове несравними\n"
2624 #: earm_wince_pe.c:396 earmpe.c:396 ei386pe.c:396 ei386pe_posix.c:396
2625 #: ei386pep.c:377 emcorepe.c:396 eppcpe.c:396 eshpe.c:396
2626 @@ -5440,7 +5440,7 @@ msgid ""
2627 " greater than 2 gigabytes\n"
2629 " --large-address-aware Програмата поддържа виртуални адреси\n"
2630 -" по-голями от 2 гигабайта\n"
2631 +" по-големи от 2 гигабайта\n"
2633 #: earm_wince_pe.c:420 earmpe.c:420 ei386pe.c:420 ei386pe_posix.c:420
2634 #: emcorepe.c:420 eppcpe.c:420 eshpe.c:420
2635 @@ -5450,7 +5450,7 @@ msgid ""
2636 " addresses greater than 2 gigabytes\n"
2638 " --disable-large-address-aware Програмата не поддържа виртуални\n"
2639 -" адреси по-голями от 2 гигабайта\n"
2640 +" адреси по-големи от 2 гигабайта\n"
2642 #: earm_wince_pe.c:421 earmpe.c:421 ei386pe.c:421 ei386pe_posix.c:421
2643 #: ei386pep.c:399 emcorepe.c:421 eppcpe.c:421 eshpe.c:421
2644 @@ -5479,7 +5479,7 @@ msgid ""
2645 " --dynamicbase Image base address may be relocated using\n"
2646 " address space layout randomization (ASLR)\n"
2648 -" --dynamicbase Основния адрес на образа може да бъде преместен\n"
2649 +" --dynamicbase Основният адрес на образа може да бъде преместен\n"
2650 " като се използва случаен адрес\n"
2652 #: earm_wince_pe.c:424 earmpe.c:424 ei386pe.c:424 ei386pe_posix.c:424
2653 @@ -5492,13 +5492,13 @@ msgstr " --forceinteg Налагане на проверка за
2654 #: ei386pep.c:404 emcorepe.c:425 eppcpe.c:425 eshpe.c:425
2656 msgid " --nxcompat Image is compatible with data execution prevention\n"
2657 -msgstr " --nxcompat Образа е съвместим с предотвратяване на изпълнение на данни\n"
2658 +msgstr " --nxcompat Образът е съвместим с предотвратяване на изпълнение на данни\n"
2660 #: earm_wince_pe.c:426 earmpe.c:426 ei386pe.c:426 ei386pe_posix.c:426
2661 #: ei386pep.c:405 emcorepe.c:426 eppcpe.c:426 eshpe.c:426
2663 msgid " --no-isolation Image understands isolation but do not isolate the image\n"
2664 -msgstr " --no-isolation Образа поддържа изолиране, но да не се изолира\n"
2665 +msgstr " --no-isolation Образът поддържа изолиране, но да не се изолира\n"
2667 #: earm_wince_pe.c:427 earmpe.c:427 ei386pe.c:427 ei386pe_posix.c:427
2668 #: emcorepe.c:427 eppcpe.c:427 eshpe.c:427
2669 @@ -5507,7 +5507,7 @@ msgid ""
2670 " --no-seh Image does not use SEH. No SE handler may\n"
2671 " be called in this image\n"
2673 -" --no-seh Образа не използва SEH. В този образ не\n"
2674 +" --no-seh Образът не използва SEH. В този образ не\n"
2675 " може да се извиква SE подръжка\n"
2677 #: earm_wince_pe.c:428 earmpe.c:428 ei386pe.c:428 ei386pe_posix.c:428
2678 @@ -5526,7 +5526,7 @@ msgstr " --wdmdriver Използване на WDM модел з
2679 #: ei386pep.c:409 emcorepe.c:430 eppcpe.c:430 eshpe.c:430
2681 msgid " --tsaware Image is Terminal Server aware\n"
2682 -msgstr " --tsaware Образа поддържа \"Terminal Server\"\n"
2683 +msgstr " --tsaware Образът поддържа \"Terminal Server\"\n"
2685 #: earm_wince_pe.c:431 earmpe.c:431 ei386pe.c:431 ei386pe_posix.c:431
2686 #: ei386pep.c:410 emcorepe.c:431 eppcpe.c:431 eshpe.c:431
2687 @@ -5603,7 +5603,7 @@ msgstr ""
2688 #: earm_wince_pe.c:1302 earmpe.c:1302 ei386pe.c:1302 ei386pe_posix.c:1302
2689 #: ei386pep.c:1305 emcorepe.c:1302 eppcpe.c:1302 eshpe.c:1302
2690 msgid "%F%P: cannot perform PE operations on non PE output file '%pB'\n"
2691 -msgstr "%F%P: не може да се извърши \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n"
2692 +msgstr "%F%P: не може да се извършат \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n"
2694 #: earm_wince_pe.c:1442 earmpe.c:1442 ei386pe.c:1442 ei386pe_posix.c:1442
2695 #: ei386pep.c:1426 emcorepe.c:1442 eppcpe.c:1442 eshpe.c:1442
2696 @@ -5649,7 +5649,7 @@ msgstr "%P: предупреждение: '--thumb-entry %s' прегазва '-
2697 #: earmnto.c:577 earmpe.c:1876 earmsymbian.c:577 ei386pe.c:1876
2698 #: ei386pe_posix.c:1876 emcorepe.c:1876 eppcpe.c:1876 eshpe.c:1876
2699 msgid "%P: warning: cannot find thumb start symbol %s\n"
2700 -msgstr "%P: предупреждение: не е намерен, като начален, отбелязания знак %s\n"
2701 +msgstr "%P: предупреждение: не е намерен, като начален, отбелязаният знак %s\n"
2703 #: earmelf.c:603 earmelf_fbsd.c:603 earmelf_fuchsia.c:603 earmelf_linux.c:603
2704 #: earmelf_linux_eabi.c:603 earmelf_linux_fdpiceabi.c:603 earmelf_nacl.c:603
2705 @@ -5700,7 +5700,7 @@ msgstr "%P: неразпознат вид STM32L4XX поправка '%s'\n"
2706 #: earmelfb_nacl.c:2851 earmelfb_nbsd.c:2851 earmnto.c:2826 earmsymbian.c:2851
2708 msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
2709 -msgstr " --thumb-entry=<знак> Установява входяща точка да е отбелязания <знак>\n"
2710 +msgstr " --thumb-entry=<знак> Установява входяща точка на отбелязания <знак>\n"
2712 #: earmelf.c:2852 earmelf_fbsd.c:2859 earmelf_fuchsia.c:2852
2713 #: earmelf_linux.c:2852 earmelf_linux_eabi.c:2852
2714 @@ -6667,7 +6667,7 @@ msgstr ""
2716 #: eelf32xtensa.c:561
2717 msgid "%F%P: failed to create .xtensa.info section\n"
2718 -msgstr "%F%P: пропадна създаването на раздел .xtensa.info\n"
2719 +msgstr "%F%P: не успя създаването на раздел .xtensa.info\n"
2721 #: eelf32xtensa.c:4073
2723 @@ -6945,7 +6945,7 @@ msgid ""
2724 " --no-seh Image does not use SEH; no SE handler may\n"
2725 " be called in this image\n"
2727 -" --no-seh Образа не използва SEH. В този образ не може\n"
2728 +" --no-seh Образът не използва SEH. В този образ не може\n"
2729 " да се извиква SE подръжка\n"
2732 diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
2733 index 1bbc064857..3912ef1cdd 100644
2734 --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
2735 +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
2736 @@ -86,6 +86,7 @@ run_ld_link_tests $aarch64elftests
2737 run_ld_link_tests eh-frame-merge-lp64
2739 run_dump_test "erratum843419"
2740 +run_dump_test "erratum843419_tls_ie"
2743 run_dump_test_lp64 "weak-undefined"
2744 diff --git a/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d
2745 new file mode 100644
2746 index 0000000000..eba5a20217
2748 +++ b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d
2750 +#source: erratum843419_tls_ie.s
2752 +#ld: --fix-cortex-a53-843419 -e0 --section-start .e843419=0x20000000 -Ttext=0x400000 -Tdata=0x40000000
2756 +Disassembly of section .e843419:
2758 +0*20000000 <farbranch>:
2759 +[ ]*20000000: d10043ff sub sp, sp, #0x10
2760 +[ ]*20000004: d28001a7 mov x7, #0xd // #13
2761 +[ ]*20000008: b9000fe7 str w7, \[sp, #12\]
2762 +[ ]*2000000c: 140003fb b 20000ff8 <e843419>
2765 +0*20000ff8 <e843419>:
2766 +[ ]*20000ff8: d2a00000 movz x0, #0x0, lsl #16
2767 +[ ]*20000ffc: f800c007 stur x7, \[x0, #12\]
2768 +[ ]*20001000: d2800128 mov x8, #0x9 // #9
2769 +[ ]*20001004: f2800208 movk x8, #0x10
2770 +[ ]*20001008: 8b050020 add x0, x1, x5
2771 +[ ]*2000100c: b9400fe7 ldr w7, \[sp, #12\]
2772 +[ ]*20001010: 0b0700e0 add w0, w7, w7
2773 +[ ]*20001014: 910043ff add sp, sp, #0x10
2774 +[ ]*20001018: d65f03c0 ret
2775 +[ ]*2000101c: 00000000 .inst 0x00000000 ; undefined
2776 +[ ]*20001020: 14000400 b 20002020 <e843419\+0x1028>
2777 +[ ]*20001024: d503201f nop
2778 +[ ]*20001028: 00000000 .inst 0x00000000 ; undefined
2779 +[ ]*2000102c: 17fffff7 b 20001008 <e843419\+0x10>
2782 +Disassembly of section .text:
2785 +[ ]*400000: d10043ff sub sp, sp, #0x10
2786 +[ ]*400004: d28001a7 mov x7, #0xd // #13
2787 +[ ]*400008: b9000fe7 str w7, \[sp, #12\]
2788 +[ ]*40000c: 14000005 b 400020 <__farbranch_veneer>
2789 +[ ]*400010: d65f03c0 ret
2790 +[ ]*400014: d503201f nop
2791 +[ ]*400018: 14000400 b 401018 <__farbranch_veneer\+0xff8>
2792 +[ ]*40001c: d503201f nop
2794 +0*400020 <__farbranch_veneer>:
2795 +[ ]*400020: 900fe010 adrp x16, 20000000 <farbranch>
2796 +[ ]*400024: 91000210 add x16, x16, #0x0
2797 +[ ]*400028: d61f0200 br x16
2799 diff --git a/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s
2800 new file mode 100644
2801 index 0000000000..60322445c5
2803 +++ b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s
2808 + .type main, %function
2815 + .size main, .-main
2817 + .section .e843419, "xa"
2820 + .type farbranch, %function
2828 + adrp x0, :gottprel:l_tlsievar
2831 + str x8, [x0, :gottprel_lo12:l_tlsievar]
2838 + .size farbranch, .-farbranch
2842 + .section .tbss,"awT",%nobits
2844 + .type l_tlsievar, %object
2845 + .size l_tlsievar, 4
2848 diff --git a/ld/testsuite/ld-aarch64/ifunc-1-local.d b/ld/testsuite/ld-aarch64/ifunc-1-local.d
2849 index bcba0aa025..1783637865 100644
2850 --- a/ld/testsuite/ld-aarch64/ifunc-1-local.d
2851 +++ b/ld/testsuite/ld-aarch64/ifunc-1-local.d
2853 #target: aarch64*-*-*
2856 -0+(110|180) <__GI_foo>:
2857 +0+(110|180|1a0) <(__GI_)?foo>:
2859 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180)@plt>
2860 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180|0x1a0)@plt>
2862 diff --git a/ld/testsuite/ld-aarch64/ifunc-1.d b/ld/testsuite/ld-aarch64/ifunc-1.d
2863 index f408bfff78..0274ac0094 100644
2864 --- a/ld/testsuite/ld-aarch64/ifunc-1.d
2865 +++ b/ld/testsuite/ld-aarch64/ifunc-1.d
2867 #target: aarch64*-*-*
2871 +0+(130|1a0|1c8) <foo>:
2873 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt>
2874 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt>
2876 diff --git a/ld/testsuite/ld-aarch64/ifunc-2-local.d b/ld/testsuite/ld-aarch64/ifunc-2-local.d
2877 index fb1bb40e38..a3d9e15f8b 100644
2878 --- a/ld/testsuite/ld-aarch64/ifunc-2-local.d
2879 +++ b/ld/testsuite/ld-aarch64/ifunc-2-local.d
2881 #target: aarch64*-*-*
2884 -0+(110|180) <__GI_foo>:
2885 +0+(110|180|1a0) <__GI_foo>:
2887 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180)@plt>
2888 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180|1a0)@plt>
2889 [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*>
2890 -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170)
2891 +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170|190)
2893 diff --git a/ld/testsuite/ld-aarch64/ifunc-2.d b/ld/testsuite/ld-aarch64/ifunc-2.d
2894 index 16c75ead40..eb6fa0ccf0 100644
2895 --- a/ld/testsuite/ld-aarch64/ifunc-2.d
2896 +++ b/ld/testsuite/ld-aarch64/ifunc-2.d
2898 #target: aarch64*-*-*
2902 +0+(130|1a0|1c8) <foo>:
2904 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt>
2905 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt>
2906 [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*>
2907 -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190)
2908 +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190|1b8)
2910 diff --git a/ld/testsuite/ld-aarch64/ifunc-21.d b/ld/testsuite/ld-aarch64/ifunc-21.d
2911 index b501bd6712..a16186b587 100644
2912 --- a/ld/testsuite/ld-aarch64/ifunc-21.d
2913 +++ b/ld/testsuite/ld-aarch64/ifunc-21.d
2914 @@ -11,7 +11,7 @@ Contents of section .text:
2916 Contents of section .got.plt:
2917 [0-9a-f]+ 0+ 0+ 0+ 0+ .*
2918 - 10298 0+ 0+ [0-9a-f]+ [0-9a-f]+ .*
2919 + (10298|102b8) 0+ 0+ [0-9a-f]+ [0-9a-f]+ .*
2921 Disassembly of section .text:
2923 @@ -20,7 +20,7 @@ Disassembly of section .text:
2926 .*: 90000080 adrp x0, 10000 <.*>
2927 - .*: .* ldr x0, \[x0, #672\]
2928 + .*: .* ldr x0, \[x0, #(672|704)\]
2932 diff --git a/ld/testsuite/ld-aarch64/ifunc-3a.d b/ld/testsuite/ld-aarch64/ifunc-3a.d
2933 index a01a75c904..4919d96892 100644
2934 --- a/ld/testsuite/ld-aarch64/ifunc-3a.d
2935 +++ b/ld/testsuite/ld-aarch64/ifunc-3a.d
2937 #target: aarch64*-*-*
2940 -0+(150|1d0) <__GI_foo>:
2941 +0+(150|1d0|1e8) <__GI_foo>:
2943 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0)@plt>
2944 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0|1e8)@plt>
2946 diff --git a/ld/testsuite/ld-aarch64/ifunc-9.d b/ld/testsuite/ld-aarch64/ifunc-9.d
2947 index 3b4e995254..e921591275 100644
2948 --- a/ld/testsuite/ld-aarch64/ifunc-9.d
2949 +++ b/ld/testsuite/ld-aarch64/ifunc-9.d
2951 #ld: --export-dynamic
2952 -#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
2954 #target: aarch64*-*-*
2956 diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
2957 new file mode 100644
2958 index 0000000000..403f98000d
2960 +++ b/ld/testsuite/ld-elf/dummy.s
2963 diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
2964 new file mode 100644
2965 index 0000000000..d94abc1106
2967 +++ b/ld/testsuite/ld-elf/linux-x86.S
2971 + .type _start,@function
2979 +#elif defined __x86_64__
2998 + .type syscall, @function
3003 + movq %rdi, %rax /* Syscall number -> rax. */
3004 + movq %rsi, %rdi /* shift arg1 - arg5. */
3009 + movq 8(%rsp),%r9 /* arg6 is on the stack. */
3010 + syscall /* Do the system call. */
3016 + mov 0x2c(%esp),%ebp
3017 + mov 0x28(%esp),%edi
3018 + mov 0x24(%esp),%esi
3019 + mov 0x20(%esp),%edx
3020 + mov 0x1c(%esp),%ecx
3021 + mov 0x18(%esp),%ebx
3022 + mov 0x14(%esp),%eax
3029 + ret /* Return to caller. */
3030 + .size syscall, .-syscall
3031 + .section .note.GNU-stack,"",@progbits
3033 + .section ".note.gnu.property", "a"
3039 + .long 1f - 0f /* name length */
3040 + .long 5f - 2f /* data length */
3041 + .long 5 /* note type */
3042 +0: .asciz "GNU" /* vendor name */
3049 +2: .long 0xc0000002 /* pr_type. */
3050 + .long 4f - 3f /* pr_datasz. */
3060 diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
3061 new file mode 100644
3062 index 0000000000..f6f5a80853
3064 +++ b/ld/testsuite/ld-elf/linux-x86.exp
3066 +# Expect script for simple native Linux/x86 tests.
3067 +# Copyright (C) 2018 Free Software Foundation, Inc.
3069 +# This file is part of the GNU Binutils.
3071 +# This program is free software; you can redistribute it and/or modify
3072 +# it under the terms of the GNU General Public License as published by
3073 +# the Free Software Foundation; either version 3 of the License, or
3074 +# (at your option) any later version.
3076 +# This program is distributed in the hope that it will be useful,
3077 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
3078 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3079 +# GNU General Public License for more details.
3081 +# You should have received a copy of the GNU General Public License
3082 +# along with this program; if not, write to the Free Software
3083 +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
3084 +# MA 02110-1301, USA.
3087 +# Test very simple native Linux/x86 programs with linux-x86.S.
3088 +if { ![isnative] || [which $CC] == 0 \
3089 + || (![istarget "i?86-*-linux*"] \
3090 + && ![istarget "x86_64-*-linux*"] \
3091 + && ![istarget "amd64-*-linux*"]) } {
3095 +# Add $PLT_CFLAGS if PLT is expected.
3097 +# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
3098 +global NOPIE_CFLAGS NOPIE_LDFLAGS
3100 +run_ld_link_exec_tests [list \
3102 + "Run PR ld/23428 test" \
3103 + "--no-dynamic-linker -z separate-code" \
3105 + { linux-x86.S pr23428.c dummy.s } \
3108 + "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
3112 diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
3113 new file mode 100644
3114 index 0000000000..3631ed7926
3116 +++ b/ld/testsuite/ld-elf/pr23428.c
3118 +#include <unistd.h>
3120 +#include <syscall.h>
3122 +#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
3125 +main (int argc, char **argv)
3127 + char **ev = &argv[argc + 1];
3130 + const ElfW(Phdr) *phdr = NULL;
3132 + size_t loadnum = 0;
3133 + int fd = STDOUT_FILENO;
3136 + while (*evp++ != NULL)
3139 + av = (ElfW(auxv_t) *) evp;
3141 + for (; av->a_type != AT_NULL; ++av)
3142 + switch (av->a_type)
3145 + phdr = (const void *) av->a_un.a_val;
3148 + phnum = av->a_un.a_val;
3152 + for (i = 0; i < phnum; i++, phdr++)
3153 + if (phdr->p_type == PT_LOAD)
3156 + syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
3158 + syscall (SYS_exit, !loadnum);
3161 diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
3162 index b58139e9dd..3909c0eaa1 100644
3163 --- a/ld/testsuite/ld-elf/sec64k.exp
3164 +++ b/ld/testsuite/ld-elf/sec64k.exp
3165 @@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
3166 foreach sfile $sfiles { puts $ofd "#source: $sfile" }
3167 if { [istarget spu*-*-*] } {
3168 puts $ofd "#ld: --local-store 0:0"
3169 + } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
3170 + puts $ofd "#ld: -z noseparate-code"
3174 diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
3175 index ac9beff2e5..aba7d6b03f 100644
3176 --- a/ld/testsuite/ld-i386/abs-iamcu.d
3177 +++ b/ld/testsuite/ld-i386/abs-iamcu.d
3181 #as: --32 -march=iamcu
3183 +#ld: -m elf_iamcu -z noseparate-code
3184 #objdump: -rs -j .text
3187 diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
3188 index e660aca524..191ee4456a 100644
3189 --- a/ld/testsuite/ld-i386/abs.d
3190 +++ b/ld/testsuite/ld-i386/abs.d
3196 +#ld: -melf_i386 -z noseparate-code
3200 diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
3201 index 6d794fe653..56c95367e1 100644
3202 --- a/ld/testsuite/ld-i386/i386.exp
3203 +++ b/ld/testsuite/ld-i386/i386.exp
3204 @@ -462,6 +462,9 @@ run_dump_test "pr23189"
3205 run_dump_test "pr23194"
3206 run_dump_test "pr23372a"
3207 run_dump_test "pr23372b"
3208 +run_dump_test "pr23486a"
3209 +run_dump_test "pr23486b"
3210 +run_dump_test "pr23854"
3212 if { !([istarget "i?86-*-linux*"]
3213 || [istarget "i?86-*-gnu*"]
3214 diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
3215 index ec51540a42..7eba52d95e 100644
3216 --- a/ld/testsuite/ld-i386/pr12718.d
3217 +++ b/ld/testsuite/ld-i386/pr12718.d
3222 +#ld: -melf_i386 -z noseparate-code
3225 There are 5 section headers, starting at offset 0x[0-9a-f]+:
3226 diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
3227 index e49079b3c8..ea2da3eb51 100644
3228 --- a/ld/testsuite/ld-i386/pr12921.d
3229 +++ b/ld/testsuite/ld-i386/pr12921.d
3234 +#ld: -melf_i386 -z noseparate-code
3237 There are 7 section headers, starting at offset 0x[0-9a-f]+:
3238 diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
3239 new file mode 100644
3240 index 0000000000..41a6dcf7d5
3242 +++ b/ld/testsuite/ld-i386/pr23486a.d
3244 +#source: ../ld-x86-64/pr23486a.s
3245 +#source: ../ld-x86-64/pr23486b.s
3247 +#ld: -r -m elf_i386
3250 +Displaying notes found in: .note.gnu.property
3251 + Owner Data size Description
3252 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3253 + Properties: x86 ISA needed: i486, 586
3254 diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
3255 new file mode 100644
3256 index 0000000000..08019b7274
3258 +++ b/ld/testsuite/ld-i386/pr23486b.d
3260 +#source: ../ld-x86-64/pr23486b.s
3261 +#source: ../ld-x86-64/pr23486a.s
3263 +#ld: -r -m elf_i386
3266 +Displaying notes found in: .note.gnu.property
3267 + Owner Data size Description
3268 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3269 + Properties: x86 ISA needed: i486, 586
3270 diff --git a/ld/testsuite/ld-i386/pr23854.d b/ld/testsuite/ld-i386/pr23854.d
3271 new file mode 100644
3272 index 0000000000..3ed9c206e5
3274 +++ b/ld/testsuite/ld-i386/pr23854.d
3276 +#as: --32 -mrelax-relocations=yes
3280 +.*: +file format .*
3282 +Disassembly of section .text:
3284 +[a-f0-9]+ <_start>:
3285 + +[a-f0-9]+: 66 13 81 f8 ff ff ff adc -0x8\(%ecx\),%ax
3286 + +[a-f0-9]+: 66 03 99 f8 ff ff ff add -0x8\(%ecx\),%bx
3287 + +[a-f0-9]+: 66 23 89 f8 ff ff ff and -0x8\(%ecx\),%cx
3288 + +[a-f0-9]+: 66 3b 91 f8 ff ff ff cmp -0x8\(%ecx\),%dx
3289 + +[a-f0-9]+: 66 0b b9 f8 ff ff ff or -0x8\(%ecx\),%di
3290 + +[a-f0-9]+: 66 1b b1 f8 ff ff ff sbb -0x8\(%ecx\),%si
3291 + +[a-f0-9]+: 66 2b a9 f8 ff ff ff sub -0x8\(%ecx\),%bp
3292 + +[a-f0-9]+: 66 33 a1 f8 ff ff ff xor -0x8\(%ecx\),%sp
3293 + +[a-f0-9]+: 66 85 89 f8 ff ff ff test %cx,-0x8\(%ecx\)
3294 + +[a-f0-9]+: 66 13 81 fc ff ff ff adc -0x4\(%ecx\),%ax
3295 + +[a-f0-9]+: 66 03 99 fc ff ff ff add -0x4\(%ecx\),%bx
3296 + +[a-f0-9]+: 66 23 89 fc ff ff ff and -0x4\(%ecx\),%cx
3297 + +[a-f0-9]+: 66 3b 91 fc ff ff ff cmp -0x4\(%ecx\),%dx
3298 + +[a-f0-9]+: 66 0b b9 fc ff ff ff or -0x4\(%ecx\),%di
3299 + +[a-f0-9]+: 66 1b b1 fc ff ff ff sbb -0x4\(%ecx\),%si
3300 + +[a-f0-9]+: 66 2b a9 fc ff ff ff sub -0x4\(%ecx\),%bp
3301 + +[a-f0-9]+: 66 33 a1 fc ff ff ff xor -0x4\(%ecx\),%sp
3302 + +[a-f0-9]+: 66 85 89 fc ff ff ff test %cx,-0x4\(%ecx\)
3304 diff --git a/ld/testsuite/ld-i386/pr23854.s b/ld/testsuite/ld-i386/pr23854.s
3305 new file mode 100644
3306 index 0000000000..565e747be0
3308 +++ b/ld/testsuite/ld-i386/pr23854.s
3311 + .type bar, @object
3316 + .type foo, @object
3322 + .type _start, @function
3324 + adcw bar@GOT(%ecx), %ax
3325 + addw bar@GOT(%ecx), %bx
3326 + andw bar@GOT(%ecx), %cx
3327 + cmpw bar@GOT(%ecx), %dx
3328 + orw bar@GOT(%ecx), %di
3329 + sbbw bar@GOT(%ecx), %si
3330 + subw bar@GOT(%ecx), %bp
3331 + xorw bar@GOT(%ecx), %sp
3332 + testw %cx, bar@GOT(%ecx)
3333 + adcw foo@GOT(%ecx), %ax
3334 + addw foo@GOT(%ecx), %bx
3335 + andw foo@GOT(%ecx), %cx
3336 + cmpw foo@GOT(%ecx), %dx
3337 + orw foo@GOT(%ecx), %di
3338 + sbbw foo@GOT(%ecx), %si
3339 + subw foo@GOT(%ecx), %bp
3340 + xorw foo@GOT(%ecx), %sp
3341 + testw %cx, foo@GOT(%ecx)
3342 + .size _start, .-_start
3343 diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
3344 index 0ed91f5922..d03203c1e5 100644
3345 --- a/ld/testsuite/ld-i386/property-3.r
3346 +++ b/ld/testsuite/ld-i386/property-3.r
3347 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3348 Owner Data size Description
3349 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3350 Properties: stack size: 0x800000
3351 - x86 ISA used: 586, SSE
3352 x86 ISA needed: i486, 586
3354 diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
3355 index cb2bc15d9a..da295eb6c7 100644
3356 --- a/ld/testsuite/ld-i386/property-4.r
3357 +++ b/ld/testsuite/ld-i386/property-4.r
3358 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3359 Owner Data size Description
3360 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3361 Properties: stack size: 0x800000
3362 - x86 ISA used: i486, 586, SSE
3363 x86 ISA needed: i486, 586, SSE
3365 diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
3366 index 552965058c..e4141594b3 100644
3367 --- a/ld/testsuite/ld-i386/property-5.r
3368 +++ b/ld/testsuite/ld-i386/property-5.r
3369 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3370 Owner Data size Description
3371 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3372 Properties: stack size: 0x900000
3373 - x86 ISA used: i486, 586, SSE
3374 x86 ISA needed: i486, 586, SSE
3376 diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
3377 index 4bb35b00fb..0aedea1614 100644
3378 --- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
3379 +++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
3382 Displaying notes found in: .note.gnu.property
3383 Owner Data size Description
3384 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3385 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3386 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3387 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3388 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3389 diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
3390 index 418d58a8f7..bd69ac6478 100644
3391 --- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
3392 +++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
3395 Displaying notes found in: .note.gnu.property
3396 Owner Data size Description
3397 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3398 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3399 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3400 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3401 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3402 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
3403 index e261038f60..76d2a39f2c 100644
3404 --- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
3405 +++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
3408 Displaying notes found in: .note.gnu.property
3409 Owner Data size Description
3410 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3411 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3412 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3413 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3414 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3415 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
3416 index 25f3d2361e..e770ecffa5 100644
3417 --- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
3418 +++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
3421 Displaying notes found in: .note.gnu.property
3422 Owner Data size Description
3423 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3424 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3425 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3426 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3427 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3428 diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
3429 index 612d91402f..86892b96b5 100644
3430 --- a/ld/testsuite/ld-ifunc/ifunc.exp
3431 +++ b/ld/testsuite/ld-ifunc/ifunc.exp
3432 @@ -713,7 +713,7 @@ run_ld_link_exec_tests [list \
3433 # That does not happen for the pr23169 testcase where the resolver is
3434 # in the executable (which is relocated last by ld.so).
3436 - && ![istarget "powerpc-*-*"] } {
3437 + && !([istarget "powerpc-*-*"] || [istarget "aarch64*-*-*"]) } {
3438 run_ld_link_exec_tests [list \
3441 diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
3442 index b22eaa12c9..f89855a08f 100644
3443 --- a/ld/testsuite/ld-linkonce/zeroeh.ld
3444 +++ b/ld/testsuite/ld-linkonce/zeroeh.ld
3445 @@ -2,4 +2,5 @@ SECTIONS {
3446 .text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
3447 .gcc_except_table 0x2000 : { *(.gcc_except_table) }
3448 .eh_frame 0x4000 : { *(.eh_frame) }
3449 + /DISCARD/ : { *(.note.gnu.property) }
3451 diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
3452 index 7c50b0f102..4ce74f2587 100644
3453 --- a/ld/testsuite/ld-plugin/lto.exp
3454 +++ b/ld/testsuite/ld-plugin/lto.exp
3455 @@ -219,6 +219,12 @@ set lto_link_tests [list \
3456 [list "Build pr22751.a" \
3457 "$plug_opt" "-flto $lto_no_fat $INT128_CFLAGS" \
3458 {pr22751.c} {} "pr22751.a"] \
3459 + [list "Build libpr23818.so" \
3460 + "-shared -flto -g -Wl,-version-script,pr23818.t" \
3461 + "-g -flto $lto_fat" \
3462 + {pr23818a.c pr23818b.c} \
3463 + {{"readelf" {-s --wide} "pr23818.d"}} \
3464 + "libpr23818.so"] \
3467 if { [at_least_gcc_version 4 7] } {
3468 diff --git a/ld/testsuite/ld-plugin/pr23818.d b/ld/testsuite/ld-plugin/pr23818.d
3469 new file mode 100644
3470 index 0000000000..5753cd64fd
3472 +++ b/ld/testsuite/ld-plugin/pr23818.d
3476 +.*0+ +[A-Z]+ +GLOBAL +DEFAULT +ABS foo
3478 diff --git a/ld/testsuite/ld-plugin/pr23818.t b/ld/testsuite/ld-plugin/pr23818.t
3479 new file mode 100644
3480 index 0000000000..45bca5580e
3482 +++ b/ld/testsuite/ld-plugin/pr23818.t
3488 diff --git a/ld/testsuite/ld-plugin/pr23818a.c b/ld/testsuite/ld-plugin/pr23818a.c
3489 new file mode 100644
3490 index 0000000000..5b5ccbf7cb
3492 +++ b/ld/testsuite/ld-plugin/pr23818a.c
3498 diff --git a/ld/testsuite/ld-plugin/pr23818b.c b/ld/testsuite/ld-plugin/pr23818b.c
3499 new file mode 100644
3500 index 0000000000..d4be333a39
3502 +++ b/ld/testsuite/ld-plugin/pr23818b.c
3511 diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
3512 index 0359ba28cb..5ec3850787 100644
3513 --- a/ld/testsuite/ld-powerpc/powerpc.exp
3514 +++ b/ld/testsuite/ld-powerpc/powerpc.exp
3515 @@ -221,7 +221,7 @@ set ppc64elftests {
3517 {"TLS DLL" "-shared -melf64ppc --version-script tlsdll.ver" "" "-a64" {tlsdll.s}
3519 - {"TLS opt 5" "-melf64ppc --no-plt-align -shared --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
3520 + {"TLS opt 5" "-melf64ppc -shared --hash-style=both --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
3521 {{objdump -dr tlsopt5.d} {readelf -wf tlsopt5.wf}}
3523 {"sym@tocbase" "-shared -melf64ppc" "" "-a64" {symtocbase-1.s symtocbase-2.s}
3524 @@ -328,6 +328,7 @@ if [ supports_ppc64 ] then {
3525 run_dump_test "dotsym2"
3526 run_dump_test "dotsym3"
3527 run_dump_test "dotsym4"
3528 + run_dump_test "pr23937"
3531 run_dump_test "tlsld32"
3532 diff --git a/ld/testsuite/ld-powerpc/pr23937.d b/ld/testsuite/ld-powerpc/pr23937.d
3533 new file mode 100644
3534 index 0000000000..6ef79e81cf
3536 +++ b/ld/testsuite/ld-powerpc/pr23937.d
3539 +#ld: -melf64ppc --defsym puts=0 --defsym _start=0
3541 +# Check that the IRELATIVE addend is magic+0, not magic+8
3544 +.* R_PPC64_IRELATIVE +10000180
3546 +.*: 0+10000180 +20 IFUNC +LOCAL +DEFAULT .* magic
3548 diff --git a/ld/testsuite/ld-powerpc/pr23937.s b/ld/testsuite/ld-powerpc/pr23937.s
3549 new file mode 100644
3550 index 0000000000..155e53adb7
3552 +++ b/ld/testsuite/ld-powerpc/pr23937.s
3557 + .type implementation, @function
3560 + addis 2,12,.TOC.-.LCF0@ha
3561 + addi 2,2,.TOC.-.LCF0@l
3562 + .localentry implementation,.-implementation
3564 + addis 3,2,.LC0@toc@ha
3565 + addi 3,3,.LC0@toc@l
3575 + .size implementation,.-implementation
3578 + .type resolver, @function
3581 + addis 2,12,.TOC.-.LCF1@ha
3582 + addi 2,2,.TOC.-.LCF1@l
3583 + .localentry resolver,.-resolver
3584 + addis 3,2,implementation@toc@ha
3585 + addi 3,3,implementation@toc@l
3587 + .size resolver,.-resolver
3589 + .type magic, @gnu_indirect_function
3590 + .set magic,resolver
3592 + .section .text.startup,"ax",@progbits
3595 + .type main, @function
3598 + addis 2,12,.TOC.-.LCF2@ha
3599 + addi 2,2,.TOC.-.LCF2@l
3600 + .localentry main,.-main
3615 + .section .rodata.str1.8,"aMS",@progbits,1
3618 + .string "'ere I am JH"
3619 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d
3620 index 4521a9b427..4caf1832ea 100644
3621 --- a/ld/testsuite/ld-powerpc/tlsopt5.d
3622 +++ b/ld/testsuite/ld-powerpc/tlsopt5.d
3625 Disassembly of section \.text:
3627 +.* <.*\.plt_call\.foo>:
3628 +.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
3629 +.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\)
3630 +.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
3631 +.*: (20 04 80 4e|4e 80 04 20) bctr
3634 .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>:
3635 .*: (00 00 63 e9|e9 63 00 00) ld r11,0\(r3\)
3636 .*: (08 00 83 e9|e9 83 00 08) ld r12,8\(r3\)
3637 @@ -19,17 +26,21 @@ Disassembly of section \.text:
3638 .*: (a6 02 68 7d|7d 68 02 a6) mflr r11
3639 .*: (08 00 61 f9|f9 61 00 08) std r11,8\(r1\)
3640 .*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
3641 -.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\)
3642 +.*: (30 80 82 e9|e9 82 80 30) ld r12,-32720\(r2\)
3643 .*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
3644 .*: (21 04 80 4e|4e 80 04 21) bctrl
3645 .*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
3646 .*: (08 00 61 e9|e9 61 00 08) ld r11,8\(r1\)
3647 .*: (a6 03 68 7d|7d 68 03 a6) mtlr r11
3648 .*: (20 00 80 4e|4e 80 00 20) blr
3652 .*: (08 80 62 38|38 62 80 08) addi r3,r2,-32760
3653 -.*: (b9 ff ff 4b|4b ff ff b9) bl .*
3654 +.*: (9d ff ff 4b|4b ff ff 9d) bl .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>
3655 +.*: (00 00 00 60|60 00 00 00) nop
3656 +.*: (75 ff ff 4b|4b ff ff 75) bl .* <.*\.plt_call\.foo>
3657 +.*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
3658 .*: (00 00 00 60|60 00 00 00) nop
3661 @@ -50,5 +61,8 @@ Disassembly of section \.text:
3662 .*: (08 00 6b e9|e9 6b 00 08) ld r11,8\(r11\)
3663 .*: (20 04 80 4e|4e 80 04 20) bctr
3666 +.* (c8 ff ff 4b|4b ff ff c8) b .*
3668 .* <__tls_get_addr_opt@plt>:
3669 -.*: (c8 ff ff 4b|4b ff ff c8) b .*
3670 +.*: (c4 ff ff 4b|4b ff ff c4) b .*
3671 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.s b/ld/testsuite/ld-powerpc/tlsopt5.s
3672 index 70902ef96a..7cb82db1f6 100644
3673 --- a/ld/testsuite/ld-powerpc/tlsopt5.s
3674 +++ b/ld/testsuite/ld-powerpc/tlsopt5.s
3680 addi 3,2,gd@got@tlsgd
3681 bl __tls_get_addr(gd@tlsgd)
3686 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.wf b/ld/testsuite/ld-powerpc/tlsopt5.wf
3687 index af8cb76d1c..f0453610e0 100644
3688 --- a/ld/testsuite/ld-powerpc/tlsopt5.wf
3689 +++ b/ld/testsuite/ld-powerpc/tlsopt5.wf
3690 @@ -7,11 +7,10 @@ Contents of the \.eh_frame section:
3691 Data alignment factor: -8
3692 Return address column: 65
3693 Augmentation data: 1b
3695 DW_CFA_def_cfa: r1 ofs 0
3697 0+14 0+14 0+18 FDE cie=0+ pc=.*
3698 - DW_CFA_advance_loc: 48 to .*
3699 + DW_CFA_advance_loc: 80 to .*
3700 DW_CFA_offset_extended_sf: r65 at cfa\+8
3701 DW_CFA_advance_loc: 16 to .*
3702 DW_CFA_restore_extended: r65
3703 diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
3704 index 5ff057a5e3..6eda1d2dc4 100644
3705 --- a/ld/testsuite/ld-scripts/print-memory-usage.t
3706 +++ b/ld/testsuite/ld-scripts/print-memory-usage.t
3707 @@ -11,4 +11,6 @@ SECTIONS
3712 + /DISCARD/ : { *(.note.gnu.property) }
3714 diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
3715 index 723863995e..c3c4eddab4 100644
3716 --- a/ld/testsuite/ld-scripts/size-2.t
3717 +++ b/ld/testsuite/ld-scripts/size-2.t
3718 @@ -18,4 +18,5 @@ SECTIONS
3719 LONG (SIZEOF (.tdata))
3720 LONG (SIZEOF (.tbss))
3722 + /DISCARD/ : { *(.note.gnu.property) }
3724 diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
3725 index 2c26639fc0..6b0fde0eed 100644
3726 --- a/ld/testsuite/ld-x86-64/abs-k1om.d
3727 +++ b/ld/testsuite/ld-x86-64/abs-k1om.d
3729 #source: ../ld-i386/abs.s
3730 #source: ../ld-i386/zero.s
3731 #as: --64 -march=k1om
3733 +#ld: -m elf_k1om -z noseparate-code
3734 #objdump: -rs -j .text
3737 diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
3738 index 1fb96d44b7..f87869f9d0 100644
3739 --- a/ld/testsuite/ld-x86-64/abs-l1om.d
3740 +++ b/ld/testsuite/ld-x86-64/abs-l1om.d
3742 #source: ../ld-i386/abs.s
3743 #source: ../ld-i386/zero.s
3744 #as: --64 -march=l1om
3746 +#ld: -m elf_l1om -z noseparate-code
3747 #objdump: -rs -j .text
3748 #target: x86_64-*-linux*
3750 diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
3751 index b24b018639..d99ab4685d 100644
3752 --- a/ld/testsuite/ld-x86-64/abs.d
3753 +++ b/ld/testsuite/ld-x86-64/abs.d
3755 #name: Absolute non-overflowing relocs
3756 #source: ../ld-i386/abs.s
3757 #source: ../ld-i386/zero.s
3759 +#ld: -z noseparate-code
3763 diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
3764 index 07d17325d0..2c503ffbaa 100644
3765 --- a/ld/testsuite/ld-x86-64/pr12718.d
3766 +++ b/ld/testsuite/ld-x86-64/pr12718.d
3771 +#ld: -melf_x86_64 -z noseparate-code
3774 There are 5 section headers, starting at offset 0x[0-9a-f]+:
3775 diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
3776 index 6fe6abee09..1162d55818 100644
3777 --- a/ld/testsuite/ld-x86-64/pr12921.d
3778 +++ b/ld/testsuite/ld-x86-64/pr12921.d
3783 +#ld: -melf_x86_64 -z noseparate-code
3786 There are 7 section headers, starting at offset 0x[0-9a-f]+:
3787 diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
3788 new file mode 100644
3789 index 0000000000..6d9fa68cdb
3791 +++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
3793 +#source: pr23486a.s
3794 +#source: pr23486b.s
3796 +#ld: -r -m elf32_x86_64
3799 +Displaying notes found in: .note.gnu.property
3800 + Owner Data size Description
3801 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3802 + Properties: x86 ISA needed: i486, 586
3803 diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
3804 new file mode 100644
3805 index 0000000000..dc2b7bf760
3807 +++ b/ld/testsuite/ld-x86-64/pr23486a.d
3809 +#source: pr23486a.s
3810 +#source: pr23486b.s
3811 +#as: --64 -defsym __64_bit__=1
3812 +#ld: -r -m elf_x86_64
3815 +Displaying notes found in: .note.gnu.property
3816 + Owner Data size Description
3817 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3818 + Properties: x86 ISA needed: i486, 586
3819 diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
3820 new file mode 100644
3821 index 0000000000..a07d0c7ced
3823 +++ b/ld/testsuite/ld-x86-64/pr23486a.s
3825 + .section ".note.gnu.property", "a"
3831 + .long 1f - 0f /* name length. */
3832 + .long 4f - 1f /* data length. */
3833 + /* NT_GNU_PROPERTY_TYPE_0 */
3834 + .long 5 /* note type. */
3836 + .asciz "GNU" /* vendor name. */
3843 + /* GNU_PROPERTY_X86_ISA_1_USED */
3844 + .long 0xc0000000 /* pr_type. */
3845 + .long 3f - 2f /* pr_datasz. */
3855 diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
3856 new file mode 100644
3857 index 0000000000..0445e69d82
3859 +++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
3861 +#source: pr23486b.s
3862 +#source: pr23486a.s
3864 +#ld: -r -m elf32_x86_64
3867 +Displaying notes found in: .note.gnu.property
3868 + Owner Data size Description
3869 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3870 + Properties: x86 ISA needed: i486, 586
3871 diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
3872 new file mode 100644
3873 index 0000000000..dd0fe88143
3875 +++ b/ld/testsuite/ld-x86-64/pr23486b.d
3877 +#source: pr23486b.s
3878 +#source: pr23486a.s
3879 +#as: --64 -defsym __64_bit__=1
3880 +#ld: -r -m elf_x86_64
3883 +Displaying notes found in: .note.gnu.property
3884 + Owner Data size Description
3885 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3886 + Properties: x86 ISA needed: i486, 586
3887 diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
3888 new file mode 100644
3889 index 0000000000..c5167eeb65
3891 +++ b/ld/testsuite/ld-x86-64/pr23486b.s
3893 + .section ".note.gnu.property", "a"
3899 + .long 1f - 0f /* name length. */
3900 + .long 4f - 1f /* data length. */
3901 + /* NT_GNU_PROPERTY_TYPE_0 */
3902 + .long 5 /* note type. */
3904 + .asciz "GNU" /* vendor name. */
3911 + /* GNU_PROPERTY_X86_ISA_1_NEEDED */
3912 + .long 0xc0000001 /* pr_type. */
3913 + .long 3f - 2f /* pr_datasz. */
3923 diff --git a/ld/testsuite/ld-x86-64/pr23854.d b/ld/testsuite/ld-x86-64/pr23854.d
3924 new file mode 100644
3925 index 0000000000..95770d3cef
3927 +++ b/ld/testsuite/ld-x86-64/pr23854.d
3929 +#as: --64 -mrelax-relocations=yes
3933 +.*: +file format .*
3935 +Disassembly of section .text:
3937 +[a-f0-9]+ <_start>:
3938 + +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got>
3939 + +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got>
3940 + +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got>
3941 + +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got>
3942 + +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got>
3943 + +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got>
3944 + +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got>
3945 + +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got>
3946 + +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got>
3947 + +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got\+0x8>
3948 + +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got\+0x8>
3949 + +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got\+0x8>
3950 + +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got\+0x8>
3951 + +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got\+0x8>
3952 + +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got\+0x8>
3953 + +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got\+0x8>
3954 + +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got\+0x8>
3955 + +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got\+0x8>
3957 diff --git a/ld/testsuite/ld-x86-64/pr23854.s b/ld/testsuite/ld-x86-64/pr23854.s
3958 new file mode 100644
3959 index 0000000000..b720154fb2
3961 +++ b/ld/testsuite/ld-x86-64/pr23854.s
3964 + .type bar, @object
3969 + .type foo, @object
3975 + .type _start, @function
3977 + adcw bar@GOTPCREL(%rip), %ax
3978 + addw bar@GOTPCREL(%rip), %bx
3979 + andw bar@GOTPCREL(%rip), %cx
3980 + cmpw bar@GOTPCREL(%rip), %dx
3981 + orw bar@GOTPCREL(%rip), %di
3982 + sbbw bar@GOTPCREL(%rip), %si
3983 + subw bar@GOTPCREL(%rip), %bp
3984 + xorw bar@GOTPCREL(%rip), %r8w
3985 + testw %cx, bar@GOTPCREL(%rip)
3986 + adcw foo@GOTPCREL(%rip), %ax
3987 + addw foo@GOTPCREL(%rip), %bx
3988 + andw foo@GOTPCREL(%rip), %cx
3989 + cmpw foo@GOTPCREL(%rip), %dx
3990 + orw foo@GOTPCREL(%rip), %di
3991 + sbbw foo@GOTPCREL(%rip), %si
3992 + subw foo@GOTPCREL(%rip), %bp
3993 + xorw foo@GOTPCREL(%rip), %r8w
3994 + testw %cx, foo@GOTPCREL(%rip)
3995 + .size _start, .-_start
3996 diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
3997 index 0ed91f5922..d03203c1e5 100644
3998 --- a/ld/testsuite/ld-x86-64/property-3.r
3999 +++ b/ld/testsuite/ld-x86-64/property-3.r
4000 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
4001 Owner Data size Description
4002 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
4003 Properties: stack size: 0x800000
4004 - x86 ISA used: 586, SSE
4005 x86 ISA needed: i486, 586
4007 diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
4008 index cb2bc15d9a..da295eb6c7 100644
4009 --- a/ld/testsuite/ld-x86-64/property-4.r
4010 +++ b/ld/testsuite/ld-x86-64/property-4.r
4011 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
4012 Owner Data size Description
4013 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
4014 Properties: stack size: 0x800000
4015 - x86 ISA used: i486, 586, SSE
4016 x86 ISA needed: i486, 586, SSE
4018 diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
4019 index 552965058c..e4141594b3 100644
4020 --- a/ld/testsuite/ld-x86-64/property-5.r
4021 +++ b/ld/testsuite/ld-x86-64/property-5.r
4022 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
4023 Owner Data size Description
4024 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
4025 Properties: stack size: 0x900000
4026 - x86 ISA used: i486, 586, SSE
4027 x86 ISA needed: i486, 586, SSE
4029 diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s
4030 index be8cc9efb1..239cf622ff 100644
4031 --- a/ld/testsuite/ld-x86-64/property-x86-3.s
4032 +++ b/ld/testsuite/ld-x86-64/property-x86-3.s
4036 .section ".note.gnu.property", "a"
4042 .long 1f - 0f /* name length. */
4043 .long 3f - 1f /* data length. */
4044 /* NT_GNU_PROPERTY_TYPE_0 */
4045 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
4046 index 011426f5a4..4cec728dc7 100644
4047 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
4048 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
4051 Displaying notes found in: .note.gnu.property
4052 Owner Data size Description
4053 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
4054 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4055 - x86 ISA needed: i486, 586, SSE2, SSE3
4056 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
4057 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4058 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
4059 index 1b4229a037..a8df49a351 100644
4060 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
4061 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
4064 Displaying notes found in: .note.gnu.property
4065 Owner Data size Description
4066 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
4067 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4068 - x86 ISA needed: i486, 586, SSE2, SSE3
4069 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
4070 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4071 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
4072 index 290ed6abf1..c112626711 100644
4073 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
4074 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
4077 Displaying notes found in: .note.gnu.property
4078 Owner Data size Description
4079 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
4080 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4081 - x86 ISA needed: i486, 586, SSE2, SSE3
4082 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
4083 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4084 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
4085 index 1142e03272..f10dffdc2c 100644
4086 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
4087 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
4090 Displaying notes found in: .note.gnu.property
4091 Owner Data size Description
4092 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
4093 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4094 - x86 ISA needed: i486, 586, SSE2, SSE3
4095 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
4096 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4097 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
4098 index 819542d181..0147a3c7b6 100644
4099 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
4100 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
4103 Displaying notes found in: .note.gnu.property
4104 Owner Data size Description
4105 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
4106 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4107 - x86 ISA needed: i486, 586, SSE2, SSE3
4108 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
4109 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4110 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
4111 index 4c5d0e0a18..1f8c2dc929 100644
4112 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
4113 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
4116 Displaying notes found in: .note.gnu.property
4117 Owner Data size Description
4118 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
4119 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4120 - x86 ISA needed: i486, 586, SSE2, SSE3
4121 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
4122 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4123 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
4124 index ba181e0bc5..7ca2539ca5 100644
4125 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
4126 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
4129 Displaying notes found in: .note.gnu.property
4130 Owner Data size Description
4131 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
4132 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4133 - x86 ISA needed: i486, 586, SSE2, SSE3
4134 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
4135 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4136 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4137 index 5216f385dd..f66a40e449 100644
4138 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4139 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4142 Displaying notes found in: .note.gnu.property
4143 Owner Data size Description
4144 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
4145 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4146 - x86 ISA needed: i486, 586, SSE2, SSE3
4147 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
4148 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4149 diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
4150 index 6edb9e86f4..9abafd2765 100644
4151 --- a/ld/testsuite/ld-x86-64/x86-64.exp
4152 +++ b/ld/testsuite/ld-x86-64/x86-64.exp
4153 @@ -403,6 +403,11 @@ run_dump_test "pr23372a"
4154 run_dump_test "pr23372a-x32"
4155 run_dump_test "pr23372b"
4156 run_dump_test "pr23372b-x32"
4157 +run_dump_test "pr23486a"
4158 +run_dump_test "pr23486a-x32"
4159 +run_dump_test "pr23486b"
4160 +run_dump_test "pr23486b-x32"
4161 +run_dump_test "pr23854"
4163 if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
4165 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
4166 index cfbefe9028..1095091882 100644
4167 --- a/ld/testsuite/lib/ld-lib.exp
4168 +++ b/ld/testsuite/lib/ld-lib.exp
4169 @@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
4173 - if { [ string match "c++" $lang ] } {
4174 + if { [ string match "asm" $lang ] } {
4175 + set link_proc ld_link
4177 + } elseif { [ string match "c++" $lang ] } {
4178 set link_proc ld_link
4181 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
4182 index d04963a9fa..8f89565935 100644
4183 --- a/opcodes/ChangeLog
4184 +++ b/opcodes/ChangeLog
4186 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
4188 + * arm-dis.c (UNKNOWN_INSTRUCTION_32BIT): Format specifier for arm mode.
4189 + (UNKNOWN_INSTRUCTION_16BIT): Format specifier for thumb mode.
4190 + (print_insn_arm, print_insn_thumb16, print_insn_thumb32): Use them.
4192 +2018-10-16 Matthew Malcomson <matthew.malcomson@arm.com>
4194 + * aarch64-opc.c (struct operand_qualifier_data): Change qualifier data
4195 + corresponding to AARCH64_OPND_QLF_S_4B qualifier.
4197 +2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
4199 + * i386-dis.c (rm_table): Add enclv.
4200 + * i386-opc.tbl: Add enclv.
4201 + * i386-tbl.h: Regenerated.
4203 +2018-07-18 H.J. Lu <hongjiu.lu@intel.com>
4206 + * i386-opc.h (Byte): Update comments.
4208 + (Dword): Likewise.
4209 + (Fword): Likewise.
4210 + (Qword): Likewise.
4211 + (Tbyte): Likewise.
4212 + (Xmmword): Likewise.
4213 + (Ymmword): Likewise.
4214 + (Zmmword): Likewise.
4215 + * i386-opc.tbl: Split vcvtps2qq, vcvtps2uqq, vcvttps2qq and
4217 + * i386-tbl.h: Regenerated.
4219 2018-07-18 Nick Clifton <nickc@redhat.com>
4221 2.31.1 Release point.
4222 diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
4223 index ba2af7bfc2..e59240c98d 100644
4224 --- a/opcodes/aarch64-opc.c
4225 +++ b/opcodes/aarch64-opc.c
4226 @@ -698,7 +698,7 @@ struct operand_qualifier_data aarch64_opnd_qualifiers[] =
4227 {4, 1, 0x2, "s", OQK_OPD_VARIANT},
4228 {8, 1, 0x3, "d", OQK_OPD_VARIANT},
4229 {16, 1, 0x4, "q", OQK_OPD_VARIANT},
4230 - {1, 4, 0x0, "4b", OQK_OPD_VARIANT},
4231 + {4, 1, 0x0, "4b", OQK_OPD_VARIANT},
4233 {1, 4, 0x0, "4b", OQK_OPD_VARIANT},
4234 {1, 8, 0x0, "8b", OQK_OPD_VARIANT},
4235 @@ -2501,6 +2501,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx,
4238 num = num / aarch64_get_qualifier_esize (qualifier) - 1;
4239 + assert (aarch64_get_qualifier_nelem (qualifier) == 1);
4241 /* Index out-of-range. */
4242 if (!value_in_range_p (opnd->reglane.index, 0, num))
4243 diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
4244 index b6cccc5233..bc97bc2617 100644
4245 --- a/opcodes/arm-dis.c
4246 +++ b/opcodes/arm-dis.c
4247 @@ -141,6 +141,8 @@ enum opcode_sentinel_enum
4250 #define UNDEFINED_INSTRUCTION "\t\t; <UNDEFINED> instruction: %0-31x"
4251 +#define UNKNOWN_INSTRUCTION_32BIT "\t\t; <UNDEFINED> instruction: %08x"
4252 +#define UNKNOWN_INSTRUCTION_16BIT "\t\t; <UNDEFINED> instruction: %04x"
4253 #define UNPREDICTABLE_INSTRUCTION "\t; <UNPREDICTABLE>"
4255 /* Common coprocessor opcodes shared between Arm and Thumb-2. */
4256 @@ -5188,7 +5190,8 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
4261 + func (stream, UNKNOWN_INSTRUCTION_32BIT, (unsigned)given);
4265 /* Print one 16-bit Thumb instruction from PC on INFO->STREAM. */
4266 @@ -5459,7 +5462,8 @@ print_insn_thumb16 (bfd_vma pc, struct disassemble_info *info, long given)
4271 + func (stream, UNKNOWN_INSTRUCTION_16BIT, (unsigned)given);
4275 /* Return the name of an V7M special register. */
4276 @@ -6083,7 +6087,8 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
4281 + func (stream, UNKNOWN_INSTRUCTION_32BIT, (unsigned)given);
4285 /* Print data bytes on INFO->STREAM. */
4286 diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
4287 index 42d219cb11..78436879fb 100644
4288 --- a/opcodes/i386-dis.c
4289 +++ b/opcodes/i386-dis.c
4290 @@ -12321,7 +12321,7 @@ static const struct dis386 rm_table[][8] = {
4295 + { "enclv", { Skip_MODRM }, 0 },
4296 { "vmcall", { Skip_MODRM }, 0 },
4297 { "vmlaunch", { Skip_MODRM }, 0 },
4298 { "vmresume", { Skip_MODRM }, 0 },
4299 diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h
4300 index 9a22b3c95f..f43b5e11eb 100644
4301 --- a/opcodes/i386-opc.h
4302 +++ b/opcodes/i386-opc.h
4303 @@ -736,23 +736,23 @@ enum
4307 - /* BYTE memory. */
4310 - /* WORD memory. 2 byte */
4311 + /* WORD size. 2 byte */
4313 - /* DWORD memory. 4 byte */
4314 + /* DWORD size. 4 byte */
4316 - /* FWORD memory. 6 byte */
4317 + /* FWORD size. 6 byte */
4319 - /* QWORD memory. 8 byte */
4320 + /* QWORD size. 8 byte */
4322 - /* TBYTE memory. 10 byte */
4323 + /* TBYTE size. 10 byte */
4325 - /* XMMWORD memory. */
4326 + /* XMMWORD size. */
4328 - /* YMMWORD memory. */
4329 + /* YMMWORD size. */
4331 - /* ZMMWORD memory. */
4332 + /* ZMMWORD size. */
4334 /* Unspecified memory size. */
4336 diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
4337 index fad588ae3f..99f4d6635a 100644
4338 --- a/opcodes/i386-opc.tbl
4339 +++ b/opcodes/i386-opc.tbl
4340 @@ -4100,6 +4100,7 @@ xsavec64, 1, 0xfc7, 0x4, 2, CpuXSAVEC|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No
4342 encls, 0, 0xf01cf, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4343 enclu, 0, 0xf01d7, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4344 +enclv, 0, 0xf01c0, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4346 // SGX instructions end.
4348 @@ -5408,11 +5409,13 @@ vcvtpd2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|
4349 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 }
4351 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 }
4352 -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 }
4353 +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 }
4354 +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 }
4355 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 }
4356 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 }
4357 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 }
4358 -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 }
4359 +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 }
4360 +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 }
4361 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 }
4362 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 }
4364 @@ -5442,11 +5445,13 @@ vcvttpd2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3
4365 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 }
4367 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 }
4368 -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 }
4369 +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 }
4370 +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 }
4371 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 }
4372 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 }
4373 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 }
4374 -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 }
4375 +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 }
4376 +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 }
4377 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 }
4378 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 }
4380 diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
4381 index d513275deb..42ac313eca 100644
4382 --- a/opcodes/i386-tbl.h
4383 +++ b/opcodes/i386-tbl.h
4384 @@ -83658,6 +83658,20 @@ const insn_template i386_optab[] =
4385 { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4388 + { "enclv", 0, 0xf01c0, None, 3,
4389 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4390 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4391 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4392 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
4393 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4394 + 0, 0, 0, 0, 0 } },
4395 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
4396 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4397 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4399 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4400 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4402 { "vcvtpd2udqx", 2, 0x79, None, 1,
4403 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
4405 @@ -87881,6 +87895,23 @@ const insn_template i386_optab[] =
4406 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4409 + { "vcvtps2qq", 2, 0x667B, None, 1,
4410 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4411 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4412 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4413 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4414 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4415 + 0, 0, 0, 0, 0 } },
4416 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4417 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4418 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4420 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4421 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4423 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4424 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4426 { "vcvtps2qq", 2, 0x667B, None, 1,
4427 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4429 @@ -87892,8 +87923,8 @@ const insn_template i386_optab[] =
4430 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4431 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4433 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4434 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4435 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4436 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4438 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4440 @@ -87952,6 +87983,23 @@ const insn_template i386_optab[] =
4441 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4444 + { "vcvtps2uqq", 2, 0x6679, None, 1,
4445 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4446 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4447 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4448 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4449 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4450 + 0, 0, 0, 0, 0 } },
4451 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4452 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4453 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4455 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4456 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4458 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4459 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4461 { "vcvtps2uqq", 2, 0x6679, None, 1,
4462 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4464 @@ -87963,8 +88011,8 @@ const insn_template i386_optab[] =
4465 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4466 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4468 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4469 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4470 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4471 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4473 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4475 @@ -88412,6 +88460,23 @@ const insn_template i386_optab[] =
4476 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4479 + { "vcvttps2qq", 2, 0x667A, None, 1,
4480 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4481 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4482 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4483 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4484 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4485 + 0, 0, 0, 0, 0 } },
4486 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4487 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4488 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4490 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4491 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4493 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4494 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4496 { "vcvttps2qq", 2, 0x667A, None, 1,
4497 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4499 @@ -88423,8 +88488,8 @@ const insn_template i386_optab[] =
4500 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4501 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4503 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4504 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4505 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4506 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4508 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4510 @@ -88483,6 +88548,23 @@ const insn_template i386_optab[] =
4511 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4514 + { "vcvttps2uqq", 2, 0x6678, None, 1,
4515 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4516 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4517 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4518 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4519 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4520 + 0, 0, 0, 0, 0 } },
4521 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4522 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4523 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4525 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4526 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4528 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4529 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4531 { "vcvttps2uqq", 2, 0x6678, None, 1,
4532 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4534 @@ -88494,8 +88576,8 @@ const insn_template i386_optab[] =
4535 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4536 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4538 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4539 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4540 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4541 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4543 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4545 diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
4546 index ef75e38e7e..d8a9cce1e2 100644
4547 --- a/opcodes/s390-opc.txt
4548 +++ b/opcodes/s390-opc.txt
4549 @@ -1126,7 +1126,7 @@ e561 tbeginc SIL_RDU "constrained transaction begin" zEC12 zarch htm
4550 b2f8 tend S_00 "transaction end" zEC12 zarch htm
4551 c7 bpp SMI_U0RDP "branch prediction preload" zEC12 zarch
4552 c5 bprp MII_UPP "branch prediction relative preload" zEC12 zarch
4553 -b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch
4554 +b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch htm
4555 b2fa niai IE_UU "next instruction access intent" zEC12 zarch
4556 b98f crdte RRF_RURR2 "compare and replace DAT table entry" zEC12 zarch optparm
4557 e3000000009f lat RXY_RRRD "load and trap 32 bit" zEC12 zarch