From: Fangrui Song Date: Fri, 14 May 2021 22:51:16 +0000 (-0700) Subject: gold: Add -Bno-symbolic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=823241a27c03235229ff0b9e12a141fc35007dec;p=binutils-gdb.git gold: Add -Bno-symbolic gold/ 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. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index 82dae337bb3..c68f282e9bc 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,12 @@ +2021-05-04 Fangrui Song + + 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 PR gold/27625 diff --git a/gold/options.cc b/gold/options.cc index fdf0a174797..1818e5dc345 100644 --- a/gold/options.cc +++ b/gold/options.cc @@ -340,6 +340,27 @@ General_options::parse_V(const char*, const char*, Command_line*) printf(" %s\n", *p); } +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 927e0734bba..757ebf18fec 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.