Address sanitization and PARROT_xxx macros

Andy Lester andy at petdance.com
Fri May 4 04:36:55 UTC 2012


rurban's change to src/gc/system.c breaks my GCC build, but I'm assuming that will be fixed soon.  Gotta break some eggs (and builds) to make an omelette.

Once that gets cleaned up, I think we need to hide some of the details of the address sanitization.  src/gc/system.c right now has some hardcoded stuff for address sanitization that looks like this:

#if defined(__clang__) && defined(__has_feature) && __has_feature(address_sanitizer)
__attribute__((no_address_safety_analysis))
#endif

I'm asking that we put that feature of "no_address_safety_analysis" in a macro, a la PARROT_PURE_FUNCTION and the like in include/parrot/compiler.h.  We might call it PARROT_NO_ADDRESS_SAFETY.

This has two benefits: It lets us keep the details hidden behind a macro, AND it lets the macro behave differently based on what compiler/tool is running.  Rather than hardcoding the attributes for AddressSanitizer (http://clang.llvm.org/docs/AddressSanitizer.html), we will have the flexibility to have the macro implement the code for other sanitization systems, like Electric Fence or who knows what else.

The setup for Configure.pl + include/parrot/compiler.h takes going through some hoops, but it's good and solid.  I'd be glad to help out on this however I can.

Thanks,
xoxo,
Andy


--
Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance



More information about the parrot-dev mailing list