Re: meson: Specify -Wformat as a common warning flag for extensions

Tristan Partin <tristan@neon.tech>

From: "Tristan Partin" <tristan@neon.tech>
To: "Sutou Kouhei" <kou@clear-code.com>
Cc: <michael@paquier.xyz>, <pgsql-hackers@postgresql.org>
Date: 2024-03-13T05:43:11Z
Lists: pgsql-hackers
On Tue Mar 12, 2024 at 6:56 PM CDT, Sutou Kouhei wrote:
> Hi,
>
> In <CZOHWDYQJQCQ.23A5RRV1E05N2@neon.tech>
>   "Re: meson: Specify -Wformat as a common warning flag for extensions" on Fri, 08 Mar 2024 10:05:27 -0600,
>   "Tristan Partin" <tristan@neon.tech> wrote:
>
> > Ok, I figured this out. -Wall implies -Wformat=1. We set warning_level
> > to 1 in the Meson project() call, which implies -Wall, and set -Wall
> > in CFLAGS for autoconf. That's the reason we don't get issues building
> > Postgres. A user making use of the pg_config --cflags option, as Sutou
> > is, *will* run into the aforementioned issues, since we don't
> > propogate -Wall into pg_config.
> > 
> > 	$ gcc $(pg_config --cflags) -E - < /dev/null > /dev/null
> > 	cc1: warning: ‘-Wformat-security’ ignored without ‘-Wformat’
> > 	[-Wformat-security]
> > 	$ gcc -Wall $(pg_config --cflags) -E - < /dev/null > /dev/null
> > 	(nothing printed)
>
> Thanks for explaining this. You're right. This is the reason
> why we don't need this for PostgreSQL itself but we need
> this for PostgreSQL extensions. Sorry. I should have
> explained this in the first e-mail...
>
>
> What should we do to proceed this patch?

Perhaps adding some more clarification in the comments that I wrote.

-  # -Wformat-security requires -Wformat, so check for it
+  # -Wformat-secuirty requires -Wformat. We compile with -Wall in 
+  # Postgres, which includes -Wformat=1. -Wformat is shorthand for 
+  # -Wformat=1. The set of flags which includes -Wformat-security is 
+  # persisted into pg_config --cflags, which is commonly used by 
+  # PGXS-based extensions. The lack of -Wformat in the persisted flags
+  # will produce a warning on many GCC versions, so even though adding 
+  # -Wformat here is a no-op for Postgres, it silences other use cases.

That might be too long-winded though :).

-- 
Tristan Partin
Neon (https://neon.tech)



Commits

  1. meson: Restore implicit warning/debug/optimize flags for extensions