diff options
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 9 | ||||
-rw-r--r-- | gold/options.cc | 21 | ||||
-rw-r--r-- | gold/options.h | 34 |
3 files changed, 60 insertions, 4 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 82dae33..c68f282 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,12 @@ +2021-05-04 Fangrui Song <maskray@google.com> + + PR 27834 + * options.h (General_options): Make -Bsymbolic and + -Bsymbolic-functions special and adjust the help messages. Add + enum Bsymbolic_kind and -Bno-symbolic. + * options.cc (General_options): Define parse_Bno_symbolic, + parse_Bsymbolic_functions, and parse_Bsymbolic. + 2021-03-30 Alan Modra <amodra@gmail.com> PR gold/27625 diff --git a/gold/options.cc b/gold/options.cc index fdf0a17..1818e5d 100644 --- a/gold/options.cc +++ b/gold/options.cc @@ -341,6 +341,27 @@ General_options::parse_V(const char*, const char*, Command_line*) } void +General_options::parse_Bno_symbolic(const char*, const char*, + Command_line*) +{ + this->bsymbolic_ = BSYMBOLIC_NONE; +} + +void +General_options::parse_Bsymbolic_functions(const char*, const char*, + Command_line*) +{ + this->bsymbolic_ = BSYMBOLIC_FUNCTIONS; +} + +void +General_options::parse_Bsymbolic(const char*, const char*, + Command_line*) +{ + this->bsymbolic_ = BSYMBOLIC_ALL; +} + +void General_options::parse_defsym(const char*, const char* arg, Command_line* cmdline) { diff --git a/gold/options.h b/gold/options.h index 927e073..757ebf1 100644 --- a/gold/options.h +++ b/gold/options.h @@ -747,11 +747,20 @@ class General_options DEFINE_bool(Bshareable, options::ONE_DASH, '\0', false, N_("Generate shared library (alias for -G/-shared)"), NULL); - DEFINE_bool(Bsymbolic, options::ONE_DASH, '\0', false, - N_("Bind defined symbols locally"), NULL); + DEFINE_special (Bno_symbolic, options::ONE_DASH, '\0', + N_ ("Don't bind default visibility defined symbols locally " + "for -shared (default)"), + NULL); - DEFINE_bool(Bsymbolic_functions, options::ONE_DASH, '\0', false, - N_("Bind defined function symbols locally"), NULL); + DEFINE_special (Bsymbolic_functions, options::ONE_DASH, '\0', + N_ ("Bind default visibility defined function symbols " + "locally for -shared"), + NULL); + + DEFINE_special ( + Bsymbolic, options::ONE_DASH, '\0', + N_ ("Bind default visibility defined symbols locally for -shared"), + NULL); // c @@ -1740,6 +1749,21 @@ class General_options endianness() const { return this->endianness_; } + enum Bsymbolic_kind + { + BSYMBOLIC_NONE, + BSYMBOLIC_FUNCTIONS, + BSYMBOLIC_ALL, + }; + + bool + Bsymbolic() const + { return this->bsymbolic_ == BSYMBOLIC_ALL; } + + bool + Bsymbolic_functions() const + { return this->bsymbolic_ == BSYMBOLIC_FUNCTIONS; } + bool discard_all() const { return this->discard_locals_ == DISCARD_ALL; } @@ -1873,6 +1897,8 @@ class General_options void copy_from_posdep_options(const Position_dependent_options&); + // Whether we bind default visibility defined symbols locally for -shared. + Bsymbolic_kind bsymbolic_; // Whether we printed version information. bool printed_version_; // Whether to mark the stack as executable. |