From: Doug Kwan Date: Mon, 11 Jan 2010 07:39:36 +0000 (+0000) Subject: 2010-01-10 Doug Kwan X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e96c574bdc02a1bda4fc708ae5d2233e3385f0af;p=binutils-gdb.git 2010-01-10 Doug Kwan * options.h (DEFINE_var): Use parentheses around argument varname__ in macro body to avoid any unintended subsequent substitutions. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index ddf509088bf..dd5688cde95 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2010-01-10 Doug Kwan + + * options.h (DEFINE_var): Use parentheses around argument varname__ + in macro body to avoid any unintended subsequent substitutions. + 2010-01-10 Ian Lance Taylor * resolve.cc (Symbol_table::resolve): Add symbols to list of ODR diff --git a/gold/options.h b/gold/options.h index b22060afa16..ab4a9e6ccb0 100644 --- a/gold/options.h +++ b/gold/options.h @@ -244,12 +244,18 @@ struct Struct_special : public Struct_var // var() and set_var() as General_options methods. Arguments as are // for the constructor for One_option. param_type__ is the same as // type__ for built-in types, and "const type__ &" otherwise. +// +// When we define the linker command option "assert", the macro argument +// varname__ of DEFINE_var below will be replaced by "assert". On Mac OSX +// assert.h is included implicitly by one of the library headers we use. To +// avoid unintended macro substitution of "assert()", we need to enclose +// varname__ with parenthese. #define DEFINE_var(varname__, dashes__, shortname__, default_value__, \ default_value_as_string__, helpstring__, helparg__, \ optional_arg__, type__, param_type__, parse_fn__) \ public: \ param_type__ \ - varname__() const \ + (varname__)() const \ { return this->varname__##_.value; } \ \ bool \