On Jan 20, 2012, at 5:36 PM, Jean-Daniel Dupas wrote: > > Le 21 janv. 2012 à 02:07, Eli Friedman a écrit : > >> On Fri, Jan 20, 2012 at 5:03 PM, Jean-Daniel Dupas >> <[email protected]> wrote: >>> >>> Le 20 janv. 2012 à 23:44, Eli Friedman a écrit : >>> >>>> On Fri, Jan 20, 2012 at 2:09 PM, Jean-Daniel Dupas >>>> <[email protected]> wrote: >>>>> Hi, >>>>> >>>>> Actually, clang automatically add a "format(printf)" attribute to the >>>>> declarations of NSLog/NSLogv functions. >>>>> This is actually wrong, as NSLog expect an NSString format attribute. It >>>>> is not really an issue as the code that checks the format string is the >>>>> same for printf and NSString, >>>>> but actually I'm working on adding support for CFString format, and >>>>> having the wrong tag on NSLog functions prevent some code factoring >>>>> between CFString and NSString format checking. >>>>> >>>>> Now that NSString format is properly checked, this trick is no longer >>>>> needed, so I'd like to stop forcing the type to printf, and use NSString >>>>> instead. >>>>> >>>>> This patch also reduce the scope of this hack to objc code only (so if by >>>>> any change someone write a C library with an NSLog function, clang will >>>>> not try to tag it with an NSString format attribute). >>>> >>>> If you're going to be in the area anyway, can you get rid of the hack >>>> altogether and add definitions of these functions into Builtins.def? >>>> These functions shouldn't need any special logic. >>>> >>>> -Eli >>> >>> >>> I have nothing against completely removing this hack, especially as these >>> functions are properly declared in the Foundation headers, >>> but is it worth putting a definition in Builtins.def ? Unlike other objc >>> functions defined in Builtins.def, NSLog functions are not part of the >>> runtime. >> >> Strictly speaking, it isn't, but we're already pretending it is anyway >> by marking it with a format attribute, no? >> >> -Eli > > > Yes, we were doing it. My question was more "Is there any good reason to > continue to pretend it" ? > I just don't know why they where hard-coded in the first place.
I don't remember why it was done this way, but Eli's suggestion is the right approach. > > Anyway, I will have a look at what should be done to add them in > Builtins.def. It will require a little work as the string format used to > defined the attributes does not support 'NSString' format out of the box. > It supports only printf and scanf currently. Yes, it should be enhanced to support the NSString format. Thanks for doing this. _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
