Add -h/-soname option.
This commit is contained in:
parent
1bedcac52a
commit
fced7afdce
3 changed files with 21 additions and 0 deletions
|
@ -1713,6 +1713,13 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
|
||||||
odyn->add_string(elfcpp::DT_NEEDED, (*p)->soname());
|
odyn->add_string(elfcpp::DT_NEEDED, (*p)->soname());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parameters->output_is_shared())
|
||||||
|
{
|
||||||
|
const char* soname = this->options_.soname();
|
||||||
|
if (soname != NULL)
|
||||||
|
odyn->add_string(elfcpp::DT_SONAME, soname);
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: Support --init and --fini.
|
// FIXME: Support --init and --fini.
|
||||||
Symbol* sym = symtab->lookup("_init");
|
Symbol* sym = symtab->lookup("_init");
|
||||||
if (sym != NULL && sym->is_defined() && !sym->is_from_dynobj())
|
if (sym != NULL && sym->is_defined() && !sym->is_from_dynobj())
|
||||||
|
|
|
@ -399,6 +399,9 @@ options::Command_line_options::options[] =
|
||||||
NULL, TWO_DASHES, &General_options::set_export_dynamic),
|
NULL, TWO_DASHES, &General_options::set_export_dynamic),
|
||||||
GENERAL_NOARG('\0', "eh-frame-hdr", N_("Create exception frame header"),
|
GENERAL_NOARG('\0', "eh-frame-hdr", N_("Create exception frame header"),
|
||||||
NULL, TWO_DASHES, &General_options::set_create_eh_frame_hdr),
|
NULL, TWO_DASHES, &General_options::set_create_eh_frame_hdr),
|
||||||
|
GENERAL_ARG('h', "soname", N_("Set shared library name"),
|
||||||
|
N_("-h FILENAME, --soname FILENAME"), ONE_DASH,
|
||||||
|
&General_options::set_soname),
|
||||||
GENERAL_ARG('I', "dynamic-linker", N_("Set dynamic linker path"),
|
GENERAL_ARG('I', "dynamic-linker", N_("Set dynamic linker path"),
|
||||||
N_("-I PROGRAM, --dynamic-linker PROGRAM"), TWO_DASHES,
|
N_("-I PROGRAM, --dynamic-linker PROGRAM"), TWO_DASHES,
|
||||||
&General_options::set_dynamic_linker),
|
&General_options::set_dynamic_linker),
|
||||||
|
@ -528,6 +531,7 @@ const int options::Command_line_options::debug_options_size =
|
||||||
|
|
||||||
General_options::General_options()
|
General_options::General_options()
|
||||||
: export_dynamic_(false),
|
: export_dynamic_(false),
|
||||||
|
soname_(NULL),
|
||||||
dynamic_linker_(NULL),
|
dynamic_linker_(NULL),
|
||||||
search_path_(),
|
search_path_(),
|
||||||
optimization_level_(0),
|
optimization_level_(0),
|
||||||
|
|
|
@ -113,6 +113,11 @@ class General_options
|
||||||
export_dynamic() const
|
export_dynamic() const
|
||||||
{ return this->export_dynamic_; }
|
{ return this->export_dynamic_; }
|
||||||
|
|
||||||
|
// -h: shared library name.
|
||||||
|
const char*
|
||||||
|
soname() const
|
||||||
|
{ return this->soname_; }
|
||||||
|
|
||||||
// -I: dynamic linker name.
|
// -I: dynamic linker name.
|
||||||
const char*
|
const char*
|
||||||
dynamic_linker() const
|
dynamic_linker() const
|
||||||
|
@ -310,6 +315,10 @@ class General_options
|
||||||
set_export_dynamic()
|
set_export_dynamic()
|
||||||
{ this->export_dynamic_ = true; }
|
{ this->export_dynamic_ = true; }
|
||||||
|
|
||||||
|
void
|
||||||
|
set_soname(const char* arg)
|
||||||
|
{ this->soname_ = arg; }
|
||||||
|
|
||||||
void
|
void
|
||||||
set_dynamic_linker(const char* arg)
|
set_dynamic_linker(const char* arg)
|
||||||
{ this->dynamic_linker_ = arg; }
|
{ this->dynamic_linker_ = arg; }
|
||||||
|
@ -501,6 +510,7 @@ class General_options
|
||||||
add_sysroot();
|
add_sysroot();
|
||||||
|
|
||||||
bool export_dynamic_;
|
bool export_dynamic_;
|
||||||
|
const char* soname_;
|
||||||
const char* dynamic_linker_;
|
const char* dynamic_linker_;
|
||||||
Dir_list search_path_;
|
Dir_list search_path_;
|
||||||
int optimization_level_;
|
int optimization_level_;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue