mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
Fix placement of forced local symbols in the dynamic symbol table.
Gold was not placing forced-local symbols (e.g., hidden visibility) at the front of the dynamic symbol table, or including them in the count of local symbols recorded in the .dynsym section's sh_info field. gold/ * layout.cc (Layout::finalize): Track count of forced-local symbols in .dynsym. (Layout::create_symtab_sections): Add local_dynamic_count parameter; use that instead of sh_info value. (Layout::create_dynamic_symtab): Add pforced_local_dynamic_count parameter; pass it to Symtab::set_dynsym_indexes(). Include forced locals in sh_info value. Pass index of first real global to Dynobj::create_gnu_hash_table() and Dynobj::create_elf_hash_table(). * layout.h (Layout::create_symtab_sections): Add local_dynamic_count parameter. (Layout::create_dynamic_symtab): Add pforced_local_dynamic_count parameter. * symtab.cc (Symbol_table::set_dynsym_indexes): Add pforced_local_count parameter. Process forced-local symbols first and return the count. (Symbol_table::finalize): Update comments. * symtab.h (Symbol_table::set_dynsym_indexes): Add pforced_local_count parameter. (Symbol_table::first_dynamic_global_index_): Update comment. (Symbol_table::dynamic_count_): Update comment. * testsuite/Makefile.am (ifuncmod1.sh): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/ifuncmod1.sh: New shell script.
This commit is contained in:
parent
40d7d93ff4
commit
c4d5a76223
@ -1,3 +1,28 @@
|
||||
2016-12-22 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
* layout.cc (Layout::finalize): Track count of forced-local symbols
|
||||
in .dynsym.
|
||||
(Layout::create_symtab_sections): Add local_dynamic_count parameter;
|
||||
use that instead of sh_info value.
|
||||
(Layout::create_dynamic_symtab): Add pforced_local_dynamic_count
|
||||
parameter; pass it to Symtab::set_dynsym_indexes(). Include forced
|
||||
locals in sh_info value. Pass index of first real global to
|
||||
Dynobj::create_gnu_hash_table() and Dynobj::create_elf_hash_table().
|
||||
* layout.h (Layout::create_symtab_sections): Add local_dynamic_count
|
||||
parameter.
|
||||
(Layout::create_dynamic_symtab): Add pforced_local_dynamic_count
|
||||
parameter.
|
||||
* symtab.cc (Symbol_table::set_dynsym_indexes): Add pforced_local_count
|
||||
parameter. Process forced-local symbols first and return the count.
|
||||
(Symbol_table::finalize): Update comments.
|
||||
* symtab.h (Symbol_table::set_dynsym_indexes): Add pforced_local_count
|
||||
parameter.
|
||||
(Symbol_table::first_dynamic_global_index_): Update comment.
|
||||
(Symbol_table::dynamic_count_): Update comment.
|
||||
* testsuite/Makefile.am (ifuncmod1.sh): New test case.
|
||||
* testsuite/Makefile.in: Regenerate.
|
||||
* testsuite/ifuncmod1.sh: New shell script.
|
||||
|
||||
2016-12-21 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
* symtab.cc (Symbol_table::define_special_symbol): Add is_forced_local
|
||||
|
@ -2696,6 +2696,9 @@ off_t
|
||||
Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
Target* target, const Task* task)
|
||||
{
|
||||
unsigned int local_dynamic_count = 0;
|
||||
unsigned int forced_local_dynamic_count = 0;
|
||||
|
||||
target->finalize_sections(this, input_objects, symtab);
|
||||
|
||||
this->count_local_symbols(task, input_objects);
|
||||
@ -2716,11 +2719,12 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
// Create the dynamic symbol table, including the hash table.
|
||||
Output_section* dynstr;
|
||||
std::vector<Symbol*> dynamic_symbols;
|
||||
unsigned int local_dynamic_count;
|
||||
Versions versions(*this->script_options()->version_script_info(),
|
||||
&this->dynpool_);
|
||||
this->create_dynamic_symtab(input_objects, symtab, &dynstr,
|
||||
&local_dynamic_count, &dynamic_symbols,
|
||||
&local_dynamic_count,
|
||||
&forced_local_dynamic_count,
|
||||
&dynamic_symbols,
|
||||
&versions);
|
||||
|
||||
// Create the .interp section to hold the name of the
|
||||
@ -2741,7 +2745,9 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
|
||||
// Create the version sections. We can't do this until the
|
||||
// dynamic string table is complete.
|
||||
this->create_version_sections(&versions, symtab, local_dynamic_count,
|
||||
this->create_version_sections(&versions, symtab,
|
||||
(local_dynamic_count
|
||||
+ forced_local_dynamic_count),
|
||||
dynamic_symbols, dynstr);
|
||||
|
||||
// Set the size of the _DYNAMIC symbol. We can't do this until
|
||||
@ -2811,7 +2817,8 @@ Layout::finalize(const Input_objects* input_objects, Symbol_table* symtab,
|
||||
shndx = this->set_section_indexes(shndx);
|
||||
|
||||
// Create the symbol table sections.
|
||||
this->create_symtab_sections(input_objects, symtab, shndx, &off);
|
||||
this->create_symtab_sections(input_objects, symtab, shndx, &off,
|
||||
local_dynamic_count);
|
||||
if (!parameters->doing_static_link())
|
||||
this->assign_local_dynsym_offsets(input_objects);
|
||||
|
||||
@ -3999,7 +4006,8 @@ void
|
||||
Layout::create_symtab_sections(const Input_objects* input_objects,
|
||||
Symbol_table* symtab,
|
||||
unsigned int shnum,
|
||||
off_t* poff)
|
||||
off_t* poff,
|
||||
unsigned int local_dynamic_count)
|
||||
{
|
||||
int symsize;
|
||||
unsigned int align;
|
||||
@ -4053,18 +4061,15 @@ Layout::create_symtab_sections(const Input_objects* input_objects,
|
||||
gold_assert(static_cast<off_t>(local_symcount * symsize) == off);
|
||||
|
||||
off_t dynoff;
|
||||
size_t dyn_global_index;
|
||||
size_t dyncount;
|
||||
if (this->dynsym_section_ == NULL)
|
||||
{
|
||||
dynoff = 0;
|
||||
dyn_global_index = 0;
|
||||
dyncount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
dyn_global_index = this->dynsym_section_->info();
|
||||
off_t locsize = dyn_global_index * this->dynsym_section_->entsize();
|
||||
off_t locsize = local_dynamic_count * this->dynsym_section_->entsize();
|
||||
dynoff = this->dynsym_section_->offset() + locsize;
|
||||
dyncount = (this->dynsym_section_->data_size() - locsize) / symsize;
|
||||
gold_assert(static_cast<off_t>(dyncount * symsize)
|
||||
@ -4072,7 +4077,7 @@ Layout::create_symtab_sections(const Input_objects* input_objects,
|
||||
}
|
||||
|
||||
off_t global_off = off;
|
||||
off = symtab->finalize(off, dynoff, dyn_global_index, dyncount,
|
||||
off = symtab->finalize(off, dynoff, local_dynamic_count, dyncount,
|
||||
&this->sympool_, &local_symcount);
|
||||
|
||||
if (!parameters->options().strip_all())
|
||||
@ -4238,12 +4243,18 @@ Layout::allocated_output_section_count() const
|
||||
}
|
||||
|
||||
// Create the dynamic symbol table.
|
||||
// *PLOCAL_DYNAMIC_COUNT will be set to the number of local symbols
|
||||
// from input objects, and *PFORCED_LOCAL_DYNAMIC_COUNT will be set
|
||||
// to the number of global symbols that have been forced local.
|
||||
// We need to remember the former because the forced-local symbols are
|
||||
// written along with the global symbols in Symtab::write_globals().
|
||||
|
||||
void
|
||||
Layout::create_dynamic_symtab(const Input_objects* input_objects,
|
||||
Symbol_table* symtab,
|
||||
Output_section** pdynstr,
|
||||
unsigned int* plocal_dynamic_count,
|
||||
unsigned int* pforced_local_dynamic_count,
|
||||
std::vector<Symbol*>* pdynamic_symbols,
|
||||
Versions* pversions)
|
||||
{
|
||||
@ -4278,10 +4289,14 @@ Layout::create_dynamic_symtab(const Input_objects* input_objects,
|
||||
}
|
||||
|
||||
unsigned int local_symcount = index;
|
||||
*plocal_dynamic_count = local_symcount;
|
||||
unsigned int forced_local_count = 0;
|
||||
|
||||
index = symtab->set_dynsym_indexes(index, pdynamic_symbols,
|
||||
&this->dynpool_, pversions);
|
||||
index = symtab->set_dynsym_indexes(index, &forced_local_count,
|
||||
pdynamic_symbols, &this->dynpool_,
|
||||
pversions);
|
||||
|
||||
*plocal_dynamic_count = local_symcount;
|
||||
*pforced_local_dynamic_count = forced_local_count;
|
||||
|
||||
int symsize;
|
||||
unsigned int align;
|
||||
@ -4316,7 +4331,7 @@ Layout::create_dynamic_symtab(const Input_objects* input_objects,
|
||||
"** dynsym");
|
||||
dynsym->add_output_section_data(odata);
|
||||
|
||||
dynsym->set_info(local_symcount);
|
||||
dynsym->set_info(local_symcount + forced_local_count);
|
||||
dynsym->set_entsize(symsize);
|
||||
dynsym->set_addralign(align);
|
||||
|
||||
@ -4400,7 +4415,8 @@ Layout::create_dynamic_symtab(const Input_objects* input_objects,
|
||||
{
|
||||
unsigned char* phash;
|
||||
unsigned int hashlen;
|
||||
Dynobj::create_gnu_hash_table(*pdynamic_symbols, local_symcount,
|
||||
Dynobj::create_gnu_hash_table(*pdynamic_symbols,
|
||||
local_symcount + forced_local_count,
|
||||
&phash, &hashlen);
|
||||
|
||||
Output_section* hashsec =
|
||||
@ -4437,7 +4453,8 @@ Layout::create_dynamic_symtab(const Input_objects* input_objects,
|
||||
{
|
||||
unsigned char* phash;
|
||||
unsigned int hashlen;
|
||||
Dynobj::create_elf_hash_table(*pdynamic_symbols, local_symcount,
|
||||
Dynobj::create_elf_hash_table(*pdynamic_symbols,
|
||||
local_symcount + forced_local_count,
|
||||
&phash, &hashlen);
|
||||
|
||||
Output_section* hashsec =
|
||||
|
@ -1067,7 +1067,7 @@ class Layout
|
||||
// Create the output sections for the symbol table.
|
||||
void
|
||||
create_symtab_sections(const Input_objects*, Symbol_table*,
|
||||
unsigned int, off_t*);
|
||||
unsigned int, off_t*, unsigned int);
|
||||
|
||||
// Create the .shstrtab section.
|
||||
Output_section*
|
||||
@ -1082,6 +1082,7 @@ class Layout
|
||||
create_dynamic_symtab(const Input_objects*, Symbol_table*,
|
||||
Output_section** pdynstr,
|
||||
unsigned int* plocal_dynamic_count,
|
||||
unsigned int* pforced_local_dynamic_count,
|
||||
std::vector<Symbol*>* pdynamic_symbols,
|
||||
Versions* versions);
|
||||
|
||||
|
@ -2473,18 +2473,42 @@ Symbol_table::add_undefined_symbol_from_command_line(const char* name)
|
||||
}
|
||||
|
||||
// Set the dynamic symbol indexes. INDEX is the index of the first
|
||||
// global dynamic symbol. Pointers to the symbols are stored into the
|
||||
// vector SYMS. The names are added to DYNPOOL. This returns an
|
||||
// updated dynamic symbol index.
|
||||
// global dynamic symbol. Pointers to the global symbols are stored
|
||||
// into the vector SYMS. The names are added to DYNPOOL.
|
||||
// This returns an updated dynamic symbol index.
|
||||
|
||||
unsigned int
|
||||
Symbol_table::set_dynsym_indexes(unsigned int index,
|
||||
unsigned int* pforced_local_count,
|
||||
std::vector<Symbol*>* syms,
|
||||
Stringpool* dynpool,
|
||||
Versions* versions)
|
||||
{
|
||||
std::vector<Symbol*> as_needed_sym;
|
||||
|
||||
// First process all the symbols which have been forced to be local,
|
||||
// as they must appear before all global symbols.
|
||||
unsigned int forced_local_count = 0;
|
||||
for (Forced_locals::iterator p = this->forced_locals_.begin();
|
||||
p != this->forced_locals_.end();
|
||||
++p)
|
||||
{
|
||||
Symbol* sym = *p;
|
||||
gold_assert(sym->is_forced_local());
|
||||
if (sym->has_dynsym_index())
|
||||
continue;
|
||||
if (!sym->should_add_dynsym_entry(this))
|
||||
sym->set_dynsym_index(-1U);
|
||||
else
|
||||
{
|
||||
sym->set_dynsym_index(index);
|
||||
++index;
|
||||
++forced_local_count;
|
||||
dynpool->add(sym->name(), false, NULL);
|
||||
}
|
||||
}
|
||||
*pforced_local_count = forced_local_count;
|
||||
|
||||
// Allow a target to set dynsym indexes.
|
||||
if (parameters->target().has_custom_set_dynsym_indexes())
|
||||
{
|
||||
@ -2494,6 +2518,8 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
|
||||
++p)
|
||||
{
|
||||
Symbol* sym = p->second;
|
||||
if (sym->is_forced_local())
|
||||
continue;
|
||||
if (!sym->should_add_dynsym_entry(this))
|
||||
sym->set_dynsym_index(-1U);
|
||||
else
|
||||
@ -2510,6 +2536,9 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
|
||||
{
|
||||
Symbol* sym = p->second;
|
||||
|
||||
if (sym->is_forced_local())
|
||||
continue;
|
||||
|
||||
// Note that SYM may already have a dynamic symbol index, since
|
||||
// some symbols appear more than once in the symbol table, with
|
||||
// and without a version.
|
||||
@ -2581,7 +2610,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index,
|
||||
// Set the final values for all the symbols. The index of the first
|
||||
// global symbol in the output file is *PLOCAL_SYMCOUNT. Record the
|
||||
// file offset OFF. Add their names to POOL. Return the new file
|
||||
// offset. Update *PLOCAL_SYMCOUNT if necessary.
|
||||
// offset. Update *PLOCAL_SYMCOUNT if necessary. DYNOFF and
|
||||
// DYN_GLOBAL_INDEX refer to the start of the symbols that will be
|
||||
// written from the global symbol table in Symtab::write_globals(),
|
||||
// which will include forced-local symbols. DYN_GLOBAL_INDEX is
|
||||
// not necessarily the same as the sh_info field for the .dynsym
|
||||
// section, which will point to the first real global symbol.
|
||||
|
||||
off_t
|
||||
Symbol_table::finalize(off_t off, off_t dynoff, size_t dyn_global_index,
|
||||
|
@ -1574,12 +1574,13 @@ class Symbol_table
|
||||
get_copy_source(const Symbol* sym) const;
|
||||
|
||||
// Set the dynamic symbol indexes. INDEX is the index of the first
|
||||
// global dynamic symbol. Pointers to the symbols are stored into
|
||||
// global dynamic symbol. Return the count of forced-local symbols in
|
||||
// *PFORCED_LOCAL_COUNT. Pointers to the symbols are stored into
|
||||
// the vector. The names are stored into the Stringpool. This
|
||||
// returns an updated dynamic symbol index.
|
||||
unsigned int
|
||||
set_dynsym_indexes(unsigned int index, std::vector<Symbol*>*,
|
||||
Stringpool*, Versions*);
|
||||
set_dynsym_indexes(unsigned int index, unsigned int* pforced_local_count,
|
||||
std::vector<Symbol*>*, Stringpool*, Versions*);
|
||||
|
||||
// Finalize the symbol table after we have set the final addresses
|
||||
// of all the input sections. This sets the final symbol indexes,
|
||||
@ -1928,9 +1929,11 @@ class Symbol_table
|
||||
unsigned int output_count_;
|
||||
// The file offset of the global dynamic symbols, or 0 if none.
|
||||
off_t dynamic_offset_;
|
||||
// The index of the first global dynamic symbol.
|
||||
// The index of the first global dynamic symbol (including
|
||||
// forced-local symbols).
|
||||
unsigned int first_dynamic_global_index_;
|
||||
// The number of global dynamic symbols, or 0 if none.
|
||||
// The number of global dynamic symbols (including forced-local symbols),
|
||||
// or 0 if none.
|
||||
unsigned int dynamic_count_;
|
||||
// The symbol hash table.
|
||||
Symbol_table_type table_;
|
||||
|
@ -2531,6 +2531,11 @@ ifuncmain1static_LDADD = ifuncdep1.o
|
||||
check_PROGRAMS += ifuncmain1picstatic
|
||||
ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld
|
||||
$(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o
|
||||
|
||||
check_SCRIPTS += ifuncmod1.sh
|
||||
check_DATA += ifuncmod1.so.stderr
|
||||
ifuncmod1.so.stderr: ifuncmod1.so
|
||||
$(TEST_READELF) -s $< > /dev/null 2> $@
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -581,33 +581,18 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
|
||||
# Test that no .gnu.version sections are created when
|
||||
# symbol versioning is not used.
|
||||
|
||||
# Test that strong reference to a weak symbol in a DSO remains strong.
|
||||
|
||||
# Test that a strong weak reference remains strong if there is another
|
||||
# weak reference in a DSO.
|
||||
|
||||
# Test that MEMORY region support works.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_56 = exclude_libs_test.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.sh memory_test.sh
|
||||
|
||||
# Test INCLUDE directives in linker scripts.
|
||||
# The binary isn't runnable, so we just check that we can build it without errors.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.sh
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_57 = exclude_libs_test.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test1.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test2.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.stdout memory_test_2
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ no_version_test.stdout
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = exclude_libs_test.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_1.a \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a \
|
||||
@ -655,7 +640,9 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@NATIVE_LINKER_FALSE@searched_file_test_DEPENDENCIES =
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_61 = ifuncmain1static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1picstatic
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = ifuncmain1 \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = ifuncmod1.sh
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_63 = ifuncmod1.so.stderr
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = ifuncmain1 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pic \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vis \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispic \
|
||||
@ -663,14 +650,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1pie \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1vispie \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain1staticpie
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_63 = ifuncmain2static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_65 = ifuncmain2static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2picstatic
|
||||
@GCC_FALSE@ifuncmain2static_DEPENDENCIES =
|
||||
@HAVE_STATIC_FALSE@ifuncmain2static_DEPENDENCIES =
|
||||
@IFUNC_FALSE@ifuncmain2static_DEPENDENCIES =
|
||||
@IFUNC_STATIC_FALSE@ifuncmain2static_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain2static_DEPENDENCIES =
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = ifuncmain2 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = ifuncmain2 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain2pic \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain3
|
||||
@GCC_FALSE@ifuncmain2_DEPENDENCIES =
|
||||
@ -679,32 +666,32 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@GCC_FALSE@ifuncmain3_DEPENDENCIES =
|
||||
@IFUNC_FALSE@ifuncmain3_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain3_DEPENDENCIES =
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_65 = ifuncmain4static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_67 = ifuncmain4static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain4picstatic
|
||||
@GCC_FALSE@ifuncmain4static_DEPENDENCIES =
|
||||
@HAVE_STATIC_FALSE@ifuncmain4static_DEPENDENCIES =
|
||||
@IFUNC_FALSE@ifuncmain4static_DEPENDENCIES =
|
||||
@IFUNC_STATIC_FALSE@ifuncmain4static_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain4static_DEPENDENCIES =
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = ifuncmain4
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = ifuncmain4
|
||||
@GCC_FALSE@ifuncmain4_DEPENDENCIES =
|
||||
@IFUNC_FALSE@ifuncmain4_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain4_DEPENDENCIES =
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_67 = ifuncmain5static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = ifuncmain5static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5picstatic
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = ifuncmain5 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = ifuncmain5 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pic \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5staticpic \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain5pie \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain6pie
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = ifuncmain7static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = ifuncmain7static \
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7picstatic
|
||||
@GCC_FALSE@ifuncmain7static_DEPENDENCIES =
|
||||
@HAVE_STATIC_FALSE@ifuncmain7static_DEPENDENCIES =
|
||||
@IFUNC_FALSE@ifuncmain7static_DEPENDENCIES =
|
||||
@IFUNC_STATIC_FALSE@ifuncmain7static_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain7static_DEPENDENCIES =
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = ifuncmain7 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_72 = ifuncmain7 \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pic \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncmain7pie \
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ ifuncvar
|
||||
@ -712,6 +699,22 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@IFUNC_FALSE@ifuncmain7_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ifuncmain7_DEPENDENCIES =
|
||||
|
||||
# Test that strong reference to a weak symbol in a DSO remains strong.
|
||||
|
||||
# Test that a strong weak reference remains strong if there is another
|
||||
# weak reference in a DSO.
|
||||
|
||||
# Test that MEMORY region support works.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = strong_ref_weak_def.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.sh memory_test.sh
|
||||
|
||||
# Test INCLUDE directives in linker scripts.
|
||||
# The binary isn't runnable, so we just check that we can build it without errors.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_74 = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.stdout \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.stdout memory_test_2
|
||||
|
||||
# Test that --start-lib and --end-lib function correctly.
|
||||
|
||||
# Test that __ehdr_start is defined correctly.
|
||||
@ -723,7 +726,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
# Test that __ehdr_start is not overridden when supplied by the user.
|
||||
|
||||
# Test that the -d option (force common allocation) works correctly.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = start_lib_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_75 = start_lib_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_1 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_2 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_3 \
|
||||
@ -736,17 +739,17 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
# Another simple C test (DW_AT_high_pc encoding) for --gdb-index.
|
||||
|
||||
# Test that --gdb-index functions correctly with gcc-generated pubnames.
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_72 = gdb_index_test_1.sh \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_76 = gdb_index_test_1.sh \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2.sh \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2_gabi.sh \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_3.sh \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4.sh
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = gdb_index_test_1.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_77 = gdb_index_test_1.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2_gabi.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_3.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_4.stdout
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_74 = gdb_index_test_1.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_78 = gdb_index_test_1.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_1 \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2.stdout \
|
||||
@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@ gdb_index_test_2 \
|
||||
@ -768,18 +771,18 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
# appropriately aligned.
|
||||
|
||||
# Test that the --defsym option copies the symbol type and visibility.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_75 = ehdr_start_test_4.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_79 = ehdr_start_test_4.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.sh
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_76 = ehdr_start_test_4.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_80 = ehdr_start_test_4.syms \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.syms
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_77 = ehdr_start_test_4 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_81 = ehdr_start_test_4 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test defsym_test.syms
|
||||
@GCC_FALSE@ehdr_start_test_5_DEPENDENCIES =
|
||||
@NATIVE_LINKER_FALSE@ehdr_start_test_5_DEPENDENCIES =
|
||||
|
||||
# Test the --incremental-unchanged flag with an archive library.
|
||||
# The second link should not update the library.
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_78 = incremental_test_2 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_82 = incremental_test_2 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_3 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_4 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_5 \
|
||||
@ -788,7 +791,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_common_test_1 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_comdat_test_1 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_x86_64_bnd_test
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_79 = two_file_test_tmp_2.o \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_83 = two_file_test_tmp_2.o \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_tmp_3.o \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ incremental_test_4.base \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_test_tmp_4.o \
|
||||
@ -798,30 +801,30 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
# These tests work with native and cross linkers.
|
||||
|
||||
# Test script section order.
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_80 = script_test_10.sh
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_81 = script_test_10.stdout
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_82 = script_test_10
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_84 = script_test_10.sh
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = script_test_10.stdout
|
||||
@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = script_test_10
|
||||
|
||||
# These tests work with cross linkers only.
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_83 = split_i386.sh
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_84 = split_i386_1.stdout split_i386_2.stdout \
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_i386.sh
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_i386_1.stdout split_i386_2.stdout \
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout
|
||||
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = split_i386_1 split_i386_2 split_i386_3 \
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_i386_1 split_i386_2 split_i386_3 \
|
||||
@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_i386_4 split_i386_r
|
||||
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = split_x86_64.sh
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_x86_64_1.stdout split_x86_64_2.stdout \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_x86_64.sh
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = split_x86_64_1.stdout split_x86_64_2.stdout \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout
|
||||
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x86_64_4 split_x86_64_r
|
||||
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_x32.sh
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_x32_1.stdout split_x32_2.stdout \
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = split_x32.sh
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = split_x32_1.stdout split_x32_2.stdout \
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_3.stdout split_x32_4.stdout split_x32_r.stdout
|
||||
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = split_x32_1 split_x32_2 split_x32_3 \
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = split_x32_1 split_x32_2 split_x32_3 \
|
||||
@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_4 split_x32_r
|
||||
|
||||
|
||||
@ -838,7 +841,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
# Check Thumb to ARM farcall veneers
|
||||
|
||||
# Check handling of --target1-abs, --target1-rel and --target2 options
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = arm_abs_global.sh \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = arm_abs_global.sh \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx.sh \
|
||||
@ -859,7 +862,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel.sh
|
||||
|
||||
# The test demonstrates why the constructor of a target object should not access options.
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = arm_abs_global.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = arm_abs_global.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range.stdout \
|
||||
@ -910,7 +913,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_abs.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel.stdout \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target_lazy_init
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = arm_abs_global \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = arm_abs_global \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range \
|
||||
@ -959,14 +962,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_abs \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target2_got_rel \
|
||||
@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_target_lazy_init
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = aarch64_reloc_none.sh \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_99 = aarch64_reloc_none.sh \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs.sh
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = aarch64_reloc_none.stdout \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_100 = aarch64_reloc_none.stdout \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs.stdout
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = aarch64_reloc_none \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_101 = aarch64_reloc_none \
|
||||
@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ aarch64_relocs
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = split_s390.sh
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_99 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_102 = split_s390.sh
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_103 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \
|
||||
@ -978,7 +981,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_n2_ns.stdout split_s390x_r.stdout
|
||||
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_100 = split_s390_z1 split_s390_z2 split_s390_z3 \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_104 = split_s390_z1 split_s390_z2 split_s390_z3 \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \
|
||||
@ -987,10 +990,10 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \
|
||||
@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r
|
||||
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_101 = *.dwo *.dwp
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_102 = dwp_test_1.sh \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_105 = *.dwo *.dwp
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_106 = dwp_test_1.sh \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.sh
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_103 = dwp_test_1.stdout \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@am__append_107 = dwp_test_1.stdout \
|
||||
@DEFAULT_TARGET_X86_64_TRUE@ dwp_test_2.stdout
|
||||
subdir = testsuite
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
@ -2776,10 +2779,10 @@ MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \
|
||||
$(am__append_17) $(am__append_21) $(am__append_31) \
|
||||
$(am__append_34) $(am__append_37) $(am__append_41) \
|
||||
$(am__append_47) $(am__append_51) $(am__append_52) \
|
||||
$(am__append_58) $(am__append_74) $(am__append_77) \
|
||||
$(am__append_79) $(am__append_82) $(am__append_85) \
|
||||
$(am__append_88) $(am__append_91) $(am__append_94) \
|
||||
$(am__append_97) $(am__append_100) $(am__append_101)
|
||||
$(am__append_58) $(am__append_78) $(am__append_81) \
|
||||
$(am__append_83) $(am__append_86) $(am__append_89) \
|
||||
$(am__append_92) $(am__append_95) $(am__append_98) \
|
||||
$(am__append_101) $(am__append_104) $(am__append_105)
|
||||
|
||||
# We will add to these later, for each individual test. Note
|
||||
# that we add each test under check_SCRIPTS or check_PROGRAMS;
|
||||
@ -2787,17 +2790,19 @@ MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \
|
||||
check_SCRIPTS = $(am__append_2) $(am__append_19) $(am__append_23) \
|
||||
$(am__append_29) $(am__append_35) $(am__append_42) \
|
||||
$(am__append_45) $(am__append_49) $(am__append_53) \
|
||||
$(am__append_56) $(am__append_72) $(am__append_75) \
|
||||
$(am__append_80) $(am__append_83) $(am__append_86) \
|
||||
$(am__append_89) $(am__append_92) $(am__append_95) \
|
||||
$(am__append_98) $(am__append_102)
|
||||
$(am__append_56) $(am__append_62) $(am__append_73) \
|
||||
$(am__append_76) $(am__append_79) $(am__append_84) \
|
||||
$(am__append_87) $(am__append_90) $(am__append_93) \
|
||||
$(am__append_96) $(am__append_99) $(am__append_102) \
|
||||
$(am__append_106)
|
||||
check_DATA = $(am__append_3) $(am__append_20) $(am__append_24) \
|
||||
$(am__append_30) $(am__append_36) $(am__append_43) \
|
||||
$(am__append_46) $(am__append_50) $(am__append_54) \
|
||||
$(am__append_57) $(am__append_73) $(am__append_76) \
|
||||
$(am__append_81) $(am__append_84) $(am__append_87) \
|
||||
$(am__append_90) $(am__append_93) $(am__append_96) \
|
||||
$(am__append_99) $(am__append_103)
|
||||
$(am__append_57) $(am__append_63) $(am__append_74) \
|
||||
$(am__append_77) $(am__append_80) $(am__append_85) \
|
||||
$(am__append_88) $(am__append_91) $(am__append_94) \
|
||||
$(am__append_97) $(am__append_100) $(am__append_103) \
|
||||
$(am__append_107)
|
||||
BUILT_SOURCES = $(am__append_40)
|
||||
TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
|
||||
|
||||
@ -5191,6 +5196,8 @@ retain_symbols_file_test.sh.log: retain_symbols_file_test.sh
|
||||
@p='retain_symbols_file_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
no_version_test.sh.log: no_version_test.sh
|
||||
@p='no_version_test.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
ifuncmod1.sh.log: ifuncmod1.sh
|
||||
@p='ifuncmod1.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
strong_ref_weak_def.sh.log: strong_ref_weak_def.sh
|
||||
@p='strong_ref_weak_def.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
|
||||
dyn_weak_ref.sh.log: dyn_weak_ref.sh
|
||||
@ -6996,6 +7003,8 @@ uninstall-am:
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -fPIE -o $@ $<
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmod1.so.stderr: ifuncmod1.so
|
||||
@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(TEST_READELF) -s $< > /dev/null 2> $@
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1pic: ifuncmain1pic.o ifuncmod1.so gcctestdir/ld
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ $(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,.
|
||||
@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@ifuncmain1vispic.o: ifuncmain1vis.c
|
||||
|
29
gold/testsuite/ifuncmod1.sh
Executable file
29
gold/testsuite/ifuncmod1.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# ifuncmod1.sh -- check that local IFUNC symbol is grouped with locals.
|
||||
|
||||
# Copyright (C) 2016 Free Software Foundation, Inc.
|
||||
# Written by Cary Coutant <ccoutant@gmail.com>.
|
||||
|
||||
# This file is part of gold.
|
||||
|
||||
# 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.
|
||||
|
||||
if grep "Warning:" ifuncmod1.so.stderr
|
||||
then exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user