Fix internal error when linking an archive library with no preceding objects.
gold/ PR gold/18696 * archive.cc (Library_base::should_include_member): Don't use entry point for relocatable links, or if target is not yet valid. * parameters.cc (Parameters::entry): Check target_valid().
This commit is contained in:
parent
af1b22f300
commit
cb5cf5e26e
|
@ -1,3 +1,10 @@
|
|||
2015-07-21 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/18696
|
||||
* archive.cc (Library_base::should_include_member): Don't use entry
|
||||
point for relocatable links, or if target is not yet valid.
|
||||
* parameters.cc (Parameters::entry): Check target_valid().
|
||||
|
||||
2015-07-20 Han Shen <shenhan@google.com>
|
||||
|
||||
Optimize erratum 843419 fix.
|
||||
|
|
|
@ -138,11 +138,15 @@ Library_base::should_include_member(Symbol_table* symtab, Layout* layout,
|
|||
return Library_base::SHOULD_INCLUDE_YES;
|
||||
}
|
||||
|
||||
if (strcmp(sym_name, parameters->entry()) == 0)
|
||||
if (!parameters->options().relocatable())
|
||||
{
|
||||
*why = "entry symbol ";
|
||||
*why += sym_name;
|
||||
return Library_base::SHOULD_INCLUDE_YES;
|
||||
const char* entry_sym = parameters->entry();
|
||||
if (entry_sym != NULL && strcmp(sym_name, entry_sym) == 0)
|
||||
{
|
||||
*why = "entry symbol ";
|
||||
*why += sym_name;
|
||||
return Library_base::SHOULD_INCLUDE_YES;
|
||||
}
|
||||
}
|
||||
|
||||
return Library_base::SHOULD_INCLUDE_UNKNOWN;
|
||||
|
|
|
@ -237,7 +237,7 @@ const char*
|
|||
Parameters::entry() const
|
||||
{
|
||||
const char* ret = this->options().entry();
|
||||
if (ret == NULL)
|
||||
if (ret == NULL && parameters->target_valid())
|
||||
ret = parameters->target().entry_symbol_name();
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue