Re: pg_upgrade's exec_prog() coding improvement

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>, Alvaro Herrera <alvherre@2ndquadrant.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2012-08-24T14:30:45Z
Lists: pgsql-hackers
On Fri, Aug 24, 2012 at 10:08:58AM -0400, Tom Lane wrote:
> Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> > On 23.08.2012 23:07, Alvaro Herrera wrote:
> >> One problem with this is that I get this warning:
> >> /pgsql/source/HEAD/contrib/pg_upgrade/exec.c: In function ‘s_exec_prog’:
> >> /pgsql/source/HEAD/contrib/pg_upgrade/exec.c:96:2: warning: function might be possible candidate for ‘gnu_printf’ format attribute [-Wmissing-format-attribute]
> >> /pgsql/source/HEAD/contrib/pg_upgrade/exec.c:96:2: warning: function might be possible candidate for ‘gnu_printf’ format attribute [-Wmissing-format-attribute]
> >> 
> >> I have no idea how to silence that.  Ideas?
> 
> > You can do what the warning suggests, and tell the compiler that 
> > exec_prog takes printf-like arguments.
> 
> exec_prog already has such decoration, and Alvaro's patch doesn't remove
> it.  So the question is, exactly what the heck does that warning mean?

It sounds like it is suggestioning to use more specific attribute
decoration.  This might be relevant:

	http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
	
	-Wmissing-format-attribute
	    Warn about function pointers that might be candidates for format
	attributes. Note these are only possible candidates, not absolute ones.
	GCC guesses that function pointers with format attributes that are used
	in assignment, initialization, parameter passing or return statements
	should have a corresponding format attribute in the resulting type. I.e.
	the left-hand side of the assignment or initialization, the type of the
	parameter variable, or the return type of the containing function
	respectively should also have a format attribute to avoid the warning.
	
	    GCC also warns about function definitions that might be candidates
	for format attributes. Again, these are only possible candidates. GCC
	guesses that format attributes might be appropriate for any function
	that calls a function like vprintf or vscanf, but this might not always
	be the case, and some functions for which format attributes are
	appropriate may not be detected. 

and I see this option enabled in configure.in.

-- 
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +