recipes: networking/wget: upgraded to version 1.20.1
[dragora.git] / patches / binutils / branch-updates.diff
blob24ee4d77ff7a24838c24944779cd1c982e1839e0
1 # DP: updates from the binutils-2.31 branch
3 # git diff 0860693812fff944ab0602e72b762a4a2078da5b 0f494b01431de53959dd72ccfed06a01d5172e3f
5 diff --git a/bfd/ChangeLog b/bfd/ChangeLog
6 index 5ec906aa8e..fa4173da3a 100644
7 --- a/bfd/ChangeLog
8 +++ b/bfd/ChangeLog
9 @@ -1,8 +1,162 @@
10 +2018-11-30 Alan Modra <amodra@gmail.com>
12 + PR 23937
13 + * elf64-ppc.c (write_plt_relocs_for_local_syms): Don't add local
14 + entry offset for ifuncs.
16 +2018-11-27 Tamar Christina <tamar.christina@arm.com>
18 + Backport from mainline
19 + PR ld/23904
20 + * elfnn-aarch64.c (_bfd_aarch64_adrp_p): Use existing constants.
21 + (_bfd_aarch64_erratum_843419_branch_to_stub): Use _bfd_aarch64_adrp_p.
22 + (struct erratum_835769_branch_to_stub_clear_data): New.
23 + (_bfd_aarch64_erratum_843419_clear_stub): New.
24 + (clear_erratum_843419_entry): New.
25 + (elfNN_aarch64_tls_relax): Use it.
26 + (elfNN_aarch64_relocate_section): Pass input_section.
27 + (aarch64_map_one_stub): Handle branch type none as valid.
29 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
31 + Backport from mainline
32 + 2018-11-09 Cupertino Miranda <cmiranda@synopsys.com>
33 + * arc-got.h (arc_got_entry_type_for_reloc): Changed to
34 + correct static TLS relocs.
35 + * elf32-arc.c (elf_arc_check_relocs): Introduced warning to
36 + TLS relocs which require -fPIC.
37 + (arc_create_forced_local_got_entries_for_tls): Created.
38 + Traverses list of GOT entries to be resolved statically
39 + when needed.
40 + (elf_arc_finish_dynamic_sections): Changed. Calls
41 + arc_create_forced_local_got_entries_for_tls for each known
42 + possibly GOT symbol.
44 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
46 + Backport from mainline
47 + 2018-11-09 Claudiu Zissulescu <claziss@synopsys.com>
48 + * arc-got.h (arc_get_local_got_ents): Revamp it; use
49 + elf_local_got_ents to store the local got list.
50 + (get_got_entry_list_for_symbo): Restructure it.
51 + * elf32-arc.c (elf_arc_relocate_section): Correct the call to
52 + get_got_entry_list_for_symbol.
54 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
56 + Backport from mainline
57 + 2018-09-06 Cupertino Miranda <cmiranda@synopsys.com>
58 + * arc-got.h (relocate_fix_got_relocs_for_got_info): Changed. Take
59 + TLS section alignment in consideration for this relocation.
60 + * elf32-arc.c (FINAL_SECTSTART): Added this formula macro.
61 + (ARC_TLS_DTPOFF) Updated reloc to use new created macro instead.
63 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
65 + Backport from mainline
66 + 2018-08-01 Cupertino Miranda <cmiranda@synopsys.com>
67 + * arc-got.h (relocate_fix_got_relocs_for_got_info): Changed, fixed
68 + TCB_SIZE offsize to include section alignment.
69 + * elf32-arc.c (arc_special_overflow_checks): Likewise.
71 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
73 + Backport from mainline
74 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
75 + * elf32-arc.c (elf_arc_check_relocs): Changed.
77 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
79 + Backport from mainline
80 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
81 + * elf32-arc.c (elf_arc_check_relocs): Changed.
83 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
85 + Backport from mainline
86 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>
87 + * elf32-arc.c (elf_arc_finish_dynamic_symbol) Return FALSE in case
88 + arc_htab is NULL.
90 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
92 + Backport from mainline
93 + 2018-03-02 Cupertino Miranda <cmiranda@synopsys.com>a
94 + * arc-got.h (get_got_entry_list_for_symbol): Changed.
95 + * ef32-arc.c (struct elf_arc_link_hash_entry): Moved and changed.
96 + (elf_arc_link_hash_newfunc): Changed.
97 + (arc_elf_link_hash_table_create): Removed old initializations.
98 + (elf_arc_relocate_section, elf_arc_finish_dynamic_symbol): Changed.
100 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
102 + PR ld/23818
103 + * elflink.c (_bfd_elf_link_assign_sym_version): Hide symbols
104 + defined in discarded input sections.
106 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
108 + PR ld/23499
109 + * elf.c (_bfd_elf_get_symbol_version_string): Return
110 + _("<corrupt>") for corrupt symbol version info.
112 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
114 + PR ld/23499
115 + * elflink.c (bfd_elf_record_link_assignment): Always clear
116 + h->verinfo.verdef when overriding a dynamic definition.
118 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
120 + PR ld/23428
121 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
122 + add X86_ISA_1_NEEDED property only if existing properties won't
123 + be removed.
125 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
127 + PR ld/23486
128 + * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
129 + GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
130 + (_bfd_x86_elf_link_setup_gnu_properties): Adding the
131 + GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
132 + GNU_PROPERTY_X86_ISA_1_USED, property.
134 +2018-08-07 Alan Modra <amodra@gmail.com>
136 + * elf64-ppc.c (ppc64_elf_relocate_section): Don't skip first
137 + instruction of __tls_get_addr_opt stub.
138 + (plt_stub_size): Omit ALWAYS_EMIT_R2SAVE condition when
139 + dealing with __tls_get_addr_opt stub.
140 + (build_tls_get_addr_stub, ppc_size_one_stub): Likewise.
142 +2018-08-01 Alan Modra <amodra@gmail.com>
144 + * elf64-ppc.c (plt_stub_pad): Delay plt_stub_size call until needed.
145 + (ppc_build_one_stub): Don't set stub_offset, instead assert that
146 + it is sane. Don't adjust stub_offset for alignment. Adjust size
147 + calculation. Use "targ" temp when calculating offsets.
148 + (ppc_size_one_stub): Set stub_offset here. Use "targ" temp when
149 + calculating offsets. Adjust for alignment before setting
150 + tls_get_addr_opt_bctrl.
152 +2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
154 + PR ld/23428
155 + * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
156 + separate code program header is needed, make sure that the first
157 + read-only PT_LOAD segment has no code by adding a
158 + GNU_PROPERTY_X86_ISA_1_USED note.
160 +2018-07-18 Nick Clifton <nickc@redhat.com>
162 + * development.sh: Set to true.
164 2018-07-18 Nick Clifton <nickc@redhat.com>
166 2.31.1 Release point.
167 * version.m4: Set to 2.31.1
168 - * development.sh: Set to true.
169 + * development.sh: Set to false.
170 * configure: Regenerate.
171 * po/bfd.pot: Regenerate.
173 diff --git a/bfd/arc-got.h b/bfd/arc-got.h
174 index a86061bcb3..253578b90c 100644
175 --- a/bfd/arc-got.h
176 +++ b/bfd/arc-got.h
177 @@ -24,6 +24,9 @@
179 #define TCB_SIZE (8)
181 +#define align_power(addr, align) \
182 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
184 enum tls_type_e
186 GOT_UNKNOWN = 0,
187 @@ -51,27 +54,26 @@ struct got_entry
188 enum tls_got_entries existing_entries;
191 +/* Return the local got list, if not defined, create an empty one. */
193 static struct got_entry **
194 arc_get_local_got_ents (bfd * abfd)
196 - static struct got_entry **local_got_ents = NULL;
198 - if (local_got_ents == NULL)
199 + if (elf_local_got_ents (abfd) == NULL)
201 - size_t size;
202 - Elf_Internal_Shdr *symtab_hdr = &((elf_tdata (abfd))->symtab_hdr);
204 - size = symtab_hdr->sh_info * sizeof (bfd_vma);
205 - local_got_ents = (struct got_entry **)
206 - bfd_alloc (abfd, sizeof (struct got_entry *) * size);
207 - if (local_got_ents == NULL)
208 - return FALSE;
210 - memset (local_got_ents, 0, sizeof (struct got_entry *) * size);
211 - elf_local_got_ents (abfd) = local_got_ents;
212 + bfd_size_type amt = (elf_tdata (abfd)->symtab_hdr.sh_info
213 + * sizeof (*elf_local_got_ents (abfd)));
214 + elf_local_got_ents (abfd) = bfd_zmalloc (amt);
215 + if (elf_local_got_ents (abfd) == NULL)
217 + _bfd_error_handler (_("%pB: cannot allocate memory for local "
218 + "GOT entries"), abfd);
219 + bfd_set_error (bfd_error_bad_value);
220 + return NULL;
224 - return local_got_ents;
225 + return elf_local_got_ents (abfd);
228 static struct got_entry *
229 @@ -156,15 +158,15 @@ get_got_entry_list_for_symbol (bfd *abfd,
230 unsigned long r_symndx,
231 struct elf_link_hash_entry *h)
233 - if (h != NULL)
234 + struct elf_arc_link_hash_entry *h1 =
235 + ((struct elf_arc_link_hash_entry *) h);
236 + if (h1 != NULL)
238 - return &h->got.glist;
239 + return &h1->got_ents;
241 else
243 - struct got_entry **local_got_ents
244 - = arc_get_local_got_ents (abfd);
245 - return &local_got_ents[r_symndx];
246 + return arc_get_local_got_ents (abfd) + r_symndx;
250 @@ -206,7 +208,7 @@ arc_got_entry_type_for_reloc (reloc_howto_type *howto)
251 __LINE__, name_for_global_symbol (H)); \
253 if (H) \
254 - if (h->dynindx == -1 && !h->forced_local) \
255 + if (H->dynindx == -1 && !H->forced_local) \
256 if (! bfd_elf_link_record_dynamic_symbol (info, H)) \
257 return FALSE; \
258 htab->s##SECNAME->size += 4; \
259 @@ -282,6 +284,7 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
260 BFD_ASSERT (entry);
262 if (h == NULL
263 + || h->forced_local == TRUE
264 || (! elf_hash_table (info)->dynamic_sections_created
265 || (bfd_link_pic (info)
266 && SYMBOL_REFERENCES_LOCAL (info, h))))
267 @@ -329,23 +332,31 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
268 BFD_ASSERT (tls_sec && tls_sec->output_section);
269 bfd_vma sec_vma = tls_sec->output_section->vma;
271 - bfd_put_32 (output_bfd,
272 - sym_value - sec_vma,
273 + if (h == NULL || h->forced_local
274 + || !elf_hash_table (info)->dynamic_sections_created)
276 + bfd_put_32 (output_bfd,
277 + sym_value - sec_vma
278 + + (elf_hash_table (info)->dynamic_sections_created
279 + ? 0
280 + : (align_power (0,
281 + tls_sec->alignment_power))),
282 htab->sgot->contents + entry->offset
283 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
284 ? 4 : 0));
286 - ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
287 - "@ %lx, for symbol %s\n",
288 - (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
289 - "GOT_TLS_IE"),
290 - (long) (sym_value - sec_vma),
291 - (long) (htab->sgot->output_section->vma
292 - + htab->sgot->output_offset->vma
293 - + entry->offset
294 - + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
295 - ? 4 : 0)),
296 - symbol_name);
297 + ARC_DEBUG ("arc_info: FIXED -> %s value = %#lx "
298 + "@ %lx, for symbol %s\n",
299 + (entry->type == GOT_TLS_GD ? "GOT_TLS_GD" :
300 + "GOT_TLS_IE"),
301 + (long) (sym_value - sec_vma),
302 + (long) (htab->sgot->output_section->vma
303 + + htab->sgot->output_offset
304 + + entry->offset
305 + + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
306 + ? 4 : 0)),
307 + symbol_name);
310 break;
312 @@ -357,7 +368,10 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
314 bfd_put_32 (output_bfd,
315 sym_value - sec_vma
316 - + (elf_hash_table (info)->dynamic_sections_created ? 0 : TCB_SIZE),
317 + + (elf_hash_table (info)->dynamic_sections_created
318 + ? 0
319 + : (align_power (TCB_SIZE,
320 + tls_sec->alignment_power))),
321 htab->sgot->contents + entry->offset
322 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
323 ? 4 : 0));
324 @@ -368,7 +382,7 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
325 "GOT_TLS_IE"),
326 (long) (sym_value - sec_vma),
327 (long) (htab->sgot->output_section->vma
328 - + htab->sgot->output_offset->vma
329 + + htab->sgot->output_offset
330 + entry->offset
331 + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
332 ? 4 : 0)),
333 diff --git a/bfd/development.sh b/bfd/development.sh
334 index 918150f30b..27a7150e6d 100644
335 --- a/bfd/development.sh
336 +++ b/bfd/development.sh
337 @@ -16,4 +16,4 @@
338 # along with this program. If not, see <http://www.gnu.org/licenses/>.
340 # Controls whether to enable development-mode features by default.
341 -development=false
342 +development=true
343 diff --git a/bfd/elf.c b/bfd/elf.c
344 index 0f75375128..80410575b0 100644
345 --- a/bfd/elf.c
346 +++ b/bfd/elf.c
347 @@ -1877,7 +1877,7 @@ _bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol,
349 Elf_Internal_Verneed *t;
351 - version_string = "";
352 + version_string = _("<corrupt>");
353 for (t = elf_tdata (abfd)->verref;
354 t != NULL;
355 t = t->vn_nextref)
356 diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c
357 index a48ef0ca15..495fa342d3 100644
358 --- a/bfd/elf32-arc.c
359 +++ b/bfd/elf32-arc.c
360 @@ -160,6 +160,18 @@ struct arc_relocation_data
361 const char * symbol_name;
364 +/* ARC ELF linker hash entry. */
365 +struct elf_arc_link_hash_entry
367 + struct elf_link_hash_entry root;
369 + /* Track dynamic relocs copied for this symbol. */
370 + struct elf_dyn_relocs *dyn_relocs;
372 + struct got_entry *got_ents;
376 /* Should be included at this location due to static declarations
377 defined before this point. */
378 #include "arc-got.h"
379 @@ -281,15 +293,6 @@ struct arc_reloc_map
380 unsigned char elf_reloc_val;
383 -/* ARC ELF linker hash entry. */
384 -struct elf_arc_link_hash_entry
386 - struct elf_link_hash_entry root;
388 - /* Track dynamic relocs copied for this symbol. */
389 - struct elf_dyn_relocs *dyn_relocs;
392 /* ARC ELF linker hash table. */
393 struct elf_arc_link_hash_table
395 @@ -301,28 +304,28 @@ elf_arc_link_hash_newfunc (struct bfd_hash_entry *entry,
396 struct bfd_hash_table *table,
397 const char *string)
399 + struct elf_arc_link_hash_entry * ret =
400 + (struct elf_arc_link_hash_entry *) entry;
402 /* Allocate the structure if it has not already been allocated by a
403 subclass. */
404 - if (entry == NULL)
406 - entry = (struct bfd_hash_entry *)
407 - bfd_hash_allocate (table,
408 - sizeof (struct elf_arc_link_hash_entry));
409 - if (entry == NULL)
410 - return entry;
412 + if (ret == NULL)
413 + ret = (struct elf_arc_link_hash_entry *)
414 + bfd_hash_allocate (table, sizeof (struct elf_arc_link_hash_entry));
415 + if (ret == NULL)
416 + return (struct bfd_hash_entry *) ret;
418 /* Call the allocation method of the superclass. */
419 - entry = _bfd_elf_link_hash_newfunc (entry, table, string);
420 - if (entry != NULL)
421 + ret = ((struct elf_arc_link_hash_entry *)
422 + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
423 + table, string));
424 + if (ret != NULL)
426 - struct elf_arc_link_hash_entry *eh;
428 - eh = (struct elf_arc_link_hash_entry *) entry;
429 - eh->dyn_relocs = NULL;
430 + ret->dyn_relocs = NULL;
431 + ret->got_ents = NULL;
434 - return entry;
435 + return (struct bfd_hash_entry *) ret;
438 /* Destroy an ARC ELF linker hash table. */
439 @@ -352,11 +355,6 @@ arc_elf_link_hash_table_create (bfd *abfd)
440 return NULL;
443 - ret->elf.init_got_refcount.refcount = 0;
444 - ret->elf.init_got_refcount.glist = NULL;
445 - ret->elf.init_got_offset.offset = 0;
446 - ret->elf.init_got_offset.glist = NULL;
448 ret->elf.root.hash_table_free = elf_arc_link_hash_table_free;
450 return &ret->elf.root;
451 @@ -1200,11 +1198,14 @@ arc_special_overflow_checks (const struct arc_relocation_data reloc_data,
452 + (reloc_data.reloc_offset))))
453 #define SECTSTART (bfd_signed_vma) (reloc_data.sym_section->output_section->vma \
454 + reloc_data.sym_section->output_offset)
455 +#define FINAL_SECTSTART \
456 + (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
457 #define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
458 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
459 #define TLS_REL (bfd_signed_vma) \
460 ((elf_hash_table (info))->tls_sec->output_section->vma)
461 -#define TLS_TBSS (8)
462 +#define TLS_TBSS (align_power(TCB_SIZE, \
463 + reloc_data.sym_section->alignment_power))
465 #define none (0)
467 @@ -1615,10 +1616,14 @@ elf_arc_relocate_section (bfd * output_bfd,
468 while (h->root.type == bfd_link_hash_indirect
469 || h->root.type == bfd_link_hash_warning)
471 - struct elf_link_hash_entry *h_old = h;
472 + struct elf_arc_link_hash_entry *ah_old =
473 + (struct elf_arc_link_hash_entry *) h;
474 h = (struct elf_link_hash_entry *) h->root.u.i.link;
475 - if (h->got.glist == 0 && h_old->got.glist != h->got.glist)
476 - h->got.glist = h_old->got.glist;
477 + struct elf_arc_link_hash_entry *ah =
478 + (struct elf_arc_link_hash_entry *) h;
480 + if (ah->got_ents == 0 && ah_old->got_ents != ah->got_ents)
481 + ah->got_ents = ah_old->got_ents;
484 /* TODO: Need to validate what was the intention. */
485 @@ -1636,6 +1641,8 @@ elf_arc_relocate_section (bfd * output_bfd,
487 if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
489 + struct elf_arc_link_hash_entry *ah =
490 + (struct elf_arc_link_hash_entry *) h;
491 /* TODO: Change it to use arc_do_relocation with
492 ARC_32 reloc. Try to use ADD_RELA macro. */
493 bfd_vma relocation =
494 @@ -1645,8 +1652,8 @@ elf_arc_relocate_section (bfd * output_bfd,
495 + reloc_data.sym_section->output_section->vma)
496 : 0);
498 - BFD_ASSERT (h->got.glist);
499 - bfd_vma got_offset = h->got.glist->offset;
500 + BFD_ASSERT (ah->got_ents);
501 + bfd_vma got_offset = ah->got_ents->offset;
502 bfd_put_32 (output_bfd, relocation,
503 htab->sgot->contents + got_offset);
505 @@ -1717,7 +1724,7 @@ elf_arc_relocate_section (bfd * output_bfd,
506 reloc_data.should_relocate = TRUE;
508 struct got_entry **list
509 - = get_got_entry_list_for_symbol (output_bfd, r_symndx, h);
510 + = get_got_entry_list_for_symbol (input_bfd, r_symndx, h);
512 reloc_data.got_offset_value
513 = relocate_fix_got_relocs_for_got_info (list,
514 @@ -1956,40 +1963,45 @@ elf_arc_check_relocs (bfd * abfd,
515 if (r_symndx < symtab_hdr->sh_info) /* Is a local symbol. */
516 h = NULL;
517 else /* Global one. */
518 - h = sym_hashes[r_symndx - symtab_hdr->sh_info];
520 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
521 + while (h->root.type == bfd_link_hash_indirect
522 + || h->root.type == bfd_link_hash_warning)
523 + h = (struct elf_link_hash_entry *) h->root.u.i.link;
527 switch (r_type)
529 - case R_ARC_32:
530 - case R_ARC_32_ME:
531 - /* During shared library creation, these relocs should not
532 - appear in a shared library (as memory will be read only
533 - and the dynamic linker can not resolve these. However
534 - the error should not occur for e.g. debugging or
535 - non-readonly sections. */
536 - if (h != NULL
537 - && (bfd_link_dll (info) && !bfd_link_pie (info))
538 - && (sec->flags & SEC_ALLOC) != 0
539 - && (sec->flags & SEC_READONLY) != 0
540 - && ((sec->flags & SEC_CODE) != 0
541 - || (sec->flags & SEC_DEBUGGING) != 0))
543 - const char *name;
544 - if (h)
545 - name = h->root.root.string;
546 - else
547 - /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
548 - name = "UNKNOWN";
549 - _bfd_error_handler
550 - /* xgettext:c-format */
551 - (_("%pB: relocation %s against `%s' can not be used"
552 - " when making a shared object; recompile with -fPIC"),
553 - abfd,
554 - arc_elf_howto (r_type)->name,
555 - name);
556 - bfd_set_error (bfd_error_bad_value);
557 - return FALSE;
559 + case R_ARC_32:
560 + case R_ARC_32_ME:
561 + /* During shared library creation, these relocs should not
562 + appear in a shared library (as memory will be read only
563 + and the dynamic linker can not resolve these. However
564 + the error should not occur for e.g. debugging or
565 + non-readonly sections. */
566 + if (h != NULL
567 + && (bfd_link_dll (info) && !bfd_link_pie (info))
568 + && (sec->flags & SEC_ALLOC) != 0
569 + && (sec->flags & SEC_READONLY) != 0
570 + && ((sec->flags & SEC_CODE) != 0
571 + || (sec->flags & SEC_DEBUGGING) != 0))
573 + const char *name;
574 + if (h)
575 + name = h->root.root.string;
576 + else
577 + name = "UNKNOWN";
578 + _bfd_error_handler
579 + /* xgettext:c-format */
580 + (_("%pB: relocation %s against `%s' can not be used"
581 + " when making a shared object; recompile with -fPIC"),
582 + abfd,
583 + arc_elf_howto (r_type)->name,
584 + name);
585 + bfd_set_error (bfd_error_bad_value);
586 + return FALSE;
589 /* In some cases we are not setting the 'non_got_ref'
590 flag, even though the relocations don't require a GOT
591 @@ -2031,13 +2043,33 @@ elf_arc_check_relocs (bfd * abfd,
592 if (h == NULL)
593 continue;
594 else
595 - h->needs_plt = 1;
596 + if (h->forced_local == 0)
597 + h->needs_plt = 1;
600 /* Add info to the symbol got_entry_list. */
601 if (is_reloc_for_GOT (howto)
602 || is_reloc_for_TLS (howto))
604 + if (bfd_link_dll (info) && !bfd_link_pie (info)
605 + && (r_type == R_ARC_TLS_LE_32 || r_type == R_ARC_TLS_LE_S9))
607 + const char *name;
608 + if (h)
609 + name = h->root.root.string;
610 + else
611 + /* bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL); */
612 + name = "UNKNOWN";
613 + _bfd_error_handler
614 + /* xgettext:c-format */
615 + (_("%pB: relocation %s against `%s' can not be used"
616 + " when making a shared object; recompile with -fPIC"),
617 + abfd,
618 + arc_elf_howto (r_type)->name,
619 + name);
620 + bfd_set_error (bfd_error_bad_value);
621 + return FALSE;
623 if (! _bfd_elf_create_got_section (dynobj, info))
624 return FALSE;
626 @@ -2404,7 +2436,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
627 create respective dynamic relocs. */
628 /* TODO: Make function to get list and not access the list directly. */
629 /* TODO: Move function to relocate_section create this relocs eagerly. */
630 - create_got_dynrelocs_for_got_info (&h->got.glist,
631 + struct elf_arc_link_hash_entry *ah =
632 + (struct elf_arc_link_hash_entry *) h;
633 + create_got_dynrelocs_for_got_info (&ah->got_ents,
634 output_bfd,
635 info,
637 @@ -2413,6 +2447,9 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
639 struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
641 + if (arc_htab == NULL)
642 + return FALSE;
644 if (h->dynindx == -1
645 || (h->root.type != bfd_link_hash_defined
646 && h->root.type != bfd_link_hash_defweak)
647 @@ -2455,6 +2492,39 @@ elf_arc_finish_dynamic_symbol (bfd * output_bfd,
648 s = bfd_get_linker_section (dynobj, SECTION); \
649 break;
652 +struct obfd_info_group {
653 + bfd *output_bfd;
654 + struct bfd_link_info *info;
657 +static bfd_boolean
658 +arc_create_forced_local_got_entries_for_tls (struct bfd_hash_entry *bh,
659 + void *data)
661 + struct elf_arc_link_hash_entry * h =
662 + (struct elf_arc_link_hash_entry *) bh;
663 + struct obfd_info_group *tmp = (struct obfd_info_group *) data;
665 + if (h->got_ents != NULL)
667 + BFD_ASSERT (h);
669 + struct got_entry *list = h->got_ents;
671 + while (list != NULL)
673 + create_got_dynrelocs_for_single_entry (list, tmp->output_bfd,
674 + tmp->info,
675 + (struct elf_link_hash_entry *) h);
676 + list = list->next;
680 + return TRUE;
684 /* Function : elf_arc_finish_dynamic_sections
685 Brief : Finish up the dynamic sections handling.
686 Args : output_bfd :
687 @@ -2588,6 +2658,12 @@ elf_arc_finish_dynamic_sections (bfd * output_bfd,
691 + struct obfd_info_group group;
692 + group.output_bfd = output_bfd;
693 + group.info = info;
694 + bfd_hash_traverse (&info->hash->table,
695 + arc_create_forced_local_got_entries_for_tls, &group);
697 return TRUE;
700 diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
701 index 45d81777eb..746506ef09 100644
702 --- a/bfd/elf64-ppc.c
703 +++ b/bfd/elf64-ppc.c
704 @@ -10810,8 +10810,7 @@ plt_stub_size (struct ppc_link_hash_table *htab,
705 && htab->params->tls_get_addr_opt)
707 size += 7 * 4;
708 - if (ALWAYS_EMIT_R2SAVE
709 - || stub_entry->stub_type == ppc_stub_plt_call_r2save)
710 + if (stub_entry->stub_type == ppc_stub_plt_call_r2save)
711 size += 6 * 4;
713 return size;
714 @@ -10829,7 +10828,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
715 bfd_vma plt_off)
717 int stub_align;
718 - unsigned stub_size = plt_stub_size (htab, stub_entry, plt_off);
719 + unsigned stub_size;
720 bfd_vma stub_off = stub_entry->group->stub_sec->size;
722 if (htab->params->plt_stub_align >= 0)
723 @@ -10841,6 +10840,7 @@ plt_stub_pad (struct ppc_link_hash_table *htab,
726 stub_align = 1 << -htab->params->plt_stub_align;
727 + stub_size = plt_stub_size (htab, stub_entry, plt_off);
728 if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
729 > ((stub_size - 1) & -stub_align))
730 return stub_align - (stub_off & (stub_align - 1));
731 @@ -11055,8 +11055,7 @@ build_tls_get_addr_stub (struct ppc_link_hash_table *htab,
732 bfd_put_32 (obfd, MR_R3_R0, p), p += 4;
733 if (r != NULL)
734 r[0].r_offset += 7 * 4;
735 - if (!ALWAYS_EMIT_R2SAVE
736 - && stub_entry->stub_type != ppc_stub_plt_call_r2save)
737 + if (stub_entry->stub_type != ppc_stub_plt_call_r2save)
738 return build_plt_stub (htab, stub_entry, p, offset, r);
740 bfd_put_32 (obfd, MFLR_R11, p), p += 4;
741 @@ -11148,7 +11147,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
742 struct ppc_link_hash_table *htab;
743 bfd_byte *loc;
744 bfd_byte *p;
745 - bfd_vma dest, off;
746 + bfd_vma targ, off;
747 Elf_Internal_Rela *r;
748 asection *plt;
750 @@ -11160,8 +11159,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
751 if (htab == NULL)
752 return FALSE;
754 - /* Make a note of the offset within the stubs for this entry. */
755 - stub_entry->stub_offset = stub_entry->group->stub_sec->size;
756 + BFD_ASSERT (stub_entry->stub_offset >= stub_entry->group->stub_sec->size);
757 loc = stub_entry->group->stub_sec->contents + stub_entry->stub_offset;
759 htab->stub_count[stub_entry->stub_type - 1] += 1;
760 @@ -11170,16 +11168,16 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
761 case ppc_stub_long_branch:
762 case ppc_stub_long_branch_r2off:
763 /* Branches are relative. This is where we are going to. */
764 - dest = (stub_entry->target_value
765 + targ = (stub_entry->target_value
766 + stub_entry->target_section->output_offset
767 + stub_entry->target_section->output_section->vma);
768 - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
769 - off = dest;
770 + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
772 /* And this is where we are coming from. */
773 - off -= (stub_entry->stub_offset
774 - + stub_entry->group->stub_sec->output_offset
775 - + stub_entry->group->stub_sec->output_section->vma);
776 + off = (stub_entry->stub_offset
777 + + stub_entry->group->stub_sec->output_offset
778 + + stub_entry->group->stub_sec->output_section->vma);
779 + off = targ - off;
781 p = loc;
782 if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
783 @@ -11226,7 +11224,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
784 return FALSE;
785 r->r_offset = p - 4 - stub_entry->group->stub_sec->contents;
786 r->r_info = ELF64_R_INFO (0, R_PPC64_REL24);
787 - r->r_addend = dest;
788 + r->r_addend = targ;
789 if (stub_entry->h != NULL)
791 struct elf_link_hash_entry **hashes;
792 @@ -11278,13 +11276,13 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
793 return FALSE;
796 - dest = (stub_entry->target_value
797 + targ = (stub_entry->target_value
798 + stub_entry->target_section->output_offset
799 + stub_entry->target_section->output_section->vma);
800 if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
801 - dest += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
802 + targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
804 - bfd_put_64 (htab->brlt->owner, dest,
805 + bfd_put_64 (htab->brlt->owner, targ,
806 htab->brlt->contents + br_entry->offset);
808 if (br_entry->iter == htab->stub_iteration)
809 @@ -11301,7 +11299,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
810 + htab->brlt->output_offset
811 + htab->brlt->output_section->vma);
812 rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
813 - rela.r_addend = dest;
814 + rela.r_addend = targ;
816 rl = htab->relbrlt->contents;
817 rl += (htab->relbrlt->reloc_count++
818 @@ -11321,17 +11319,17 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
819 + htab->brlt->output_offset
820 + htab->brlt->output_section->vma);
821 r->r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
822 - r->r_addend = dest;
823 + r->r_addend = targ;
827 - dest = (br_entry->offset
828 + targ = (br_entry->offset
829 + htab->brlt->output_offset
830 + htab->brlt->output_section->vma);
832 - off = (dest
833 - - elf_gp (info->output_bfd)
834 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
835 + off = (elf_gp (info->output_bfd)
836 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
837 + off = targ - off;
839 if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
841 @@ -11354,7 +11352,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
842 if (stub_entry->stub_type == ppc_stub_plt_branch_r2off)
843 r[0].r_offset += 4;
844 r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS);
845 - r[0].r_addend = dest;
846 + r[0].r_addend = targ;
847 if (PPC_HA (off) != 0)
849 r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_HA);
850 @@ -11439,8 +11437,8 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
853 /* Now build the stub. */
854 - dest = stub_entry->plt_ent->plt.offset & ~1;
855 - if (dest >= (bfd_vma) -2)
856 + targ = stub_entry->plt_ent->plt.offset & ~1;
857 + if (targ >= (bfd_vma) -2)
858 abort ();
860 plt = htab->elf.splt;
861 @@ -11453,12 +11451,11 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
862 else
863 plt = htab->pltlocal;
865 + targ += plt->output_offset + plt->output_section->vma;
867 - dest += plt->output_offset + plt->output_section->vma;
869 - off = (dest
870 - - elf_gp (info->output_bfd)
871 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
872 + off = (elf_gp (info->output_bfd)
873 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
874 + off = targ - off;
876 if (off + 0x80008000 > 0xffffffff || (off & 7) != 0)
878 @@ -11473,15 +11470,6 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
879 return FALSE;
882 - if (htab->params->plt_stub_align != 0)
884 - unsigned pad = plt_stub_pad (htab, stub_entry, off);
886 - stub_entry->group->stub_sec->size += pad;
887 - stub_entry->stub_offset = stub_entry->group->stub_sec->size;
888 - loc += pad;
891 r = NULL;
892 if (info->emitrelocations)
894 @@ -11496,7 +11484,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
895 r[0].r_offset = loc - stub_entry->group->stub_sec->contents;
896 if (bfd_big_endian (info->output_bfd))
897 r[0].r_offset += 2;
898 - r[0].r_addend = dest;
899 + r[0].r_addend = targ;
901 if (stub_entry->h != NULL
902 && (stub_entry->h == htab->tls_get_addr_fd
903 @@ -11515,7 +11503,7 @@ ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
904 return FALSE;
907 - stub_entry->group->stub_sec->size += p - loc;
908 + stub_entry->group->stub_sec->size = stub_entry->stub_offset + (p - loc);
910 if (htab->params->emit_stub_syms)
912 @@ -11567,7 +11555,7 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
913 struct ppc_stub_hash_entry *stub_entry;
914 struct bfd_link_info *info;
915 struct ppc_link_hash_table *htab;
916 - bfd_vma off;
917 + bfd_vma targ, off;
918 int size;
920 /* Massage our args to the form they really have. */
921 @@ -11578,6 +11566,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
922 if (htab == NULL)
923 return FALSE;
925 + /* Make a note of the offset within the stubs for this entry. */
926 + stub_entry->stub_offset = stub_entry->group->stub_sec->size;
928 if (stub_entry->h != NULL
929 && stub_entry->h->save_res
930 && stub_entry->h->elf.root.type == bfd_link_hash_defined
931 @@ -11594,8 +11585,8 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
932 || stub_entry->stub_type == ppc_stub_plt_call_r2save)
934 asection *plt;
935 - off = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1;
936 - if (off >= (bfd_vma) -2)
937 + targ = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1;
938 + if (targ >= (bfd_vma) -2)
939 abort ();
940 plt = htab->elf.splt;
941 if (!htab->elf.dynamic_sections_created
942 @@ -11607,23 +11598,30 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
943 else
944 plt = htab->pltlocal;
946 - off += (plt->output_offset
947 - + plt->output_section->vma
948 - - elf_gp (info->output_bfd)
949 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
950 + targ += plt->output_offset + plt->output_section->vma;
952 + off = (elf_gp (info->output_bfd)
953 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
954 + off = targ - off;
956 + if (htab->params->plt_stub_align != 0)
958 + unsigned pad = plt_stub_pad (htab, stub_entry, off);
960 + stub_entry->group->stub_sec->size += pad;
961 + stub_entry->stub_offset = stub_entry->group->stub_sec->size;
964 size = plt_stub_size (htab, stub_entry, off);
966 if (stub_entry->h != NULL
967 && (stub_entry->h == htab->tls_get_addr_fd
968 || stub_entry->h == htab->tls_get_addr)
969 && htab->params->tls_get_addr_opt
970 - && (ALWAYS_EMIT_R2SAVE
971 - || stub_entry->stub_type == ppc_stub_plt_call_r2save))
972 + && stub_entry->stub_type == ppc_stub_plt_call_r2save)
973 stub_entry->group->tls_get_addr_opt_bctrl
974 - = stub_entry->group->stub_sec->size + size - 5 * 4;
975 + = stub_entry->stub_offset + size - 5 * 4;
977 - if (htab->params->plt_stub_align)
978 - size += plt_stub_pad (htab, stub_entry, off);
979 if (info->emitrelocations)
981 stub_entry->group->stub_sec->reloc_count
982 @@ -11642,12 +11640,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
983 bfd_vma r2off = 0;
984 bfd_vma local_off = 0;
986 - off = (stub_entry->target_value
987 - + stub_entry->target_section->output_offset
988 - + stub_entry->target_section->output_section->vma);
989 - off -= (stub_entry->group->stub_sec->size
990 - + stub_entry->group->stub_sec->output_offset
991 - + stub_entry->group->stub_sec->output_section->vma);
992 + targ = (stub_entry->target_value
993 + + stub_entry->target_section->output_offset
994 + + stub_entry->target_section->output_section->vma);
995 + off = (stub_entry->stub_offset
996 + + stub_entry->group->stub_sec->output_offset
997 + + stub_entry->group->stub_sec->output_section->vma);
999 /* Reset the stub type from the plt variant in case we now
1000 can reach with a shorter stub. */
1001 @@ -11668,8 +11666,9 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1002 size += 4;
1003 if (PPC_LO (r2off) != 0)
1004 size += 4;
1005 - off -= size - 4;
1006 + off += size - 4;
1008 + off = targ - off;
1010 local_off = PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
1012 @@ -11709,11 +11708,12 @@ ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1015 stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch;
1016 - off = (br_entry->offset
1017 - + htab->brlt->output_offset
1018 - + htab->brlt->output_section->vma
1019 - - elf_gp (info->output_bfd)
1020 - - htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1021 + targ = (br_entry->offset
1022 + + htab->brlt->output_offset
1023 + + htab->brlt->output_section->vma);
1024 + off = (elf_gp (info->output_bfd)
1025 + + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
1026 + off = targ - off;
1028 if (info->emitrelocations)
1030 @@ -13530,7 +13530,8 @@ write_plt_relocs_for_local_syms (struct bfd_link_info *info)
1033 val = sym->st_value + ent->addend;
1034 - val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
1035 + if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC)
1036 + val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
1037 if (sym_sec != NULL && sym_sec->output_section != NULL)
1038 val += sym_sec->output_offset + sym_sec->output_section->vma;
1040 @@ -14877,10 +14878,13 @@ ppc64_elf_relocate_section (bfd *output_bfd,
1041 addend = 0;
1042 reloc_dest = DEST_STUB;
1044 - if ((stub_entry->stub_type == ppc_stub_plt_call
1045 + if (((stub_entry->stub_type == ppc_stub_plt_call
1046 + && ALWAYS_EMIT_R2SAVE)
1047 || stub_entry->stub_type == ppc_stub_plt_call_r2save)
1048 - && (ALWAYS_EMIT_R2SAVE
1049 - || stub_entry->stub_type == ppc_stub_plt_call_r2save)
1050 + && !(h != NULL
1051 + && (h == htab->tls_get_addr_fd
1052 + || h == htab->tls_get_addr)
1053 + && htab->params->tls_get_addr_opt)
1054 && rel + 1 < relend
1055 && rel[1].r_offset == rel->r_offset + 4
1056 && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
1057 diff --git a/bfd/elflink.c b/bfd/elflink.c
1058 index b24fb95848..46091b6341 100644
1059 --- a/bfd/elflink.c
1060 +++ b/bfd/elflink.c
1061 @@ -686,13 +686,11 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
1062 && !h->def_regular)
1063 h->root.type = bfd_link_hash_undefined;
1065 - /* If this symbol is not being provided by the linker script, and it is
1066 - currently defined by a dynamic object, but not by a regular object,
1067 - then clear out any version information because the symbol will not be
1068 - associated with the dynamic object any more. */
1069 - if (!provide
1070 - && h->def_dynamic
1071 - && !h->def_regular)
1072 + /* If this symbol is currently defined by a dynamic object, but not
1073 + by a regular object, then clear out any version information because
1074 + the symbol will not be associated with the dynamic object any
1075 + more. */
1076 + if (h->def_dynamic && !h->def_regular)
1077 h->verinfo.verdef = NULL;
1079 /* Make sure this symbol is not garbage collected. */
1080 @@ -2360,10 +2358,19 @@ _bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data)
1081 return FALSE;
1084 + bed = get_elf_backend_data (info->output_bfd);
1086 /* We only need version numbers for symbols defined in regular
1087 objects. */
1088 if (!h->def_regular)
1089 - return TRUE;
1091 + /* Hide symbols defined in discarded input sections. */
1092 + if ((h->root.type == bfd_link_hash_defined
1093 + || h->root.type == bfd_link_hash_defweak)
1094 + && discarded_section (h->root.u.def.section))
1095 + (*bed->elf_backend_hide_symbol) (info, h, TRUE);
1096 + return TRUE;
1099 hide = FALSE;
1100 bed = get_elf_backend_data (info->output_bfd);
1101 diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
1102 index cf321f32c2..d4964b1b11 100644
1103 --- a/bfd/elfnn-aarch64.c
1104 +++ b/bfd/elfnn-aarch64.c
1105 @@ -3845,7 +3845,7 @@ _bfd_aarch64_erratum_835769_scan (bfd *input_bfd,
1106 static bfd_boolean
1107 _bfd_aarch64_adrp_p (uint32_t insn)
1109 - return ((insn & 0x9f000000) == 0x90000000);
1110 + return ((insn & AARCH64_ADRP_OP_MASK) == AARCH64_ADRP_OP);
1114 @@ -5074,7 +5074,7 @@ _bfd_aarch64_erratum_843419_branch_to_stub (struct bfd_hash_entry *gen_entry,
1115 + stub_entry->adrp_offset);
1116 insn = bfd_getl32 (contents + stub_entry->adrp_offset);
1118 - if ((insn & AARCH64_ADRP_OP_MASK) != AARCH64_ADRP_OP)
1119 + if (!_bfd_aarch64_adrp_p (insn))
1120 abort ();
1122 bfd_signed_vma imm =
1123 @@ -5939,6 +5939,64 @@ bad_ifunc_reloc:
1124 # define movz_hw_R0 (0x52c00000)
1125 #endif
1127 +/* Structure to hold payload for _bfd_aarch64_erratum_843419_clear_stub,
1128 + it is used to identify the stub information to reset. */
1130 +struct erratum_843419_branch_to_stub_clear_data
1132 + bfd_vma adrp_offset;
1133 + asection *output_section;
1136 +/* Clear the erratum information for GEN_ENTRY if the ADRP_OFFSET and
1137 + section inside IN_ARG matches. The clearing is done by setting the
1138 + stub_type to none. */
1140 +static bfd_boolean
1141 +_bfd_aarch64_erratum_843419_clear_stub (struct bfd_hash_entry *gen_entry,
1142 + void *in_arg)
1144 + struct elf_aarch64_stub_hash_entry *stub_entry
1145 + = (struct elf_aarch64_stub_hash_entry *) gen_entry;
1146 + struct erratum_843419_branch_to_stub_clear_data *data
1147 + = (struct erratum_843419_branch_to_stub_clear_data *) in_arg;
1149 + if (stub_entry->target_section != data->output_section
1150 + || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer
1151 + || stub_entry->adrp_offset != data->adrp_offset)
1152 + return TRUE;
1154 + /* Change the stub type instead of removing the entry, removing from the hash
1155 + table would be slower and we have already reserved the memory for the entry
1156 + so there wouldn't be much gain. Changing the stub also keeps around a
1157 + record of what was there before. */
1158 + stub_entry->stub_type = aarch64_stub_none;
1160 + /* We're done and there could have been only one matching stub at that
1161 + particular offset, so abort further traversal. */
1162 + return FALSE;
1165 +/* TLS Relaxations may relax an adrp sequence that matches the erratum 843419
1166 + sequence. In this case the erratum no longer applies and we need to remove
1167 + the entry from the pending stub generation. This clears matching adrp insn
1168 + at ADRP_OFFSET in INPUT_SECTION in the stub table defined in GLOBALS. */
1170 +static void
1171 +clear_erratum_843419_entry (struct elf_aarch64_link_hash_table *globals,
1172 + bfd_vma adrp_offset, asection *input_section)
1174 + if (globals->fix_erratum_843419)
1176 + struct erratum_843419_branch_to_stub_clear_data data;
1177 + data.adrp_offset = adrp_offset;
1178 + data.output_section = input_section;
1180 + bfd_hash_traverse (&globals->stub_hash_table,
1181 + _bfd_aarch64_erratum_843419_clear_stub, &data);
1185 /* Handle TLS relaxations. Relaxing is possible for symbols that use
1186 R_AARCH64_TLSDESC_ADR_{PAGE, LD64_LO12_NC, ADD_LO12_NC} during a static
1187 link.
1188 @@ -5949,8 +6007,9 @@ bad_ifunc_reloc:
1190 static bfd_reloc_status_type
1191 elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1192 - bfd *input_bfd, bfd_byte *contents,
1193 - Elf_Internal_Rela *rel, struct elf_link_hash_entry *h)
1194 + bfd *input_bfd, asection *input_section,
1195 + bfd_byte *contents, Elf_Internal_Rela *rel,
1196 + struct elf_link_hash_entry *h)
1198 bfd_boolean is_local = h == NULL;
1199 unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
1200 @@ -5971,6 +6030,9 @@ elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1202 Where R is x for LP64, and w for ILP32. */
1203 bfd_putl32 (movz_R0, contents + rel->r_offset);
1204 + /* We have relaxed the adrp into a mov, we may have to clear any
1205 + pending erratum fixes. */
1206 + clear_erratum_843419_entry (globals, rel->r_offset, input_section);
1207 return bfd_reloc_continue;
1209 else
1210 @@ -6261,6 +6323,9 @@ elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
1212 insn = bfd_getl32 (contents + rel->r_offset);
1213 bfd_putl32 (movz_R0 | (insn & 0x1f), contents + rel->r_offset);
1214 + /* We have relaxed the adrp into a mov, we may have to clear any
1215 + pending erratum fixes. */
1216 + clear_erratum_843419_entry (globals, rel->r_offset, input_section);
1218 return bfd_reloc_continue;
1220 @@ -6485,7 +6550,8 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
1221 howto = elfNN_aarch64_howto_from_bfd_reloc (bfd_r_type);
1222 BFD_ASSERT (howto != NULL);
1223 r_type = howto->type;
1224 - r = elfNN_aarch64_tls_relax (globals, input_bfd, contents, rel, h);
1225 + r = elfNN_aarch64_tls_relax (globals, input_bfd, input_section,
1226 + contents, rel, h);
1227 unresolved_reloc = 0;
1229 else
1230 @@ -8076,6 +8142,8 @@ aarch64_map_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
1231 if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
1232 return FALSE;
1233 break;
1234 + case aarch64_stub_none:
1235 + break;
1237 default:
1238 abort ();
1239 diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
1240 index a2497aab86..2d8f7b640b 100644
1241 --- a/bfd/elfxx-x86.c
1242 +++ b/bfd/elfxx-x86.c
1243 @@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
1244 switch (pr_type)
1246 case GNU_PROPERTY_X86_ISA_1_USED:
1247 + if (aprop == NULL || bprop == NULL)
1249 + /* Only one of APROP and BPROP can be NULL. */
1250 + if (aprop != NULL)
1252 + /* Remove this property since the other input file doesn't
1253 + have it. */
1254 + aprop->pr_kind = property_remove;
1255 + updated = TRUE;
1257 + break;
1259 + goto or_property;
1261 case GNU_PROPERTY_X86_ISA_1_NEEDED:
1262 if (aprop != NULL && bprop != NULL)
1264 +or_property:
1265 number = aprop->u.number;
1266 aprop->u.number = number | bprop->u.number;
1267 - /* Remove the property if ISA bits are empty. */
1268 + /* Remove the property if all bits are empty. */
1269 if (aprop->u.number == 0)
1271 aprop->pr_kind = property_remove;
1272 @@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
1274 if (aprop->u.number == 0)
1276 - /* Remove APROP if ISA bits are empty. */
1277 + /* Remove APROP if all bits are empty. */
1278 aprop->pr_kind = property_remove;
1279 updated = TRUE;
1282 else
1284 - /* Return TRUE if APROP is NULL and ISA bits of BPROP
1285 + /* Return TRUE if APROP is NULL and all bits of BPROP
1286 aren't empty to indicate that BPROP should be added
1287 to ABFD. */
1288 updated = bprop->u.number != 0;
1289 @@ -2524,6 +2539,7 @@ _bfd_x86_elf_link_setup_gnu_properties
1290 const struct elf_backend_data *bed;
1291 unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
1292 unsigned int got_align;
1293 + bfd_boolean has_text = FALSE;
1295 features = 0;
1296 if (info->ibt)
1297 @@ -2538,24 +2554,75 @@ _bfd_x86_elf_link_setup_gnu_properties
1298 if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
1299 && bfd_count_sections (pbfd) != 0)
1301 + if (!has_text)
1303 + /* Check if there is no non-empty text section. */
1304 + sec = bfd_get_section_by_name (pbfd, ".text");
1305 + if (sec != NULL && sec->size != 0)
1306 + has_text = TRUE;
1309 ebfd = pbfd;
1311 if (elf_properties (pbfd) != NULL)
1312 break;
1315 - if (ebfd != NULL && features)
1316 + bed = get_elf_backend_data (info->output_bfd);
1318 + htab = elf_x86_hash_table (info, bed->target_id);
1319 + if (htab == NULL)
1320 + return pbfd;
1322 + if (ebfd != NULL)
1324 - /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
1325 - GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
1326 - prop = _bfd_elf_get_property (ebfd,
1327 - GNU_PROPERTY_X86_FEATURE_1_AND,
1328 - 4);
1329 - prop->u.number |= features;
1330 - prop->pr_kind = property_number;
1331 + prop = NULL;
1332 + if (features)
1334 + /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
1335 + GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
1336 + prop = _bfd_elf_get_property (ebfd,
1337 + GNU_PROPERTY_X86_FEATURE_1_AND,
1338 + 4);
1339 + prop->u.number |= features;
1340 + prop->pr_kind = property_number;
1342 + else if (has_text
1343 + && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
1344 + && !htab->elf.dynamic_sections_created
1345 + && !info->traditional_format
1346 + && (info->output_bfd->flags & D_PAGED) != 0
1347 + && info->separate_code)
1349 + /* If the separate code program header is needed, make sure
1350 + that the first read-only PT_LOAD segment has no code by
1351 + adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
1352 + elf_property_list *list;
1353 + bfd_boolean need_property = TRUE;
1355 + for (list = elf_properties (ebfd); list; list = list->next)
1356 + switch (list->property.pr_type)
1358 + case GNU_PROPERTY_STACK_SIZE:
1359 + case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
1360 + case GNU_PROPERTY_X86_ISA_1_NEEDED:
1361 + /* These properties won't be removed during merging. */
1362 + need_property = FALSE;
1363 + break;
1366 + if (need_property)
1368 + prop = _bfd_elf_get_property (ebfd,
1369 + GNU_PROPERTY_X86_ISA_1_NEEDED,
1370 + 4);
1371 + prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
1372 + prop->pr_kind = property_number;
1376 /* Create the GNU property note section if needed. */
1377 - if (pbfd == NULL)
1378 + if (prop != NULL && pbfd == NULL)
1380 sec = bfd_make_section_with_flags (ebfd,
1381 NOTE_GNU_PROPERTY_SECTION_NAME,
1382 @@ -2581,12 +2648,6 @@ error_alignment:
1384 pbfd = _bfd_elf_link_setup_gnu_properties (info);
1386 - bed = get_elf_backend_data (info->output_bfd);
1388 - htab = elf_x86_hash_table (info, bed->target_id);
1389 - if (htab == NULL)
1390 - return pbfd;
1392 htab->r_info = init_table->r_info;
1393 htab->r_sym = init_table->r_sym;
1395 diff --git a/bfd/version.h b/bfd/version.h
1396 index 222d2e62c3..333881dcd9 100644
1397 --- a/bfd/version.h
1398 +++ b/bfd/version.h
1399 @@ -16,7 +16,7 @@
1401 In releases, the date is not included in either version strings or
1402 sonames. */
1403 -#define BFD_VERSION_DATE 20180718
1404 +#define BFD_VERSION_DATE 20181130
1405 #define BFD_VERSION @bfd_version@
1406 #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@
1407 #define REPORT_BUGS_TO @report_bugs_to@
1408 diff --git a/binutils/ChangeLog b/binutils/ChangeLog
1409 index 32f47d5e07..6ef8592ff2 100644
1410 --- a/binutils/ChangeLog
1411 +++ b/binutils/ChangeLog
1412 @@ -1,3 +1,9 @@
1413 +2018-09-12 H.J. Lu <hongjiu.lu@intel.com>
1415 + PR ld/23499
1416 + * readelf.c (get_symbol_version_string): Return _("<corrupt>")
1417 + for corrupt symbol version info.
1419 2018-07-18 Nick Clifton <nickc@redhat.com>
1421 2.31.1 Release point.
1422 diff --git a/binutils/readelf.c b/binutils/readelf.c
1423 index 1b50ba7631..f4df697a7d 100644
1424 --- a/binutils/readelf.c
1425 +++ b/binutils/readelf.c
1426 @@ -11252,6 +11252,7 @@ get_symbol_version_string (Filedata * filedata,
1427 unsigned char data[2];
1428 unsigned short vers_data;
1429 unsigned long offset;
1430 + unsigned short max_vd_ndx;
1432 if (!is_dynsym
1433 || version_info[DT_VERSIONTAGIDX (DT_VERSYM)] == 0)
1434 @@ -11269,6 +11270,8 @@ get_symbol_version_string (Filedata * filedata,
1435 if ((vers_data & VERSYM_HIDDEN) == 0 && vers_data == 0)
1436 return NULL;
1438 + max_vd_ndx = 0;
1440 /* Usually we'd only see verdef for defined symbols, and verneed for
1441 undefined symbols. However, symbols defined by the linker in
1442 .dynbss for variables copied from a shared library in order to
1443 @@ -11311,6 +11314,9 @@ get_symbol_version_string (Filedata * filedata,
1444 ivd.vd_flags = BYTE_GET (evd.vd_flags);
1447 + if ((ivd.vd_ndx & VERSYM_VERSION) > max_vd_ndx)
1448 + max_vd_ndx = ivd.vd_ndx & VERSYM_VERSION;
1450 off += ivd.vd_next;
1452 while (ivd.vd_ndx != (vers_data & VERSYM_VERSION) && ivd.vd_next != 0);
1453 @@ -11402,6 +11408,9 @@ get_symbol_version_string (Filedata * filedata,
1454 return (ivna.vna_name < strtab_size
1455 ? strtab + ivna.vna_name : _("<corrupt>"));
1457 + else if ((max_vd_ndx || (vers_data & VERSYM_VERSION) != 1)
1458 + && (vers_data & VERSYM_VERSION) > max_vd_ndx)
1459 + return _("<corrupt>");
1461 return NULL;
1463 diff --git a/gas/ChangeLog b/gas/ChangeLog
1464 index bb4541900d..67e9327ed2 100644
1465 --- a/gas/ChangeLog
1466 +++ b/gas/ChangeLog
1467 @@ -1,3 +1,82 @@
1468 +2018-11-05 H.J. Lu <hongjiu.lu@intel.com>
1470 + PR gas/23854
1471 + * config/tc-i386.c (output_disp): Disable GOT relaxation with
1472 + data prefix.
1473 + * testsuite/gas/i386/mixed-mode-reloc32.d: Updated.
1475 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
1477 + * testsuite/gas/arm/undefined-insn-arm.d: Widen pe skip.
1478 + * testsuite/gas/arm/undefined-insn-thumb.d: Likewise.
1480 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
1482 + * testsuite/gas/arm/undefined-insn-arm.d: New test.
1483 + * testsuite/gas/arm/undefined-insn-thumb.d: New test.
1484 + * testsuite/gas/arm/undefined-insn.s: New test.
1486 +2018-10-16 Matthew Malcomson <matthew.malcomson@arm.com>
1488 + * testsuite/gas/aarch64/illegal-dotproduct.d: New test.
1489 + * testsuite/gas/aarch64/illegal-dotproduct.l: New test.
1490 + * testsuite/gas/aarch64/illegal-dotproduct.s: New test.
1492 +2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
1494 + * testsuite/gas/i386/se1.s: Add enclv.
1495 + * testsuite/gas/i386/x86-64-se1.s: Likewise.
1496 + * testsuite/gas/i386/se1.d: Updated.
1497 + * testsuite/gas/i386/x86-64-se1.d: Likewise.
1499 +2018-09-18 Tamar Christina <tamar.christina@arm.com>
1501 + * config/tc-aarch64.c (output_operand_error_report): Apply filtering to
1502 + current instead of head message.
1504 +2018-09-17 Nick Clifton <nickc@redhat.com>
1506 + backport from mainline:
1507 + * 2018-08-14 Robert Yang <liezhi.yang@windriver.com>
1509 + * as.c (main): Improve check for input file matching output file.
1511 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
1513 + * testsuite/gas/i386/evex-no-scale.s: Removed.
1514 + * testsuite/gas/i386/evex-no-scale-32.d: Don't use
1515 + evex-no-scale.s.
1516 + * testsuite/gas/i386/evex-no-scale-64.d: Likewise.
1517 + * testsuite/gas/i386/evex-no-scale-32.s: New file.
1518 + * testsuite/gas/i386/evex-no-scale-64.s: Likewise.
1520 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
1522 + * testsuite/gas/i386/i386.exp: Run evex-no-scale-32 and
1523 + evex-no-scale-64 only for ELF targets.
1525 +2018-07-31 Jan Beulich <jbeulich@suse.com>
1527 + PR gas/23465
1528 + * config/tc-i386.c (output_disp): Restrict scaling.
1529 + * testsuite/gas/i386/evex-no-scale.s,
1530 + testsuite/gas/i386/evex-no-scale-32.d
1531 + testsuite/gas/i386/evex-no-scale-64.d: New.
1532 + * testsuite/gas/i386/i386.exp: Run new tests.
1534 +2018-07-30 John David Anglin <danglin@gcc.gnu.org>
1536 + * config/tc-hppa.c: Include "struc-symbol.h".
1537 + (pa_build_unwind_subspace): Use call_info->start_symbol->sy_frag
1538 + instead of frag_now for local symbol replacement.
1540 +2018-07-18 H.J. Lu <hongjiu.lu@intel.com>
1542 + PR gas/23418
1543 + * testsuite/gas/i386/xmmword.s: Add tests for vcvtps2qq,
1544 + vcvtps2uqq, vcvttps2qq and vcvttps2uqq.
1545 + * testsuite/gas/i386/xmmword.l: Updated.
1547 2018-07-18 Nick Clifton <nickc@redhat.com>
1549 2.31.1 Release point.
1550 diff --git a/gas/as.c b/gas/as.c
1551 index 02c7d2970b..919c24a24a 100644
1552 --- a/gas/as.c
1553 +++ b/gas/as.c
1554 @@ -1254,14 +1254,27 @@ main (int argc, char ** argv)
1556 struct stat sib;
1558 - if (stat (argv[i], &sib) == 0)
1559 + /* Check that the input file and output file are different. */
1560 + if (stat (argv[i], &sib) == 0
1561 + && sib.st_ino == sob.st_ino
1562 + /* POSIX emulating systems may support stat() but if the
1563 + underlying file system does not support a file serial number
1564 + of some kind then they will return 0 for the inode. So
1565 + two files with an inode of 0 may not actually be the same.
1566 + On real POSIX systems no ordinary file will ever have an
1567 + inode of 0. */
1568 + && sib.st_ino != 0
1569 + /* Different files may have the same inode number if they
1570 + reside on different devices, so check the st_dev field as
1571 + well. */
1572 + && sib.st_dev == sob.st_dev)
1574 - if (sib.st_ino == sob.st_ino && sib.st_ino != 0)
1576 - /* Don't let as_fatal remove the output file! */
1577 - out_file_name = NULL;
1578 - as_fatal (_("The input and output files must be distinct"));
1580 + const char *saved_out_file_name = out_file_name;
1582 + /* Don't let as_fatal remove the output file! */
1583 + out_file_name = NULL;
1584 + as_fatal (_("The input '%s' and output '%s' files are the same"),
1585 + argv[i], saved_out_file_name);
1589 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
1590 index 31985963e3..c77de21d19 100644
1591 --- a/gas/config/tc-aarch64.c
1592 +++ b/gas/config/tc-aarch64.c
1593 @@ -4809,7 +4809,7 @@ output_operand_error_report (char *str, bfd_boolean non_fatal_only)
1594 /* If we don't want to print non-fatal errors then don't consider them
1595 at all. */
1596 if (curr->detail.kind != kind
1597 - || (non_fatal_only && !head->detail.non_fatal))
1598 + || (non_fatal_only && !curr->detail.non_fatal))
1599 continue;
1600 /* If there are multiple errors, pick up the one with the highest
1601 mismatching operand index. In the case of multiple errors with
1602 diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
1603 index e69fdb2b39..ccae68cb40 100644
1604 --- a/gas/config/tc-hppa.c
1605 +++ b/gas/config/tc-hppa.c
1606 @@ -23,6 +23,7 @@
1608 #include "as.h"
1609 #include "safe-ctype.h"
1610 +#include "struc-symbol.h"
1611 #include "subsegs.h"
1612 #include "dw2gencfi.h"
1614 @@ -5989,7 +5990,8 @@ pa_build_unwind_subspace (struct call_info *call_info)
1615 else
1617 symbolP = symbol_new (name, now_seg,
1618 - S_GET_VALUE (call_info->start_symbol), frag_now);
1619 + S_GET_VALUE (call_info->start_symbol),
1620 + call_info->start_symbol->sy_frag);
1621 gas_assert (symbolP);
1622 S_CLEAR_EXTERNAL (symbolP);
1623 symbol_table_insert (symbolP);
1624 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
1625 index 2d20f1cae9..a288a31844 100644
1626 --- a/gas/config/tc-i386.c
1627 +++ b/gas/config/tc-i386.c
1628 @@ -7857,7 +7857,8 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
1629 int size = disp_size (n);
1630 offsetT val = i.op[n].disps->X_add_number;
1632 - val = offset_in_range (val >> i.memshift, size);
1633 + val = offset_in_range (val >> (size == 1 ? i.memshift : 0),
1634 + size);
1635 p = frag_more (size);
1636 md_number_to_chars (p, val, size);
1638 @@ -7942,12 +7943,13 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
1639 /* Check for "call/jmp *mem", "mov mem, %reg",
1640 "test %reg, mem" and "binop mem, %reg" where binop
1641 is one of adc, add, and, cmp, or, sbb, sub, xor
1642 - instructions. Always generate R_386_GOT32X for
1643 - "sym*GOT" operand in 32-bit mode. */
1644 - if ((generate_relax_relocations
1645 - || (!object_64bit
1646 - && i.rm.mode == 0
1647 - && i.rm.regmem == 5))
1648 + instructions without data prefix. Always generate
1649 + R_386_GOT32X for "sym*GOT" operand in 32-bit mode. */
1650 + if (i.prefix[DATA_PREFIX] == 0
1651 + && (generate_relax_relocations
1652 + || (!object_64bit
1653 + && i.rm.mode == 0
1654 + && i.rm.regmem == 5))
1655 && (i.rm.mode == 2
1656 || (i.rm.mode == 0 && i.rm.regmem == 5))
1657 && ((i.operands == 1
1658 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.d b/gas/testsuite/gas/aarch64/illegal-dotproduct.d
1659 new file mode 100644
1660 index 0000000000..8d8b1b8506
1661 --- /dev/null
1662 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.d
1663 @@ -0,0 +1,4 @@
1664 +#as: -march=armv8.2-a+dotprod
1665 +#name: Invalid dotproduct instructions.
1666 +#source: illegal-dotproduct.s
1667 +#error-output: illegal-dotproduct.l
1668 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.l b/gas/testsuite/gas/aarch64/illegal-dotproduct.l
1669 new file mode 100644
1670 index 0000000000..06d0d78b8d
1671 --- /dev/null
1672 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.l
1673 @@ -0,0 +1,13 @@
1674 +[^:]+: Assembler messages:
1675 +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `udot V0.2S,V0.8B,V0.4B\[4\]'
1676 +[^:]+:[0-9]+: Error: operand mismatch -- `udot V0.4S,V0.8B,V0.4B\[4\]'
1677 +[^:]+:[0-9]+: Info: did you mean this\?
1678 +[^:]+:[0-9]+: Info: udot v0.2s, v0.8b, v0.4b\[4\]
1679 +[^:]+:[0-9]+: Info: other valid variant\(s\):
1680 +[^:]+:[0-9]+: Info: udot v0.4s, v0.16b, v0.4b\[4\]
1681 +[^:]+:[0-9]+: Error: register element index out of range 0 to 3 at operand 3 -- `sdot V0.2S,V0.8B,V0.4B\[4\]'
1682 +[^:]+:[0-9]+: Error: operand mismatch -- `sdot V0.2S,V0.8B,V0.4H\[4\]'
1683 +[^:]+:[0-9]+: Info: did you mean this\?
1684 +[^:]+:[0-9]+: Info: sdot v0.2s, v0.8b, v0.4b\[4\]
1685 +[^:]+:[0-9]+: Info: other valid variant\(s\):
1686 +[^:]+:[0-9]+: Info: sdot v0.4s, v0.16b, v0.4b\[4\]
1687 diff --git a/gas/testsuite/gas/aarch64/illegal-dotproduct.s b/gas/testsuite/gas/aarch64/illegal-dotproduct.s
1688 new file mode 100644
1689 index 0000000000..9c714ae54d
1690 --- /dev/null
1691 +++ b/gas/testsuite/gas/aarch64/illegal-dotproduct.s
1692 @@ -0,0 +1,4 @@
1693 +UDOT V0.2S, V0.8B, V0.4B[4]
1694 +UDOT V0.4S, V0.8B, V0.4B[4]
1695 +SDOT V0.2S, V0.8B, V0.4B[4]
1696 +SDOT V0.2S, V0.8B, V0.4H[4]
1697 diff --git a/gas/testsuite/gas/arm/undefined-insn-arm.d b/gas/testsuite/gas/arm/undefined-insn-arm.d
1698 new file mode 100644
1699 index 0000000000..175e778b50
1700 --- /dev/null
1701 +++ b/gas/testsuite/gas/arm/undefined-insn-arm.d
1702 @@ -0,0 +1,5 @@
1703 +#name: Undefined binary printing in arm mode
1704 +#skip: *-*-pe *-*-vxworks
1705 +#source: undefined-insn.s
1706 +#objdump: -D -b binary -m armv5te
1707 +#...
1708 diff --git a/gas/testsuite/gas/arm/undefined-insn-thumb.d b/gas/testsuite/gas/arm/undefined-insn-thumb.d
1709 new file mode 100644
1710 index 0000000000..a5b4159f1e
1711 --- /dev/null
1712 +++ b/gas/testsuite/gas/arm/undefined-insn-thumb.d
1713 @@ -0,0 +1,5 @@
1714 +#name: Undefined binary printing in thumb mode
1715 +#skip: *-*-pe *-*-vxworks
1716 +#source: undefined-insn.s
1717 +#objdump: -D -b binary -m armv5te -M force-thumb
1718 +#...
1719 diff --git a/gas/testsuite/gas/arm/undefined-insn.s b/gas/testsuite/gas/arm/undefined-insn.s
1720 new file mode 100644
1721 index 0000000000..cf59a03d1d
1722 --- /dev/null
1723 +++ b/gas/testsuite/gas/arm/undefined-insn.s
1724 @@ -0,0 +1 @@
1725 + .inst 0xffffffff
1726 diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.d b/gas/testsuite/gas/i386/evex-no-scale-32.d
1727 new file mode 100644
1728 index 0000000000..0a2860d32e
1729 --- /dev/null
1730 +++ b/gas/testsuite/gas/i386/evex-no-scale-32.d
1731 @@ -0,0 +1,12 @@
1732 +#objdump: -dw
1733 +#name: ix86 EVEX no disp scaling
1735 +.*: +file format .*
1737 +Disassembly of section .text:
1739 +0+ <disp>:
1740 + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0
1741 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40\(,%eiz,1\),%zmm0
1742 + +[a-f0-9]+: 62 f1 7c 48 28 05 40 00 00 00 vmovaps 0x40,%zmm0
1743 + +[a-f0-9]+: 67 62 f1 7c 48 28 06 40 00 vmovaps 0x40,%zmm0
1744 diff --git a/gas/testsuite/gas/i386/evex-no-scale-32.s b/gas/testsuite/gas/i386/evex-no-scale-32.s
1745 new file mode 100644
1746 index 0000000000..e28c73f2a3
1747 --- /dev/null
1748 +++ b/gas/testsuite/gas/i386/evex-no-scale-32.s
1749 @@ -0,0 +1,7 @@
1750 + .allow_index_reg
1751 + .text
1752 +disp:
1753 + vmovaps 64(,%eax), %zmm0
1754 + vmovaps 64(,%eiz), %zmm0
1755 + vmovaps 64, %zmm0
1756 + addr16 vmovaps 64, %zmm0
1757 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.d b/gas/testsuite/gas/i386/evex-no-scale-64.d
1758 new file mode 100644
1759 index 0000000000..d52d947ab3
1760 --- /dev/null
1761 +++ b/gas/testsuite/gas/i386/evex-no-scale-64.d
1762 @@ -0,0 +1,14 @@
1763 +#objdump: -dw
1764 +#name: x86-64 EVEX no disp scaling
1766 +.*: +file format .*
1768 +Disassembly of section .text:
1770 +0+ <disp>:
1771 + +[a-f0-9]+: 62 f1 7c 48 28 05 00 fc ff ff vmovaps -0x400\(%rip\),%zmm0 # .*
1772 + +[a-f0-9]+: 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%rax,1\),%zmm0
1773 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0
1774 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 05 40 00 00 00 vmovaps 0x40\(,%eax,1\),%zmm0
1775 + +[a-f0-9]+: 67 62 f1 7c 48 28 04 25 40 00 00 00 addr32 vmovaps 0x40,%zmm0
1776 + +[a-f0-9]+: 62 f1 7c 48 28 04 25 40 00 00 00 vmovaps 0x40,%zmm0
1777 diff --git a/gas/testsuite/gas/i386/evex-no-scale-64.s b/gas/testsuite/gas/i386/evex-no-scale-64.s
1778 new file mode 100644
1779 index 0000000000..bc3749cc0c
1780 --- /dev/null
1781 +++ b/gas/testsuite/gas/i386/evex-no-scale-64.s
1782 @@ -0,0 +1,9 @@
1783 + .allow_index_reg
1784 + .text
1785 +disp:
1786 + vmovaps -1024(%rip), %zmm0
1787 + vmovaps 64(,%rax), %zmm0
1788 + vmovaps 64(,%riz), %zmm0
1789 + vmovaps 64(,%eax), %zmm0
1790 + vmovaps 64(,%eiz), %zmm0
1791 + vmovaps 64, %zmm0
1792 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
1793 index 9cc927a962..3987862477 100644
1794 --- a/gas/testsuite/gas/i386/i386.exp
1795 +++ b/gas/testsuite/gas/i386/i386.exp
1796 @@ -525,6 +525,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
1797 run_dump_test "nop-5"
1798 run_dump_test "nop-6"
1800 + run_dump_test "evex-no-scale-32"
1802 if { [gas_64_check] } then {
1803 run_dump_test "att-regs"
1804 run_dump_test "intel-regs"
1805 @@ -1017,6 +1019,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
1806 run_dump_test "x86-64-nop-4"
1807 run_dump_test "x86-64-nop-5"
1808 run_dump_test "x86-64-nop-6"
1810 + run_dump_test "evex-no-scale-64"
1813 set ASFLAGS "$old_ASFLAGS"
1814 diff --git a/gas/testsuite/gas/i386/mixed-mode-reloc32.d b/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1815 index a2ef6a0b85..59234bc9be 100644
1816 --- a/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1817 +++ b/gas/testsuite/gas/i386/mixed-mode-reloc32.d
1818 @@ -7,7 +7,7 @@
1820 RELOCATION RECORDS FOR \[.text\]:
1821 OFFSET[ ]+TYPE[ ]+VALUE[ ]*
1822 -[0-9a-f]+[ ]+R_386_GOT32X[ ]+xtrn[ ]*
1823 +[0-9a-f]+[ ]+R_386_GOT32[ ]+xtrn[ ]*
1824 [0-9a-f]+[ ]+R_386_PLT32[ ]+xtrn[ ]*
1825 [0-9a-f]+[ ]+R_386_GOT32X[ ]+xtrn[ ]*
1826 [0-9a-f]+[ ]+R_386_PLT32[ ]+xtrn[ ]*
1827 diff --git a/gas/testsuite/gas/i386/se1.d b/gas/testsuite/gas/i386/se1.d
1828 index ff2685c781..d7800ab885 100644
1829 --- a/gas/testsuite/gas/i386/se1.d
1830 +++ b/gas/testsuite/gas/i386/se1.d
1831 @@ -10,4 +10,5 @@ Disassembly of section .text:
1832 0+ <_start>:
1833 [ ]*[a-f0-9]+: 0f 01 cf encls
1834 [ ]*[a-f0-9]+: 0f 01 d7 enclu
1835 +[ ]*[a-f0-9]+: 0f 01 c0 enclv
1836 #pass
1837 diff --git a/gas/testsuite/gas/i386/se1.s b/gas/testsuite/gas/i386/se1.s
1838 index 1b57ac87fe..92d57952c0 100644
1839 --- a/gas/testsuite/gas/i386/se1.s
1840 +++ b/gas/testsuite/gas/i386/se1.s
1841 @@ -5,3 +5,4 @@ _start:
1843 encls
1844 enclu
1845 + enclv
1846 diff --git a/gas/testsuite/gas/i386/x86-64-se1.d b/gas/testsuite/gas/i386/x86-64-se1.d
1847 index 29494f0090..a515219406 100644
1848 --- a/gas/testsuite/gas/i386/x86-64-se1.d
1849 +++ b/gas/testsuite/gas/i386/x86-64-se1.d
1850 @@ -10,4 +10,5 @@ Disassembly of section .text:
1851 0+ <_start>:
1852 [ ]*[a-f0-9]+: 0f 01 cf encls
1853 [ ]*[a-f0-9]+: 0f 01 d7 enclu
1854 +[ ]*[a-f0-9]+: 0f 01 c0 enclv
1855 #pass
1856 diff --git a/gas/testsuite/gas/i386/x86-64-se1.s b/gas/testsuite/gas/i386/x86-64-se1.s
1857 index 1b57ac87fe..92d57952c0 100644
1858 --- a/gas/testsuite/gas/i386/x86-64-se1.s
1859 +++ b/gas/testsuite/gas/i386/x86-64-se1.s
1860 @@ -5,3 +5,4 @@ _start:
1862 encls
1863 enclu
1864 + enclv
1865 diff --git a/gas/testsuite/gas/i386/xmmword.l b/gas/testsuite/gas/i386/xmmword.l
1866 index ce3af8d150..7d25cb3de2 100644
1867 --- a/gas/testsuite/gas/i386/xmmword.l
1868 +++ b/gas/testsuite/gas/i386/xmmword.l
1869 @@ -99,3 +99,7 @@
1870 .*:127: Error: .* `vpmovzxwq'
1871 .*:128: Error: .* `vpmovzxwq'
1872 .*:129: Error: .* `vpmovzxwq'
1873 +.*:131: Error: .* `vcvtps2qq'
1874 +.*:132: Error: .* `vcvtps2uqq'
1875 +.*:133: Error: .* `vcvttps2qq'
1876 +.*:134: Error: .* `vcvttps2uqq'
1877 diff --git a/gas/testsuite/gas/i386/xmmword.s b/gas/testsuite/gas/i386/xmmword.s
1878 index 47d2d8d595..ffe7aca3cb 100644
1879 --- a/gas/testsuite/gas/i386/xmmword.s
1880 +++ b/gas/testsuite/gas/i386/xmmword.s
1881 @@ -127,3 +127,8 @@ xmmword:
1882 vpmovzxwq xmm0{k7}, xmmword ptr [eax]
1883 vpmovzxwq ymm0, xmmword ptr [eax]
1884 vpmovzxwq ymm0{k7}, xmmword ptr [eax]
1886 + vcvtps2qq xmm0, xmmword ptr [rax]
1887 + vcvtps2uqq xmm0, xmmword ptr [rax]
1888 + vcvttps2qq xmm0, xmmword ptr [rax]
1889 + vcvttps2uqq xmm0, xmmword ptr [rax]
1890 diff --git a/gold/ChangeLog b/gold/ChangeLog
1891 index 18af5e69b1..cf998d901a 100644
1892 --- a/gold/ChangeLog
1893 +++ b/gold/ChangeLog
1894 @@ -1,3 +1,15 @@
1895 +2018-08-06 Cary Coutant <ccoutant@gmail.com>
1897 + PR gold/23455
1898 + * options.h (General_options): Add --warn-drop-version option.
1899 + * symtab.cc (Symbol_table::set_dynsym_indexes): Check it.
1901 +2018-08-06 Cary Coutant <ccoutant@gmail.com>
1903 + * target.h (Sized_target::record_gnu_property): Change first two
1904 + parameters to unsigned int.
1905 + * x86_64.cc (Target_x86_64::record_gnu_property): Likewise.
1907 2018-07-18 Nick Clifton <nickc@redhat.com>
1909 2.31.1 Release point.
1910 diff --git a/gold/options.h b/gold/options.h
1911 index 98d6be8009..11054981c9 100644
1912 --- a/gold/options.h
1913 +++ b/gold/options.h
1914 @@ -1361,6 +1361,10 @@ class General_options
1915 DEFINE_bool_ignore(warn_constructors, options::TWO_DASHES, '\0',
1916 N_("Ignored"), N_("Ignored"));
1918 + DEFINE_bool(warn_drop_version, options::TWO_DASHES, '\0', false,
1919 + N_("Warn when discarding version information"),
1920 + N_("Do not warn when discarding version information"));
1922 DEFINE_bool(warn_execstack, options::TWO_DASHES, '\0', false,
1923 N_("Warn if the stack is executable"),
1924 N_("Do not warn if the stack is executable"));
1925 diff --git a/gold/symtab.cc b/gold/symtab.cc
1926 index aa7644156f..759e0d0222 100644
1927 --- a/gold/symtab.cc
1928 +++ b/gold/symtab.cc
1929 @@ -2623,11 +2623,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
1930 versions->record_version(this, dynpool, sym);
1931 else
1933 - gold_warning(_("discarding version information for "
1934 - "%s@%s, defined in unused shared library %s "
1935 - "(linked with --as-needed)"),
1936 - sym->name(), sym->version(),
1937 - sym->object()->name().c_str());
1938 + if (parameters->options().warn_drop_version())
1939 + gold_warning(_("discarding version information for "
1940 + "%s@%s, defined in unused shared library %s "
1941 + "(linked with --as-needed)"),
1942 + sym->name(), sym->version(),
1943 + sym->object()->name().c_str());
1944 sym->clear_version();
1947 diff --git a/gold/target.h b/gold/target.h
1948 index bb312067b5..bbc87396f6 100644
1949 --- a/gold/target.h
1950 +++ b/gold/target.h
1951 @@ -1147,7 +1147,8 @@ class Sized_target : public Target
1952 // Record a target-specific program property in the .note.gnu.property
1953 // section.
1954 virtual void
1955 - record_gnu_property(int, int, size_t, const unsigned char*, const Object*)
1956 + record_gnu_property(unsigned int, unsigned int, size_t,
1957 + const unsigned char*, const Object*)
1960 // Merge the target-specific program properties from the current object.
1961 diff --git a/gold/x86_64.cc b/gold/x86_64.cc
1962 index 27f273d64b..9d742f6f13 100644
1963 --- a/gold/x86_64.cc
1964 +++ b/gold/x86_64.cc
1965 @@ -1307,7 +1307,8 @@ class Target_x86_64 : public Sized_target<size, false>
1966 // Record a target-specific program property in the .note.gnu.property
1967 // section.
1968 void
1969 - record_gnu_property(int, int, size_t, const unsigned char*, const Object*);
1970 + record_gnu_property(unsigned int, unsigned int, size_t,
1971 + const unsigned char*, const Object*);
1973 // Merge the target-specific program properties from the current object.
1974 void
1975 @@ -1579,7 +1580,7 @@ Target_x86_64<size>::rela_irelative_section(Layout* layout)
1976 template<int size>
1977 void
1978 Target_x86_64<size>::record_gnu_property(
1979 - int, int pr_type,
1980 + unsigned int, unsigned int pr_type,
1981 size_t pr_datasz, const unsigned char* pr_data,
1982 const Object* object)
1984 diff --git a/include/ChangeLog b/include/ChangeLog
1985 index 7decb4fd7b..e0b82bc338 100644
1986 --- a/include/ChangeLog
1987 +++ b/include/ChangeLog
1988 @@ -1,3 +1,9 @@
1989 +2018-11-15 Claudiu Zissulescu <claziss@synopsys.com>
1991 + Backport from mainline
1992 + 2018-08-01 Cupertino Miranda <cmiranda@synopsys.com>
1993 + * arc-reloc.def (ARC_TLS_LE_32): Updated reloc formula.
1995 2018-07-18 Nick Clifton <nickc@redhat.com>
1997 2.31.1 Release point.
1998 diff --git a/include/elf/arc-reloc.def b/include/elf/arc-reloc.def
1999 index a6db724da9..61edd6e67a 100644
2000 --- a/include/elf/arc-reloc.def
2001 +++ b/include/elf/arc-reloc.def
2002 @@ -468,7 +468,7 @@ ARC_RELOC_HOWTO(ARC_TLS_DTPOFF, 67, \
2003 32, \
2004 replace_word32, \
2005 dont, \
2006 - ( ME ( S - SECTSTART ) + A ))
2007 + ( ME ( S - FINAL_SECTSTART ) + A ))
2009 ARC_RELOC_HOWTO(ARC_TLS_DTPOFF_S9, 73, \
2010 2, \
2011 @@ -489,7 +489,7 @@ ARC_RELOC_HOWTO(ARC_TLS_LE_32, 75, \
2012 32, \
2013 replace_word32, \
2014 dont, \
2015 - ( ME ( ( ( ( S + A ) + TCB_SIZE ) - TLS_REL ) ) ))
2016 + ( ME ( ( ( ( S + A ) + TLS_TBSS ) - TLS_REL ) ) ))
2018 ARC_RELOC_HOWTO(ARC_S25W_PCREL_PLT, 76, \
2019 2, \
2020 diff --git a/ld/ChangeLog b/ld/ChangeLog
2021 index c07e442c84..38963b90cf 100644
2022 --- a/ld/ChangeLog
2023 +++ b/ld/ChangeLog
2024 @@ -1,3 +1,134 @@
2025 +2018-11-30 Alan Modra <amodra@gmail.com>
2027 + * testsuite/ld-powerpc/pr23937.d,
2028 + * testsuite/ld-powerpc/pr23937.s: New test.
2029 + * testsuite/ld-powerpc/powerpc.exp: Run it.
2031 +2018-11-27 Tamar Christina <tamar.christina@arm.com>
2033 + PR ld/23904
2034 + * testsuite/ld-aarch64/aarch64-elf.exp: Add erratum843419_tls_ie.
2035 + * testsuite/ld-aarch64/erratum843419_tls_ie.d: New test.
2036 + * testsuite/ld-aarch64/erratum843419_tls_ie.s: New test.
2038 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
2040 + PR gas/23854
2041 + * testsuite/ld-i386/i386.exp: Run pr23854.
2042 + * testsuite/ld-x86-64/x86-64.exp: Likewwise.
2043 + * testsuite/ld-i386/pr23854.d: New file.
2044 + * testsuite/ld-i386/pr23854.s: Likewwise.
2045 + * testsuite/ld-i386/pr23854.d: Likewwise.
2046 + * testsuite/ld-x86-64/pr23854.d: Likewwise.
2047 + * testsuite/ld-x86-64/pr23854.s: Likewwise.
2049 +2018-11-06 H.J. Lu <hongjiu.lu@intel.com>
2051 + PR ld/23818
2052 + * testsuite/ld-plugin/lto.exp: Run PR ld/23818 test.
2053 + * testsuite/ld-plugin/pr23818.d: New file.
2054 + * testsuite/ld-plugin/pr23818.t: Likewise.
2055 + * testsuite/ld-plugin/pr23818a.c: Likewise.
2056 + * testsuite/ld-plugin/pr23818b.c: Likewise.
2058 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
2060 + * testsuite/ld-x86-64/pr23486b.d: Swap pr23486a.s and pr23486a.s.
2062 +2018-08-12 H.J. Lu <hongjiu.lu@intel.com>
2064 + PR ld/23428
2065 + * testsuite/ld-elf/dummy.s: New file.
2066 + * testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
2067 + * testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
2069 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
2071 + PR ld/23486
2072 + * testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
2073 + * testsuite/ld-x86-64/x86-64.exp: Likewise.
2074 + * testsuite/ld-i386/pr23486a.d: New file.
2075 + * testsuite/ld-i386/pr23486b.d: Likewise.
2076 + * testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
2077 + * testsuite/ld-x86-64/pr23486a.d: Likewise.
2078 + * testsuite/ld-x86-64/pr23486a.s: Likewise.
2079 + * testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
2080 + * testsuite/ld-x86-64/pr23486b.d: Likewise.
2081 + * testsuite/ld-x86-64/pr23486b.s: Likewise.
2082 + * testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
2083 + * testsuite/ld-i386/property-4.r: Likewise.
2084 + * testsuite/ld-i386/property-5.r: Likewise.
2085 + * testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
2086 + * testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
2087 + * testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
2088 + * testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
2089 + * testsuite/ld-x86-64/property-3.r: Likewise.
2090 + * testsuite/ld-x86-64/property-4.r: Likewise.
2091 + * testsuite/ld-x86-64/property-5.r: Likewise.
2092 + * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
2093 + * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
2094 + * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
2095 + * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
2096 + * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
2097 + * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
2098 + * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
2099 + * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
2101 +2018-08-10 H.J. Lu <hongjiu.lu@intel.com>
2103 + * testsuite/ld-x86-64/property-x86-3.s: Use ".p2align 2" to
2104 + align .note.gnu.property section if __64_bit__ is undefined.
2106 +2018-08-01 Alan Modra <amodra@gmail.com>
2108 + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with hash-style
2109 + specified.
2111 +2018-08-01 Alan Modra <amodra@gmail.com>
2113 + * testsuite/ld-powerpc/powerpc.exp: Run tlsopt5 with plt alignment.
2114 + * testsuite/ld-powerpc/tlsopt5.s: Add extra call.
2115 + * testsuite/ld-powerpc/tlsopt5.wf: Adjust expected output.
2116 + * testsuite/ld-powerpc/tlsopt5.d: Likewise.
2118 +2018-08-07 Nick Clifton <nickc@redhat.com>
2120 + * po/bg.po: Updated Bulgarian translation.
2122 +2018-08-01 Roland McGrath <mcgrathr@google.com>
2124 + * testsuite/ld-aarch64/ifunc-1-local.d: Adjust regexps to match
2125 + the offsets emitted by aarch64-elf configurations.
2126 + * testsuite/ld-aarch64/ifunc-1.d: Likewise.
2127 + * testsuite/ld-aarch64/ifunc-2-local.d: Likewise.
2128 + * testsuite/ld-aarch64/ifunc-2.d: Likewise.
2129 + * testsuite/ld-aarch64/ifunc-21.d: Likewise.
2130 + * testsuite/ld-aarch64/ifunc-3a.d: Likewise.
2132 +2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
2134 + PR ld/23428
2135 + * testsuite/ld-elf/linux-x86.S: New file.
2136 + * testsuite/ld-elf/linux-x86.exp: Likewise.
2137 + * testsuite/ld-elf/pr23428.c: Likewise.
2138 + * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
2139 + for Linux/x86 targets.
2140 + * testsuite/ld-i386/abs-iamcu.d: Likewise.
2141 + * testsuite/ld-i386/abs.d: Likewise.
2142 + * testsuite/ld-i386/pr12718.d: Likewise.
2143 + * testsuite/ld-i386/pr12921.d: Likewise.
2144 + * testsuite/ld-x86-64/abs-k1om.d: Likewise.
2145 + * testsuite/ld-x86-64/abs-l1om.d: Likewise.
2146 + * testsuite/ld-x86-64/abs.d: Likewise.
2147 + * testsuite/ld-x86-64/pr12718.d: Likewise.
2148 + * testsuite/ld-x86-64/pr12921.d: Likewise.
2149 + * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
2150 + section.
2151 + * testsuite/ld-scripts/print-memory-usage.t: Likewise.
2152 + * testsuite/ld-scripts/size-2.t: Likewise.
2153 + * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
2154 + create executable if language is "asm".
2156 2018-07-18 Nick Clifton <nickc@redhat.com>
2158 2.31.1 Release point.
2159 diff --git a/ld/po/bg.po b/ld/po/bg.po
2160 index 5e8e818818..bf6ecd9b61 100644
2161 --- a/ld/po/bg.po
2162 +++ b/ld/po/bg.po
2163 @@ -13,7 +13,7 @@ msgstr ""
2164 "Project-Id-Version: ld 2.30.90\n"
2165 "Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
2166 "POT-Creation-Date: 2018-06-24 19:43+0100\n"
2167 -"PO-Revision-Date: 2018-06-28 22:58+0300\n"
2168 +"PO-Revision-Date: 2018-07-26 20:34+0300\n"
2169 "Last-Translator: Румен Петров <transl@roumenpetrov.info>\n"
2170 "Language-Team: Bulgarian <dict@ludost.net>\n"
2171 "Language: bg\n"
2172 @@ -33,7 +33,7 @@ msgstr "%X%P: cref_hash_lookup не успя: %E\n"
2174 #: ldcref.c:186
2175 msgid "%X%P: cref alloc failed: %E\n"
2176 -msgstr "%X%P: пропадна заделяне(на памет) за cref: %E\n"
2177 +msgstr "%X%P: не успя заделянето на памет в cref: %E\n"
2179 #: ldcref.c:371
2180 #, c-format
2181 @@ -62,7 +62,7 @@ msgstr "Без имена\n"
2183 #: ldcref.c:413 ldcref.c:565
2184 msgid "%P: symbol `%pT' missing from main hash table\n"
2185 -msgstr "%P: име '%pT' липсва в главната хеш-таблица\n"
2186 +msgstr "%P: в главния речник липсва името '%pT'\n"
2188 #: ldcref.c:517 ldcref.c:628 ldmain.c:1211 ldmisc.c:335 pe-dll.c:715
2189 #: pe-dll.c:1296 pe-dll.c:1417 pe-dll.c:1535 earm_wince_pe.c:1430
2190 @@ -87,7 +87,7 @@ msgstr "%X%P: %C: забранено е кръстосана отпратка о
2192 #: ldctor.c:83
2193 msgid "%X%P: different relocs used in set %s\n"
2194 -msgstr "%X%P: различни \"преместванията\" се използват в множеството %s\n"
2195 +msgstr "%X%P: различни \"премествания\" се използват в набора %s\n"
2197 #: ldctor.c:101
2198 msgid "%X%P: different object file formats composing set %s\n"
2199 @@ -103,7 +103,7 @@ msgstr "%X%P: раздел %s не поддържа преместване %s з
2201 #: ldctor.c:321
2202 msgid "%X%P: unsupported size %d for set %s\n"
2203 -msgstr "%X%P: неподдържан размер %d за множеството %s\n"
2204 +msgstr "%X%P: неподдържан размер %d за набор %s\n"
2206 #: ldctor.c:344
2207 msgid ""
2208 @@ -202,7 +202,7 @@ msgstr "%F%P:%pS не може да се върне обратно брояч н
2210 #: ldexp.c:1167
2211 msgid "%F%P:%s: hash creation failed\n"
2212 -msgstr "%F%P:%s: пропадна създаването на хеш\n"
2213 +msgstr "%F%P:%s: не успя създаването на хеш\n"
2215 #: ldexp.c:1519 ldexp.c:1545 ldexp.c:1605
2216 msgid "%F%P:%pS: nonconstant expression for %s\n"
2217 @@ -210,7 +210,7 @@ msgstr "%F%P:%pS: не е константен изразът за %s\n"
2219 #: ldexp.c:1631 ldlang.c:1234 ldlang.c:3187 ldlang.c:7174
2220 msgid "%F%P: can not create hash table: %E\n"
2221 -msgstr "%F%P: не може да се създаде хеш-таблицата: %E\n"
2222 +msgstr "%F%P: не може да се създаде речник: %E\n"
2224 #: ldfile.c:132 eaarch64cloudabi.c:656 eaarch64cloudabib.c:656
2225 #: eaarch64elf.c:656 eaarch64elf32.c:656 eaarch64elf32b.c:656
2226 @@ -286,12 +286,12 @@ msgstr "%F%P: не може да се създаде хеш-таблицата:
2227 #: eshlelf_vxworks.c:370 ev850.c:387 ev850_rh850.c:387 exgateelf.c:341
2228 #, c-format
2229 msgid "attempt to open %s failed\n"
2230 -msgstr "опита да се отвори %s не успя\n"
2231 +msgstr "опитът да се отвори %s не успя\n"
2233 #: ldfile.c:134
2234 #, c-format
2235 msgid "attempt to open %s succeeded\n"
2236 -msgstr "опита да се отвори %s успя\n"
2237 +msgstr "опитът да се отвори %s успя\n"
2239 #: ldfile.c:140
2240 msgid "%F%P: invalid BFD target `%s'\n"
2241 @@ -353,7 +353,7 @@ msgstr "%F%P:%pS: грешка: синоним за област памет по
2243 #: ldlang.c:1372
2244 msgid "%F%P:%pS: error: redefinition of memory region alias `%s'\n"
2245 -msgstr "%F%P:%pS: грешка: повторен определение на синоним за област памет '%s'\n"
2246 +msgstr "%F%P:%pS: грешка: повторено определение на синоним за област памет '%s'\n"
2248 #: ldlang.c:1379
2249 msgid "%F%P:%pS: error: memory region `%s' for alias `%s' does not exist\n"
2250 @@ -361,7 +361,7 @@ msgstr "%F%P:%pS: грешка: област памет '%s' за синоним
2252 #: ldlang.c:1438 ldlang.c:1477
2253 msgid "%F%P: failed creating section `%s': %E\n"
2254 -msgstr "%F%P: пропадна създаването на раздел '%s': %E\n"
2255 +msgstr "%F%P: не успя създаването на раздел '%s': %E\n"
2257 #: ldlang.c:1998
2258 msgid ""
2259 @@ -439,7 +439,7 @@ msgstr "%F%P: %pB: файлът не е разпознат: %E\n"
2261 #: ldlang.c:2854
2262 msgid "%F%P: %pB: member %pB in archive is not an object\n"
2263 -msgstr "%F%P: %pB: членът, на архива %pB, не е обект\n"
2264 +msgstr "%F%P: %pB: членът на архива %pB не е обект\n"
2266 #: ldlang.c:2869 ldlang.c:2883 eaarch64cloudabi.c:776 eaarch64cloudabib.c:776
2267 #: eaarch64elf.c:776 eaarch64elf32.c:776 eaarch64elf32b.c:776
2268 @@ -518,7 +518,7 @@ msgstr "%F%P: %pB: грешка при добавяне на имената: %E\
2270 #: ldlang.c:3157
2271 msgid "%P: warning: could not find any targets that match endianness requirement\n"
2272 -msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба(на байтовете)\n"
2273 +msgstr "%P: предупреждение: не може да се открие резултат, който да отговаря на изискванията за подредба на байтовете\n"
2275 #: ldlang.c:3171
2276 msgid "%F%P: target %s not found\n"
2277 @@ -546,7 +546,7 @@ msgstr "%X%P: не е определено задължителното име '
2279 #: ldlang.c:3770
2280 msgid "%F%P: %s not found for insert\n"
2281 -msgstr "%F%P: %s не е намерен(за добавяне)\n"
2282 +msgstr "%F%P: %s не е намерен за добавяне\n"
2284 #: ldlang.c:4011
2285 msgid " load address 0x%V"
2286 @@ -598,7 +598,7 @@ msgstr "%X%P: %pB раздел '%s' не се побира в област '%s'\
2288 #: ldlang.c:5050
2289 msgid "%F%P:%pS: non constant or forward reference address expression for section %s\n"
2290 -msgstr "%F%P:%pS: адресния израз не е константен или отпратка за по нататък при раздел %s\n"
2291 +msgstr "%F%P:%pS: адресният израз не е константен или е отпратка за по нататък при раздел %s\n"
2293 #: ldlang.c:5075
2294 msgid "%X%P: internal error on COFF shared library section %s\n"
2295 @@ -664,7 +664,7 @@ msgstr "%X%P: %s архитектурата на входен файл '%pB' е
2297 #: ldlang.c:6332
2298 msgid "%X%P: failed to merge target specific data of file %pB\n"
2299 -msgstr "%X%P: пропадна сливането, на специфични за резултата данни, от файл %pB\n"
2300 +msgstr "%X%P: не успя сливането на целеви данни от файл %pB\n"
2302 #: ldlang.c:6403
2303 msgid "%F%P: could not define common symbol `%pT': %E\n"
2304 @@ -704,7 +704,7 @@ msgstr "%F%P:%pS: грешка: зададено е подравняване с
2306 #: ldlang.c:7198
2307 msgid "%F%P: %s: plugin reported error after all symbols read\n"
2308 -msgstr "%F%P: %s: приставката рапортува грешка, след прочитане на всички имена\n"
2309 +msgstr "%F%P: %s: приставката отчете грешка след прочитане на всички имена\n"
2311 #: ldlang.c:7602
2312 msgid "%F%P: multiple STARTUP files\n"
2313 @@ -805,11 +805,11 @@ msgstr "%P: грешка при свързване, изтриване на из
2315 #: ldmain.c:490
2316 msgid "%F%P: %pB: final close failed: %E\n"
2317 -msgstr "%F%P: %pB: пропадна заключителното затваряне: %E\n"
2318 +msgstr "%F%P: %pB: не успя заключителното затваряне: %E\n"
2320 #: ldmain.c:517
2321 msgid "%F%P: unable to open for source of copy `%s'\n"
2322 -msgstr "%F%P: не можа да се отвори източника на копието '%s'\n"
2323 +msgstr "%F%P: не можа да се отвори източникът на копието '%s'\n"
2325 #: ldmain.c:520
2326 msgid "%F%P: unable to open for destination of copy `%s'\n"
2327 @@ -1017,7 +1017,7 @@ msgstr "%P: вътрешна грешка: прекратяване на %s:%d\n
2329 #: ldmisc.c:703
2330 msgid "%F%P: please report this bug\n"
2331 -msgstr "%F%P: моля, рапортувайте този проблем\n"
2332 +msgstr "%F%P: моля, докладвайте този проблем\n"
2334 #. Output for noisy == 2 is intended to follow the GNU standards.
2335 #: ldver.c:37
2336 @@ -1048,7 +1048,7 @@ msgstr " Поддържани подражавания:\n"
2338 #: ldwrite.c:60 ldwrite.c:206 ldwrite.c:258 ldwrite.c:299
2339 msgid "%F%P: bfd_new_link_order failed\n"
2340 -msgstr "%F%P: пропадна bfd_new_link_order\n"
2341 +msgstr "%F%P: bfd_new_link_order не успя\n"
2343 #: ldwrite.c:368
2344 msgid "%F%P: cannot create split section name for %s\n"
2345 @@ -1056,7 +1056,7 @@ msgstr "%F%P: при разцепване на раздел, не можа да
2347 #: ldwrite.c:380
2348 msgid "%F%P: clone section failed: %E\n"
2349 -msgstr "%F%P: пропадна копирането на раздел: %E\n"
2350 +msgstr "%F%P: не успя раздвояването на раздел: %E\n"
2352 #: ldwrite.c:418
2353 #, c-format
2354 @@ -1065,7 +1065,7 @@ msgstr "%8x други\n"
2356 #: ldwrite.c:588
2357 msgid "%F%P: final link failed: %E\n"
2358 -msgstr "%F%P: пропадна заключителното свързване: %E\n"
2359 +msgstr "%F%P: не успя заключителното свързване: %E\n"
2361 #: lexsup.c:102 lexsup.c:276
2362 msgid "KEYWORD"
2363 @@ -1490,7 +1490,7 @@ msgstr ""
2365 #: lexsup.c:350
2366 msgid "Set default hash table size close to <NUMBER>"
2367 -msgstr "Установява размер по подразбиране на таблицат за хеш близък до <ЧИСЛО>"
2368 +msgstr "Установява размер, по подразбиране, на речника близък до <ЧИСЛО>"
2370 #: lexsup.c:353
2371 msgid "Print option help"
2372 @@ -1776,15 +1776,15 @@ msgstr "Предупреждение, ако споделен обект съд
2374 #: lexsup.c:518
2375 msgid "Warn if an object has alternate ELF machine code"
2376 -msgstr "Предупреждение ако обекта е с друг ELF ELF код за машина"
2377 +msgstr "Предупреждение, ако обекта е с друг ELF код за машина"
2379 #: lexsup.c:522
2380 msgid "Report unresolved symbols as warnings"
2381 -msgstr "Рапортуване като предупреждения, на несвързани имена"
2382 +msgstr "Докладване на несвързани имена като предупреждения"
2384 #: lexsup.c:525
2385 msgid "Report unresolved symbols as errors"
2386 -msgstr "Рапортуване, като грешки, на несвързани имена"
2387 +msgstr "Докладване на несвързани имена като грешки"
2389 #: lexsup.c:527
2390 msgid "Include all objects from following archives"
2391 @@ -2332,12 +2332,12 @@ msgstr "%X%P: не може да се създаде раздел .reloc: %E\n"
2392 #: pe-dll.c:1100
2393 #, c-format
2394 msgid "%X%P: error: ordinal used twice: %d (%s vs %s)\n"
2395 -msgstr "%X%P: грешка, номера е използван два пъти: %d (%s с/у %s)\n"
2396 +msgstr "%X%P: грешка, номерът е използван два пъти: %d (%s с/у %s)\n"
2398 #: pe-dll.c:1136
2399 #, c-format
2400 msgid "%X%P: error: export ordinal too large: %d\n"
2401 -msgstr "%X%P: грешка: номера е твърде голям: %d\n"
2402 +msgstr "%X%P: грешка: номерът е твърде голям: %d\n"
2404 #: pe-dll.c:1452
2405 #, c-format
2406 @@ -2346,7 +2346,7 @@ msgstr "Сведение: разрешаване на %s със свързван
2408 #: pe-dll.c:1458
2409 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"
2410 -msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред.Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n"
2411 +msgstr "%P: предупреждение: автоматично внасяне е задействано без да се зададе --enable-auto-import на командния ред. Това работи, освен ако не е свързано с константни структури за данни, които указват към имена от автоматично внасяни DLL-ли.\n"
2413 #. Huh? Shouldn't happen, but punt if it does.
2414 #: pe-dll.c:1527
2415 @@ -2370,7 +2370,7 @@ msgstr "; липсва съдържание\n"
2417 #: pe-dll.c:2780
2418 msgid "%X%P: %C: variable '%pT' can't be auto-imported; please read the documentation for ld's --enable-auto-import for details\n"
2419 -msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се прочете в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n"
2420 +msgstr "%X%P: %C: променливата '%pT' не може да се внесе автоматично. Да се провери в документацията на свързващата програма за повече сведения относно --enable-auto-import.\n"
2422 #: pe-dll.c:2807
2423 #, c-format
2424 @@ -2469,7 +2469,7 @@ msgstr "%F%P: приставката не можа да задели памет
2426 #: plugin.c:1138
2427 msgid "%F%P: %s: plugin reported error claiming file\n"
2428 -msgstr "%F%P: %s: приставката рапортува грешка, при твърденията за файла\n"
2429 +msgstr "%F%P: %s: приставката отчете грешка при твърденията за файла\n"
2431 #: plugin.c:1248
2432 msgid "%P: %s: error in plugin cleanup: %d (ignored)\n"
2433 @@ -2547,7 +2547,7 @@ msgstr "%P: %s: грешка при почистване на приставка
2434 #: eshlelf_nto.c:81 eshlelf_vxworks.c:81 ev850.c:81 ev850_rh850.c:81
2435 #: exgateelf.c:81
2436 msgid "%F%P: map sections to segments failed: %E\n"
2437 -msgstr "%F%P: пропадна свързването на раздел към част: %E\n"
2438 +msgstr "%F%P: не успя свързването на раздел към част: %E\n"
2440 #: eaarch64cloudabi.c:101 eaarch64cloudabib.c:101 eaarch64elf.c:101
2441 #: eaarch64elf32.c:101 eaarch64elf32b.c:101 eaarch64elfb.c:101
2442 @@ -5051,31 +5051,31 @@ msgstr "%F%P: не се чете %s\n"
2444 #: eaix5ppc.c:390 eaix5rs6.c:390 eaixppc.c:390 eaixrs6.c:390 eppcmacos.c:390
2445 msgid "%P: warning: ignoring invalid -D number %s\n"
2446 -msgstr "%P: предупреждение: изоставяне на неправилно число за -D %s\n"
2447 +msgstr "%P: предупреждение: пропускане на неправилно число за -D %s\n"
2449 #: eaix5ppc.c:398 eaix5rs6.c:398 eaixppc.c:398 eaixrs6.c:398 eppcmacos.c:398
2450 msgid "%P: warning: ignoring invalid -H number %s\n"
2451 -msgstr "%P: предупреждение: изоставяне на неправилно число за -H %s\n"
2452 +msgstr "%P: предупреждение: пропускане на неправилно число за -H %s\n"
2454 #: eaix5ppc.c:510 eaix5rs6.c:510 eaixppc.c:510 eaixrs6.c:510 eppcmacos.c:510
2455 msgid "%P: warning: ignoring invalid -bmaxdata number %s\n"
2456 -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxdata %s\n"
2457 +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxdata %s\n"
2459 #: eaix5ppc.c:519 eaix5rs6.c:519 eaixppc.c:519 eaixrs6.c:519 eppcmacos.c:519
2460 msgid "%P: warning: ignoring invalid -bmaxstack number %s\n"
2461 -msgstr "%P: предупреждение: изоставяне на неправилно число за -bmaxstack %s\n"
2462 +msgstr "%P: предупреждение: пропускане на неправилно число за -bmaxstack %s\n"
2464 #: eaix5ppc.c:532 eaix5rs6.c:532 eaixppc.c:532 eaixrs6.c:532 eppcmacos.c:532
2465 msgid "%P: warning: ignoring invalid module type %s\n"
2466 -msgstr "%P: предупреждение: изоставяне на неправиен тип на модул %s\n"
2467 +msgstr "%P: предупреждение: пропускане на неправиен тип на модул %s\n"
2469 #: eaix5ppc.c:562 eaix5rs6.c:562 eaixppc.c:562 eaixrs6.c:562 eppcmacos.c:562
2470 msgid "%P: warning: ignoring invalid -pD number %s\n"
2471 -msgstr "%P: предупреждение: изоставяне на неправилно число за -pD %s\n"
2472 +msgstr "%P: предупреждение: пропускане на неправилно число за -pD %s\n"
2474 #: eaix5ppc.c:585 eaix5rs6.c:585 eaixppc.c:585 eaixrs6.c:585 eppcmacos.c:585
2475 msgid "%P: warning: ignoring invalid -pT number %s\n"
2476 -msgstr "%P: предупреждение: изоставяне на неправилно число за -pT %s\n"
2477 +msgstr "%P: предупреждение: пропускане на неправилно число за -pT %s\n"
2479 #: eaix5ppc.c:714 eaix5rs6.c:714 eaixppc.c:714 eaixrs6.c:714 eppcmacos.c:714
2480 msgid "%F%P: bfd_xcoff_link_record_set failed: %E\n"
2481 @@ -5252,7 +5252,7 @@ msgstr " --[no-]leading-underscore Изрично установява
2482 #: emcorepe.c:392 eppcpe.c:392 eshpe.c:392
2483 #, c-format
2484 msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n"
2485 -msgstr " --thumb-entry=<знак> Установяване на входяща точка да е отбелязания <знак>\n"
2486 +msgstr " --thumb-entry=<знак> Установяване на входяща точка на отбелязания <знак>\n"
2488 #: earm_wince_pe.c:393 earmpe.c:393 ei386pe.c:393 ei386pe_posix.c:393
2489 #: emcorepe.c:393 eppcpe.c:393 eshpe.c:393
2490 @@ -5264,7 +5264,7 @@ msgstr " --[no-]insert-timestamp Използва истинска
2491 #: ei386pep.c:375 emcorepe.c:394 eppcpe.c:394 eshpe.c:394
2492 #, c-format
2493 msgid " This makes binaries non-deterministic\n"
2494 -msgstr " Това прави двоичните файлове неопределяеми\n"
2495 +msgstr " Това прави двоичните файлове несравними\n"
2497 #: earm_wince_pe.c:396 earmpe.c:396 ei386pe.c:396 ei386pe_posix.c:396
2498 #: ei386pep.c:377 emcorepe.c:396 eppcpe.c:396 eshpe.c:396
2499 @@ -5440,7 +5440,7 @@ msgid ""
2500 " greater than 2 gigabytes\n"
2501 msgstr ""
2502 " --large-address-aware Програмата поддържа виртуални адреси\n"
2503 -" по-голями от 2 гигабайта\n"
2504 +" по-големи от 2 гигабайта\n"
2506 #: earm_wince_pe.c:420 earmpe.c:420 ei386pe.c:420 ei386pe_posix.c:420
2507 #: emcorepe.c:420 eppcpe.c:420 eshpe.c:420
2508 @@ -5450,7 +5450,7 @@ msgid ""
2509 " addresses greater than 2 gigabytes\n"
2510 msgstr ""
2511 " --disable-large-address-aware Програмата не поддържа виртуални\n"
2512 -" адреси по-голями от 2 гигабайта\n"
2513 +" адреси по-големи от 2 гигабайта\n"
2515 #: earm_wince_pe.c:421 earmpe.c:421 ei386pe.c:421 ei386pe_posix.c:421
2516 #: ei386pep.c:399 emcorepe.c:421 eppcpe.c:421 eshpe.c:421
2517 @@ -5479,7 +5479,7 @@ msgid ""
2518 " --dynamicbase Image base address may be relocated using\n"
2519 " address space layout randomization (ASLR)\n"
2520 msgstr ""
2521 -" --dynamicbase Основния адрес на образа може да бъде преместен\n"
2522 +" --dynamicbase Основният адрес на образа може да бъде преместен\n"
2523 " като се използва случаен адрес\n"
2525 #: earm_wince_pe.c:424 earmpe.c:424 ei386pe.c:424 ei386pe_posix.c:424
2526 @@ -5492,13 +5492,13 @@ msgstr " --forceinteg Налагане на проверка за
2527 #: ei386pep.c:404 emcorepe.c:425 eppcpe.c:425 eshpe.c:425
2528 #, c-format
2529 msgid " --nxcompat Image is compatible with data execution prevention\n"
2530 -msgstr " --nxcompat Образа е съвместим с предотвратяване на изпълнение на данни\n"
2531 +msgstr " --nxcompat Образът е съвместим с предотвратяване на изпълнение на данни\n"
2533 #: earm_wince_pe.c:426 earmpe.c:426 ei386pe.c:426 ei386pe_posix.c:426
2534 #: ei386pep.c:405 emcorepe.c:426 eppcpe.c:426 eshpe.c:426
2535 #, c-format
2536 msgid " --no-isolation Image understands isolation but do not isolate the image\n"
2537 -msgstr " --no-isolation Образа поддържа изолиране, но да не се изолира\n"
2538 +msgstr " --no-isolation Образът поддържа изолиране, но да не се изолира\n"
2540 #: earm_wince_pe.c:427 earmpe.c:427 ei386pe.c:427 ei386pe_posix.c:427
2541 #: emcorepe.c:427 eppcpe.c:427 eshpe.c:427
2542 @@ -5507,7 +5507,7 @@ msgid ""
2543 " --no-seh Image does not use SEH. No SE handler may\n"
2544 " be called in this image\n"
2545 msgstr ""
2546 -" --no-seh Образа не използва SEH. В този образ не\n"
2547 +" --no-seh Образът не използва SEH. В този образ не\n"
2548 " може да се извиква SE подръжка\n"
2550 #: earm_wince_pe.c:428 earmpe.c:428 ei386pe.c:428 ei386pe_posix.c:428
2551 @@ -5526,7 +5526,7 @@ msgstr " --wdmdriver Използване на WDM модел з
2552 #: ei386pep.c:409 emcorepe.c:430 eppcpe.c:430 eshpe.c:430
2553 #, c-format
2554 msgid " --tsaware Image is Terminal Server aware\n"
2555 -msgstr " --tsaware Образа поддържа \"Terminal Server\"\n"
2556 +msgstr " --tsaware Образът поддържа \"Terminal Server\"\n"
2558 #: earm_wince_pe.c:431 earmpe.c:431 ei386pe.c:431 ei386pe_posix.c:431
2559 #: ei386pep.c:410 emcorepe.c:431 eppcpe.c:431 eshpe.c:431
2560 @@ -5603,7 +5603,7 @@ msgstr ""
2561 #: earm_wince_pe.c:1302 earmpe.c:1302 ei386pe.c:1302 ei386pe_posix.c:1302
2562 #: ei386pep.c:1305 emcorepe.c:1302 eppcpe.c:1302 eshpe.c:1302
2563 msgid "%F%P: cannot perform PE operations on non PE output file '%pB'\n"
2564 -msgstr "%F%P: не може да се извърши \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n"
2565 +msgstr "%F%P: не може да се извършат \"PE\"-операции на изходен файл '%pB', който не е \"PE\"\n"
2567 #: earm_wince_pe.c:1442 earmpe.c:1442 ei386pe.c:1442 ei386pe_posix.c:1442
2568 #: ei386pep.c:1426 emcorepe.c:1442 eppcpe.c:1442 eshpe.c:1442
2569 @@ -5649,7 +5649,7 @@ msgstr "%P: предупреждение: '--thumb-entry %s' прегазва '-
2570 #: earmnto.c:577 earmpe.c:1876 earmsymbian.c:577 ei386pe.c:1876
2571 #: ei386pe_posix.c:1876 emcorepe.c:1876 eppcpe.c:1876 eshpe.c:1876
2572 msgid "%P: warning: cannot find thumb start symbol %s\n"
2573 -msgstr "%P: предупреждение: не е намерен, като начален, отбелязания знак %s\n"
2574 +msgstr "%P: предупреждение: не е намерен, като начален, отбелязаният знак %s\n"
2576 #: earmelf.c:603 earmelf_fbsd.c:603 earmelf_fuchsia.c:603 earmelf_linux.c:603
2577 #: earmelf_linux_eabi.c:603 earmelf_linux_fdpiceabi.c:603 earmelf_nacl.c:603
2578 @@ -5700,7 +5700,7 @@ msgstr "%P: неразпознат вид STM32L4XX поправка '%s'\n"
2579 #: earmelfb_nacl.c:2851 earmelfb_nbsd.c:2851 earmnto.c:2826 earmsymbian.c:2851
2580 #, c-format
2581 msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
2582 -msgstr " --thumb-entry=<знак> Установява входяща точка да е отбелязания <знак>\n"
2583 +msgstr " --thumb-entry=<знак> Установява входяща точка на отбелязания <знак>\n"
2585 #: earmelf.c:2852 earmelf_fbsd.c:2859 earmelf_fuchsia.c:2852
2586 #: earmelf_linux.c:2852 earmelf_linux_eabi.c:2852
2587 @@ -6667,7 +6667,7 @@ msgstr ""
2589 #: eelf32xtensa.c:561
2590 msgid "%F%P: failed to create .xtensa.info section\n"
2591 -msgstr "%F%P: пропадна създаването на раздел .xtensa.info\n"
2592 +msgstr "%F%P: не успя създаването на раздел .xtensa.info\n"
2594 #: eelf32xtensa.c:4073
2595 #, c-format
2596 @@ -6945,7 +6945,7 @@ msgid ""
2597 " --no-seh Image does not use SEH; no SE handler may\n"
2598 " be called in this image\n"
2599 msgstr ""
2600 -" --no-seh Образа не използва SEH. В този образ не може\n"
2601 +" --no-seh Образът не използва SEH. В този образ не може\n"
2602 " да се извиква SE подръжка\n"
2604 #: ei386pep.c:908
2605 diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
2606 index 1bbc064857..3912ef1cdd 100644
2607 --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
2608 +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
2609 @@ -86,6 +86,7 @@ run_ld_link_tests $aarch64elftests
2610 run_ld_link_tests eh-frame-merge-lp64
2612 run_dump_test "erratum843419"
2613 +run_dump_test "erratum843419_tls_ie"
2615 # Relocation Tests
2616 run_dump_test_lp64 "weak-undefined"
2617 diff --git a/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d
2618 new file mode 100644
2619 index 0000000000..eba5a20217
2620 --- /dev/null
2621 +++ b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.d
2622 @@ -0,0 +1,49 @@
2623 +#source: erratum843419_tls_ie.s
2624 +#as:
2625 +#ld: --fix-cortex-a53-843419 -e0 --section-start .e843419=0x20000000 -Ttext=0x400000 -Tdata=0x40000000
2626 +#objdump: -dr
2627 +#...
2629 +Disassembly of section .e843419:
2631 +0*20000000 <farbranch>:
2632 +[ ]*20000000: d10043ff sub sp, sp, #0x10
2633 +[ ]*20000004: d28001a7 mov x7, #0xd // #13
2634 +[ ]*20000008: b9000fe7 str w7, \[sp, #12\]
2635 +[ ]*2000000c: 140003fb b 20000ff8 <e843419>
2636 + ...
2638 +0*20000ff8 <e843419>:
2639 +[ ]*20000ff8: d2a00000 movz x0, #0x0, lsl #16
2640 +[ ]*20000ffc: f800c007 stur x7, \[x0, #12\]
2641 +[ ]*20001000: d2800128 mov x8, #0x9 // #9
2642 +[ ]*20001004: f2800208 movk x8, #0x10
2643 +[ ]*20001008: 8b050020 add x0, x1, x5
2644 +[ ]*2000100c: b9400fe7 ldr w7, \[sp, #12\]
2645 +[ ]*20001010: 0b0700e0 add w0, w7, w7
2646 +[ ]*20001014: 910043ff add sp, sp, #0x10
2647 +[ ]*20001018: d65f03c0 ret
2648 +[ ]*2000101c: 00000000 .inst 0x00000000 ; undefined
2649 +[ ]*20001020: 14000400 b 20002020 <e843419\+0x1028>
2650 +[ ]*20001024: d503201f nop
2651 +[ ]*20001028: 00000000 .inst 0x00000000 ; undefined
2652 +[ ]*2000102c: 17fffff7 b 20001008 <e843419\+0x10>
2653 + ...
2655 +Disassembly of section .text:
2657 +0*400000 <main>:
2658 +[ ]*400000: d10043ff sub sp, sp, #0x10
2659 +[ ]*400004: d28001a7 mov x7, #0xd // #13
2660 +[ ]*400008: b9000fe7 str w7, \[sp, #12\]
2661 +[ ]*40000c: 14000005 b 400020 <__farbranch_veneer>
2662 +[ ]*400010: d65f03c0 ret
2663 +[ ]*400014: d503201f nop
2664 +[ ]*400018: 14000400 b 401018 <__farbranch_veneer\+0xff8>
2665 +[ ]*40001c: d503201f nop
2667 +0*400020 <__farbranch_veneer>:
2668 +[ ]*400020: 900fe010 adrp x16, 20000000 <farbranch>
2669 +[ ]*400024: 91000210 add x16, x16, #0x0
2670 +[ ]*400028: d61f0200 br x16
2671 + ...
2672 diff --git a/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s
2673 new file mode 100644
2674 index 0000000000..60322445c5
2675 --- /dev/null
2676 +++ b/ld/testsuite/ld-aarch64/erratum843419_tls_ie.s
2677 @@ -0,0 +1,43 @@
2678 + .text
2679 + .align 2
2680 + .global main
2681 + .type main, %function
2682 +main:
2683 + sub sp, sp, #16
2684 + mov x7, 13
2685 + str w7, [sp,12]
2686 + b farbranch
2687 + ret
2688 + .size main, .-main
2690 + .section .e843419, "xa"
2691 + .align 2
2692 + .global farbranch
2693 + .type farbranch, %function
2694 +farbranch:
2695 + sub sp, sp, #16
2696 + mov x7, 13
2697 + str w7, [sp,12]
2698 + b e843419
2699 + .fill 4072,1,0
2700 +e843419:
2701 + adrp x0, :gottprel:l_tlsievar
2702 + str x7, [x0,12]
2703 + mov x8, 9
2704 + str x8, [x0, :gottprel_lo12:l_tlsievar]
2706 + add x0, x1, x5
2707 + ldr w7, [sp,12]
2708 + add w0, w7, w7
2709 + add sp, sp, 16
2710 + ret
2711 + .size farbranch, .-farbranch
2713 +# ---
2715 + .section .tbss,"awT",%nobits
2716 + .align 2
2717 + .type l_tlsievar, %object
2718 + .size l_tlsievar, 4
2719 +l_tlsievar:
2720 + .zero 4
2721 diff --git a/ld/testsuite/ld-aarch64/ifunc-1-local.d b/ld/testsuite/ld-aarch64/ifunc-1-local.d
2722 index bcba0aa025..1783637865 100644
2723 --- a/ld/testsuite/ld-aarch64/ifunc-1-local.d
2724 +++ b/ld/testsuite/ld-aarch64/ifunc-1-local.d
2725 @@ -3,7 +3,7 @@
2726 #target: aarch64*-*-*
2728 #...
2729 -0+(110|180) <__GI_foo>:
2730 +0+(110|180|1a0) <(__GI_)?foo>:
2731 #...
2732 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180)@plt>
2733 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+(0x110|0x180|0x1a0)@plt>
2734 #pass
2735 diff --git a/ld/testsuite/ld-aarch64/ifunc-1.d b/ld/testsuite/ld-aarch64/ifunc-1.d
2736 index f408bfff78..0274ac0094 100644
2737 --- a/ld/testsuite/ld-aarch64/ifunc-1.d
2738 +++ b/ld/testsuite/ld-aarch64/ifunc-1.d
2739 @@ -3,7 +3,7 @@
2740 #target: aarch64*-*-*
2742 #...
2743 -0+(130|1a0) <foo>:
2744 +0+(130|1a0|1c8) <foo>:
2745 #...
2746 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt>
2747 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt>
2748 #pass
2749 diff --git a/ld/testsuite/ld-aarch64/ifunc-2-local.d b/ld/testsuite/ld-aarch64/ifunc-2-local.d
2750 index fb1bb40e38..a3d9e15f8b 100644
2751 --- a/ld/testsuite/ld-aarch64/ifunc-2-local.d
2752 +++ b/ld/testsuite/ld-aarch64/ifunc-2-local.d
2753 @@ -3,9 +3,9 @@
2754 #target: aarch64*-*-*
2756 #...
2757 -0+(110|180) <__GI_foo>:
2758 +0+(110|180|1a0) <__GI_foo>:
2759 #...
2760 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180)@plt>
2761 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(110|180|1a0)@plt>
2762 [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*>
2763 -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170)
2764 +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(100|170|190)
2765 #pass
2766 diff --git a/ld/testsuite/ld-aarch64/ifunc-2.d b/ld/testsuite/ld-aarch64/ifunc-2.d
2767 index 16c75ead40..eb6fa0ccf0 100644
2768 --- a/ld/testsuite/ld-aarch64/ifunc-2.d
2769 +++ b/ld/testsuite/ld-aarch64/ifunc-2.d
2770 @@ -3,9 +3,9 @@
2771 #target: aarch64*-*-*
2773 #...
2774 -0+(130|1a0) <foo>:
2775 +0+(130|1a0|1c8) <foo>:
2776 #...
2777 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0)@plt>
2778 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(130|1a0|1c8)@plt>
2779 [ \t0-9a-f]+:[ \t0-9a-f]+adrp[ \t]+x0, 0 <.*>
2780 -[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190)
2781 +[ \t0-9a-f]+:[ \t0-9a-f]+add[ \t]+x0, x0, #0x(120|190|1b8)
2782 #pass
2783 diff --git a/ld/testsuite/ld-aarch64/ifunc-21.d b/ld/testsuite/ld-aarch64/ifunc-21.d
2784 index b501bd6712..a16186b587 100644
2785 --- a/ld/testsuite/ld-aarch64/ifunc-21.d
2786 +++ b/ld/testsuite/ld-aarch64/ifunc-21.d
2787 @@ -11,7 +11,7 @@ Contents of section .text:
2788 [0-9a-f]+ .*
2789 Contents of section .got.plt:
2790 [0-9a-f]+ 0+ 0+ 0+ 0+ .*
2791 - 10298 0+ 0+ [0-9a-f]+ [0-9a-f]+ .*
2792 + (10298|102b8) 0+ 0+ [0-9a-f]+ [0-9a-f]+ .*
2794 Disassembly of section .text:
2796 @@ -20,7 +20,7 @@ Disassembly of section .text:
2798 .* <bar>:
2799 .*: 90000080 adrp x0, 10000 <.*>
2800 - .*: .* ldr x0, \[x0, #672\]
2801 + .*: .* ldr x0, \[x0, #(672|704)\]
2802 .*: d65f03c0 ret
2804 #pass
2805 diff --git a/ld/testsuite/ld-aarch64/ifunc-3a.d b/ld/testsuite/ld-aarch64/ifunc-3a.d
2806 index a01a75c904..4919d96892 100644
2807 --- a/ld/testsuite/ld-aarch64/ifunc-3a.d
2808 +++ b/ld/testsuite/ld-aarch64/ifunc-3a.d
2809 @@ -4,7 +4,7 @@
2810 #target: aarch64*-*-*
2812 #...
2813 -0+(150|1d0) <__GI_foo>:
2814 +0+(150|1d0|1e8) <__GI_foo>:
2815 #...
2816 -[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0)@plt>
2817 +[ \t0-9a-f]+:[ \t0-9a-f]+bl[ \t0-9a-f]+<\*ABS\*\+0x(150|1d0|1e8)@plt>
2818 #pass
2819 diff --git a/ld/testsuite/ld-aarch64/ifunc-9.d b/ld/testsuite/ld-aarch64/ifunc-9.d
2820 index 3b4e995254..e921591275 100644
2821 --- a/ld/testsuite/ld-aarch64/ifunc-9.d
2822 +++ b/ld/testsuite/ld-aarch64/ifunc-9.d
2823 @@ -1,3 +1,4 @@
2824 #ld: --export-dynamic
2825 -#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
2826 +#objdump: -dr
2827 #target: aarch64*-*-*
2828 +#...
2829 diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
2830 new file mode 100644
2831 index 0000000000..403f98000d
2832 --- /dev/null
2833 +++ b/ld/testsuite/ld-elf/dummy.s
2834 @@ -0,0 +1 @@
2835 +# Dummy
2836 diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
2837 new file mode 100644
2838 index 0000000000..d94abc1106
2839 --- /dev/null
2840 +++ b/ld/testsuite/ld-elf/linux-x86.S
2841 @@ -0,0 +1,91 @@
2842 + .text
2843 + .globl _start
2844 + .type _start,@function
2845 + .p2align 4
2846 +_start:
2847 + xorl %ebp, %ebp
2848 +#ifdef __LP64__
2849 + popq %rdi
2850 + movq %rsp, %rsi
2851 + andq $~15, %rsp
2852 +#elif defined __x86_64__
2853 + mov (%rsp),%edi
2854 + addl $4,%esp
2855 + movl %esp, %esi
2856 + andl $~15, %esp
2857 +#else
2858 + popl %esi
2859 + movl %esp, %ecx
2860 + andl $~15, %esp
2862 + subl $8,%esp
2863 + pushl %ecx
2864 + pushl %esi
2865 +#endif
2867 + call main
2869 + hlt
2871 + .type syscall, @function
2872 + .globl syscall
2873 + .p2align 4
2874 +syscall:
2875 +#ifdef __x86_64__
2876 + movq %rdi, %rax /* Syscall number -> rax. */
2877 + movq %rsi, %rdi /* shift arg1 - arg5. */
2878 + movq %rdx, %rsi
2879 + movq %rcx, %rdx
2880 + movq %r8, %r10
2881 + movq %r9, %r8
2882 + movq 8(%rsp),%r9 /* arg6 is on the stack. */
2883 + syscall /* Do the system call. */
2884 +#else
2885 + push %ebp
2886 + push %edi
2887 + push %esi
2888 + push %ebx
2889 + mov 0x2c(%esp),%ebp
2890 + mov 0x28(%esp),%edi
2891 + mov 0x24(%esp),%esi
2892 + mov 0x20(%esp),%edx
2893 + mov 0x1c(%esp),%ecx
2894 + mov 0x18(%esp),%ebx
2895 + mov 0x14(%esp),%eax
2896 + int $0x80
2897 + pop %ebx
2898 + pop %esi
2899 + pop %edi
2900 + pop %ebp
2901 +#endif
2902 + ret /* Return to caller. */
2903 + .size syscall, .-syscall
2904 + .section .note.GNU-stack,"",@progbits
2906 + .section ".note.gnu.property", "a"
2907 +#ifdef __LP64__
2908 + .p2align 3
2909 +#else
2910 + .p2align 2
2911 +#endif
2912 + .long 1f - 0f /* name length */
2913 + .long 5f - 2f /* data length */
2914 + .long 5 /* note type */
2915 +0: .asciz "GNU" /* vendor name */
2917 +#ifdef __LP64__
2918 + .p2align 3
2919 +#else
2920 + .p2align 2
2921 +#endif
2922 +2: .long 0xc0000002 /* pr_type. */
2923 + .long 4f - 3f /* pr_datasz. */
2925 + .long 0x2
2927 +#ifdef __LP64__
2928 + .p2align 3
2929 +#else
2930 + .p2align 2
2931 +#endif
2933 diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
2934 new file mode 100644
2935 index 0000000000..f6f5a80853
2936 --- /dev/null
2937 +++ b/ld/testsuite/ld-elf/linux-x86.exp
2938 @@ -0,0 +1,46 @@
2939 +# Expect script for simple native Linux/x86 tests.
2940 +# Copyright (C) 2018 Free Software Foundation, Inc.
2942 +# This file is part of the GNU Binutils.
2944 +# This program is free software; you can redistribute it and/or modify
2945 +# it under the terms of the GNU General Public License as published by
2946 +# the Free Software Foundation; either version 3 of the License, or
2947 +# (at your option) any later version.
2949 +# This program is distributed in the hope that it will be useful,
2950 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
2951 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2952 +# GNU General Public License for more details.
2954 +# You should have received a copy of the GNU General Public License
2955 +# along with this program; if not, write to the Free Software
2956 +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
2957 +# MA 02110-1301, USA.
2960 +# Test very simple native Linux/x86 programs with linux-x86.S.
2961 +if { ![isnative] || [which $CC] == 0 \
2962 + || (![istarget "i?86-*-linux*"] \
2963 + && ![istarget "x86_64-*-linux*"] \
2964 + && ![istarget "amd64-*-linux*"]) } {
2965 + return
2968 +# Add $PLT_CFLAGS if PLT is expected.
2969 +global PLT_CFLAGS
2970 +# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
2971 +global NOPIE_CFLAGS NOPIE_LDFLAGS
2973 +run_ld_link_exec_tests [list \
2974 + [list \
2975 + "Run PR ld/23428 test" \
2976 + "--no-dynamic-linker -z separate-code" \
2977 + "" \
2978 + { linux-x86.S pr23428.c dummy.s } \
2979 + "pr23428" \
2980 + "pass.out" \
2981 + "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
2982 + "asm" \
2983 + ] \
2985 diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
2986 new file mode 100644
2987 index 0000000000..3631ed7926
2988 --- /dev/null
2989 +++ b/ld/testsuite/ld-elf/pr23428.c
2990 @@ -0,0 +1,43 @@
2991 +#include <unistd.h>
2992 +#include <link.h>
2993 +#include <syscall.h>
2995 +#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
2997 +int
2998 +main (int argc, char **argv)
3000 + char **ev = &argv[argc + 1];
3001 + char **evp = ev;
3002 + ElfW(auxv_t) *av;
3003 + const ElfW(Phdr) *phdr = NULL;
3004 + size_t phnum = 0;
3005 + size_t loadnum = 0;
3006 + int fd = STDOUT_FILENO;
3007 + size_t i;
3009 + while (*evp++ != NULL)
3012 + av = (ElfW(auxv_t) *) evp;
3014 + for (; av->a_type != AT_NULL; ++av)
3015 + switch (av->a_type)
3017 + case AT_PHDR:
3018 + phdr = (const void *) av->a_un.a_val;
3019 + break;
3020 + case AT_PHNUM:
3021 + phnum = av->a_un.a_val;
3022 + break;
3025 + for (i = 0; i < phnum; i++, phdr++)
3026 + if (phdr->p_type == PT_LOAD)
3027 + loadnum++;
3029 + syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
3031 + syscall (SYS_exit, !loadnum);
3032 + return 0;
3034 diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
3035 index b58139e9dd..3909c0eaa1 100644
3036 --- a/ld/testsuite/ld-elf/sec64k.exp
3037 +++ b/ld/testsuite/ld-elf/sec64k.exp
3038 @@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
3039 foreach sfile $sfiles { puts $ofd "#source: $sfile" }
3040 if { [istarget spu*-*-*] } {
3041 puts $ofd "#ld: --local-store 0:0"
3042 + } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
3043 + puts $ofd "#ld: -z noseparate-code"
3044 } else {
3045 puts $ofd "#ld:"
3047 diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
3048 index ac9beff2e5..aba7d6b03f 100644
3049 --- a/ld/testsuite/ld-i386/abs-iamcu.d
3050 +++ b/ld/testsuite/ld-i386/abs-iamcu.d
3051 @@ -2,7 +2,7 @@
3052 #source: abs.s
3053 #source: zero.s
3054 #as: --32 -march=iamcu
3055 -#ld: -m elf_iamcu
3056 +#ld: -m elf_iamcu -z noseparate-code
3057 #objdump: -rs -j .text
3059 .*: file format .*
3060 diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
3061 index e660aca524..191ee4456a 100644
3062 --- a/ld/testsuite/ld-i386/abs.d
3063 +++ b/ld/testsuite/ld-i386/abs.d
3064 @@ -2,7 +2,7 @@
3065 #as: --32
3066 #source: abs.s
3067 #source: zero.s
3068 -#ld: -melf_i386
3069 +#ld: -melf_i386 -z noseparate-code
3070 #objdump: -rs
3072 .*: file format .*
3073 diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
3074 index 6d794fe653..56c95367e1 100644
3075 --- a/ld/testsuite/ld-i386/i386.exp
3076 +++ b/ld/testsuite/ld-i386/i386.exp
3077 @@ -462,6 +462,9 @@ run_dump_test "pr23189"
3078 run_dump_test "pr23194"
3079 run_dump_test "pr23372a"
3080 run_dump_test "pr23372b"
3081 +run_dump_test "pr23486a"
3082 +run_dump_test "pr23486b"
3083 +run_dump_test "pr23854"
3085 if { !([istarget "i?86-*-linux*"]
3086 || [istarget "i?86-*-gnu*"]
3087 diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
3088 index ec51540a42..7eba52d95e 100644
3089 --- a/ld/testsuite/ld-i386/pr12718.d
3090 +++ b/ld/testsuite/ld-i386/pr12718.d
3091 @@ -1,6 +1,6 @@
3092 #name: PR ld/12718
3093 #as: --32
3094 -#ld: -melf_i386
3095 +#ld: -melf_i386 -z noseparate-code
3096 #readelf: -S
3098 There are 5 section headers, starting at offset 0x[0-9a-f]+:
3099 diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
3100 index e49079b3c8..ea2da3eb51 100644
3101 --- a/ld/testsuite/ld-i386/pr12921.d
3102 +++ b/ld/testsuite/ld-i386/pr12921.d
3103 @@ -1,6 +1,6 @@
3104 #name: PR ld/12921
3105 #as: --32
3106 -#ld: -melf_i386
3107 +#ld: -melf_i386 -z noseparate-code
3108 #readelf: -S --wide
3110 There are 7 section headers, starting at offset 0x[0-9a-f]+:
3111 diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
3112 new file mode 100644
3113 index 0000000000..41a6dcf7d5
3114 --- /dev/null
3115 +++ b/ld/testsuite/ld-i386/pr23486a.d
3116 @@ -0,0 +1,10 @@
3117 +#source: ../ld-x86-64/pr23486a.s
3118 +#source: ../ld-x86-64/pr23486b.s
3119 +#as: --32
3120 +#ld: -r -m elf_i386
3121 +#readelf: -n
3123 +Displaying notes found in: .note.gnu.property
3124 + Owner Data size Description
3125 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3126 + Properties: x86 ISA needed: i486, 586
3127 diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
3128 new file mode 100644
3129 index 0000000000..08019b7274
3130 --- /dev/null
3131 +++ b/ld/testsuite/ld-i386/pr23486b.d
3132 @@ -0,0 +1,10 @@
3133 +#source: ../ld-x86-64/pr23486b.s
3134 +#source: ../ld-x86-64/pr23486a.s
3135 +#as: --32
3136 +#ld: -r -m elf_i386
3137 +#readelf: -n
3139 +Displaying notes found in: .note.gnu.property
3140 + Owner Data size Description
3141 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3142 + Properties: x86 ISA needed: i486, 586
3143 diff --git a/ld/testsuite/ld-i386/pr23854.d b/ld/testsuite/ld-i386/pr23854.d
3144 new file mode 100644
3145 index 0000000000..3ed9c206e5
3146 --- /dev/null
3147 +++ b/ld/testsuite/ld-i386/pr23854.d
3148 @@ -0,0 +1,28 @@
3149 +#as: --32 -mrelax-relocations=yes
3150 +#ld: -melf_i386
3151 +#objdump: -dw
3153 +.*: +file format .*
3155 +Disassembly of section .text:
3157 +[a-f0-9]+ <_start>:
3158 + +[a-f0-9]+: 66 13 81 f8 ff ff ff adc -0x8\(%ecx\),%ax
3159 + +[a-f0-9]+: 66 03 99 f8 ff ff ff add -0x8\(%ecx\),%bx
3160 + +[a-f0-9]+: 66 23 89 f8 ff ff ff and -0x8\(%ecx\),%cx
3161 + +[a-f0-9]+: 66 3b 91 f8 ff ff ff cmp -0x8\(%ecx\),%dx
3162 + +[a-f0-9]+: 66 0b b9 f8 ff ff ff or -0x8\(%ecx\),%di
3163 + +[a-f0-9]+: 66 1b b1 f8 ff ff ff sbb -0x8\(%ecx\),%si
3164 + +[a-f0-9]+: 66 2b a9 f8 ff ff ff sub -0x8\(%ecx\),%bp
3165 + +[a-f0-9]+: 66 33 a1 f8 ff ff ff xor -0x8\(%ecx\),%sp
3166 + +[a-f0-9]+: 66 85 89 f8 ff ff ff test %cx,-0x8\(%ecx\)
3167 + +[a-f0-9]+: 66 13 81 fc ff ff ff adc -0x4\(%ecx\),%ax
3168 + +[a-f0-9]+: 66 03 99 fc ff ff ff add -0x4\(%ecx\),%bx
3169 + +[a-f0-9]+: 66 23 89 fc ff ff ff and -0x4\(%ecx\),%cx
3170 + +[a-f0-9]+: 66 3b 91 fc ff ff ff cmp -0x4\(%ecx\),%dx
3171 + +[a-f0-9]+: 66 0b b9 fc ff ff ff or -0x4\(%ecx\),%di
3172 + +[a-f0-9]+: 66 1b b1 fc ff ff ff sbb -0x4\(%ecx\),%si
3173 + +[a-f0-9]+: 66 2b a9 fc ff ff ff sub -0x4\(%ecx\),%bp
3174 + +[a-f0-9]+: 66 33 a1 fc ff ff ff xor -0x4\(%ecx\),%sp
3175 + +[a-f0-9]+: 66 85 89 fc ff ff ff test %cx,-0x4\(%ecx\)
3176 +#pass
3177 diff --git a/ld/testsuite/ld-i386/pr23854.s b/ld/testsuite/ld-i386/pr23854.s
3178 new file mode 100644
3179 index 0000000000..565e747be0
3180 --- /dev/null
3181 +++ b/ld/testsuite/ld-i386/pr23854.s
3182 @@ -0,0 +1,33 @@
3183 + .data
3184 + .type bar, @object
3185 +bar:
3186 + .byte 1
3187 + .size bar, .-bar
3188 + .globl foo
3189 + .type foo, @object
3190 +foo:
3191 + .byte 1
3192 + .size foo, .-foo
3193 + .text
3194 + .globl _start
3195 + .type _start, @function
3196 +_start:
3197 + adcw bar@GOT(%ecx), %ax
3198 + addw bar@GOT(%ecx), %bx
3199 + andw bar@GOT(%ecx), %cx
3200 + cmpw bar@GOT(%ecx), %dx
3201 + orw bar@GOT(%ecx), %di
3202 + sbbw bar@GOT(%ecx), %si
3203 + subw bar@GOT(%ecx), %bp
3204 + xorw bar@GOT(%ecx), %sp
3205 + testw %cx, bar@GOT(%ecx)
3206 + adcw foo@GOT(%ecx), %ax
3207 + addw foo@GOT(%ecx), %bx
3208 + andw foo@GOT(%ecx), %cx
3209 + cmpw foo@GOT(%ecx), %dx
3210 + orw foo@GOT(%ecx), %di
3211 + sbbw foo@GOT(%ecx), %si
3212 + subw foo@GOT(%ecx), %bp
3213 + xorw foo@GOT(%ecx), %sp
3214 + testw %cx, foo@GOT(%ecx)
3215 + .size _start, .-_start
3216 diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
3217 index 0ed91f5922..d03203c1e5 100644
3218 --- a/ld/testsuite/ld-i386/property-3.r
3219 +++ b/ld/testsuite/ld-i386/property-3.r
3220 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3221 Owner Data size Description
3222 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3223 Properties: stack size: 0x800000
3224 - x86 ISA used: 586, SSE
3225 x86 ISA needed: i486, 586
3226 #pass
3227 diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
3228 index cb2bc15d9a..da295eb6c7 100644
3229 --- a/ld/testsuite/ld-i386/property-4.r
3230 +++ b/ld/testsuite/ld-i386/property-4.r
3231 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3232 Owner Data size Description
3233 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3234 Properties: stack size: 0x800000
3235 - x86 ISA used: i486, 586, SSE
3236 x86 ISA needed: i486, 586, SSE
3237 #pass
3238 diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
3239 index 552965058c..e4141594b3 100644
3240 --- a/ld/testsuite/ld-i386/property-5.r
3241 +++ b/ld/testsuite/ld-i386/property-5.r
3242 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3243 Owner Data size Description
3244 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3245 Properties: stack size: 0x900000
3246 - x86 ISA used: i486, 586, SSE
3247 x86 ISA needed: i486, 586, SSE
3248 #pass
3249 diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
3250 index 4bb35b00fb..0aedea1614 100644
3251 --- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
3252 +++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
3253 @@ -6,6 +6,5 @@
3255 Displaying notes found in: .note.gnu.property
3256 Owner Data size Description
3257 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3258 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3259 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3260 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3261 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3262 diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
3263 index 418d58a8f7..bd69ac6478 100644
3264 --- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
3265 +++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
3266 @@ -6,6 +6,5 @@
3268 Displaying notes found in: .note.gnu.property
3269 Owner Data size Description
3270 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3271 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3272 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3273 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3274 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3275 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
3276 index e261038f60..76d2a39f2c 100644
3277 --- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
3278 +++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
3279 @@ -6,6 +6,5 @@
3281 Displaying notes found in: .note.gnu.property
3282 Owner Data size Description
3283 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3284 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3285 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3286 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3287 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3288 diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
3289 index 25f3d2361e..e770ecffa5 100644
3290 --- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
3291 +++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
3292 @@ -6,6 +6,5 @@
3294 Displaying notes found in: .note.gnu.property
3295 Owner Data size Description
3296 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3297 - Properties: x86 ISA used: i486, 586, SSE2, SSE3
3298 - x86 ISA needed: 586, SSE, SSE3, SSE4_1
3299 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3300 + Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
3301 diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
3302 index 612d91402f..86892b96b5 100644
3303 --- a/ld/testsuite/ld-ifunc/ifunc.exp
3304 +++ b/ld/testsuite/ld-ifunc/ifunc.exp
3305 @@ -713,7 +713,7 @@ run_ld_link_exec_tests [list \
3306 # That does not happen for the pr23169 testcase where the resolver is
3307 # in the executable (which is relocated last by ld.so).
3308 if { [isnative]
3309 - && ![istarget "powerpc-*-*"] } {
3310 + && !([istarget "powerpc-*-*"] || [istarget "aarch64*-*-*"]) } {
3311 run_ld_link_exec_tests [list \
3312 [list \
3313 "Run pr23169a" \
3314 diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
3315 index b22eaa12c9..f89855a08f 100644
3316 --- a/ld/testsuite/ld-linkonce/zeroeh.ld
3317 +++ b/ld/testsuite/ld-linkonce/zeroeh.ld
3318 @@ -2,4 +2,5 @@ SECTIONS {
3319 .text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
3320 .gcc_except_table 0x2000 : { *(.gcc_except_table) }
3321 .eh_frame 0x4000 : { *(.eh_frame) }
3322 + /DISCARD/ : { *(.note.gnu.property) }
3324 diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
3325 index 7c50b0f102..4ce74f2587 100644
3326 --- a/ld/testsuite/ld-plugin/lto.exp
3327 +++ b/ld/testsuite/ld-plugin/lto.exp
3328 @@ -219,6 +219,12 @@ set lto_link_tests [list \
3329 [list "Build pr22751.a" \
3330 "$plug_opt" "-flto $lto_no_fat $INT128_CFLAGS" \
3331 {pr22751.c} {} "pr22751.a"] \
3332 + [list "Build libpr23818.so" \
3333 + "-shared -flto -g -Wl,-version-script,pr23818.t" \
3334 + "-g -flto $lto_fat" \
3335 + {pr23818a.c pr23818b.c} \
3336 + {{"readelf" {-s --wide} "pr23818.d"}} \
3337 + "libpr23818.so"] \
3340 if { [at_least_gcc_version 4 7] } {
3341 diff --git a/ld/testsuite/ld-plugin/pr23818.d b/ld/testsuite/ld-plugin/pr23818.d
3342 new file mode 100644
3343 index 0000000000..5753cd64fd
3344 --- /dev/null
3345 +++ b/ld/testsuite/ld-plugin/pr23818.d
3346 @@ -0,0 +1,4 @@
3347 +#failif
3348 +#...
3349 +.*0+ +[A-Z]+ +GLOBAL +DEFAULT +ABS foo
3350 +#...
3351 diff --git a/ld/testsuite/ld-plugin/pr23818.t b/ld/testsuite/ld-plugin/pr23818.t
3352 new file mode 100644
3353 index 0000000000..45bca5580e
3354 --- /dev/null
3355 +++ b/ld/testsuite/ld-plugin/pr23818.t
3356 @@ -0,0 +1,4 @@
3358 + global: bar;
3359 + local: *;
3361 diff --git a/ld/testsuite/ld-plugin/pr23818a.c b/ld/testsuite/ld-plugin/pr23818a.c
3362 new file mode 100644
3363 index 0000000000..5b5ccbf7cb
3364 --- /dev/null
3365 +++ b/ld/testsuite/ld-plugin/pr23818a.c
3366 @@ -0,0 +1,4 @@
3367 +void
3368 +foo ()
3371 diff --git a/ld/testsuite/ld-plugin/pr23818b.c b/ld/testsuite/ld-plugin/pr23818b.c
3372 new file mode 100644
3373 index 0000000000..d4be333a39
3374 --- /dev/null
3375 +++ b/ld/testsuite/ld-plugin/pr23818b.c
3376 @@ -0,0 +1,7 @@
3377 +void foo (void);
3379 +void
3380 +bar (void)
3382 + foo ();
3384 diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
3385 index 0359ba28cb..5ec3850787 100644
3386 --- a/ld/testsuite/ld-powerpc/powerpc.exp
3387 +++ b/ld/testsuite/ld-powerpc/powerpc.exp
3388 @@ -221,7 +221,7 @@ set ppc64elftests {
3389 "tlsopt4"}
3390 {"TLS DLL" "-shared -melf64ppc --version-script tlsdll.ver" "" "-a64" {tlsdll.s}
3391 {} "tlsdll.so"}
3392 - {"TLS opt 5" "-melf64ppc --no-plt-align -shared --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
3393 + {"TLS opt 5" "-melf64ppc -shared --hash-style=both --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64" {tlsopt5.s}
3394 {{objdump -dr tlsopt5.d} {readelf -wf tlsopt5.wf}}
3395 "tlsopt5"}
3396 {"sym@tocbase" "-shared -melf64ppc" "" "-a64" {symtocbase-1.s symtocbase-2.s}
3397 @@ -328,6 +328,7 @@ if [ supports_ppc64 ] then {
3398 run_dump_test "dotsym2"
3399 run_dump_test "dotsym3"
3400 run_dump_test "dotsym4"
3401 + run_dump_test "pr23937"
3404 run_dump_test "tlsld32"
3405 diff --git a/ld/testsuite/ld-powerpc/pr23937.d b/ld/testsuite/ld-powerpc/pr23937.d
3406 new file mode 100644
3407 index 0000000000..6ef79e81cf
3408 --- /dev/null
3409 +++ b/ld/testsuite/ld-powerpc/pr23937.d
3410 @@ -0,0 +1,10 @@
3411 +#as: -a64
3412 +#ld: -melf64ppc --defsym puts=0 --defsym _start=0
3413 +#readelf: -srW
3414 +# Check that the IRELATIVE addend is magic+0, not magic+8
3416 +#...
3417 +.* R_PPC64_IRELATIVE +10000180
3418 +#...
3419 +.*: 0+10000180 +20 IFUNC +LOCAL +DEFAULT .* magic
3420 +#pass
3421 diff --git a/ld/testsuite/ld-powerpc/pr23937.s b/ld/testsuite/ld-powerpc/pr23937.s
3422 new file mode 100644
3423 index 0000000000..155e53adb7
3424 --- /dev/null
3425 +++ b/ld/testsuite/ld-powerpc/pr23937.s
3426 @@ -0,0 +1,65 @@
3427 + .abiversion 2
3428 + .text
3429 + .p2align 4,,15
3430 + .type implementation, @function
3431 +implementation:
3432 +.LCF0:
3433 + addis 2,12,.TOC.-.LCF0@ha
3434 + addi 2,2,.TOC.-.LCF0@l
3435 + .localentry implementation,.-implementation
3436 + mflr 0
3437 + addis 3,2,.LC0@toc@ha
3438 + addi 3,3,.LC0@toc@l
3439 + std 0,16(1)
3440 + stdu 1,-32(1)
3441 + bl puts
3442 + nop
3443 + addi 1,1,32
3444 + li 3,0
3445 + ld 0,16(1)
3446 + mtlr 0
3447 + blr
3448 + .size implementation,.-implementation
3450 + .p2align 4,,15
3451 + .type resolver, @function
3452 +resolver:
3453 +.LCF1:
3454 + addis 2,12,.TOC.-.LCF1@ha
3455 + addi 2,2,.TOC.-.LCF1@l
3456 + .localentry resolver,.-resolver
3457 + addis 3,2,implementation@toc@ha
3458 + addi 3,3,implementation@toc@l
3459 + blr
3460 + .size resolver,.-resolver
3462 + .type magic, @gnu_indirect_function
3463 + .set magic,resolver
3465 + .section .text.startup,"ax",@progbits
3466 + .p2align 4,,15
3467 + .globl main
3468 + .type main, @function
3469 +main:
3470 +.LCF2:
3471 + addis 2,12,.TOC.-.LCF2@ha
3472 + addi 2,2,.TOC.-.LCF2@l
3473 + .localentry main,.-main
3474 + mflr 0
3475 + std 0,16(1)
3476 + stdu 1,-32(1)
3477 + bl magic
3478 + nop
3479 + addi 1,1,32
3480 + cntlzw 3,3
3481 + ld 0,16(1)
3482 + srwi 3,3,5
3483 + mtlr 0
3484 + xori 3,3,0x1
3485 + blr
3486 + .size main,.-main
3488 + .section .rodata.str1.8,"aMS",@progbits,1
3489 + .p2align 3
3490 +.LC0:
3491 + .string "'ere I am JH"
3492 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.d b/ld/testsuite/ld-powerpc/tlsopt5.d
3493 index 4521a9b427..4caf1832ea 100644
3494 --- a/ld/testsuite/ld-powerpc/tlsopt5.d
3495 +++ b/ld/testsuite/ld-powerpc/tlsopt5.d
3496 @@ -8,6 +8,13 @@
3498 Disassembly of section \.text:
3500 +.* <.*\.plt_call\.foo>:
3501 +.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
3502 +.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\)
3503 +.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
3504 +.*: (20 04 80 4e|4e 80 04 20) bctr
3505 + \.\.\.
3507 .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>:
3508 .*: (00 00 63 e9|e9 63 00 00) ld r11,0\(r3\)
3509 .*: (08 00 83 e9|e9 83 00 08) ld r12,8\(r3\)
3510 @@ -19,17 +26,21 @@ Disassembly of section \.text:
3511 .*: (a6 02 68 7d|7d 68 02 a6) mflr r11
3512 .*: (08 00 61 f9|f9 61 00 08) std r11,8\(r1\)
3513 .*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
3514 -.*: (28 80 82 e9|e9 82 80 28) ld r12,-32728\(r2\)
3515 +.*: (30 80 82 e9|e9 82 80 30) ld r12,-32720\(r2\)
3516 .*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
3517 .*: (21 04 80 4e|4e 80 04 21) bctrl
3518 .*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
3519 .*: (08 00 61 e9|e9 61 00 08) ld r11,8\(r1\)
3520 .*: (a6 03 68 7d|7d 68 03 a6) mtlr r11
3521 .*: (20 00 80 4e|4e 80 00 20) blr
3522 + \.\.\.
3524 .* <_start>:
3525 .*: (08 80 62 38|38 62 80 08) addi r3,r2,-32760
3526 -.*: (b9 ff ff 4b|4b ff ff b9) bl .*
3527 +.*: (9d ff ff 4b|4b ff ff 9d) bl .* <.*\.plt_call\.__tls_get_addr_opt@@GLIBC_2\.22>
3528 +.*: (00 00 00 60|60 00 00 00) nop
3529 +.*: (75 ff ff 4b|4b ff ff 75) bl .* <.*\.plt_call\.foo>
3530 +.*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
3531 .*: (00 00 00 60|60 00 00 00) nop
3534 @@ -50,5 +61,8 @@ Disassembly of section \.text:
3535 .*: (08 00 6b e9|e9 6b 00 08) ld r11,8\(r11\)
3536 .*: (20 04 80 4e|4e 80 04 20) bctr
3538 +.* <foo@plt>:
3539 +.* (c8 ff ff 4b|4b ff ff c8) b .*
3541 .* <__tls_get_addr_opt@plt>:
3542 -.*: (c8 ff ff 4b|4b ff ff c8) b .*
3543 +.*: (c4 ff ff 4b|4b ff ff c4) b .*
3544 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.s b/ld/testsuite/ld-powerpc/tlsopt5.s
3545 index 70902ef96a..7cb82db1f6 100644
3546 --- a/ld/testsuite/ld-powerpc/tlsopt5.s
3547 +++ b/ld/testsuite/ld-powerpc/tlsopt5.s
3548 @@ -1,7 +1,10 @@
3549 .globl _start
3550 + .weak foo
3551 _start:
3552 .cfi_startproc
3553 addi 3,2,gd@got@tlsgd
3554 bl __tls_get_addr(gd@tlsgd)
3556 + bl foo
3557 + nop
3558 .cfi_endproc
3559 diff --git a/ld/testsuite/ld-powerpc/tlsopt5.wf b/ld/testsuite/ld-powerpc/tlsopt5.wf
3560 index af8cb76d1c..f0453610e0 100644
3561 --- a/ld/testsuite/ld-powerpc/tlsopt5.wf
3562 +++ b/ld/testsuite/ld-powerpc/tlsopt5.wf
3563 @@ -7,11 +7,10 @@ Contents of the \.eh_frame section:
3564 Data alignment factor: -8
3565 Return address column: 65
3566 Augmentation data: 1b
3568 DW_CFA_def_cfa: r1 ofs 0
3570 0+14 0+14 0+18 FDE cie=0+ pc=.*
3571 - DW_CFA_advance_loc: 48 to .*
3572 + DW_CFA_advance_loc: 80 to .*
3573 DW_CFA_offset_extended_sf: r65 at cfa\+8
3574 DW_CFA_advance_loc: 16 to .*
3575 DW_CFA_restore_extended: r65
3576 diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
3577 index 5ff057a5e3..6eda1d2dc4 100644
3578 --- a/ld/testsuite/ld-scripts/print-memory-usage.t
3579 +++ b/ld/testsuite/ld-scripts/print-memory-usage.t
3580 @@ -11,4 +11,6 @@ SECTIONS
3581 *(.data)
3582 *(.rw)
3585 + /DISCARD/ : { *(.note.gnu.property) }
3587 diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
3588 index 723863995e..c3c4eddab4 100644
3589 --- a/ld/testsuite/ld-scripts/size-2.t
3590 +++ b/ld/testsuite/ld-scripts/size-2.t
3591 @@ -18,4 +18,5 @@ SECTIONS
3592 LONG (SIZEOF (.tdata))
3593 LONG (SIZEOF (.tbss))
3594 } :image
3595 + /DISCARD/ : { *(.note.gnu.property) }
3597 diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
3598 index 2c26639fc0..6b0fde0eed 100644
3599 --- a/ld/testsuite/ld-x86-64/abs-k1om.d
3600 +++ b/ld/testsuite/ld-x86-64/abs-k1om.d
3601 @@ -2,7 +2,7 @@
3602 #source: ../ld-i386/abs.s
3603 #source: ../ld-i386/zero.s
3604 #as: --64 -march=k1om
3605 -#ld: -m elf_k1om
3606 +#ld: -m elf_k1om -z noseparate-code
3607 #objdump: -rs -j .text
3609 .*: file format .*
3610 diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
3611 index 1fb96d44b7..f87869f9d0 100644
3612 --- a/ld/testsuite/ld-x86-64/abs-l1om.d
3613 +++ b/ld/testsuite/ld-x86-64/abs-l1om.d
3614 @@ -2,7 +2,7 @@
3615 #source: ../ld-i386/abs.s
3616 #source: ../ld-i386/zero.s
3617 #as: --64 -march=l1om
3618 -#ld: -m elf_l1om
3619 +#ld: -m elf_l1om -z noseparate-code
3620 #objdump: -rs -j .text
3621 #target: x86_64-*-linux*
3623 diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
3624 index b24b018639..d99ab4685d 100644
3625 --- a/ld/testsuite/ld-x86-64/abs.d
3626 +++ b/ld/testsuite/ld-x86-64/abs.d
3627 @@ -1,7 +1,7 @@
3628 #name: Absolute non-overflowing relocs
3629 #source: ../ld-i386/abs.s
3630 #source: ../ld-i386/zero.s
3631 -#ld:
3632 +#ld: -z noseparate-code
3633 #objdump: -rs
3635 .*: file format .*
3636 diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
3637 index 07d17325d0..2c503ffbaa 100644
3638 --- a/ld/testsuite/ld-x86-64/pr12718.d
3639 +++ b/ld/testsuite/ld-x86-64/pr12718.d
3640 @@ -1,6 +1,6 @@
3641 #name: PR ld/12718
3642 #as: --64
3643 -#ld: -melf_x86_64
3644 +#ld: -melf_x86_64 -z noseparate-code
3645 #readelf: -S --wide
3647 There are 5 section headers, starting at offset 0x[0-9a-f]+:
3648 diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
3649 index 6fe6abee09..1162d55818 100644
3650 --- a/ld/testsuite/ld-x86-64/pr12921.d
3651 +++ b/ld/testsuite/ld-x86-64/pr12921.d
3652 @@ -1,6 +1,6 @@
3653 #name: PR ld/12921
3654 #as: --64
3655 -#ld: -melf_x86_64
3656 +#ld: -melf_x86_64 -z noseparate-code
3657 #readelf: -S --wide
3659 There are 7 section headers, starting at offset 0x[0-9a-f]+:
3660 diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
3661 new file mode 100644
3662 index 0000000000..6d9fa68cdb
3663 --- /dev/null
3664 +++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
3665 @@ -0,0 +1,10 @@
3666 +#source: pr23486a.s
3667 +#source: pr23486b.s
3668 +#as: --x32
3669 +#ld: -r -m elf32_x86_64
3670 +#readelf: -n
3672 +Displaying notes found in: .note.gnu.property
3673 + Owner Data size Description
3674 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3675 + Properties: x86 ISA needed: i486, 586
3676 diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
3677 new file mode 100644
3678 index 0000000000..dc2b7bf760
3679 --- /dev/null
3680 +++ b/ld/testsuite/ld-x86-64/pr23486a.d
3681 @@ -0,0 +1,10 @@
3682 +#source: pr23486a.s
3683 +#source: pr23486b.s
3684 +#as: --64 -defsym __64_bit__=1
3685 +#ld: -r -m elf_x86_64
3686 +#readelf: -n
3688 +Displaying notes found in: .note.gnu.property
3689 + Owner Data size Description
3690 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3691 + Properties: x86 ISA needed: i486, 586
3692 diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
3693 new file mode 100644
3694 index 0000000000..a07d0c7ced
3695 --- /dev/null
3696 +++ b/ld/testsuite/ld-x86-64/pr23486a.s
3697 @@ -0,0 +1,30 @@
3698 + .section ".note.gnu.property", "a"
3699 +.ifdef __64_bit__
3700 + .p2align 3
3701 +.else
3702 + .p2align 2
3703 +.endif
3704 + .long 1f - 0f /* name length. */
3705 + .long 4f - 1f /* data length. */
3706 + /* NT_GNU_PROPERTY_TYPE_0 */
3707 + .long 5 /* note type. */
3709 + .asciz "GNU" /* vendor name. */
3711 +.ifdef __64_bit__
3712 + .p2align 3
3713 +.else
3714 + .p2align 2
3715 +.endif
3716 + /* GNU_PROPERTY_X86_ISA_1_USED */
3717 + .long 0xc0000000 /* pr_type. */
3718 + .long 3f - 2f /* pr_datasz. */
3720 + .long 0xa
3722 +.ifdef __64_bit__
3723 + .p2align 3
3724 +.else
3725 + .p2align 2
3726 +.endif
3728 diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
3729 new file mode 100644
3730 index 0000000000..0445e69d82
3731 --- /dev/null
3732 +++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
3733 @@ -0,0 +1,10 @@
3734 +#source: pr23486b.s
3735 +#source: pr23486a.s
3736 +#as: --x32
3737 +#ld: -r -m elf32_x86_64
3738 +#readelf: -n
3740 +Displaying notes found in: .note.gnu.property
3741 + Owner Data size Description
3742 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3743 + Properties: x86 ISA needed: i486, 586
3744 diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
3745 new file mode 100644
3746 index 0000000000..dd0fe88143
3747 --- /dev/null
3748 +++ b/ld/testsuite/ld-x86-64/pr23486b.d
3749 @@ -0,0 +1,10 @@
3750 +#source: pr23486b.s
3751 +#source: pr23486a.s
3752 +#as: --64 -defsym __64_bit__=1
3753 +#ld: -r -m elf_x86_64
3754 +#readelf: -n
3756 +Displaying notes found in: .note.gnu.property
3757 + Owner Data size Description
3758 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3759 + Properties: x86 ISA needed: i486, 586
3760 diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
3761 new file mode 100644
3762 index 0000000000..c5167eeb65
3763 --- /dev/null
3764 +++ b/ld/testsuite/ld-x86-64/pr23486b.s
3765 @@ -0,0 +1,30 @@
3766 + .section ".note.gnu.property", "a"
3767 +.ifdef __64_bit__
3768 + .p2align 3
3769 +.else
3770 + .p2align 2
3771 +.endif
3772 + .long 1f - 0f /* name length. */
3773 + .long 4f - 1f /* data length. */
3774 + /* NT_GNU_PROPERTY_TYPE_0 */
3775 + .long 5 /* note type. */
3777 + .asciz "GNU" /* vendor name. */
3779 +.ifdef __64_bit__
3780 + .p2align 3
3781 +.else
3782 + .p2align 2
3783 +.endif
3784 + /* GNU_PROPERTY_X86_ISA_1_NEEDED */
3785 + .long 0xc0000001 /* pr_type. */
3786 + .long 3f - 2f /* pr_datasz. */
3788 + .long 0x3
3790 +.ifdef __64_bit__
3791 + .p2align 3
3792 +.else
3793 + .p2align 2
3794 +.endif
3796 diff --git a/ld/testsuite/ld-x86-64/pr23854.d b/ld/testsuite/ld-x86-64/pr23854.d
3797 new file mode 100644
3798 index 0000000000..95770d3cef
3799 --- /dev/null
3800 +++ b/ld/testsuite/ld-x86-64/pr23854.d
3801 @@ -0,0 +1,28 @@
3802 +#as: --64 -mrelax-relocations=yes
3803 +#ld: -melf_x86_64
3804 +#objdump: -dw
3806 +.*: +file format .*
3808 +Disassembly of section .text:
3810 +[a-f0-9]+ <_start>:
3811 + +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got>
3812 + +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got>
3813 + +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got>
3814 + +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got>
3815 + +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got>
3816 + +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got>
3817 + +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got>
3818 + +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got>
3819 + +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got>
3820 + +[a-f0-9]+: 66 13 05 ([0-9a-f]{2} ){4} * adc 0x[a-f0-9]+\(%rip\),%ax # [a-f0-9]+ <.got\+0x8>
3821 + +[a-f0-9]+: 66 03 1d ([0-9a-f]{2} ){4} * add 0x[a-f0-9]+\(%rip\),%bx # [a-f0-9]+ <.got\+0x8>
3822 + +[a-f0-9]+: 66 23 0d ([0-9a-f]{2} ){4} * and 0x[a-f0-9]+\(%rip\),%cx # [a-f0-9]+ <.got\+0x8>
3823 + +[a-f0-9]+: 66 3b 15 ([0-9a-f]{2} ){4} * cmp 0x[a-f0-9]+\(%rip\),%dx # [a-f0-9]+ <.got\+0x8>
3824 + +[a-f0-9]+: 66 0b 3d ([0-9a-f]{2} ){4} * or 0x[a-f0-9]+\(%rip\),%di # [a-f0-9]+ <.got\+0x8>
3825 + +[a-f0-9]+: 66 1b 35 ([0-9a-f]{2} ){4} * sbb 0x[a-f0-9]+\(%rip\),%si # [a-f0-9]+ <.got\+0x8>
3826 + +[a-f0-9]+: 66 2b 2d ([0-9a-f]{2} ){4} * sub 0x[a-f0-9]+\(%rip\),%bp # [a-f0-9]+ <.got\+0x8>
3827 + +[a-f0-9]+: 66 44 33 05 ([0-9a-f]{2} ){4} * xor 0x[a-f0-9]+\(%rip\),%r8w # [a-f0-9]+ <.got\+0x8>
3828 + +[a-f0-9]+: 66 85 0d ([0-9a-f]{2} ){4} * test %cx,0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <.got\+0x8>
3829 +#pass
3830 diff --git a/ld/testsuite/ld-x86-64/pr23854.s b/ld/testsuite/ld-x86-64/pr23854.s
3831 new file mode 100644
3832 index 0000000000..b720154fb2
3833 --- /dev/null
3834 +++ b/ld/testsuite/ld-x86-64/pr23854.s
3835 @@ -0,0 +1,33 @@
3836 + .data
3837 + .type bar, @object
3838 +bar:
3839 + .byte 1
3840 + .size bar, .-bar
3841 + .globl foo
3842 + .type foo, @object
3843 +foo:
3844 + .byte 1
3845 + .size foo, .-foo
3846 + .text
3847 + .globl _start
3848 + .type _start, @function
3849 +_start:
3850 + adcw bar@GOTPCREL(%rip), %ax
3851 + addw bar@GOTPCREL(%rip), %bx
3852 + andw bar@GOTPCREL(%rip), %cx
3853 + cmpw bar@GOTPCREL(%rip), %dx
3854 + orw bar@GOTPCREL(%rip), %di
3855 + sbbw bar@GOTPCREL(%rip), %si
3856 + subw bar@GOTPCREL(%rip), %bp
3857 + xorw bar@GOTPCREL(%rip), %r8w
3858 + testw %cx, bar@GOTPCREL(%rip)
3859 + adcw foo@GOTPCREL(%rip), %ax
3860 + addw foo@GOTPCREL(%rip), %bx
3861 + andw foo@GOTPCREL(%rip), %cx
3862 + cmpw foo@GOTPCREL(%rip), %dx
3863 + orw foo@GOTPCREL(%rip), %di
3864 + sbbw foo@GOTPCREL(%rip), %si
3865 + subw foo@GOTPCREL(%rip), %bp
3866 + xorw foo@GOTPCREL(%rip), %r8w
3867 + testw %cx, foo@GOTPCREL(%rip)
3868 + .size _start, .-_start
3869 diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
3870 index 0ed91f5922..d03203c1e5 100644
3871 --- a/ld/testsuite/ld-x86-64/property-3.r
3872 +++ b/ld/testsuite/ld-x86-64/property-3.r
3873 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3874 Owner Data size Description
3875 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3876 Properties: stack size: 0x800000
3877 - x86 ISA used: 586, SSE
3878 x86 ISA needed: i486, 586
3879 #pass
3880 diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
3881 index cb2bc15d9a..da295eb6c7 100644
3882 --- a/ld/testsuite/ld-x86-64/property-4.r
3883 +++ b/ld/testsuite/ld-x86-64/property-4.r
3884 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3885 Owner Data size Description
3886 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3887 Properties: stack size: 0x800000
3888 - x86 ISA used: i486, 586, SSE
3889 x86 ISA needed: i486, 586, SSE
3890 #pass
3891 diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
3892 index 552965058c..e4141594b3 100644
3893 --- a/ld/testsuite/ld-x86-64/property-5.r
3894 +++ b/ld/testsuite/ld-x86-64/property-5.r
3895 @@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
3896 Owner Data size Description
3897 GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
3898 Properties: stack size: 0x900000
3899 - x86 ISA used: i486, 586, SSE
3900 x86 ISA needed: i486, 586, SSE
3901 #pass
3902 diff --git a/ld/testsuite/ld-x86-64/property-x86-3.s b/ld/testsuite/ld-x86-64/property-x86-3.s
3903 index be8cc9efb1..239cf622ff 100644
3904 --- a/ld/testsuite/ld-x86-64/property-x86-3.s
3905 +++ b/ld/testsuite/ld-x86-64/property-x86-3.s
3906 @@ -41,7 +41,11 @@
3909 .section ".note.gnu.property", "a"
3910 +.ifdef __64_bit__
3911 .p2align 3
3912 +.else
3913 + .p2align 2
3914 +.endif
3915 .long 1f - 0f /* name length. */
3916 .long 3f - 1f /* data length. */
3917 /* NT_GNU_PROPERTY_TYPE_0 */
3918 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
3919 index 011426f5a4..4cec728dc7 100644
3920 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
3921 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
3922 @@ -6,6 +6,5 @@
3924 Displaying notes found in: .note.gnu.property
3925 Owner Data size Description
3926 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3927 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3928 - x86 ISA needed: i486, 586, SSE2, SSE3
3929 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3930 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3931 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
3932 index 1b4229a037..a8df49a351 100644
3933 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
3934 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
3935 @@ -6,6 +6,5 @@
3937 Displaying notes found in: .note.gnu.property
3938 Owner Data size Description
3939 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
3940 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3941 - x86 ISA needed: i486, 586, SSE2, SSE3
3942 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3943 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3944 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
3945 index 290ed6abf1..c112626711 100644
3946 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
3947 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
3948 @@ -6,6 +6,5 @@
3950 Displaying notes found in: .note.gnu.property
3951 Owner Data size Description
3952 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3953 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3954 - x86 ISA needed: i486, 586, SSE2, SSE3
3955 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3956 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3957 diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
3958 index 1142e03272..f10dffdc2c 100644
3959 --- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
3960 +++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
3961 @@ -6,6 +6,5 @@
3963 Displaying notes found in: .note.gnu.property
3964 Owner Data size Description
3965 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
3966 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3967 - x86 ISA needed: i486, 586, SSE2, SSE3
3968 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3969 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3970 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
3971 index 819542d181..0147a3c7b6 100644
3972 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
3973 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
3974 @@ -6,6 +6,5 @@
3976 Displaying notes found in: .note.gnu.property
3977 Owner Data size Description
3978 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
3979 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3980 - x86 ISA needed: i486, 586, SSE2, SSE3
3981 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
3982 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3983 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
3984 index 4c5d0e0a18..1f8c2dc929 100644
3985 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
3986 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
3987 @@ -6,6 +6,5 @@
3989 Displaying notes found in: .note.gnu.property
3990 Owner Data size Description
3991 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
3992 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
3993 - x86 ISA needed: i486, 586, SSE2, SSE3
3994 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
3995 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
3996 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
3997 index ba181e0bc5..7ca2539ca5 100644
3998 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
3999 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
4000 @@ -6,6 +6,5 @@
4002 Displaying notes found in: .note.gnu.property
4003 Owner Data size Description
4004 - GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
4005 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4006 - x86 ISA needed: i486, 586, SSE2, SSE3
4007 + GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
4008 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4009 diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4010 index 5216f385dd..f66a40e449 100644
4011 --- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4012 +++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
4013 @@ -6,6 +6,5 @@
4015 Displaying notes found in: .note.gnu.property
4016 Owner Data size Description
4017 - GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
4018 - Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
4019 - x86 ISA needed: i486, 586, SSE2, SSE3
4020 + GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
4021 + Properties: x86 ISA needed: i486, 586, SSE2, SSE3
4022 diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
4023 index 6edb9e86f4..9abafd2765 100644
4024 --- a/ld/testsuite/ld-x86-64/x86-64.exp
4025 +++ b/ld/testsuite/ld-x86-64/x86-64.exp
4026 @@ -403,6 +403,11 @@ run_dump_test "pr23372a"
4027 run_dump_test "pr23372a-x32"
4028 run_dump_test "pr23372b"
4029 run_dump_test "pr23372b-x32"
4030 +run_dump_test "pr23486a"
4031 +run_dump_test "pr23486a-x32"
4032 +run_dump_test "pr23486b"
4033 +run_dump_test "pr23486b-x32"
4034 +run_dump_test "pr23854"
4036 if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
4037 return
4038 diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
4039 index cfbefe9028..1095091882 100644
4040 --- a/ld/testsuite/lib/ld-lib.exp
4041 +++ b/ld/testsuite/lib/ld-lib.exp
4042 @@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
4043 continue
4046 - if { [ string match "c++" $lang ] } {
4047 + if { [ string match "asm" $lang ] } {
4048 + set link_proc ld_link
4049 + set link_cmd $ld
4050 + } elseif { [ string match "c++" $lang ] } {
4051 set link_proc ld_link
4052 set link_cmd $CXX
4053 } else {
4054 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
4055 index d04963a9fa..8f89565935 100644
4056 --- a/opcodes/ChangeLog
4057 +++ b/opcodes/ChangeLog
4058 @@ -1,3 +1,36 @@
4059 +2018-10-19 Tamar Christina <tamar.christina@arm.com>
4061 + * arm-dis.c (UNKNOWN_INSTRUCTION_32BIT): Format specifier for arm mode.
4062 + (UNKNOWN_INSTRUCTION_16BIT): Format specifier for thumb mode.
4063 + (print_insn_arm, print_insn_thumb16, print_insn_thumb32): Use them.
4065 +2018-10-16 Matthew Malcomson <matthew.malcomson@arm.com>
4067 + * aarch64-opc.c (struct operand_qualifier_data): Change qualifier data
4068 + corresponding to AARCH64_OPND_QLF_S_4B qualifier.
4070 +2018-10-05 H.J. Lu <hongjiu.lu@intel.com>
4072 + * i386-dis.c (rm_table): Add enclv.
4073 + * i386-opc.tbl: Add enclv.
4074 + * i386-tbl.h: Regenerated.
4076 +2018-07-18 H.J. Lu <hongjiu.lu@intel.com>
4078 + PR gas/23418
4079 + * i386-opc.h (Byte): Update comments.
4080 + (Word): Likewise.
4081 + (Dword): Likewise.
4082 + (Fword): Likewise.
4083 + (Qword): Likewise.
4084 + (Tbyte): Likewise.
4085 + (Xmmword): Likewise.
4086 + (Ymmword): Likewise.
4087 + (Zmmword): Likewise.
4088 + * i386-opc.tbl: Split vcvtps2qq, vcvtps2uqq, vcvttps2qq and
4089 + vcvttps2uqq.
4090 + * i386-tbl.h: Regenerated.
4092 2018-07-18 Nick Clifton <nickc@redhat.com>
4094 2.31.1 Release point.
4095 diff --git a/opcodes/aarch64-opc.c b/opcodes/aarch64-opc.c
4096 index ba2af7bfc2..e59240c98d 100644
4097 --- a/opcodes/aarch64-opc.c
4098 +++ b/opcodes/aarch64-opc.c
4099 @@ -698,7 +698,7 @@ struct operand_qualifier_data aarch64_opnd_qualifiers[] =
4100 {4, 1, 0x2, "s", OQK_OPD_VARIANT},
4101 {8, 1, 0x3, "d", OQK_OPD_VARIANT},
4102 {16, 1, 0x4, "q", OQK_OPD_VARIANT},
4103 - {1, 4, 0x0, "4b", OQK_OPD_VARIANT},
4104 + {4, 1, 0x0, "4b", OQK_OPD_VARIANT},
4106 {1, 4, 0x0, "4b", OQK_OPD_VARIANT},
4107 {1, 8, 0x0, "8b", OQK_OPD_VARIANT},
4108 @@ -2501,6 +2501,7 @@ operand_general_constraint_met_p (const aarch64_opnd_info *opnds, int idx,
4109 else
4110 num = 16;
4111 num = num / aarch64_get_qualifier_esize (qualifier) - 1;
4112 + assert (aarch64_get_qualifier_nelem (qualifier) == 1);
4114 /* Index out-of-range. */
4115 if (!value_in_range_p (opnd->reglane.index, 0, num))
4116 diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c
4117 index b6cccc5233..bc97bc2617 100644
4118 --- a/opcodes/arm-dis.c
4119 +++ b/opcodes/arm-dis.c
4120 @@ -141,6 +141,8 @@ enum opcode_sentinel_enum
4121 } opcode_sentinels;
4123 #define UNDEFINED_INSTRUCTION "\t\t; <UNDEFINED> instruction: %0-31x"
4124 +#define UNKNOWN_INSTRUCTION_32BIT "\t\t; <UNDEFINED> instruction: %08x"
4125 +#define UNKNOWN_INSTRUCTION_16BIT "\t\t; <UNDEFINED> instruction: %04x"
4126 #define UNPREDICTABLE_INSTRUCTION "\t; <UNPREDICTABLE>"
4128 /* Common coprocessor opcodes shared between Arm and Thumb-2. */
4129 @@ -5188,7 +5190,8 @@ print_insn_arm (bfd_vma pc, struct disassemble_info *info, long given)
4130 return;
4133 - abort ();
4134 + func (stream, UNKNOWN_INSTRUCTION_32BIT, (unsigned)given);
4135 + return;
4138 /* Print one 16-bit Thumb instruction from PC on INFO->STREAM. */
4139 @@ -5459,7 +5462,8 @@ print_insn_thumb16 (bfd_vma pc, struct disassemble_info *info, long given)
4142 /* No match. */
4143 - abort ();
4144 + func (stream, UNKNOWN_INSTRUCTION_16BIT, (unsigned)given);
4145 + return;
4148 /* Return the name of an V7M special register. */
4149 @@ -6083,7 +6087,8 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info *info, long given)
4152 /* No match. */
4153 - abort ();
4154 + func (stream, UNKNOWN_INSTRUCTION_32BIT, (unsigned)given);
4155 + return;
4158 /* Print data bytes on INFO->STREAM. */
4159 diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
4160 index 42d219cb11..78436879fb 100644
4161 --- a/opcodes/i386-dis.c
4162 +++ b/opcodes/i386-dis.c
4163 @@ -12321,7 +12321,7 @@ static const struct dis386 rm_table[][8] = {
4166 /* RM_0F01_REG_0 */
4167 - { Bad_Opcode },
4168 + { "enclv", { Skip_MODRM }, 0 },
4169 { "vmcall", { Skip_MODRM }, 0 },
4170 { "vmlaunch", { Skip_MODRM }, 0 },
4171 { "vmresume", { Skip_MODRM }, 0 },
4172 diff --git a/opcodes/i386-opc.h b/opcodes/i386-opc.h
4173 index 9a22b3c95f..f43b5e11eb 100644
4174 --- a/opcodes/i386-opc.h
4175 +++ b/opcodes/i386-opc.h
4176 @@ -736,23 +736,23 @@ enum
4177 RegMem,
4178 /* Memory. */
4179 Mem,
4180 - /* BYTE memory. */
4181 + /* BYTE size. */
4182 Byte,
4183 - /* WORD memory. 2 byte */
4184 + /* WORD size. 2 byte */
4185 Word,
4186 - /* DWORD memory. 4 byte */
4187 + /* DWORD size. 4 byte */
4188 Dword,
4189 - /* FWORD memory. 6 byte */
4190 + /* FWORD size. 6 byte */
4191 Fword,
4192 - /* QWORD memory. 8 byte */
4193 + /* QWORD size. 8 byte */
4194 Qword,
4195 - /* TBYTE memory. 10 byte */
4196 + /* TBYTE size. 10 byte */
4197 Tbyte,
4198 - /* XMMWORD memory. */
4199 + /* XMMWORD size. */
4200 Xmmword,
4201 - /* YMMWORD memory. */
4202 + /* YMMWORD size. */
4203 Ymmword,
4204 - /* ZMMWORD memory. */
4205 + /* ZMMWORD size. */
4206 Zmmword,
4207 /* Unspecified memory size. */
4208 Unspecified,
4209 diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
4210 index fad588ae3f..99f4d6635a 100644
4211 --- a/opcodes/i386-opc.tbl
4212 +++ b/opcodes/i386-opc.tbl
4213 @@ -4100,6 +4100,7 @@ xsavec64, 1, 0xfc7, 0x4, 2, CpuXSAVEC|Cpu64, Modrm|IgnoreSize|No_bSuf|No_wSuf|No
4215 encls, 0, 0xf01cf, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4216 enclu, 0, 0xf01d7, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4217 +enclv, 0, 0xf01c0, None, 3, CpuSE1, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { 0 }
4219 // SGX instructions end.
4221 @@ -5408,11 +5409,13 @@ vcvtpd2uqq, 2, 0x6679, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3|
4222 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 }
4224 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 }
4225 -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 }
4226 +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 }
4227 +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 }
4228 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 }
4229 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 }
4230 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 }
4231 -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 }
4232 +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 }
4233 +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 }
4234 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 }
4235 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 }
4237 @@ -5442,11 +5445,13 @@ vcvttpd2uqq, 2, 0x6678, None, 1, CpuAVX512DQ|CpuAVX512VL, Modrm|EVex=3|Masking=3
4238 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 }
4240 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 }
4241 -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 }
4242 +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 }
4243 +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 }
4244 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 }
4245 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 }
4246 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 }
4247 -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 }
4248 +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 }
4249 +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 }
4250 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 }
4251 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 }
4253 diff --git a/opcodes/i386-tbl.h b/opcodes/i386-tbl.h
4254 index d513275deb..42ac313eca 100644
4255 --- a/opcodes/i386-tbl.h
4256 +++ b/opcodes/i386-tbl.h
4257 @@ -83658,6 +83658,20 @@ const insn_template i386_optab[] =
4258 { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4260 0, 0, 0 } } } },
4261 + { "enclv", 0, 0xf01c0, None, 3,
4262 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4263 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4264 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4265 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
4266 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4267 + 0, 0, 0, 0, 0 } },
4268 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
4269 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4270 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4271 + 0, 0 },
4272 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4273 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4274 + 0, 0, 0 } } } },
4275 { "vcvtpd2udqx", 2, 0x79, None, 1,
4276 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
4278 @@ -87881,6 +87895,23 @@ const insn_template i386_optab[] =
4279 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4281 0, 0, 0 } } } },
4282 + { "vcvtps2qq", 2, 0x667B, None, 1,
4283 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4284 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4285 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4286 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4287 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4288 + 0, 0, 0, 0, 0 } },
4289 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4290 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4291 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4292 + 0, 0 },
4293 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4294 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4295 + 0, 0, 0 } },
4296 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4297 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4298 + 0, 0, 0 } } } },
4299 { "vcvtps2qq", 2, 0x667B, None, 1,
4300 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4302 @@ -87892,8 +87923,8 @@ const insn_template i386_optab[] =
4303 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4304 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4305 0, 0 },
4306 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4307 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4308 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4309 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4310 0, 0, 0 } },
4311 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4313 @@ -87952,6 +87983,23 @@ const insn_template i386_optab[] =
4314 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4316 0, 0, 0 } } } },
4317 + { "vcvtps2uqq", 2, 0x6679, None, 1,
4318 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4319 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4320 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4321 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4322 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4323 + 0, 0, 0, 0, 0 } },
4324 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4325 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4326 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4327 + 0, 0 },
4328 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4329 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4330 + 0, 0, 0 } },
4331 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4332 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4333 + 0, 0, 0 } } } },
4334 { "vcvtps2uqq", 2, 0x6679, None, 1,
4335 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4337 @@ -87963,8 +88011,8 @@ const insn_template i386_optab[] =
4338 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4339 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4340 0, 0 },
4341 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4342 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4343 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4344 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4345 0, 0, 0 } },
4346 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4348 @@ -88412,6 +88460,23 @@ const insn_template i386_optab[] =
4349 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4351 0, 0, 0 } } } },
4352 + { "vcvttps2qq", 2, 0x667A, None, 1,
4353 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4354 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4355 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4356 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4357 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4358 + 0, 0, 0, 0, 0 } },
4359 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4360 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4361 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4362 + 0, 0 },
4363 + { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4364 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4365 + 0, 0, 0 } },
4366 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4367 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4368 + 0, 0, 0 } } } },
4369 { "vcvttps2qq", 2, 0x667A, None, 1,
4370 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4372 @@ -88423,8 +88488,8 @@ const insn_template i386_optab[] =
4373 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4374 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4375 0, 0 },
4376 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4377 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4378 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4379 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4380 0, 0, 0 } },
4381 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4383 @@ -88483,6 +88548,23 @@ const insn_template i386_optab[] =
4384 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
4386 0, 0, 0 } } } },
4387 + { "vcvttps2uqq", 2, 0x6678, None, 1,
4388 + { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4389 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 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, 0, 0, 0, 0,
4393 + 0, 0, 0, 0, 0 } },
4394 + { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
4395 + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4396 + 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4397 + 0, 0 },
4398 + { { { 0, 0, 1, 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, 1, 0, 0, 0, 0,
4400 + 0, 0, 0 } },
4401 + { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4402 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4403 + 0, 0, 0 } } } },
4404 { "vcvttps2uqq", 2, 0x6678, None, 1,
4405 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
4407 @@ -88494,8 +88576,8 @@ const insn_template i386_optab[] =
4408 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4409 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0,
4410 0, 0 },
4411 - { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4412 - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0,
4413 + { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
4414 + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
4415 0, 0, 0 } },
4416 { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
4418 diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
4419 index ef75e38e7e..d8a9cce1e2 100644
4420 --- a/opcodes/s390-opc.txt
4421 +++ b/opcodes/s390-opc.txt
4422 @@ -1126,7 +1126,7 @@ e561 tbeginc SIL_RDU "constrained transaction begin" zEC12 zarch htm
4423 b2f8 tend S_00 "transaction end" zEC12 zarch htm
4424 c7 bpp SMI_U0RDP "branch prediction preload" zEC12 zarch
4425 c5 bprp MII_UPP "branch prediction relative preload" zEC12 zarch
4426 -b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch
4427 +b2e8 ppa RRF_U0RR "perform processor assist" zEC12 zarch htm
4428 b2fa niai IE_UU "next instruction access intent" zEC12 zarch
4429 b98f crdte RRF_RURR2 "compare and replace DAT table entry" zEC12 zarch optparm
4430 e3000000009f lat RXY_RRRD "load and trap 32 bit" zEC12 zarch