Project

General

Profile

Actions

Feature #17752

closed

Enable -Wundef for C extensions in repository

Added by Eregon (Benoit Daloze) 6 months ago. Updated 5 months ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-core:103040]

Description

I would like to enable -Wundef for C extensions built/bundled with CRuby.

From https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

-Wundef
Warn if an undefined identifier is evaluated in an #if directive. Such identifiers are replaced with zero.

I found this warning to be quite useful, notably when investigating why a given C extension did not include some code I expected, and then building those extensions on TruffleRuby.

There are a couple places not respecting this currently but they seem trivial to fix, I can do that.

For instance a confusing case is:
https://github.com/ruby/ruby/blob/9143d21b1bf2f16b1e847d569a588510726d8860/ext/nkf/nkf-utf8/nkf.h#L19

#if DEFAULT_NEWLINE == 0x0D0A

which without -Wundef would just exclude the code without any warning if DEFAULT_NEWLINE is not defined.

I'm not sure if we should/can enable it for C extensions in general (installed as gems), as if a C extensions uses -Werror and would have such a warning it would no longer build.

I can make a PR for this.
I'm not sure where to add -Wundef though, should it be in https://github.com/ruby/ruby/blob/9143d21b1bf2f16b1e847d569a588510726d8860/configure.ac#L620, or maybe in mkmf.rb?


Files

ruby-USE_BACKTRACE.patch (1.21 KB) ruby-USE_BACKTRACE.patch Define `USE_BACKTRACE` instead of abusing `HAVE_BACKTRACE` xtkoba (Tee KOBAYASHI), 03/27/2021 12:20 PM
ruby-BIGNUM_EMBED_LEN_MAX.patch (950 Bytes) ruby-BIGNUM_EMBED_LEN_MAX.patch Fix the definition of `BIGNUM_EMBED_LEN_MAX` xtkoba (Tee KOBAYASHI), 04/07/2021 12:58 AM
ruby-COROUTINE_LIMITED_ADDRESS_SPACE.patch (711 Bytes) ruby-COROUTINE_LIMITED_ADDRESS_SPACE.patch Fix the definition of `COROUTINE_LIMITED_ADDRESS_SPACE` xtkoba (Tee KOBAYASHI), 04/07/2021 12:58 AM
ruby-trivial-undefined-macros.patch (4.35 KB) ruby-trivial-undefined-macros.patch Trivial fix to calm down `-Wundef` warnings xtkoba (Tee KOBAYASHI), 04/07/2021 01:03 AM
ruby-trivial-undefind-macros-0002.patch (1.44 KB) ruby-trivial-undefind-macros-0002.patch xtkoba (Tee KOBAYASHI), 04/14/2021 12:59 AM

Related issues

Related to Ruby master - Bug #17850: `PAGE_SIZE` is no longer a constant for macOSClosedpeterzhu2118 (Peter Zhu)Actions
Actions

Also available in: Atom PDF