Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfbf5094

Browse files
anarazelpull[bot]
authored andcommitted
perl: Hide warnings inside perl.h when using gcc compatible compiler
New versions of perl trigger warnings within perl.h with our compilerflags. At least -Wdeclaration-after-statement, -Wshadow=compatible-local areknown to be problematic.To avoid these warnings, conditionally use #pragma GCC system_header beforeincluding plperl.h.Alternatively, we could add the include paths for problematic headers with-isystem, but that is a larger hammer and is harder to search for.A more granular alternative would be to use #pragma GCC diagnosticpush/ignored/pop, but gcc warns about unknown warnings being ignored, so everyto-be-ignored-temporarily compiler warning would require its own pg_config.hsymbol and #ifdef.As the warnings are voluminous, it makes sense to backpatch this change. Butdon't do so yet, we first want gather buildfarm coverage - it's e.g. possiblethat some compiler claiming to be gcc compatible has issues with the pragma.Author: Andres Freund <andres@anarazel.de>Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>Discussion: Discussion:https://postgr.es/m/20221228182455.hfdwd22zztvkojy2@awork3.anarazel.de
1 parentf6c996d commitfbf5094

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

‎src/include/c.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,34 @@ typedef void (*pg_funcptr_t) (void);
381381
*/
382382
#defineFLEXIBLE_ARRAY_MEMBER/* empty */
383383

384+
/*
385+
* Does the compiler support #pragma GCC system_header? We optionally use it
386+
* to avoid warnings that we can't fix (e.g. in the perl headers).
387+
* See https://gcc.gnu.org/onlinedocs/cpp/System-Headers.html
388+
*
389+
* Headers for which we do not want to show compiler warnings can,
390+
* conditionally, use #pragma GCC system_header to avoid warnings. Obviously
391+
* this should only be used for external headers over which we do not have
392+
* control.
393+
*
394+
* Support for the pragma is tested here, instead of during configure, as gcc
395+
* also warns about the pragma being used in a .c file. It's surprisingly hard
396+
* to get autoconf to use .h as the file-ending. Looks like gcc has
397+
* implemented the pragma since the 2000, so this test should suffice.
398+
*
399+
*
400+
* Alternatively, we could add the include paths for problematic headers with
401+
* -isystem, but that is a larger hammer and is harder to search for.
402+
*
403+
* A more granular alternative would be to use #pragma GCC diagnostic
404+
* push/ignored/pop, but gcc warns about unknown warnings being ignored, so
405+
* every to-be-ignored-temporarily compiler warning would require its own
406+
* pg_config.h symbol and #ifdef.
407+
*/
408+
#ifdef__GNUC__
409+
#defineHAVE_PRAGMA_GCC_SYSTEM_HEADER1
410+
#endif
411+
384412

385413
/* ----------------------------------------------------------------
386414
*Section 2:bool, true, false

‎src/pl/plperl/plperl.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,15 @@
7474
#defineHAS_BOOL 1
7575
#endif
7676

77+
/*
78+
* Newer versions of the perl headers trigger a lot of warnings with our
79+
* compiler flags (at least -Wdeclaration-after-statement,
80+
* -Wshadow=compatible-local are known to be problematic). The system_header
81+
* pragma hides warnings from within the rest of this file, if supported.
82+
*/
83+
#ifdefHAVE_PRAGMA_GCC_SYSTEM_HEADER
84+
#pragma GCC system_header
85+
#endif
7786

7887
/*
7988
* Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp