Commit 818424b2 by Ian Lance Taylor Committed by Ian Lance Taylor

re PR go/64595 (go programs abort when debug info is stripped)

	PR go/64595
	* go-lang.c (go_langhook_init_options_struct): Set default
	debug_info_level.
	(go_langhook_post_options): If debug_info_level is still the
	default, make sure write_symbols is set.
	* gccgo.texi (Invoking gccgo): Document that -g1 is the default.

From-SVN: r220064
parent af955a52
2015-01-23 Ian Lance Taylor <iant@google.com>
PR go/64595
* go-lang.c (go_langhook_init_options_struct): Set default
debug_info_level.
(go_langhook_post_options): If debug_info_level is still the
default, make sure write_symbols is set.
* gccgo.texi (Invoking gccgo): Document that -g1 is the default.
2015-01-16 Richard Henderson <rth@redhat.com> 2015-01-16 Richard Henderson <rth@redhat.com>
* go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument. * go-gcc.cc (Gcc_backend::call_expression): Add chain_expr argument.
......
...@@ -223,6 +223,18 @@ may be used. Or the checks may be removed via ...@@ -223,6 +223,18 @@ may be used. Or the checks may be removed via
@option{-fno-go-check-divide-overflow}. This option is currently on @option{-fno-go-check-divide-overflow}. This option is currently on
by default, but in the future may be off by default on systems that do by default, but in the future may be off by default on systems that do
not require it. not require it.
@item -g
@cindex @option{-g for gccgo}
This is the standard @command{gcc} option (@pxref{Debugging Options, ,
Debugging Options, gcc, Using the GNU Compiler Collection (GCC)}). It
is mentioned here because by default @command{gccgo} turns on
debugging information generation with the equivalent of the standard
option @option{-g1}. This is because Go programs require debugging
information to be available in order to get backtrace information. An
explicit @option{-g0} may be used to disable the generation of
debugging information, in which case certain standard library
functions, such as @code{runtime.Callers}, will not operate correctly.
@end table @end table
@c man end @c man end
......
...@@ -171,6 +171,12 @@ go_langhook_init_options_struct (struct gcc_options *opts) ...@@ -171,6 +171,12 @@ go_langhook_init_options_struct (struct gcc_options *opts)
/* Exceptions are used to handle recovering from panics. */ /* Exceptions are used to handle recovering from panics. */
opts->x_flag_exceptions = 1; opts->x_flag_exceptions = 1;
opts->x_flag_non_call_exceptions = 1; opts->x_flag_non_call_exceptions = 1;
/* Go programs expect runtime.Callers to work, and that uses
libbacktrace that uses debug info. Set the debug info level to 1
by default. In post_options we will set the debug type if the
debug info level was not set back to 0 on the command line. */
opts->x_debug_info_level = DINFO_LEVEL_TERSE;
} }
/* Infrastructure for a vector of char * pointers. */ /* Infrastructure for a vector of char * pointers. */
...@@ -289,6 +295,12 @@ go_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED) ...@@ -289,6 +295,12 @@ go_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED)
if (!global_options_set.x_flag_optimize_sibling_calls) if (!global_options_set.x_flag_optimize_sibling_calls)
global_options.x_flag_optimize_sibling_calls = 0; global_options.x_flag_optimize_sibling_calls = 0;
/* If the debug info level is still 1, as set in init_options, make
sure that some debugging type is selected. */
if (global_options.x_debug_info_level == DINFO_LEVEL_TERSE
&& global_options.x_write_symbols == NO_DEBUG)
global_options.x_write_symbols = PREFERRED_DEBUGGING_TYPE;
/* Returning false means that the backend should be used. */ /* Returning false means that the backend should be used. */
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment