diff options
author | Martin Liska <mliska@suse.cz> | 2022-12-08 09:12:13 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-12-14 08:48:13 +0100 |
commit | 8ad93045edcff5128fccc8bff23848f2cfae6453 (patch) | |
tree | 5296a7e2552a1a8329c925fe266a649fd2d821a2 | |
parent | d0517d6e333c4b6aaae411648628e2923e1f83aa (diff) | |
download | gdb-8ad93045edcff5128fccc8bff23848f2cfae6453.zip gdb-8ad93045edcff5128fccc8bff23848f2cfae6453.tar.gz gdb-8ad93045edcff5128fccc8bff23848f2cfae6453.tar.bz2 |
ld, gold: remove support for -z bndplt (MPX prefix)
bfd/ChangeLog:
* elf-linker-x86.h (struct elf_linker_x86_params): Remove
bndplt.
* elf64-x86-64.c (elf_x86_64_scan_relocs): Ignore
R_X86_64_PLT32_BND.
(elf_x86_64_relocate_section): Similarly here.
(elf_x86_64_link_setup_gnu_properties): Ignore bndplt.
* elfxx-x86.c: Likewise.
* elfxx-x86.h: Likewise.
gold/ChangeLog:
* NEWS: Document -z bndplt.
* options.h (class General_options): Remove bndplt option.
* x86_64.cc (class Output_data_plt_x86_64_bnd): Remove.
(Target_x86_64::do_make_data_plt): Do not use
Output_data_plt_x86_64_bnd.
(Target_x86_64::Scan::get_reference_flags): Likewise.
(Target_x86_64::Scan::check_non_pic): Likewise.
(Target_x86_64::Scan::local): Likewise.
(Target_x86_64::Scan::global): Likewise.
ld/ChangeLog:
* NEWS: Document -z bndplt.
* emulparams/elf_x86_64.sh: Remove bndplt option.
* ld.texi: Likewise.
* testsuite/ld-x86-64/x86-64.exp:
* testsuite/ld-x86-64/bnd-branch-1-now.d: Removed.
* testsuite/ld-x86-64/bnd-branch-1.d: Removed.
* testsuite/ld-x86-64/bnd-branch-1.s: Removed.
* testsuite/ld-x86-64/bnd-ifunc-1-now.d: Removed.
* testsuite/ld-x86-64/bnd-ifunc-1.d: Removed.
* testsuite/ld-x86-64/bnd-ifunc-1.s: Removed.
* testsuite/ld-x86-64/bnd-ifunc-2-now.d: Removed.
* testsuite/ld-x86-64/bnd-ifunc-2.d: Removed.
* testsuite/ld-x86-64/bnd-ifunc-2.s: Removed.
* testsuite/ld-x86-64/bnd-plt-1-now.d: Removed.
* testsuite/ld-x86-64/bnd-plt-1.d: Removed.
* testsuite/ld-x86-64/mpx.exp: Removed.
* testsuite/ld-x86-64/mpx1.out: Removed.
* testsuite/ld-x86-64/mpx1a.c: Removed.
* testsuite/ld-x86-64/mpx1a.rd: Removed.
* testsuite/ld-x86-64/mpx1b.c: Removed.
* testsuite/ld-x86-64/mpx1c.c: Removed.
* testsuite/ld-x86-64/mpx1c.rd: Removed.
* testsuite/ld-x86-64/mpx2.out: Removed.
* testsuite/ld-x86-64/mpx2a.c: Removed.
* testsuite/ld-x86-64/mpx2a.rd: Removed.
* testsuite/ld-x86-64/mpx2b.c: Removed.
* testsuite/ld-x86-64/mpx2c.c: Removed.
* testsuite/ld-x86-64/mpx2c.rd: Removed.
* testsuite/ld-x86-64/mpx3.dd: Removed.
* testsuite/ld-x86-64/mpx3a.s: Removed.
* testsuite/ld-x86-64/mpx3b.s: Removed.
* testsuite/ld-x86-64/mpx3n.dd: Removed.
* testsuite/ld-x86-64/mpx4.dd: Removed.
* testsuite/ld-x86-64/mpx4a.s: Removed.
* testsuite/ld-x86-64/mpx4b.s: Removed.
* testsuite/ld-x86-64/mpx4n.dd: Removed.
* testsuite/ld-x86-64/pr20800a.S: Removed.
* testsuite/ld-x86-64/pr20800b.S: Removed.
* testsuite/ld-x86-64/pr21038a-now.d: Removed.
* testsuite/ld-x86-64/pr21038a.d: Removed.
* testsuite/ld-x86-64/pr21038a.s: Removed.
* testsuite/ld-x86-64/pr21038b-now.d: Removed.
* testsuite/ld-x86-64/pr21038b.d: Removed.
* testsuite/ld-x86-64/pr21038b.s: Removed.
* testsuite/ld-x86-64/pr21038c-now.d: Removed.
* testsuite/ld-x86-64/pr21038c.d: Removed.
* testsuite/ld-x86-64/pr21038c.s: Removed.
54 files changed, 12 insertions, 1853 deletions
diff --git a/bfd/elf-linker-x86.h b/bfd/elf-linker-x86.h index 19462e0..0badcf8 100644 --- a/bfd/elf-linker-x86.h +++ b/bfd/elf-linker-x86.h @@ -31,9 +31,6 @@ enum elf_x86_prop_report /* Used to pass x86-specific linker options from ld to bfd. */ struct elf_linker_x86_params { - /* TRUE if BND prefix in PLT entries is always generated. */ - unsigned int bndplt: 1; - /* TRUE if IBT-enabled PLT entries should be generated. */ unsigned int ibtplt: 1; diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 2a5f5a5..afc8c76 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -2197,7 +2197,6 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info, break; case R_X86_64_PLT32: - case R_X86_64_PLT32_BND: /* This symbol requires a procedure linkage table entry. We actually build the entry in adjust_dynamic_symbol, because this might be a case of linking PIC code which is @@ -2256,7 +2255,6 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info, case R_X86_64_PC8: case R_X86_64_PC16: case R_X86_64_PC32: - case R_X86_64_PC32_BND: case R_X86_64_PC64: case R_X86_64_64: pointer: @@ -2289,8 +2287,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info, } } } - else if (r_type != R_X86_64_PC32_BND - && r_type != R_X86_64_PC64) + else if (r_type != R_X86_64_PC64) { /* At run-time, R_X86_64_64 can be resolved for both x86-64 and x32. But R_X86_64_32 and R_X86_64_32S @@ -2905,10 +2902,8 @@ elf_x86_64_relocate_section (bfd *output_bfd, } /* FALLTHROUGH */ case R_X86_64_PC32: - case R_X86_64_PC32_BND: case R_X86_64_PC64: case R_X86_64_PLT32: - case R_X86_64_PLT32_BND: goto do_relocation; } } @@ -3172,7 +3167,6 @@ elf_x86_64_relocate_section (bfd *output_bfd, break; case R_X86_64_PLT32: - case R_X86_64_PLT32_BND: /* Relocation is to the entry for this symbol in the procedure linkage table. */ @@ -3227,7 +3221,6 @@ elf_x86_64_relocate_section (bfd *output_bfd, case R_X86_64_PC8: case R_X86_64_PC16: case R_X86_64_PC32: - case R_X86_64_PC32_BND: /* Don't complain about -fPIC if the symbol is undefined when building executable unless it is unresolved weak symbol, references a dynamic definition in PIE or -z nocopyreloc @@ -5317,16 +5310,9 @@ elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info) htab = elf_x86_hash_table (info, bed->target_id); if (!htab) abort (); - if (htab->params->bndplt) - { - init_table.lazy_plt = &elf_x86_64_lazy_bnd_plt; - init_table.non_lazy_plt = &elf_x86_64_non_lazy_bnd_plt; - } - else - { - init_table.lazy_plt = &elf_x86_64_lazy_plt; - init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt; - } + + init_table.lazy_plt = &elf_x86_64_lazy_plt; + init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt; init_table.lazy_ibt_plt = &elf_x32_lazy_ibt_plt; init_table.non_lazy_ibt_plt = &elf_x32_non_lazy_ibt_plt; diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index 88c34d3..2ddca34 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -4415,20 +4415,6 @@ _bfd_x86_elf_link_setup_gnu_properties if (!bfd_set_section_alignment (sec, plt_alignment)) goto error_alignment; } - else if (htab->params->bndplt && ABI_64_P (dynobj)) - { - /* Create the second PLT for Intel MPX support. MPX - PLT is supported only in 64-bit mode and is needed - only for lazy binding. */ - sec = bfd_make_section_anyway_with_flags (dynobj, - ".plt.sec", - pltflags); - if (sec == NULL) - info->callbacks->einfo (_("%F%P: failed to create BND PLT section\n")); - - if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment)) - goto error_alignment; - } htab->plt_second = sec; } @@ -4499,7 +4485,7 @@ _bfd_x86_elf_link_setup_gnu_properties htab->plt_sframe = sec; - /* Second PLT is generated for Intel IBT / MPX Support + lazy plt. */ + /* Second PLT is generated for Intel IBT + lazy plt. */ if (htab->plt_second != NULL) { sec = bfd_make_section_anyway_with_flags (dynobj, diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h index 83f417a..18ecd03 100644 --- a/bfd/elfxx-x86.h +++ b/bfd/elfxx-x86.h @@ -36,7 +36,6 @@ ((TYPE) == R_X86_64_PC8 \ || (TYPE) == R_X86_64_PC16 \ || (TYPE) == R_X86_64_PC32 \ - || (TYPE) == R_X86_64_PC32_BND \ || (TYPE) == R_X86_64_PC64) #define I386_PCREL_TYPE_P(TYPE) ((TYPE) == R_386_PC32) #define X86_PCREL_TYPE_P(IS_X86_64, TYPE) \ @@ -103,7 +102,6 @@ ((TYPE) == R_X86_64_PC8 \ || (TYPE) == R_X86_64_PC16 \ || (TYPE) == R_X86_64_PC32 \ - || (TYPE) == R_X86_64_PC32_BND \ || (TYPE) == R_X86_64_PC64) /* This must be the same as sframe_get_hdr_size (sfh). For x86-64, this value @@ -1,7 +1,10 @@ * gold and dwp now support zstd compressed debug sections. + * The new option --compress-debug-sections=zstd compresses debug sections with zstd. +* Remove support for -z bndplt (MPX prefix instructions). + Changes in 1.16: * Improve warning messages for relocations that refer to discarded sections. diff --git a/gold/options.h b/gold/options.h index 7d61973..0f1fc96 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1460,9 +1460,6 @@ class General_options // The -z options. - DEFINE_bool(bndplt, options::DASH_Z, '\0', false, - N_("(x86-64 only) Generate a BND PLT for Intel MPX"), - N_("Generate a regular PLT")); DEFINE_bool(combreloc, options::DASH_Z, '\0', true, N_("Sort dynamic relocs"), N_("Do not sort dynamic relocs")); diff --git a/gold/x86_64.cc b/gold/x86_64.cc index 83684b9..0c04b9b 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -430,118 +430,6 @@ class Output_data_plt_x86_64_standard : public Output_data_plt_x86_64<size> static const unsigned char plt_eh_frame_fde[plt_eh_frame_fde_size]; }; -class Output_data_plt_x86_64_bnd : public Output_data_plt_x86_64<64> -{ - public: - Output_data_plt_x86_64_bnd(Layout* layout, - Output_data_got<64, false>* got, - Output_data_got_plt_x86_64* got_plt, - Output_data_space* got_irelative) - : Output_data_plt_x86_64<64>(layout, plt_entry_size, - got, got_plt, got_irelative), - aplt_offset_(0) - { } - - Output_data_plt_x86_64_bnd(Layout* layout, - Output_data_got<64, false>* got, - Output_data_got_plt_x86_64* got_plt, - Output_data_space* got_irelative, - unsigned int plt_count) - : Output_data_plt_x86_64<64>(layout, plt_entry_size, - got, got_plt, got_irelative, - plt_count), - aplt_offset_(0) - { } - - protected: - virtual unsigned int - do_get_plt_entry_size() const - { return plt_entry_size; } - - // Return the PLT address to use for a global symbol. - uint64_t - do_address_for_global(const Symbol*); - - // Return the PLT address to use for a local symbol. - uint64_t - do_address_for_local(const Relobj*, unsigned int symndx); - - virtual void - do_add_eh_frame(Layout* layout) - { - layout->add_eh_frame_for_plt(this, - this->plt_eh_frame_cie, - this->plt_eh_frame_cie_size, - plt_eh_frame_fde, - plt_eh_frame_fde_size); - } - - virtual void - do_fill_first_plt_entry(unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_addr, - elfcpp::Elf_types<64>::Elf_Addr plt_addr); - - virtual unsigned int - do_fill_plt_entry(unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address, - unsigned int got_offset, - unsigned int plt_offset, - unsigned int plt_index); - - virtual void - do_fill_tlsdesc_entry(unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address, - elfcpp::Elf_types<64>::Elf_Addr got_base, - unsigned int tlsdesc_got_offset, - unsigned int plt_offset); - - void - fill_aplt_entry(unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address, - unsigned int got_offset, - unsigned int plt_offset, - unsigned int plt_index); - - private: - // Set the final size. - void - set_final_data_size(); - - // Write out the BND PLT data. - void - do_write(Output_file*); - - // Offset of the Additional PLT (if using -z bndplt). - unsigned int aplt_offset_; - - // The size of an entry in the PLT. - static const int plt_entry_size = 16; - - // The size of an entry in the additional PLT. - static const int aplt_entry_size = 8; - - // The first entry in the PLT. - // From the AMD64 ABI: "Unlike Intel386 ABI, this ABI uses the same - // procedure linkage table for both programs and shared objects." - static const unsigned char first_plt_entry[plt_entry_size]; - - // Other entries in the PLT for an executable. - static const unsigned char plt_entry[plt_entry_size]; - - // Entries in the additional PLT. - static const unsigned char aplt_entry[aplt_entry_size]; - - // The reserved TLSDESC entry in the PLT for an executable. - static const unsigned char tlsdesc_plt_entry[plt_entry_size]; - - // The .eh_frame unwind information for the PLT. - static const int plt_eh_frame_fde_size = 32; - static const unsigned char plt_eh_frame_fde[plt_eh_frame_fde_size]; -}; - // We use this PLT when Indirect Branch Tracking (IBT) is enabled. template <int size> @@ -625,7 +513,7 @@ class Output_data_plt_x86_64_ibt : public Output_data_plt_x86_64<size> void set_final_data_size(); - // Write out the BND PLT data. + // Write out the PLT data. void do_write(Output_file*); @@ -2091,183 +1979,6 @@ Output_data_plt_x86_64_standard<size>::do_fill_tlsdesc_entry( + 12))); } -// Return the APLT address to use for a global symbol (for -z bndplt). - -uint64_t -Output_data_plt_x86_64_bnd::do_address_for_global(const Symbol* gsym) -{ - uint64_t offset = this->aplt_offset_; - // Convert the PLT offset into an APLT offset. - unsigned int plt_offset = gsym->plt_offset(); - if (gsym->type() == elfcpp::STT_GNU_IFUNC - && gsym->can_use_relative_reloc(false)) - offset += this->regular_count() * aplt_entry_size; - else - plt_offset -= plt_entry_size; - plt_offset = plt_offset / (plt_entry_size / aplt_entry_size); - return this->address() + offset + plt_offset; -} - -// Return the PLT address to use for a local symbol. These are always -// IRELATIVE relocs. - -uint64_t -Output_data_plt_x86_64_bnd::do_address_for_local(const Relobj* object, - unsigned int r_sym) -{ - // Convert the PLT offset into an APLT offset. - const Sized_relobj_file<64, false>* sized_relobj = - static_cast<const Sized_relobj_file<64, false>*>(object); - const Symbol_value<64>* psymval = sized_relobj->local_symbol(r_sym); - unsigned int plt_offset = ((object->local_plt_offset(r_sym) - - (psymval->is_ifunc_symbol() - ? 0 : plt_entry_size)) - / (plt_entry_size / aplt_entry_size)); - return (this->address() - + this->aplt_offset_ - + this->regular_count() * aplt_entry_size - + plt_offset); -} - -// Set the final size. -void -Output_data_plt_x86_64_bnd::set_final_data_size() -{ - // Number of regular and IFUNC PLT entries. - unsigned int count = this->entry_count(); - // Count the first entry and the TLSDESC entry, if present. - unsigned int extra = this->has_tlsdesc_entry() ? 2 : 1; - unsigned int plt_size = (count + extra) * plt_entry_size; - // Offset of the APLT. - this->aplt_offset_ = plt_size; - // Size of the APLT. - plt_size += count * aplt_entry_size; - this->set_data_size(plt_size); -} - -// The first entry in the BND PLT. - -const unsigned char -Output_data_plt_x86_64_bnd::first_plt_entry[plt_entry_size] = -{ - // From AMD64 ABI Draft 0.98, page 76 - 0xff, 0x35, // pushq contents of memory address - 0, 0, 0, 0, // replaced with address of .got + 8 - 0xf2, 0xff, 0x25, // bnd jmp indirect - 0, 0, 0, 0, // replaced with address of .got + 16 - 0x0f, 0x1f, 0x00 // nop -}; - -void -Output_data_plt_x86_64_bnd::do_fill_first_plt_entry( - unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address) -{ - memcpy(pov, first_plt_entry, plt_entry_size); - // We do a jmp relative to the PC at the end of this instruction. - elfcpp::Swap_unaligned<32, false>::writeval(pov + 2, - (got_address + 8 - - (plt_address + 6))); - elfcpp::Swap<32, false>::writeval(pov + 9, - (got_address + 16 - - (plt_address + 13))); -} - -// Subsequent entries in the BND PLT. - -const unsigned char -Output_data_plt_x86_64_bnd::plt_entry[plt_entry_size] = -{ - // From AMD64 ABI Draft 0.99.8, page 139 - 0x68, // pushq immediate - 0, 0, 0, 0, // replaced with offset into relocation table - 0xf2, 0xe9, // bnd jmpq relative - 0, 0, 0, 0, // replaced with offset to start of .plt - 0x0f, 0x1f, 0x44, 0, 0 // nop -}; - -// Entries in the BND Additional PLT. - -const unsigned char -Output_data_plt_x86_64_bnd::aplt_entry[aplt_entry_size] = -{ - // From AMD64 ABI Draft 0.99.8, page 139 - 0xf2, 0xff, 0x25, // bnd jmpq indirect - 0, 0, 0, 0, // replaced with address of symbol in .got - 0x90, // nop -}; - -unsigned int -Output_data_plt_x86_64_bnd::do_fill_plt_entry( - unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr, - elfcpp::Elf_types<64>::Elf_Addr, - unsigned int, - unsigned int plt_offset, - unsigned int plt_index) -{ - memcpy(pov, plt_entry, plt_entry_size); - elfcpp::Swap_unaligned<32, false>::writeval(pov + 1, plt_index); - elfcpp::Swap<32, false>::writeval(pov + 7, -(plt_offset + 11)); - return 0; -} - -void -Output_data_plt_x86_64_bnd::fill_aplt_entry( - unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address, - unsigned int got_offset, - unsigned int plt_offset, - unsigned int plt_index) -{ - // Check PC-relative offset overflow in PLT entry. - uint64_t plt_got_pcrel_offset = (got_address + got_offset - - (plt_address + plt_offset + 7)); - if (Bits<32>::has_overflow(plt_got_pcrel_offset)) - gold_error(_("PC-relative offset overflow in APLT entry %d"), - plt_index + 1); - - memcpy(pov, aplt_entry, aplt_entry_size); - elfcpp::Swap_unaligned<32, false>::writeval(pov + 3, plt_got_pcrel_offset); -} - -// The reserved TLSDESC entry in the PLT for an executable. - -const unsigned char -Output_data_plt_x86_64_bnd::tlsdesc_plt_entry[plt_entry_size] = -{ - // From Alexandre Oliva, "Thread-Local Storage Descriptors for IA32 - // and AMD64/EM64T", Version 0.9.4 (2005-10-10). - 0xff, 0x35, // pushq x(%rip) - 0, 0, 0, 0, // replaced with address of linkmap GOT entry (at PLTGOT + 8) - 0xf2, 0xff, 0x25, // jmpq *y(%rip) - 0, 0, 0, 0, // replaced with offset of reserved TLSDESC_GOT entry - 0x0f, 0x1f, 0 // nop -}; - -void -Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry( - unsigned char* pov, - elfcpp::Elf_types<64>::Elf_Addr got_address, - elfcpp::Elf_types<64>::Elf_Addr plt_address, - elfcpp::Elf_types<64>::Elf_Addr got_base, - unsigned int tlsdesc_got_offset, - unsigned int plt_offset) -{ - memcpy(pov, tlsdesc_plt_entry, plt_entry_size); - elfcpp::Swap_unaligned<32, false>::writeval(pov + 2, - (got_address + 8 - - (plt_address + plt_offset - + 6))); - elfcpp::Swap_unaligned<32, false>::writeval(pov + 9, - (got_base - + tlsdesc_got_offset - - (plt_address + plt_offset - + 13))); -} - // Return the APLT address to use for a global symbol (for IBT). template<int size> @@ -2520,35 +2231,7 @@ Output_data_plt_x86_64_standard<size>::plt_eh_frame_fde[plt_eh_frame_fde_size] = elfcpp::DW_CFA_nop }; -// The .eh_frame unwind information for the BND PLT. -const unsigned char -Output_data_plt_x86_64_bnd::plt_eh_frame_fde[plt_eh_frame_fde_size] = -{ - 0, 0, 0, 0, // Replaced with offset to .plt. - 0, 0, 0, 0, // Replaced with size of .plt. - 0, // Augmentation size. - elfcpp::DW_CFA_def_cfa_offset, 16, // DW_CFA_def_cfa_offset: 16. - elfcpp::DW_CFA_advance_loc + 6, // Advance 6 to __PLT__ + 6. - elfcpp::DW_CFA_def_cfa_offset, 24, // DW_CFA_def_cfa_offset: 24. - elfcpp::DW_CFA_advance_loc + 10, // Advance 10 to __PLT__ + 16. - elfcpp::DW_CFA_def_cfa_expression, // DW_CFA_def_cfa_expression. - 11, // Block length. - elfcpp::DW_OP_breg7, 8, // Push %rsp + 8. - elfcpp::DW_OP_breg16, 0, // Push %rip. - elfcpp::DW_OP_lit15, // Push 0xf. - elfcpp::DW_OP_and, // & (%rip & 0xf). - elfcpp::DW_OP_lit5, // Push 5. - elfcpp::DW_OP_ge, // >= ((%rip & 0xf) >= 5) - elfcpp::DW_OP_lit3, // Push 3. - elfcpp::DW_OP_shl, // << (((%rip & 0xf) >= 5) << 3) - elfcpp::DW_OP_plus, // + ((((%rip&0xf)>=5)<<3)+%rsp+8 - elfcpp::DW_CFA_nop, // Align to 32 bytes. - elfcpp::DW_CFA_nop, - elfcpp::DW_CFA_nop, - elfcpp::DW_CFA_nop -}; - -// The .eh_frame unwind information for the BND PLT. +// The .eh_frame unwind information for the PLT. template<int size> const unsigned char Output_data_plt_x86_64_ibt<size>::plt_eh_frame_fde[plt_eh_frame_fde_size] = @@ -2656,101 +2339,6 @@ Output_data_plt_x86_64<size>::do_write(Output_file* of) of->write_output_view(got_file_offset, got_size, got_view); } -// Write out the BND PLT. - -void -Output_data_plt_x86_64_bnd::do_write(Output_file* of) -{ - const off_t offset = this->offset(); - const section_size_type oview_size = - convert_to_section_size_type(this->data_size()); - unsigned char* const oview = of->get_output_view(offset, oview_size); - - Output_data_got<64, false>* got = this->got(); - Output_data_got_plt_x86_64* got_plt = this->got_plt(); - Output_data_space* got_irelative = this->got_irelative(); - - const off_t got_file_offset = got_plt->offset(); - gold_assert(parameters->incremental_update() - || (got_file_offset + got_plt->data_size() - == got_irelative->offset())); - const section_size_type got_size = - convert_to_section_size_type(got_plt->data_size() - + got_irelative->data_size()); - unsigned char* const got_view = of->get_output_view(got_file_offset, - got_size); - - unsigned char* pov = oview; - - // The base address of the .plt section. - elfcpp::Elf_types<64>::Elf_Addr plt_address = this->address(); - // The base address of the .got section. - elfcpp::Elf_types<64>::Elf_Addr got_base = got->address(); - // The base address of the PLT portion of the .got section, - // which is where the GOT pointer will point, and where the - // three reserved GOT entries are located. - elfcpp::Elf_types<64>::Elf_Addr got_address = got_plt->address(); - - this->fill_first_plt_entry(pov, got_address, plt_address); - pov += plt_entry_size; - - // The first three entries in the GOT are reserved, and are written - // by Output_data_got_plt_x86_64::do_write. - unsigned char* got_pov = got_view + 24; - - unsigned int plt_offset = plt_entry_size; - unsigned int got_offset = 24; - const unsigned int count = this->entry_count(); - for (unsigned int plt_index = 0; - plt_index < count; - ++plt_index, - pov += plt_entry_size, - got_pov += 8, - plt_offset += plt_entry_size, - got_offset += 8) - { - // Set and adjust the PLT entry itself. - unsigned int lazy_offset = this->fill_plt_entry(pov, - got_address, plt_address, - got_offset, plt_offset, - plt_index); - - // Set the entry in the GOT. - elfcpp::Swap<64, false>::writeval(got_pov, - plt_address + plt_offset + lazy_offset); - } - - if (this->has_tlsdesc_entry()) - { - // Set and adjust the reserved TLSDESC PLT entry. - unsigned int tlsdesc_got_offset = this->get_tlsdesc_got_offset(); - this->fill_tlsdesc_entry(pov, got_address, plt_address, got_base, - tlsdesc_got_offset, plt_offset); - pov += this->get_plt_entry_size(); - plt_offset += plt_entry_size; - } - - // Write the additional PLT. - got_offset = 24; - for (unsigned int plt_index = 0; - plt_index < count; - ++plt_index, - pov += aplt_entry_size, - plt_offset += aplt_entry_size, - got_offset += 8) - { - // Set and adjust the APLT entry. - this->fill_aplt_entry(pov, got_address, plt_address, got_offset, - plt_offset, plt_index); - } - - gold_assert(static_cast<section_size_type>(pov - oview) == oview_size); - gold_assert(static_cast<section_size_type>(got_pov - got_view) == got_size); - - of->write_output_view(offset, oview_size, oview); - of->write_output_view(got_file_offset, got_size, got_view); -} - // Write out the IBT PLT. template<int size> @@ -2900,9 +2488,6 @@ Target_x86_64<64>::do_make_data_plt(Layout* layout, if (this->feature_1_ & elfcpp::GNU_PROPERTY_X86_FEATURE_1_IBT) return new Output_data_plt_x86_64_ibt<64>(layout, got, got_plt, got_irelative); - else if (parameters->options().bndplt()) - return new Output_data_plt_x86_64_bnd(layout, got, got_plt, - got_irelative); else return new Output_data_plt_x86_64_standard<64>(layout, got, got_plt, got_irelative); @@ -2934,9 +2519,6 @@ Target_x86_64<64>::do_make_data_plt(Layout* layout, if (this->feature_1_ & elfcpp::GNU_PROPERTY_X86_FEATURE_1_IBT) return new Output_data_plt_x86_64_ibt<64>(layout, got, got_plt, got_irelative, plt_count); - else if (parameters->options().bndplt()) - return new Output_data_plt_x86_64_bnd(layout, got, got_plt, - got_irelative, plt_count); else return new Output_data_plt_x86_64_standard<64>(layout, got, got_plt, got_irelative, @@ -3374,14 +2956,12 @@ Target_x86_64<size>::Scan::get_reference_flags(unsigned int r_type) case elfcpp::R_X86_64_PC64: case elfcpp::R_X86_64_PC32: - case elfcpp::R_X86_64_PC32_BND: case elfcpp::R_X86_64_PC16: case elfcpp::R_X86_64_PC8: case elfcpp::R_X86_64_GOTOFF64: return Symbol::RELATIVE_REF; case elfcpp::R_X86_64_PLT32: - case elfcpp::R_X86_64_PLT32_BND: case elfcpp::R_X86_64_PLTOFF64: return Symbol::FUNCTION_CALL | Symbol::RELATIVE_REF; @@ -3465,7 +3045,6 @@ Target_x86_64<size>::Scan::check_non_pic(Relobj* object, unsigned int r_type, // glibc supports these reloc types, but they can overflow. case elfcpp::R_X86_64_PC32: - case elfcpp::R_X86_64_PC32_BND: // A PC relative reference is OK against a local symbol or if // the symbol is defined locally. if (gsym == NULL @@ -3495,9 +3074,6 @@ Target_x86_64<size>::Scan::check_non_pic(Relobj* object, unsigned int r_type, case elfcpp::R_X86_64_PC32: r_name = "R_X86_64_PC32"; break; - case elfcpp::R_X86_64_PC32_BND: - r_name = "R_X86_64_PC32_BND"; - break; default: gold_unreachable(); break; @@ -3650,13 +3226,11 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab, case elfcpp::R_X86_64_PC64: case elfcpp::R_X86_64_PC32: - case elfcpp::R_X86_64_PC32_BND: case elfcpp::R_X86_64_PC16: case elfcpp::R_X86_64_PC8: break; case elfcpp::R_X86_64_PLT32: - case elfcpp::R_X86_64_PLT32_BND: // Since we know this is a local symbol, we can handle this as a // PC32 reloc. break; @@ -4107,7 +3681,6 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab, case elfcpp::R_X86_64_PC64: case elfcpp::R_X86_64_PC32: - case elfcpp::R_X86_64_PC32_BND: case elfcpp::R_X86_64_PC16: case elfcpp::R_X86_64_PC8: { @@ -4240,7 +3813,6 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab, break; case elfcpp::R_X86_64_PLT32: - case elfcpp::R_X86_64_PLT32_BND: // If the symbol is fully resolved, this is just a PC32 reloc. // Otherwise we need a PLT entry. if (gsym->final_value_is_known()) @@ -4658,8 +4230,6 @@ Target_x86_64<size>::Relocate::relocate( if ((r_type != elfcpp::R_X86_64_PLT32 && r_type != elfcpp::R_X86_64_GOTPCREL && r_type != elfcpp::R_X86_64_GOTPCRELX - && r_type != elfcpp::R_X86_64_PLT32_BND - && r_type != elfcpp::R_X86_64_PC32_BND && r_type != elfcpp::R_X86_64_PC32) || gsym == NULL || strcmp(gsym->name(), "__tls_get_addr") != 0) @@ -4762,7 +4332,6 @@ Target_x86_64<size>::Relocate::relocate( break; case elfcpp::R_X86_64_PC32: - case elfcpp::R_X86_64_PC32_BND: rstatus = Reloc_funcs::pcrela32_check(view, object, psymval, addend, address); break; @@ -4784,7 +4353,6 @@ Target_x86_64<size>::Relocate::relocate( break; case elfcpp::R_X86_64_PLT32: - case elfcpp::R_X86_64_PLT32_BND: gold_assert(gsym == NULL || gsym->has_plt_offset() || gsym->final_value_is_known() @@ -11,6 +11,8 @@ that selects the default compression algorithm for --enable-compressed-debug-sections. +* Remove support for -z bndplt (MPX prefix instructions). + Changes in 2.39: * The ELF linker will now generate a warning message if the stack is made diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh index 5f2743e..a689a7b 100644 --- a/ld/emulparams/elf_x86_64.sh +++ b/ld/emulparams/elf_x86_64.sh @@ -47,16 +47,6 @@ case "$target" in case "$EMULATION_NAME" in *64*) LIBPATH_SUFFIX=64 - PARSE_AND_LIST_OPTIONS_BNDPLT=' - fprintf (file, _("\ - -z bndplt Always generate BND prefix in PLT entries\n")); -' - PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT=' - else if (strcmp (optarg, "bndplt") == 0) - params.bndplt = true; -' - PARSE_AND_LIST_OPTIONS="$PARSE_AND_LIST_OPTIONS $PARSE_AND_LIST_OPTIONS_BNDPLT" - PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_BNDPLT" ;; esac ;; @@ -1208,9 +1208,6 @@ for Solaris compatibility. The recognized keywords are: @table @samp -@item bndplt -Always generate BND prefix in PLT entries. Supported for Linux/x86_64. - @item call-nop=prefix-addr @itemx call-nop=suffix-nop @itemx call-nop=prefix-@var{byte} diff --git a/ld/testsuite/ld-x86-64/bnd-branch-1-now.d b/ld/testsuite/ld-x86-64/bnd-branch-1-now.d deleted file mode 100644 index b1bcea3..0000000 --- a/ld/testsuite/ld-x86-64/bnd-branch-1-now.d +++ /dev/null @@ -1,45 +0,0 @@ -#source: bnd-branch-1.s -mx86-used-note=no -#as: --64 -#ld: -z now -shared -melf_x86_64 --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .plt: - -0+230 <foo2@plt-0x10>: - +[a-f0-9]+: ff 35 82 01 20 00 push 0x200182\(%rip\) # 2003b8 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: ff 25 84 01 20 00 jmp \*0x200184\(%rip\) # 2003c0 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 40 00 nopl 0x0\(%rax\) - -0+240 <foo2@plt>: - +[a-f0-9]+: ff 25 82 01 20 00 jmp \*0x200182\(%rip\) # 2003c8 <foo2> - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: e9 e0 ff ff ff jmp 230 <foo2@plt-0x10> - -0+250 <foo3@plt>: - +[a-f0-9]+: ff 25 7a 01 20 00 jmp \*0x20017a\(%rip\) # 2003d0 <foo3> - +[a-f0-9]+: 68 01 00 00 00 push \$0x1 - +[a-f0-9]+: e9 d0 ff ff ff jmp 230 <foo2@plt-0x10> - -0+260 <foo1@plt>: - +[a-f0-9]+: ff 25 72 01 20 00 jmp \*0x200172\(%rip\) # 2003d8 <foo1> - +[a-f0-9]+: 68 02 00 00 00 push \$0x2 - +[a-f0-9]+: e9 c0 ff ff ff jmp 230 <foo2@plt-0x10> - -0+270 <foo4@plt>: - +[a-f0-9]+: ff 25 6a 01 20 00 jmp \*0x20016a\(%rip\) # 2003e0 <foo4> - +[a-f0-9]+: 68 03 00 00 00 push \$0x3 - +[a-f0-9]+: e9 b0 ff ff ff jmp 230 <foo2@plt-0x10> - -Disassembly of section .text: - -0+280 <_start>: - +[a-f0-9]+: f2 e9 da ff ff ff bnd jmp 260 <foo1@plt> - +[a-f0-9]+: e8 b5 ff ff ff call 240 <foo2@plt> - +[a-f0-9]+: e9 c0 ff ff ff jmp 250 <foo3@plt> - +[a-f0-9]+: e8 db ff ff ff call 270 <foo4@plt> - +[a-f0-9]+: f2 e8 b5 ff ff ff bnd call 250 <foo3@plt> - +[a-f0-9]+: e9 d0 ff ff ff jmp 270 <foo4@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-branch-1.d b/ld/testsuite/ld-x86-64/bnd-branch-1.d deleted file mode 100644 index dfcf0d0..0000000 --- a/ld/testsuite/ld-x86-64/bnd-branch-1.d +++ /dev/null @@ -1,19 +0,0 @@ -#as: --64 -#ld: -shared -melf_x86_64 -#objdump: -dw - -.*: +file format .* - - -#... -Disassembly of section .text: - -#... -[a-f0-9]+ <_start>: -[ ]*[a-f0-9]+: f2 e9 [a-f0-9]+ ff ff ff bnd jmp [a-f0-9]+ <foo1@plt> -[ ]*[a-f0-9]+: e8 [a-f0-9]+ ff ff ff call [a-f0-9]+ <foo2@plt> -[ ]*[a-f0-9]+: e9 [a-f0-9]+ ff ff ff jmp [a-f0-9]+ <foo3@plt> -[ ]*[a-f0-9]+: e8 [a-f0-9]+ ff ff ff call [a-f0-9]+ <foo4@plt> -[ ]*[a-f0-9]+: f2 e8 [a-f0-9]+ ff ff ff bnd call [a-f0-9]+ <foo3@plt> -[ ]*[a-f0-9]+: e9 [a-f0-9]+ ff ff ff jmp [a-f0-9]+ <foo4@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-branch-1.s b/ld/testsuite/ld-x86-64/bnd-branch-1.s deleted file mode 100644 index bf62981..0000000 --- a/ld/testsuite/ld-x86-64/bnd-branch-1.s +++ /dev/null @@ -1,9 +0,0 @@ - .text - .globl _start -_start: -bnd jmp foo1@plt - call foo2@plt - jmp foo3@plt - call foo4@plt -bnd call foo3@plt - jmp foo4@plt diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d b/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d deleted file mode 100644 index 01d6389..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-1-now.d +++ /dev/null @@ -1,33 +0,0 @@ -#source: bnd-ifunc-1.s -#as: --64 -madd-bnd-prefix -mx86-used-note=no -#ld: -z now -shared -melf_x86_64 -z bndplt --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .plt: - -0+170 <.plt>: - +[a-f0-9]+: ff 35 4a 01 20 00 push 0x20014a\(%rip\) # 2002c0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 4b 01 20 00 bnd jmp \*0x20014b\(%rip\) # 2002c8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 170 <\*ABS\*\+0x198@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+190 <\*ABS\*\+0x198@plt>: - +[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmp \*0x200139\(%rip\) # 2002d0 <_GLOBAL_OFFSET_TABLE_\+0x18> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+198 <foo>: - +[a-f0-9]+: f2 c3 bnd ret - -0+19a <bar>: - +[a-f0-9]+: f2 e8 f0 ff ff ff bnd call 190 <\*ABS\*\+0x198@plt> - +[a-f0-9]+: f2 c3 bnd ret -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-1.d b/ld/testsuite/ld-x86-64/bnd-ifunc-1.d deleted file mode 100644 index 86453f1..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-1.d +++ /dev/null @@ -1,7 +0,0 @@ -#as: --64 -madd-bnd-prefix -#ld: -shared -melf_x86_64 -z bndplt --hash-style=sysv -#objdump: -dw - -#... -[ ]*[a-f0-9]+: f2 e8 f0 ff ff ff bnd call [a-f0-9]+ <\*ABS\*\+0x[a-f0-9]+@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-1.s b/ld/testsuite/ld-x86-64/bnd-ifunc-1.s deleted file mode 100644 index 82b64f0..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-1.s +++ /dev/null @@ -1,16 +0,0 @@ - .type foo, %gnu_indirect_function - .global __GI_foo - .hidden __GI_foo - .set __GI_foo, foo - .text -.globl foo - .type foo, @function -foo: - ret - .size foo, .-foo -.globl bar - .type bar, @function -bar: - call __GI_foo@PLT - ret - .size bar, .-bar diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d b/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d deleted file mode 100644 index fa7ec07..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-2-now.d +++ /dev/null @@ -1,59 +0,0 @@ -#source: bnd-ifunc-2.s -#as: --64 -madd-bnd-prefix -mx86-used-note=no -#ld: -z now -shared -melf_x86_64 -z bndplt --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .plt: - -0+240 <.plt>: - +[a-f0-9]+: ff 35 9a 01 20 00 push 0x20019a\(%rip\) # 2003e0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 9b 01 20 00 bnd jmp \*0x20019b\(%rip\) # 2003e8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 03 00 00 00 push \$0x3 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 01 00 00 00 push \$0x1 - +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 02 00 00 00 push \$0x2 - +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+290 <\*ABS\*\+0x2bc@plt>: - +[a-f0-9]+: f2 ff 25 59 01 20 00 bnd jmp \*0x200159\(%rip\) # 2003f0 <_GLOBAL_OFFSET_TABLE_\+0x18> - +[a-f0-9]+: 90 nop - -0+298 <func1@plt>: - +[a-f0-9]+: f2 ff 25 59 01 20 00 bnd jmp \*0x200159\(%rip\) # 2003f8 <func1> - +[a-f0-9]+: 90 nop - -0+2a0 <func2@plt>: - +[a-f0-9]+: f2 ff 25 59 01 20 00 bnd jmp \*0x200159\(%rip\) # 200400 <func2> - +[a-f0-9]+: 90 nop - -0+2a8 <\*ABS\*\+0x2b0@plt>: - +[a-f0-9]+: f2 ff 25 59 01 20 00 bnd jmp \*0x200159\(%rip\) # 200408 <_GLOBAL_OFFSET_TABLE_\+0x30> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+2b0 <resolve1>: - +[a-f0-9]+: f2 e8 e2 ff ff ff bnd call 298 <func1@plt> - -0+2b6 <g1>: - +[a-f0-9]+: f2 e9 ec ff ff ff bnd jmp 2a8 <\*ABS\*\+0x2b0@plt> - -0+2bc <resolve2>: - +[a-f0-9]+: f2 e8 de ff ff ff bnd call 2a0 <func2@plt> - -0+2c2 <g2>: - +[a-f0-9]+: f2 e9 c8 ff ff ff bnd jmp 290 <\*ABS\*\+0x2bc@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2.d b/ld/testsuite/ld-x86-64/bnd-ifunc-2.d deleted file mode 100644 index 36534b1..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-2.d +++ /dev/null @@ -1,54 +0,0 @@ -#as: --64 -madd-bnd-prefix -mx86-used-note=no -#ld: -shared -melf_x86_64 -z bndplt --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -#... -0+240 <.plt>: -[ ]*[a-f0-9]+: ff 35 7a 01 20 00 push 0x20017a\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: f2 ff 25 7b 01 20 00 bnd jmp \*0x20017b\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\) -[ ]*[a-f0-9]+: 68 03 00 00 00 push \$0x3 -[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0 -[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 01 00 00 00 push \$0x1 -[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 02 00 00 00 push \$0x2 -[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 240 <\*ABS\*\+0x2bc@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+290 <\*ABS\*\+0x2bc@plt>: -[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmp \*0x200139\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+298 <func1@plt>: -[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmp \*0x200139\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+2a0 <func2@plt>: -[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmp \*0x200139\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+2a8 <\*ABS\*\+0x2b0@plt>: -[ ]*[a-f0-9]+: f2 ff 25 39 01 20 00 bnd jmp \*0x200139\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+2b0 <resolve1>: -[ ]*[a-f0-9]+: f2 e8 e2 ff ff ff bnd call 298 <func1@plt> - -0+2b6 <g1>: -[ ]*[a-f0-9]+: f2 e9 ec ff ff ff bnd jmp 2a8 <\*ABS\*\+0x2b0@plt> - -0+2bc <resolve2>: -[ ]*[a-f0-9]+: f2 e8 de ff ff ff bnd call 2a0 <func2@plt> - -0+2c2 <g2>: -[ ]*[a-f0-9]+: f2 e9 c8 ff ff ff bnd jmp 290 <\*ABS\*\+0x2bc@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-ifunc-2.s b/ld/testsuite/ld-x86-64/bnd-ifunc-2.s deleted file mode 100644 index 86470a2..0000000 --- a/ld/testsuite/ld-x86-64/bnd-ifunc-2.s +++ /dev/null @@ -1,28 +0,0 @@ - .text - .globl fct1 - .type fct1, @gnu_indirect_function - .set fct1,resolve1 - .hidden int_fct1 - .globl int_fct1 - .set int_fct1,fct1 - .type resolve1, @function -resolve1: - call func1@PLT - .globl g1 - .type g1, @function -g1: - jmp int_fct1@PLT - - .globl fct2 - .type fct2, @gnu_indirect_function - .set fct2,resolve2 - .hidden int_fct2 - .globl int_fct2 - .set int_fct2,fct2 - .type resolve2, @function -resolve2: - call func2@PLT - .globl g2 - .type g2, @function -g2: - jmp int_fct2@PLT diff --git a/ld/testsuite/ld-x86-64/bnd-plt-1-now.d b/ld/testsuite/ld-x86-64/bnd-plt-1-now.d deleted file mode 100644 index 47289a0..0000000 --- a/ld/testsuite/ld-x86-64/bnd-plt-1-now.d +++ /dev/null @@ -1,55 +0,0 @@ -#source: bnd-branch-1.s -#as: --64 -mx86-used-note=no -#ld: -z now -shared -melf_x86_64 -z bndplt --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .plt: - -0+230 <.plt>: - +[a-f0-9]+: ff 35 a2 01 20 00 push 0x2001a2\(%rip\) # 2003d8 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 a3 01 20 00 bnd jmp \*0x2001a3\(%rip\) # 2003e0 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <foo2@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 01 00 00 00 push \$0x1 - +[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <foo2@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 02 00 00 00 push \$0x2 - +[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <foo2@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - +[a-f0-9]+: 68 03 00 00 00 push \$0x3 - +[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <foo2@plt-0x50> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+280 <foo2@plt>: - +[a-f0-9]+: f2 ff 25 61 01 20 00 bnd jmp \*0x200161\(%rip\) # 2003e8 <foo2> - +[a-f0-9]+: 90 nop - -0+288 <foo3@plt>: - +[a-f0-9]+: f2 ff 25 61 01 20 00 bnd jmp \*0x200161\(%rip\) # 2003f0 <foo3> - +[a-f0-9]+: 90 nop - -0+290 <foo1@plt>: - +[a-f0-9]+: f2 ff 25 61 01 20 00 bnd jmp \*0x200161\(%rip\) # 2003f8 <foo1> - +[a-f0-9]+: 90 nop - -0+298 <foo4@plt>: - +[a-f0-9]+: f2 ff 25 61 01 20 00 bnd jmp \*0x200161\(%rip\) # 200400 <foo4> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+2a0 <_start>: - +[a-f0-9]+: f2 e9 ea ff ff ff bnd jmp 290 <foo1@plt> - +[a-f0-9]+: e8 d5 ff ff ff call 280 <foo2@plt> - +[a-f0-9]+: e9 d8 ff ff ff jmp 288 <foo3@plt> - +[a-f0-9]+: e8 e3 ff ff ff call 298 <foo4@plt> - +[a-f0-9]+: f2 e8 cd ff ff ff bnd call 288 <foo3@plt> - +[a-f0-9]+: e9 d8 ff ff ff jmp 298 <foo4@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/bnd-plt-1.d b/ld/testsuite/ld-x86-64/bnd-plt-1.d deleted file mode 100644 index f047da8..0000000 --- a/ld/testsuite/ld-x86-64/bnd-plt-1.d +++ /dev/null @@ -1,55 +0,0 @@ -#source: bnd-branch-1.s -#as: --64 -mx86-used-note=no -#ld: -shared -melf_x86_64 -z bndplt --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw - -.*: +file format .* - - -Disassembly of section .plt: - -0+230 <.plt>: -[ ]*[a-f0-9]+: ff 35 82 01 20 00 push 0x200182\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: f2 ff 25 83 01 20 00 bnd jmp \*0x200183\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\) -[ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0 -[ ]*[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 230 <foo2@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 01 00 00 00 push \$0x1 -[ ]*[a-f0-9]+: f2 e9 d5 ff ff ff bnd jmp 230 <foo2@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 02 00 00 00 push \$0x2 -[ ]*[a-f0-9]+: f2 e9 c5 ff ff ff bnd jmp 230 <foo2@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) -[ ]*[a-f0-9]+: 68 03 00 00 00 push \$0x3 -[ ]*[a-f0-9]+: f2 e9 b5 ff ff ff bnd jmp 230 <foo2@plt-0x50> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+280 <foo2@plt>: -[ ]*[a-f0-9]+: f2 ff 25 41 01 20 00 bnd jmp \*0x200141\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+288 <foo3@plt>: -[ ]*[a-f0-9]+: f2 ff 25 41 01 20 00 bnd jmp \*0x200141\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+290 <foo1@plt>: -[ ]*[a-f0-9]+: f2 ff 25 41 01 20 00 bnd jmp \*0x200141\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -0+298 <foo4@plt>: -[ ]*[a-f0-9]+: f2 ff 25 41 01 20 00 bnd jmp \*0x200141\(%rip\)[ ]*(#.*)? -[ ]*[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+2a0 <_start>: -[ ]*[a-f0-9]+: f2 e9 ea ff ff ff bnd jmp 290 <foo1@plt> -[ ]*[a-f0-9]+: e8 d5 ff ff ff call 280 <foo2@plt> -[ ]*[a-f0-9]+: e9 d8 ff ff ff jmp 288 <foo3@plt> -[ ]*[a-f0-9]+: e8 e3 ff ff ff call 298 <foo4@plt> -[ ]*[a-f0-9]+: f2 e8 cd ff ff ff bnd call 288 <foo3@plt> -[ ]*[a-f0-9]+: e9 d8 ff ff ff jmp 298 <foo4@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/mpx.exp b/ld/testsuite/ld-x86-64/mpx.exp deleted file mode 100644 index c39f399..0000000 --- a/ld/testsuite/ld-x86-64/mpx.exp +++ /dev/null @@ -1,138 +0,0 @@ -# Expect script for ELF MPX tests. -# Copyright (C) 2013-2022 Free Software Foundation, Inc. -# -# This file is part of the GNU Binutils. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, -# MA 02110-1301, USA. -# - -# The following tests require running the executable generated by ld, -# or enough of a build environment to create a fully linked executable. -# This is not commonly available when testing a cross-built linker. -if ![isnative] { - return -} - -# Only on Linux for now. -if ![istarget "x86_64-*-linux*"] { - return -} - -# Check to see if the C compiler works -if { ![check_compiler_available] } { - return -} - -run_cc_link_tests [list \ - [list \ - "Build libmpx1a.a" \ - "" \ - "-Wa,-madd-bnd-prefix -fPIC $PLT_CFLAGS" \ - {mpx1a.c} \ - {{readelf {-r --wide} mpx1a.rd}} \ - "libmpx1a.a" \ - ] \ - [list \ - "Build libmpx1b.a" \ - "" \ - "" \ - {mpx1b.c} \ - {} \ - "libmpx1b.a" \ - ] \ - [list \ - "Build libmpx1c.a" \ - "" \ - "-Wa,-madd-bnd-prefix" \ - {mpx1c.c} \ - {{readelf {-r --wide} mpx1c.rd}} \ - "libmpx1c.a" \ - ] \ - [list \ - "Build libmpx2a.a" \ - "" \ - "-Wa,-madd-bnd-prefix -fPIE $PLT_CFLAGS" \ - {mpx2a.c} \ - {{readelf {-r --wide} mpx2a.rd}} \ - "libmpx2a.a" \ - ] \ - [list \ - "Build libmpx2b.a" \ - "" \ - "-fPIE" \ - {mpx2b.c} \ - {} \ - "libmpx2b.a" \ - ] \ - [list \ - "Build libmpx2c.a" \ - "" \ - "-Wa,-madd-bnd-prefix -fPIE $PLT_CFLAGS" \ - {mpx2c.c} \ - {{readelf {-r --wide} mpx2c.rd}} \ - "libmpx2c.a" \ - ] \ -] - -set run_tests { - {"Run mpx1" - "tmpdir/mpx1a.o tmpdir/mpx1b.o tmpdir/mpx1c.o" "" - {dummy.s} "mpx1" "mpx1.out"} - {"Run mpx1 with -static" - "tmpdir/mpx1a.o tmpdir/mpx1b.o tmpdir/mpx1c.o -static" "" - {dummy.s} "mpx1static" "mpx1.out"} - {"Run mpx2" - "tmpdir/mpx2a.o tmpdir/mpx2b.o tmpdir/mpx2c.o -pie" "" - {dummy.s} "mpx2" "mpx2.out"} - {"Run mpx2 with -static" - "tmpdir/mpx2a.o tmpdir/mpx2b.o tmpdir/mpx2c.o -static" "" - {dummy.s} "mpx2static" "mpx2.out"} -} - -run_ld_link_tests { - {"Build libcall.so" - "-m elf_x86_64 -shared -z bndplt" "" - "--64" {mpx3b.s} {} "libcall.so"} - {"Build mpx3" - "-m elf_x86_64 -z bndplt tmpdir/libcall.so" "" - "--64" {mpx3a.s} {{objdump -dw mpx3.dd}} "mpx3"} - {"Build libcall1.so" - "-m elf_x86_64 -shared -z bndplt" "" - "--64" {mpx4b.s} {} "libcall1.so"} - {"Build mpx4" - "-m elf_x86_64 -z bndplt --hash-style=sysv tmpdir/libcall1.so \ - -z max-page-size=0x200000 -z noseparate-code" "" - "--64 -mx86-used-note=no" {mpx4a.s} {{objdump -dw mpx4.dd}} "mpx4"} - {"Build mpx3 (-z now)" - "-z now -m elf_x86_64 -z bndplt --hash-style=sysv tmpdir/libcall.so \ - -z max-page-size=0x200000 -z noseparate-code" "" - "--64 -mx86-used-note=no" {mpx3a.s} {{objdump -dw mpx3n.dd}} "mpx3n"} - {"Build mpx4 (-z now)" - "-z now -m elf_x86_64 -z bndplt --hash-style=sysv tmpdir/libcall1.so \ - -z max-page-size=0x200000 -z noseparate-code" "" - "--64 -mx86-used-note=no" {mpx4a.s} {{objdump -dw mpx4n.dd}} "mpx4n"} -} - -run_ld_link_exec_tests $run_tests - -run_dump_test "bnd-branch-1" -run_dump_test "bnd-ifunc-1" -run_dump_test "bnd-ifunc-2" -run_dump_test "bnd-plt-1" -run_dump_test "bnd-branch-1-now" -run_dump_test "bnd-ifunc-1-now" -run_dump_test "bnd-ifunc-2-now" -run_dump_test "bnd-plt-1-now" diff --git a/ld/testsuite/ld-x86-64/mpx1.out b/ld/testsuite/ld-x86-64/mpx1.out deleted file mode 100644 index 4630211..0000000 --- a/ld/testsuite/ld-x86-64/mpx1.out +++ /dev/null @@ -1,2 +0,0 @@ -foo1 -foo2 diff --git a/ld/testsuite/ld-x86-64/mpx1a.c b/ld/testsuite/ld-x86-64/mpx1a.c deleted file mode 100644 index e1185b5..0000000 --- a/ld/testsuite/ld-x86-64/mpx1a.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void -foo1 (void) -{ - printf ("foo1\n"); -} diff --git a/ld/testsuite/ld-x86-64/mpx1a.rd b/ld/testsuite/ld-x86-64/mpx1a.rd deleted file mode 100644 index d66524c..0000000 --- a/ld/testsuite/ld-x86-64/mpx1a.rd +++ /dev/null @@ -1,3 +0,0 @@ -#... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* -#... diff --git a/ld/testsuite/ld-x86-64/mpx1b.c b/ld/testsuite/ld-x86-64/mpx1b.c deleted file mode 100644 index 389ac10..0000000 --- a/ld/testsuite/ld-x86-64/mpx1b.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void -foo2 (void) -{ - printf ("foo2\n"); -} diff --git a/ld/testsuite/ld-x86-64/mpx1c.c b/ld/testsuite/ld-x86-64/mpx1c.c deleted file mode 100644 index 12c7806..0000000 --- a/ld/testsuite/ld-x86-64/mpx1c.c +++ /dev/null @@ -1,10 +0,0 @@ -extern void foo1 (void); -extern void foo2 (void); - -int -main (void) -{ - foo1 (); - foo2 (); - return 0; -} diff --git a/ld/testsuite/ld-x86-64/mpx1c.rd b/ld/testsuite/ld-x86-64/mpx1c.rd deleted file mode 100644 index d66524c..0000000 --- a/ld/testsuite/ld-x86-64/mpx1c.rd +++ /dev/null @@ -1,3 +0,0 @@ -#... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* -#... diff --git a/ld/testsuite/ld-x86-64/mpx2.out b/ld/testsuite/ld-x86-64/mpx2.out deleted file mode 100644 index 4630211..0000000 --- a/ld/testsuite/ld-x86-64/mpx2.out +++ /dev/null @@ -1,2 +0,0 @@ -foo1 -foo2 diff --git a/ld/testsuite/ld-x86-64/mpx2a.c b/ld/testsuite/ld-x86-64/mpx2a.c deleted file mode 100644 index e1185b5..0000000 --- a/ld/testsuite/ld-x86-64/mpx2a.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void -foo1 (void) -{ - printf ("foo1\n"); -} diff --git a/ld/testsuite/ld-x86-64/mpx2a.rd b/ld/testsuite/ld-x86-64/mpx2a.rd deleted file mode 100644 index d66524c..0000000 --- a/ld/testsuite/ld-x86-64/mpx2a.rd +++ /dev/null @@ -1,3 +0,0 @@ -#... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* -#... diff --git a/ld/testsuite/ld-x86-64/mpx2b.c b/ld/testsuite/ld-x86-64/mpx2b.c deleted file mode 100644 index 389ac10..0000000 --- a/ld/testsuite/ld-x86-64/mpx2b.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <stdio.h> - -void -foo2 (void) -{ - printf ("foo2\n"); -} diff --git a/ld/testsuite/ld-x86-64/mpx2c.c b/ld/testsuite/ld-x86-64/mpx2c.c deleted file mode 100644 index 12c7806..0000000 --- a/ld/testsuite/ld-x86-64/mpx2c.c +++ /dev/null @@ -1,10 +0,0 @@ -extern void foo1 (void); -extern void foo2 (void); - -int -main (void) -{ - foo1 (); - foo2 (); - return 0; -} diff --git a/ld/testsuite/ld-x86-64/mpx2c.rd b/ld/testsuite/ld-x86-64/mpx2c.rd deleted file mode 100644 index d66524c..0000000 --- a/ld/testsuite/ld-x86-64/mpx2c.rd +++ /dev/null @@ -1,3 +0,0 @@ -#... -[0-9a-f ]+R_X86_64_PLT32 +0+ +.* -#... diff --git a/ld/testsuite/ld-x86-64/mpx3.dd b/ld/testsuite/ld-x86-64/mpx3.dd deleted file mode 100644 index 729b1cf..0000000 --- a/ld/testsuite/ld-x86-64/mpx3.dd +++ /dev/null @@ -1,28 +0,0 @@ -.*: +file format .* - - -Disassembly of section .plt: - -0+[a-f0-9]+ <.plt>: -[ ]*[a-f0-9]+: ff ([0-9a-f]{2} ){5} push 0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_GLOBAL_OFFSET_TABLE_\+0x8> -[ ]*[a-f0-9]+: f2 ff ([0-9a-f]{2} ){5} bnd jmp \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <_GLOBAL_OFFSET_TABLE_\+0x10> -[ ]*[a-f0-9]+: 0f 1f 00 nopl \(%rax\) -[ ]*[a-f0-9]+: 68 00 00 00 00 push \$0x0 -[ ]*[a-f0-9]+: f2 e9 ([0-9a-f]{2} ){4} bnd jmp [a-f0-9]+ <call1@plt-0x20> -[ ]*[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+[a-f0-9]+ <call1@plt>: -[ ]*[a-f0-9]+: f2 ff ([0-9a-f]{2} ){5} bnd jmp \*0x[a-f0-9]+\(%rip\) # [a-f0-9]+ <call1> -[ ]*[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+[a-f0-9]+ <_start>: -[ ]*[a-f0-9]+: bf ([0-9a-f]{2} ){4} mov \$0x[a-f0-9]+,%edi -[ ]*[a-f0-9]+: f2 ff d7 bnd call \*%rdi -[ ]*[a-f0-9]+: 48 8b ([0-9a-f]{2} ){5} mov 0x[a-f0-9]+\(%rip\),%rdi # [a-f0-9]+ <call2> -[ ]*[a-f0-9]+: f2 ff d7 bnd call \*%rdi -[ ]*[a-f0-9]+: c3 ret * -#pass diff --git a/ld/testsuite/ld-x86-64/mpx3a.s b/ld/testsuite/ld-x86-64/mpx3a.s deleted file mode 100644 index 28cb580..0000000 --- a/ld/testsuite/ld-x86-64/mpx3a.s +++ /dev/null @@ -1,16 +0,0 @@ - .text - .globl _start - .type _start, @function -_start: - movl $call1, %edi - bnd call *%rdi - movq func(%rip), %rdi - bnd call *%rdi - ret - .size _start, .-_start - .globl func - .data - .type func, @object - .size func, 8 -func: - .quad call2 diff --git a/ld/testsuite/ld-x86-64/mpx3b.s b/ld/testsuite/ld-x86-64/mpx3b.s deleted file mode 100644 index 1ee2557..0000000 --- a/ld/testsuite/ld-x86-64/mpx3b.s +++ /dev/null @@ -1,11 +0,0 @@ - .text - .globl call1 - .type call1, @function -call1: - ret - .size call1, .-call1 - .globl call2 - .type call2, @function -call2: - ret - .size call2, .-call2 diff --git a/ld/testsuite/ld-x86-64/mpx3n.dd b/ld/testsuite/ld-x86-64/mpx3n.dd deleted file mode 100644 index a1eba8e..0000000 --- a/ld/testsuite/ld-x86-64/mpx3n.dd +++ /dev/null @@ -1,28 +0,0 @@ -.*: +file format .* - - -Disassembly of section .plt: - -0+400220 <.plt>: - +[a-f0-9]+: ff 35 a2 01 20 00 push 0x2001a2\(%rip\) # 6003c8 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 a3 01 20 00 bnd jmp \*0x2001a3\(%rip\) # 6003d0 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 400220 <call1@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+400240 <call1@plt>: - +[a-f0-9]+: f2 ff 25 91 01 20 00 bnd jmp \*0x200191\(%rip\) # 6003d8 <call1> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+400248 <_start>: - +[a-f0-9]+: bf 40 02 40 00 mov \$0x400240,%edi - +[a-f0-9]+: f2 ff d7 bnd call \*%rdi - +[a-f0-9]+: 48 8b 3d 89 01 20 00 mov 0x200189\(%rip\),%rdi # 6003e0 <call2> - +[a-f0-9]+: f2 ff d7 bnd call \*%rdi - +[a-f0-9]+: c3 ret * -#pass diff --git a/ld/testsuite/ld-x86-64/mpx4.dd b/ld/testsuite/ld-x86-64/mpx4.dd deleted file mode 100644 index 50a0fbc..0000000 --- a/ld/testsuite/ld-x86-64/mpx4.dd +++ /dev/null @@ -1,24 +0,0 @@ -.*: +file format .* - - -Disassembly of section .plt: - -0+4001f0 <.plt>: - +[a-f0-9]+: ff 35 42 01 20 00 push 0x200142\(%rip\) # 600338 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 43 01 20 00 bnd jmp \*0x200143\(%rip\) # 600340 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <call1@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+400210 <call1@plt>: - +[a-f0-9]+: f2 ff 25 31 01 20 00 bnd jmp \*0x200131\(%rip\) # 600348 <call1> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+400218 <_start>: - +[a-f0-9]+: bf 10 02 40 00 mov \$0x400210,%edi - +[a-f0-9]+: f2 ff d7 bnd call \*%rdi diff --git a/ld/testsuite/ld-x86-64/mpx4a.s b/ld/testsuite/ld-x86-64/mpx4a.s deleted file mode 100644 index 0ee2723..0000000 --- a/ld/testsuite/ld-x86-64/mpx4a.s +++ /dev/null @@ -1,6 +0,0 @@ -.text - .globl _start - .type _start, @function -_start: - movl $call1, %edi - bnd call *%rdi diff --git a/ld/testsuite/ld-x86-64/mpx4b.s b/ld/testsuite/ld-x86-64/mpx4b.s deleted file mode 100644 index 0e9ac14..0000000 --- a/ld/testsuite/ld-x86-64/mpx4b.s +++ /dev/null @@ -1,5 +0,0 @@ -.text - .globl call1 - .type call1, @function -call1: - ret diff --git a/ld/testsuite/ld-x86-64/mpx4n.dd b/ld/testsuite/ld-x86-64/mpx4n.dd deleted file mode 100644 index 92177bb..0000000 --- a/ld/testsuite/ld-x86-64/mpx4n.dd +++ /dev/null @@ -1,25 +0,0 @@ -.*: +file format .* - - -Disassembly of section .plt: - -0+4001f0 <.plt>: - +[a-f0-9]+: ff 35 62 01 20 00 push 0x200162\(%rip\) # 600358 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 63 01 20 00 bnd jmp \*0x200163\(%rip\) # 600360 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 4001f0 <call1@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+400210 <call1@plt>: - +[a-f0-9]+: f2 ff 25 51 01 20 00 bnd jmp \*0x200151\(%rip\) # 600368 <call1> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+400218 <_start>: - +[a-f0-9]+: bf 10 02 40 00 mov \$0x400210,%edi - +[a-f0-9]+: f2 ff d7 bnd call \*%rdi -#pass diff --git a/ld/testsuite/ld-x86-64/pr20800a.S b/ld/testsuite/ld-x86-64/pr20800a.S deleted file mode 100644 index 95024e2..0000000 --- a/ld/testsuite/ld-x86-64/pr20800a.S +++ /dev/null @@ -1,18 +0,0 @@ - .text - .globl main - .type main, @function -main: -.L2: - leaq .L2(%rip), %rax - movabsq $_GLOBAL_OFFSET_TABLE_-.L2, %r11 - movabsq $bar@PLTOFF, %rdx - pushq %r15 - addq %r11, %rax - movq %rax, %r15 - addq %rax, %rdx - call *%rdx - xorl %eax, %eax - popq %r15 - ret - .size main, .-main - .section .note.GNU-stack diff --git a/ld/testsuite/ld-x86-64/pr20800b.S b/ld/testsuite/ld-x86-64/pr20800b.S deleted file mode 100644 index c4eeb4f..0000000 --- a/ld/testsuite/ld-x86-64/pr20800b.S +++ /dev/null @@ -1,21 +0,0 @@ - .section .rodata.str1.1,"aMS",@progbits,1 -.LC0: - .string "PASS\n" - .text - .globl bar - .type bar, @function -bar: -.L2: - leaq .L2(%rip), %rdx - movabsq $_GLOBAL_OFFSET_TABLE_-.L2, %r11 - movabsq $.LC0@GOTOFF, %rax - pushq %r15 - movabsq $printf@PLTOFF, %rcx - addq %r11, %rdx - popq %r15 - leaq (%rdx,%rax), %rdi - addq %rdx, %rcx - xorl %eax, %eax - jmp *%rcx - .size bar, .-bar - .section .note.GNU-stack,"",@progbits diff --git a/ld/testsuite/ld-x86-64/pr21038a-now.d b/ld/testsuite/ld-x86-64/pr21038a-now.d deleted file mode 100644 index 1fae617..0000000 --- a/ld/testsuite/ld-x86-64/pr21038a-now.d +++ /dev/null @@ -1,68 +0,0 @@ -#name: PR ld/21038 (.plt.got, -z now) -#source: pr21038a.s -#as: --64 -#ld: -z now -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001b0..00000000000001c0 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001b6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 00000000000001c0 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000010 0000005c FDE cie=00000000 pc=00000000000001c0..00000000000001c8 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1b0 <.plt>: - +[a-f0-9]+: ff 35 32 fe 3f 00 push 0x3ffe32\(%rip\) # 3fffe8 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 33 fe 3f 00 bnd jmp \*0x3ffe33\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - -Disassembly of section .plt.got: - -0+1c0 <func@plt>: - +[a-f0-9]+: f2 ff 25 31 fe 3f 00 bnd jmp \*0x3ffe31\(%rip\) # 3ffff8 <func> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+1c8 <foo>: - +[a-f0-9]+: e8 f3 ff ff ff call 1c0 <func@plt> - +[a-f0-9]+: 48 8b 05 24 fe 3f 00 mov 0x3ffe24\(%rip\),%rax # 3ffff8 <func> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038a.d b/ld/testsuite/ld-x86-64/pr21038a.d deleted file mode 100644 index 06e504e..0000000 --- a/ld/testsuite/ld-x86-64/pr21038a.d +++ /dev/null @@ -1,67 +0,0 @@ -#name: PR ld/21038 (.plt.got) -#as: --64 -#ld: -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001b0..00000000000001c0 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001b6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 00000000000001c0 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000010 0000005c FDE cie=00000000 pc=00000000000001c0..00000000000001c8 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1b0 <.plt>: - +[a-f0-9]+: ff 35 3a fe 3f 00 push 0x3ffe3a\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 3b fe 3f 00 bnd jmp \*0x3ffe3b\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - -Disassembly of section .plt.got: - -0+1c0 <func@plt>: - +[a-f0-9]+: f2 ff 25 19 fe 3f 00 bnd jmp \*0x3ffe19\(%rip\) # 3fffe0 <func> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+1c8 <foo>: - +[a-f0-9]+: e8 f3 ff ff ff call 1c0 <func@plt> - +[a-f0-9]+: 48 8b 05 0c fe 3f 00 mov 0x3ffe0c\(%rip\),%rax # 3fffe0 <func> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038a.s b/ld/testsuite/ld-x86-64/pr21038a.s deleted file mode 100644 index d9a1b4c..0000000 --- a/ld/testsuite/ld-x86-64/pr21038a.s +++ /dev/null @@ -1,8 +0,0 @@ - .text - .globl foo - .type foo, @function -foo: - .cfi_startproc - call func@plt - movq func@GOTPCREL(%rip), %rax - .cfi_endproc diff --git a/ld/testsuite/ld-x86-64/pr21038b-now.d b/ld/testsuite/ld-x86-64/pr21038b-now.d deleted file mode 100644 index 72e5109..0000000 --- a/ld/testsuite/ld-x86-64/pr21038b-now.d +++ /dev/null @@ -1,70 +0,0 @@ -#name: PR ld/21038 (.plt.sec, -z now) -#source: pr21038b.s -#as: --64 -#ld: -z now -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001b0..00000000000001d0 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001b6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 00000000000001c0 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000010 0000005c FDE cie=00000000 pc=00000000000001d0..00000000000001d8 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1b0 <.plt>: - +[a-f0-9]+: ff 35 32 fe 3f 00 push 0x3ffe32\(%rip\) # 3fffe8 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 33 fe 3f 00 bnd jmp \*0x3ffe33\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <func@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+1d0 <func@plt>: - +[a-f0-9]+: f2 ff 25 21 fe 3f 00 bnd jmp \*0x3ffe21\(%rip\) # 3ffff8 <func> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+1d8 <foo>: - +[a-f0-9]+: e8 f3 ff ff ff call 1d0 <func@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038b.d b/ld/testsuite/ld-x86-64/pr21038b.d deleted file mode 100644 index 0e77d2c..0000000 --- a/ld/testsuite/ld-x86-64/pr21038b.d +++ /dev/null @@ -1,69 +0,0 @@ -#name: PR ld/21038 (.plt.sec) -#as: --64 -#ld: -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001b0..00000000000001d0 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001b6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 00000000000001c0 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000010 0000005c FDE cie=00000000 pc=00000000000001d0..00000000000001d8 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1b0 <.plt>: - +[a-f0-9]+: ff 35 3a fe 3f 00 push 0x3ffe3a\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 3b fe 3f 00 bnd jmp \*0x3ffe3b\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1b0 <func@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.sec: - -0+1d0 <func@plt>: - +[a-f0-9]+: f2 ff 25 29 fe 3f 00 bnd jmp \*0x3ffe29\(%rip\) # 400000 <func> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+1d8 <foo>: - +[a-f0-9]+: e8 f3 ff ff ff call 1d0 <func@plt> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038b.s b/ld/testsuite/ld-x86-64/pr21038b.s deleted file mode 100644 index 3a8fc47..0000000 --- a/ld/testsuite/ld-x86-64/pr21038b.s +++ /dev/null @@ -1,7 +0,0 @@ - .text - .globl foo - .type foo, @function -foo: - .cfi_startproc - call func@plt - .cfi_endproc diff --git a/ld/testsuite/ld-x86-64/pr21038c-now.d b/ld/testsuite/ld-x86-64/pr21038c-now.d deleted file mode 100644 index cda1c44..0000000 --- a/ld/testsuite/ld-x86-64/pr21038c-now.d +++ /dev/null @@ -1,87 +0,0 @@ -#name: PR ld/21038 (.plt.got and .plt.sec, -z now) -#source: pr21038c.s -#as: --64 -#ld: -z now -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001f0..0000000000000210 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001f6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 0000000000000200 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000014 0000005c FDE cie=00000000 pc=0000000000000210..0000000000000218 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+70 0000000000000010 00000074 FDE cie=00000000 pc=0000000000000218..0000000000000220 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1f0 <.plt>: - +[a-f0-9]+: ff 35 ea fd 3f 00 push 0x3ffdea\(%rip\) # 3fffe0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 eb fd 3f 00 bnd jmp \*0x3ffdeb\(%rip\) # 3fffe8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <func1@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.got: - -0+210 <func1@plt>: - +[a-f0-9]+: f2 ff 25 e1 fd 3f 00 bnd jmp \*0x3ffde1\(%rip\) # 3ffff8 <func1> - +[a-f0-9]+: 90 nop - -Disassembly of section .plt.sec: - -0+218 <func2@plt>: - +[a-f0-9]+: f2 ff 25 d1 fd 3f 00 bnd jmp \*0x3ffdd1\(%rip\) # 3ffff0 <func2> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+220 <foo>: - +[a-f0-9]+: e8 eb ff ff ff call 210 <func1@plt> - +[a-f0-9]+: e8 ee ff ff ff call 218 <func2@plt> - +[a-f0-9]+: 48 8b 05 c7 fd 3f 00 mov 0x3ffdc7\(%rip\),%rax # 3ffff8 <func1> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038c.d b/ld/testsuite/ld-x86-64/pr21038c.d deleted file mode 100644 index afbdb56..0000000 --- a/ld/testsuite/ld-x86-64/pr21038c.d +++ /dev/null @@ -1,86 +0,0 @@ -#name: PR ld/21038 (.plt.got and .plt.sec) -#as: --64 -#ld: -z bndplt -melf_x86_64 -shared -z relro --ld-generated-unwind-info --hash-style=sysv -z max-page-size=0x200000 -z noseparate-code $NO_DT_RELR_LDFLAGS -#objdump: -dw -Wf - -.*: +file format .* - -Contents of the .eh_frame section: - - -0+ 0000000000000014 00000000 CIE - Version: 1 - Augmentation: "zR" - Code alignment factor: 1 - Data alignment factor: -8 - Return address column: 16 - Augmentation data: 1b - DW_CFA_def_cfa: r7 \(rsp\) ofs 8 - DW_CFA_offset: r16 \(rip\) at cfa-8 - DW_CFA_nop - DW_CFA_nop - -0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+30 0000000000000024 00000034 FDE cie=00000000 pc=00000000000001f0..0000000000000210 - DW_CFA_def_cfa_offset: 16 - DW_CFA_advance_loc: 6 to 00000000000001f6 - DW_CFA_def_cfa_offset: 24 - DW_CFA_advance_loc: 10 to 0000000000000200 - DW_CFA_def_cfa_expression \(DW_OP_breg7 \(rsp\): 8; DW_OP_breg16 \(rip\): 0; DW_OP_lit15; DW_OP_and; DW_OP_lit5; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus\) - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+58 0000000000000014 0000005c FDE cie=00000000 pc=0000000000000210..0000000000000218 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - -0+70 0000000000000010 00000074 FDE cie=00000000 pc=0000000000000218..0000000000000220 - DW_CFA_nop - DW_CFA_nop - DW_CFA_nop - - -Disassembly of section .plt: - -0+1f0 <.plt>: - +[a-f0-9]+: ff 35 fa fd 3f 00 push 0x3ffdfa\(%rip\) # 3ffff0 <_GLOBAL_OFFSET_TABLE_\+0x8> - +[a-f0-9]+: f2 ff 25 fb fd 3f 00 bnd jmp \*0x3ffdfb\(%rip\) # 3ffff8 <_GLOBAL_OFFSET_TABLE_\+0x10> - +[a-f0-9]+: 0f 1f 00 nopl \(%rax\) - +[a-f0-9]+: 68 00 00 00 00 push \$0x0 - +[a-f0-9]+: f2 e9 e5 ff ff ff bnd jmp 1f0 <func1@plt-0x20> - +[a-f0-9]+: 0f 1f 44 00 00 nopl 0x0\(%rax,%rax,1\) - -Disassembly of section .plt.got: - -0+210 <func1@plt>: - +[a-f0-9]+: f2 ff 25 c9 fd 3f 00 bnd jmp \*0x3ffdc9\(%rip\) # 3fffe0 <func1> - +[a-f0-9]+: 90 nop - -Disassembly of section .plt.sec: - -0+218 <func2@plt>: - +[a-f0-9]+: f2 ff 25 e1 fd 3f 00 bnd jmp \*0x3ffde1\(%rip\) # 400000 <func2> - +[a-f0-9]+: 90 nop - -Disassembly of section .text: - -0+220 <foo>: - +[a-f0-9]+: e8 eb ff ff ff call 210 <func1@plt> - +[a-f0-9]+: e8 ee ff ff ff call 218 <func2@plt> - +[a-f0-9]+: 48 8b 05 af fd 3f 00 mov 0x3ffdaf\(%rip\),%rax # 3fffe0 <func1> -#pass diff --git a/ld/testsuite/ld-x86-64/pr21038c.s b/ld/testsuite/ld-x86-64/pr21038c.s deleted file mode 100644 index 38fc10d..0000000 --- a/ld/testsuite/ld-x86-64/pr21038c.s +++ /dev/null @@ -1,9 +0,0 @@ - .text - .globl foo - .type foo, @function -foo: - .cfi_startproc - call func1@plt - call func2@plt - movq func1@GOTPCREL(%rip), %rax - .cfi_endproc diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index e30f210..6bee767 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -2002,130 +2002,6 @@ if { [isnative] && [check_compiler_available] } { ] } - if { [istarget "x86_64-*-linux*"] \ - && ![istarget "x86_64-*-linux*-gnux32"]} { - - run_cc_link_tests [list \ - [list \ - "Build plt-main with -z bndplt" \ - "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so -Wl,-z,bndplt \ - -Wl,-z,noseparate-code,-z,max-page-size=0x200000" \ - "-Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \ - { plt-main5.c } \ - {{objdump {-drw} plt-main-bnd.dd}} \ - "plt-main-bnd" \ - ] \ - [list \ - "Build plt-main with PIE and -z bndplt" \ - "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so -pie \ - -Wl,-z,bndplt,-z,noseparate-code \ - -Wl,-z,max-page-size=0x200000" \ - "-fPIC -Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \ - { plt-main5.c } \ - {{objdump {-drw} plt-main-bnd.dd}} \ - "plt-main-pie-bnd" \ - ] \ - [list \ - "Build plt-main with -z bndplt -z now" \ - "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so -Wl,-z,bndplt \ - -Wl,-z,now,-z,noseparate-code,-z,max-page-size=0x200000" \ - "-Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \ - { plt-main5.c } \ - {{readelf {-SW} plt-main-bnd-now.rd} {objdump {-drw} plt-main-bnd.dd}} \ - "plt-main-bnd-now" \ - ] \ - [list \ - "Build plt-main with PIE and -z bndplt -z now" \ - "tmpdir/plt-main1.o tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so -pie \ - -Wl,-z,bndplt,-z,now,-z,noseparate-code \ - -Wl,-z,max-page-size=0x200000" \ - "-fPIC -Wa,-mx86-used-note=yes $NOCF_PROTECTION_CFLAGS" \ - { plt-main5.c } \ - {{readelf {-SW} plt-main-bnd-now.rd} {objdump {-drw} plt-main-bnd.dd}} \ - "plt-main-pie-bnd-now" \ - ] \ - ] - - run_ld_link_exec_tests [list \ - [list \ - "Run plt-main with -z bndplt" \ - "-Wl,--no-as-needed,-z,bndplt tmpdir/plt-main1.o \ - tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so" \ - "-Wa,-mx86-used-note=yes" \ - { plt-main5.c } \ - "plt-main-bnd" \ - "plt-main.out" \ - ] \ - [list \ - "Run plt-main with PIE and -z bndplt" \ - "-Wl,--no-as-needed,-z,bndplt -pie tmpdir/plt-main1.o \ - tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so" \ - "-Wa,-mx86-used-note=yes" \ - { plt-main5.c } \ - "plt-main-pie-bnd" \ - "plt-main.out" \ - "-fPIC" \ - ] \ - [list \ - "Run plt-main with -z bndplt -z now" \ - "-Wl,--no-as-needed,-z,bndplt,-z,now tmpdir/plt-main1.o \ - tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so" \ - "-Wa,-mx86-used-note=yes" \ - { plt-main5.c } \ - "plt-main-bnd-now" \ - "plt-main.out" \ - ] \ - [list \ - "Run plt-main with PIE and -z bndplt -z now" \ - "-Wl,--no-as-needed,-z,bndplt,-z,now -pie tmpdir/plt-main1.o \ - tmpdir/plt-main2.o tmpdir/plt-main3.o \ - tmpdir/plt-main4.o tmpdir/libplt-lib.so" \ - "-Wa,-mx86-used-note=yes" \ - { plt-main5.c } \ - "plt-main-pie-bnd-now" \ - "plt-main.out" \ - "-fPIC" \ - ] \ - [list \ - "Run pr20800" \ - "-Wl,-z,now -pie" \ - "-Wa,-mx86-used-note=yes" \ - { pr20800a.S pr20800b.S } \ - "pr20800" \ - "pass.out" \ - ] \ - ] - if { [check_ifunc_attribute_available] } { - run_ld_link_exec_tests [list \ - [list \ - "Run pr21481a" \ - "$NOPIE_LDFLAGS -Wl,-z,bndplt" \ - "-Wa,-mx86-used-note=yes" \ - { pr21481a.c pr21481b.S } \ - "pr21481a" \ - "pass.out" \ - "$NOPIE_CFLAGS" \ - ] \ - [list \ - "Run pr21481b" \ - "$NOPIE_LDFLAGS -Wl,-z,bndplt,-z,now" \ - "-Wa,-mx86-used-note=yes" \ - { pr21481a.c pr21481b.S } \ - "pr21481b" \ - "pass.out" \ - "$NOPIE_CFLAGS" \ - ] \ - ] - } - } - if { [istarget "x86_64-*-linux*"] } { set pltdump {{objdump {-drw} plt-main-ibt.dd}} set pltsecdump {{readelf {-SW} plt-main-ibt-now.rd} {objdump {-drw} plt-main-ibt.dd}} @@ -2331,14 +2207,8 @@ run_dump_test "pltgot-1" run_dump_test "pltgot-2" run_dump_test "pr20830a" run_dump_test "pr20830b" -run_dump_test "pr21038a" -run_dump_test "pr21038b" -run_dump_test "pr21038c" run_dump_test "pr20830a-now" run_dump_test "pr20830b-now" -run_dump_test "pr21038a-now" -run_dump_test "pr21038b-now" -run_dump_test "pr21038c-now" run_dump_test "ibt-plt-1" run_dump_test "ibt-plt-1-x32" run_dump_test "ibt-plt-2a" |