Re: MinGW compiler warnings in ecpg tests

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Michael Meskes <meskes(at)postgresql(dot)org>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: MinGW compiler warnings in ecpg tests
Date: 2024-12-06 02:44:20
Message-ID: CA+hUKGJLMh+6W5E4M_jSFb43gnrA_-Q6-+Bf3HkBXyGfRFcBsQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Dec 6, 2024 at 4:13 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Thomas Munro <thomas(dot)munro(at)gmail(dot)com> writes:
> > Yeah. This warning is visible on CI, and on fairywren since its MSYS2
> > upgrade a couple of months ago. Old MinGW didn't like %lld (I think
> > perhaps the printf from msvcrt.dll from 1996 didn't like it and MinGW
> > knew that), but new MinGW doesn't like %I64d (that's interesting, but
> > not relevant here because %lld is clearly the correct format string,
> > and it works). We should just revert that change. Here's a patch.
>
> +1

Thanks for looking. Pushed, and that fixed that on fairywren.

> > Those were there before the upgrade. POSIX says that environ should
> > not be declared by a header, but Windows apparently declares it, or at
> > least its cousin _environ, in <stdlib.h> which we include in c.h. I
> > have no idea why Visual Studio doesn't warn, or why the documentation
> > only tells you about _environ and not environ, or where the macro (?)
> > comes from that renames it, but it passes CI and is
> > warning-free on both toolchains if you just hide the offending
> > declarations.
>
> Isn't this likely to break things for every other Windows toolchain?
> I think the concept might be OK, but we need a tighter #if condition.

Cool, I'll do that for MinGW only then.

> An alternative could be to add the missing dllimport on Windows;
> it's not clear whether other toolchains would care.

I've been digging through its headers (working on a fix for the off_t
bug report) and noticed in passing that it probably thinks we're
re-declaring this function:

https://github.com/mingw-w64/mingw-w64/blob/8bcd5fc1a72c0b6da3147bf21a4a494c81d14fae/mingw-w64-headers/crt/stdlib.h#L221

Seems like a good idea to give that a wide berth :-)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message John Naylor 2024-12-06 03:49:49 Re: Sort functions with specialized comparators
Previous Message jian he 2024-12-06 02:22:14 Re: attndims, typndims still not enforced, but make the value within a sane threshold