From: Eric Botcazou Date: Wed, 22 Apr 2009 22:01:57 +0000 (+0000) Subject: utils.c (create_var_decl_1): Do not emit debug info for an external constant whose... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5225a1389d0058ac8f64153efa64c8e07ec13c9a;p=gcc.git utils.c (create_var_decl_1): Do not emit debug info for an external constant whose initializer is not absolute. * gcc-interface/utils.c (create_var_decl_1): Do not emit debug info for an external constant whose initializer is not absolute. From-SVN: r146620 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 7628abb53e2..acdc11cfc85 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,4 +1,9 @@ -2009-04-21 Taras Glek +2009-04-22 Eric Botcazou + + * gcc-interface/utils.c (create_var_decl_1): Do not emit debug info + for an external constant whose initializer is not absolute. + +2009-04-22 Taras Glek * gcc-interface/ada-tree.h: Update GTY annotations to new syntax. * gcc-interface/trans.c: Likewise. diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c index 088c83ad23d..6ea91389f68 100644 --- a/gcc/ada/gcc-interface/utils.c +++ b/gcc/ada/gcc-interface/utils.c @@ -1347,6 +1347,15 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init, TREE_STATIC (var_decl) = !extern_flag && (public_flag || static_flag || global_bindings_p ()); + /* 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);