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

From: "Tristan Partin" <tristan(at)neon(dot)tech>
To: "Sutou Kouhei" <kou(at)clear-code(dot)com>
Cc: <michael(at)paquier(dot)xyz>, <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: meson: Specify -Wformat as a common warning flag for extensions
Date: 2024-03-13 05:43:11
Message-ID: CZSDSNYEUHUL.399XLPGCJSJ5H@neon.tech
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue Mar 12, 2024 at 6:56 PM CDT, Sutou Kouhei wrote:
> Hi,
>
> In <CZOHWDYQJQCQ(dot)23A5RRV1E05N2(at)neon(dot)tech>
> "Re: meson: Specify -Wformat as a common warning flag for extensions" on Fri, 08 Mar 2024 10:05:27 -0600,
> "Tristan Partin" <tristan(at)neon(dot)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)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message shveta malik 2024-03-13 05:43:18 Re: Introduce XID age and inactive timeout based replication slot invalidation
Previous Message Michael Paquier 2024-03-13 05:39:06 Re: Add new error_action COPY ON_ERROR "log"