re PR lto/79061 ([LTO][ASAN] LTO plus ASAN fails with "AddressSanitizer: initialization-order-fiasco")
PR lto/79061 gcc/ * asan.c (get_translation_unit_decl): New function. (asan_add_global): Extract modules file name from globals TRANSLATION_UNIT_DECL in lto mode. * tree.c (build_translation_unit_decl): Add source location for newly built TRANSLATION_UNIT_DECL. gcc/lto/ * lto.c (lto_read_decls): accept location cache for TRANSLATION_UNIT_DECL. gcc/testsuite/ * gcc.dg/cpp/mi1.c: Adjust testcase. * gcc.dg/pch/cpp-3.c: Likewise. From-SVN: r244581
This commit is contained in:
parent
0c6299bbfd
commit
5807fb918d
@ -1,3 +1,12 @@
|
||||
2017-01-18 Maxim Ostapenko <m.ostapenko@samsung.com>
|
||||
|
||||
PR lto/79061
|
||||
* asan.c (get_translation_unit_decl): New function.
|
||||
(asan_add_global): Extract modules file name from globals
|
||||
TRANSLATION_UNIT_DECL in lto mode.
|
||||
* tree.c (build_translation_unit_decl): Add source location for newly
|
||||
built TRANSLATION_UNIT_DECL.
|
||||
|
||||
2017-01-18 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* doc/install.texi: Allow default for --with-target-bdw-gc-include.
|
||||
|
25
gcc/asan.c
25
gcc/asan.c
@ -2372,6 +2372,22 @@ asan_needs_odr_indicator_p (tree decl)
|
||||
&& TREE_PUBLIC (decl));
|
||||
}
|
||||
|
||||
/* For given DECL return its corresponding TRANSLATION_UNIT_DECL. */
|
||||
|
||||
static const_tree
|
||||
get_translation_unit_decl (tree decl)
|
||||
{
|
||||
const_tree context = decl;
|
||||
while (context && TREE_CODE (context) != TRANSLATION_UNIT_DECL)
|
||||
{
|
||||
if (TREE_CODE (context) == BLOCK)
|
||||
context = BLOCK_SUPERCONTEXT (context);
|
||||
else
|
||||
context = get_containing_scope (context);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
/* Append description of a single global DECL into vector V.
|
||||
TYPE is __asan_global struct type as returned by asan_global_struct. */
|
||||
|
||||
@ -2391,7 +2407,14 @@ asan_add_global (tree decl, tree type, vec<constructor_elt, va_gc> *v)
|
||||
pp_string (&asan_pp, "<unknown>");
|
||||
str_cst = asan_pp_string (&asan_pp);
|
||||
|
||||
pp_string (&module_name_pp, main_input_filename);
|
||||
const char *filename = main_input_filename;
|
||||
if (in_lto_p)
|
||||
{
|
||||
const_tree translation_unit_decl = get_translation_unit_decl (decl);
|
||||
if (translation_unit_decl)
|
||||
filename = DECL_SOURCE_FILE (translation_unit_decl);
|
||||
}
|
||||
pp_string (&module_name_pp, filename);
|
||||
module_name_cst = asan_pp_string (&module_name_pp);
|
||||
|
||||
if (asan_needs_local_alias (decl))
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-01-18 Maxim Ostapenko <m.ostapenko@samsung.com>
|
||||
|
||||
PR lto/79061
|
||||
* lto.c (lto_read_decls): accept location cache for
|
||||
TRANSLATION_UNIT_DECL.
|
||||
|
||||
2017-01-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/50199
|
||||
|
@ -1707,7 +1707,13 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data,
|
||||
&& (TREE_CODE (first) == IDENTIFIER_NODE
|
||||
|| TREE_CODE (first) == INTEGER_CST
|
||||
|| TREE_CODE (first) == TRANSLATION_UNIT_DECL))
|
||||
continue;
|
||||
{
|
||||
/* For TRANSLATION_UNIT_DECL we need to accept location cache now
|
||||
to avoid possible reverting during following unify_scc call. */
|
||||
if (TREE_CODE (first) == TRANSLATION_UNIT_DECL)
|
||||
data_in->location_cache.accept_location_cache ();
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Try to unify the SCC with already existing ones. */
|
||||
if (!flag_ltrans
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-01-18 Maxim Ostapenko <m.ostapenko@samsung.com>
|
||||
|
||||
PR lto/79061
|
||||
* gcc.dg/cpp/mi1.c: Adjust testcase.
|
||||
* gcc.dg/pch/cpp-3.c: Likewise.
|
||||
|
||||
2016-01-18 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/p8vector-builtin-8.c: Add new form for
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
/* { dg-do compile }
|
||||
{ dg-options "-H" }
|
||||
{ dg-message "mi1c\.h\n\[^\n\]*mi1cc\.h\n\[^\n\]*mi1nd\.h\n\[^\n\]*mi1ndp\.h\n\[^\n\]*mi1x\.h" "redundant include check" { target *-*-* } 0 } */
|
||||
{ dg-message "mi1c\.h\n\[^\n\]*mi1cc\.h\n\[^\n\]*mi1nd\.h\n\[^\n\]*mi1ndp\.h\n\[^\n\]*mi1x\.h\n\[^\n\]*mi1\.c" "redundant include check" { target *-*-* } 0 } */
|
||||
|
||||
#include "mi1c.h"
|
||||
#include "mi1c.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* PR preprocessor/36649 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-H -I." } */
|
||||
/* { dg-message "cpp-3.h\[^\n\]*(\n\[^\n\]*cpp-3.c)?\n\[^\n\]*cpp-3a.h\n\[^\n\]*cpp-3b.h" "" { target *-*-* } 0 } */
|
||||
/* { dg-message "cpp-3.h\[^\n\]*(\n\[^\n\]*cpp-3.c)?\n\[^\n\]*cpp-3a.h\n\[^\n\]*cpp-3b.h\n\[^\n\]*cpp-3.c" "" { target *-*-* } 0 } */
|
||||
|
||||
#include "cpp-3.h"
|
||||
#include "cpp-3a.h"
|
||||
|
@ -4758,7 +4758,10 @@ vec<tree, va_gc> *all_translation_units;
|
||||
tree
|
||||
build_translation_unit_decl (tree name)
|
||||
{
|
||||
tree tu = build_decl (UNKNOWN_LOCATION, TRANSLATION_UNIT_DECL,
|
||||
linemap_add (line_table, LC_ENTER, false, main_input_filename, 1);
|
||||
location_t loc = linemap_line_start (line_table, 1, 0);
|
||||
linemap_add (line_table, LC_LEAVE, false, NULL, 0);
|
||||
tree tu = build_decl (loc, TRANSLATION_UNIT_DECL,
|
||||
name, NULL_TREE);
|
||||
TRANSLATION_UNIT_LANGUAGE (tu) = lang_hooks.name;
|
||||
vec_safe_push (all_translation_units, tu);
|
||||
|
Loading…
Reference in New Issue
Block a user