Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Nov 2012 10:30:25 +0100
From:      Erik Cederstrand <erik@cederstrand.dk>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Eitan Adler <eadler@freebsd.org>
Subject:   Re: svn commit: r243665 - head/sbin/dump
Message-ID:  <9E5035D8-506F-4A18-9511-BFA0511ACE10@cederstrand.dk>
In-Reply-To: <20121129120147.GE3013@kib.kiev.ua>
References:  <201211290516.qAT5GoT5098709@svn.freebsd.org> <20121129120147.GE3013@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Den 29/11/2012 kl. 13.01 skrev Konstantin Belousov =
<kostikbel@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
>>=20
>> Log:
>>  Mark non-returning function as such
>>=20
>>  PR:		bin/172978
>>  Approved by:	cperciva
>>  MFC after:	3 days
>>=20
>> Modified:
>>  head/sbin/dump/dump.h
>>=20
>> Modified: head/sbin/dump/dump.h
>> =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
>> --- 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);
>>=20
>> void	Exit(int status) __dead2;
>> -void	dumpabort(int signo);
>> +void	dumpabort(int signo) __dead2;
>> void	dump_getfstab(void);
>>=20
>> char	*rawname(char *cp);
> What is the goal of this change ?
>=20
> 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=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9E5035D8-506F-4A18-9511-BFA0511ACE10>