svn commit: r243665 - head/sbin/dump

Erik Cederstrand erik at cederstrand.dk
Fri Nov 30 09:30:31 UTC 2012


Den 29/11/2012 kl. 13.01 skrev Konstantin Belousov <kostikbel at gmail.com>:

> On Thu, Nov 29, 2012 at 05:16:50AM +0000, Eitan Adler wrote:
>> Author: eadler
>> Date: Thu Nov 29 05:16:50 2012
>> New Revision: 243665
>> URL: http://svnweb.freebsd.org/changeset/base/243665
>> 
>> Log:
>>  Mark non-returning function as such
>> 
>>  PR:		bin/172978
>>  Approved by:	cperciva
>>  MFC after:	3 days
>> 
>> Modified:
>>  head/sbin/dump/dump.h
>> 
>> Modified: head/sbin/dump/dump.h
>> ==============================================================================
>> --- head/sbin/dump/dump.h	Thu Nov 29 03:48:39 2012	(r243664)
>> +++ head/sbin/dump/dump.h	Thu Nov 29 05:16:50 2012	(r243665)
>> @@ -121,7 +121,7 @@ void	trewind(void);
>> void	writerec(char *dp, int isspcl);
>> 
>> void	Exit(int status) __dead2;
>> -void	dumpabort(int signo);
>> +void	dumpabort(int signo) __dead2;
>> void	dump_getfstab(void);
>> 
>> char	*rawname(char *cp);
> What is the goal of this change ?
> 
> It is arguably backward. There is absolutely no use to mark signal handler
> as __dead2, and all other uses do not benefit from the redundand declaration.

I submitted this patch because it fixes static analysis warnings. Compilation units that contain the header but not the implementation need this to reason about the code.

As I see it, the __dead2 is part of the function definition, just like 'void' and 'int signo'. Actually, before the patch, return type 'void' was a lie, because the function never returns.

> Also, being quite removed from the function definition, there is a chance
> that some future modification would make the attribute a lie.

That is not any different than some future modification changing the return type to 'int', which the compiler would also warn about.

Thanks,
Erik


More information about the svn-src-head mailing list