On Fri, Nov 22, 2013 at 04:38:58PM +0100, Dodji Seketeli wrote:
> Jakub Jelinek <ja...@redhat.com> writes:
> 
> > --- gcc/cgraph.h.jj 2013-11-13 18:32:52.000000000 +0100
> > +++ gcc/cgraph.h    2013-11-15 12:05:25.950985500 +0100
> > @@ -520,6 +520,11 @@ class GTY((tag ("SYMTAB_VARIABLE"))) var
> >  public:
> >    /* Set when variable is scheduled to be assembled.  */
> >    unsigned output : 1;
> > +  /* Set if the variable is dynamically initialized.  Not set for
> > +     function local statics or variables that can be initialized in
> > +     multiple compilation units (such as template static data members
> > +     that need construction).  */
> > +  unsigned asan_dynamically_initialized : 1;
> >  };
> 
> Maybe this could just be called dynamically_initialized?  It's just used
> by asan today, but it looks like an information that could be used more
> generally, independently from asan.

I used that name initially, but then changed it, because it actually is
quite asan specific.  E.g. template static data members are dynamically
initialized, but we intentionally don't set asan_dynamically_initialized
on those, because their initializer can be called from multiple CUs, there
is no CU that owns the variable.

> >        /* If we're using __cxa_atexit, register a function that calls the
> >      destructor for the object.  */
> > @@ -3498,6 +3507,9 @@ do_static_initialization_or_destruction
> >                          tf_warning_or_error);
> >    finish_if_stmt_cond (cond, init_if_stmt);
> >  
> > +  if (flag_sanitize & SANITIZE_ADDRESS)
> > +    finish_expr_stmt (asan_dynamic_init_call (/*after_p=*/false));
> > +

Will add the comments.

> Also, do we have some tests for this?  I am not sure how I'd write
> multi-tu dejagnu tests for this myself though ;-)

I've postponed tests for stage3, when I find spare time I'll try to
port libsanitizer tests that are applicable to gcc over to dejagnu,
plus perhaps add new tests as needed.

        Jakub

Reply via email to