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