From: Eric Botcazou Date: Wed, 22 Apr 2009 22:03:39 +0000 (+0000) Subject: utils.c (create_var_decl_1): Do not emit debug info for an external constant whose... X-Git-Tag: releases/gcc-4.3.4~213 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02bf49319599425d8ac3e99e4913bb30cbd2a4d1;p=thirdparty%2Fgcc.git utils.c (create_var_decl_1): Do not emit debug info for an external constant whose initializer is not absolute. * utils.c (create_var_decl_1): Do not emit debug info for an external constant whose initializer is not absolute. From-SVN: r146623 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 2f303f777bd6..ecaae56eed58 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2009-04-22 Eric Botcazou + + * utils.c (create_var_decl_1): Do not emit debug info for an external + constant whose initializer is not absolute. + 2009-03-31 Eric Botcazou * system-linux-alpha.ads (Functions_Return_By_DSP): Remove. diff --git a/gcc/ada/utils.c b/gcc/ada/utils.c index 5caf5666dffe..2d4b90a873d3 100644 --- a/gcc/ada/utils.c +++ b/gcc/ada/utils.c @@ -1455,6 +1455,15 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init, TREE_STATIC (var_decl) = public_flag || (global_bindings_p () ? !extern_flag : static_flag); + /* For an external constant whose initializer is not absolute, do not emit + debug info. In DWARF this would mean a global relocation in a read-only + section which runs afoul of the PE-COFF runtime relocation mechanism. */ + if (extern_flag + && constant_p + && initializer_constant_valid_p (var_init, TREE_TYPE (var_init)) + != null_pointer_node) + DECL_IGNORED_P (var_decl) = 1; + if (asm_name && VAR_OR_FUNCTION_DECL_P (var_decl)) SET_DECL_ASSEMBLER_NAME (var_decl, asm_name);