[LLVMdev] load widening conflicts with AddressSanitizer
Criswell, John T
criswell at illinois.edu
Wed Dec 28 12:40:34 PST 2011
Dear All,
I think adding metadata and expecting transforms to repect it is a bad idea. It is just too easy for someone who does not know about the metadata to add a transform that ignores it.
As for SAFECode, I think we have one of several options for handling load-widening. The most obvious one is to have a pass that just boosts the allocation size of any alloca with an align 16 attribute; this pass would only be scheduled to execute when the other SAFECode instrumentation passes are scheduled to execute. Another option would be to just disable the load-widening transform or to use a specialized version that only widens when the allocation size does not cause a problem.
-- John T.
________________________________
From: llvmdev-bounces at cs.uiuc.edu [llvmdev-bounces at cs.uiuc.edu] on behalf of Kostya Serebryany [kcc at google.com]
Sent: Tuesday, December 27, 2011 12:57 PM
To: Chris Lattner
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] load widening conflicts with AddressSanitizer
On Mon, Dec 19, 2011 at 4:27 PM, Chris Lattner <clattner at apple.com<mailto:clattner at apple.com>> wrote:
On Dec 17, 2011, at 7:40 AM, Rafael Ávila de Espíndola wrote:
> On 16/12/11 08:46 PM, Chris Lattner wrote:
>> I'm not opposed to disabling this transformation when asan is on, we just need a clean way to express this in the IR.
>
> Could clang be aware of asan being on and introduce a "please don't
> widen" metadata on local variable accesses?
Yes, "we just need a clean way to express this in the IR."
LLVM can't have a global "bool ASANIsOn;" that the optimizers listen to.
A global is bad.
What about a metadata attached to a Function saying that transformations which will read out of bounds (even "safely") are illegal?
asan and SAFEcode will add this metadata, optimizers will listen to it.
Any other suggestion?
--kcc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111228/f11f0dd4/attachment.html>
More information about the llvm-dev
mailing list