http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55617



--- Comment #48 from Alexander Potapenko <glider at google dot com> 2013-02-04 
10:11:32 UTC ---

(In reply to comment #40)

>   if (ctor_recA->position > ctor_recB->position)

>     return -1;

>   if (ctor_recA->position < ctor_recB->position)

>     return 1;

> 

> This is wrong.  I think we want this reversed as well.  We want original 
> order.

>  A testcase with two ctors, should in the end have the one with the lower

> original position first.

> 

> So, for me to approve it, I need to know if sorting just inside 1 translation

> unit is enough to make -fsanitize=address work.  I fear the answer to that is

> no, and without cross translation unit support, this is just bug pushing

> (obscuring a bug with a non-fix that just makes fixing it even harder).  I

> won't approve it if it is bug pushing.  If cross has to work, then cross 
> shared

> libraries I suspect has to work as well.



In LLVM this is done without cross-TU: we just emit a call to __asan_init per

TU and append it to the list of global constructors for the current module

(note that the constructors' priorities on Darwin do not work across modules at

all: http://llvm.org/bugs/show_bug.cgi?id=12556

Reply via email to