[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-sparse
Subject: Re: buffer overflow check bug
From: Dan Carpenter <dan.carpenter () oracle ! com>
Date: 2012-06-22 12:31:54
Message-ID: 20120622123154.GA5333 () mwanda
[Download RAW message or body]
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 linux-sparse" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic