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