strip_debug() const
{ return this->strip_ == STRIP_ALL || this->strip_ == STRIP_DEBUG; }
+ // -Sgdb: strip only debugging information that's not used by
+ // gdb (at least, for gdb versions <= 6.7).
+ bool
+ strip_debug_gdb() const
+ { return this->strip_debug() || this->strip_ == STRIP_DEBUG_UNUSED_BY_GDB; }
+
+ // --allow-shlib-undefined: do not warn about unresolved symbols in
+ // --shared libraries.
+ bool
+ allow_shlib_undefined() const
+ { return this->allow_shlib_undefined_; }
+
// -Bsymbolic: bind defined symbols locally.
bool
symbolic() const
{ return this->symbolic_; }
+ // --demangle: demangle C++ symbols in our log messages.
+ bool
+ demangle() const
+ { return this->demangle_; }
+
// --detect-odr-violations: Whether to search for One Defn Rule violations.
bool
detect_odr_violations() const
// Strip all symbols.
STRIP_ALL,
// Strip debugging information.
- STRIP_DEBUG
+ STRIP_DEBUG,
+ // Strip debugging information that's not used by gdb (at least <= 6.7)
+ STRIP_DEBUG_UNUSED_BY_GDB
};
// Whether to mark the stack as executable.
set_strip_debug()
{ this->strip_ = STRIP_DEBUG; }
+ void
+ set_strip_debug_gdb()
+ { this->strip_ = STRIP_DEBUG_UNUSED_BY_GDB; }
+
+ void
+ set_allow_shlib_undefined()
+ { this->allow_shlib_undefined_ = true; }
+
+ void
+ set_no_allow_shlib_undefined()
+ { this->allow_shlib_undefined_ = false; }
+
void
set_symbolic()
{ this->symbolic_ = true; }
+ void
+ set_demangle()
+ { this->demangle_ = true; }
+
+ void
+ clear_demangle()
+ { this->demangle_ = false; }
+
void
set_detect_odr_violations()
{ this->detect_odr_violations_ = true; }
const char* output_file_name_;
bool is_relocatable_;
Strip strip_;
+ bool allow_shlib_undefined_;
bool symbolic_;
+ bool demangle_;
bool detect_odr_violations_;
bool create_eh_frame_hdr_;
Dir_list rpath_;