|
|
|
Re: buffer overflow check bug | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
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.
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);
- xi
--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Newbies FAQ] [Kernel List] [Site Home] [IETF Annouce] [DCCP] [Netdev] [Networking] [Security] [Bugtraq] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Linux SCSI] [DDR & Rambus] [Trinity Fuzzer Tool]