aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog9
-rw-r--r--gold/options.cc21
-rw-r--r--gold/options.h34
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.