Powered by Linux
Re: buffer overflow check bug — Semantic Matching Tool

Re: buffer overflow check bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 19, 2012 at 04:37:20PM -0400, Xi Wang wrote:
> On Jun 18, 2012, at 3:53 PM, Dan Carpenter wrote:
> 
> > Gar...  I have no idea.  That seems like an issue in sparse.
> > 
> > Does anyone know why MOD_NORETURN gets set for:
> > extern void my_exit(const char*, ...) __attribute__ ((__noreturn__));
> > 
> > but not for:
> > extern __attribute__ ((__noreturn__)) void my_exit(const char*, ...);
> > 
> > GCC seems to accept both formats.
> 
> Which version of sparse are you using?  Everything looks good to me here.

I'm on sparse 0.4.4.  Which version are you on?

> 
>   extern void my_exit(const char*, ...) __attribute__ ((__noreturn__));
>   extern __attribute__ ((__noreturn__)) void another_exit(const char*, ...);
>   void foo(void) { my_exit(""); }
>   void bar(void) { another_exit(""); }
> 
> My backend "splay" emits:
> 
>   declare void @my_exit(i8*, ...) noreturn
>   declare void @another_exit(i8*, ...) noreturn
>   ...
> 
> The noreturn attribute is set simply by:
> 
>   if (sym->ctype.modifiers & MOD_NORETURN)
>       LLVMAddFunctionAttr(func, LLVMNoReturnAttribute);

Yep.  I use the same test, but sym->ctype.modifiers is not set for
me. The debug printf I added in handle_attributes() should have
printed.

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe smatch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux