On Mon, Mar 19, 2018 at 06:44:39PM +0300, Maxim Ostapenko wrote:
> as noted in bugzilla, ASan inserts redzones forĀ `.LDFCM*' variables and
> breaks internal ABI between GCC and libstdc++ because libstdc++ tries to
> obtain a pointer to `typeinfo for (anonymous namespace)::SomeRandomType'
> from a constant offset from `.LDFCM*' labels and hits these redzones. This
> can be trivially fixed by not sanitizing `.LDFCM*' variables (and other
> debug variables) at all.
I don't like very much adding an extra argument for such so frequently used
function to handle a corner case.
Wouldn't just:
/* Don't instrument this decl with -fsanitize=*address. */
unsigned int save_flag_sanitize = flag_sanitize;
flag_sanitize &= ~(SANITIZE_ADDRESS | SANITIZE_USER_ADDRESS
| SANITIZE_KERNEL_ADDRESS);
assemble_variable (decl, 1, 1, 1);
flag_sanitize = save_flag_sanitize;
DTRT?
Jakub