Skip to content

BBC: Blead Breaks IO::ExplicitHandle #23676

Closed

Description

@cjg-cguevara

This is a bug report for perl from "Carlos Guevara" carlos@carlosguevara.com,
generated with the help of perlbug 1.43 running under perl 5.43.3.


BBC: Blead Breaks IO::ExplicitHandle

Please see https://fast2-matrix.cpantesters.org/?dist=IO-ExplicitHandle-0.002


Flags

  • category=core
  • severity=low

Perl configuration

Site configuration information for perl 5.43.3:

Configured by cpan at Wed Sep  3 02:37:28 EDT 2025.

Summary of my perl5 (revision 5 version 43 subversion 3) configuration:
  Commit id: bb13a224451c8fbf0b9600bbc3d58cad55b3aec9
  Platform:
    osname=linux
    osvers=6.12.0-55.29.1.el10_0.x86_64
    archname=x86_64-linux
    uname='linux cjg-rhel10 6.12.0-55.29.1.el10_0.x86_64 #1 smp preempt_dynamic mon aug 18 05:37:24 edt 2025 x86_64 gnulinux '
    config_args='-des -Dprefix=/home/cpan/bin/perl -Dscriptdir=/home/cpan/bin/perl/bin -Dusedevel -Duse64bitall'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=undef
    usemultiplicity=undef
    use64bitint=define
    use64bitall=define
    uselongdouble=undef
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='cc'
    ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
    optimize='-O2'
    cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
    ccversion=''
    gccversion='14.2.1 20250110 (Red Hat 14.2.1-7)'
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=12345678
    doublekind=3
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=16
    longdblkind=3
    ivtype='long'
    ivsize=8
    nvtype='double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='cc'
    ldflags =' -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib /usr/lib64 /usr/local/lib64
    libs=-lpthread -ldb -ldl -lm -lcrypt -lutil -lc
    perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
    libc=/lib/../lib64/libc.so.6
    so=so
    useshrplib=false
    libperl=libperl.a
    gnulibc_version='2.39'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='-Wl,-E'
    cccdlflags='-fPIC'
    lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector-strong'


---
@INC for perl 5.43.3:
    /home/cpan/bin/perl/lib/site_perl/5.43.3/x86_64-linux
    /home/cpan/bin/perl/lib/site_perl/5.43.3
    /home/cpan/bin/perl/lib/5.43.3/x86_64-linux
    /home/cpan/bin/perl/lib/5.43.3

---
Environment for perl 5.43.3:
    HOME=/home/cpan
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LC_ALL=C
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/home/cpan/bin/perl/bin:/home/cpan/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
    PERL_BADLANG (unset)
    SHELL=/bin/bash

Activity

  1. jkeenan commented on Sep 3, 2025

    @jkeenan
    Contributor

    This is a bug report for perl from "Carlos Guevara" carlos@carlosguevara.com, generated with the help of perlbug 1.43 running under perl 5.43.3.

    BBC: Blead Breaks IO::ExplicitHandle

    @cjg-cguevara,

    Just now I successfully installed IO::ExplicitHandle against blead ((v5.43.2-209-gbb13a22445) on both Linux and FreeBSD.

    Looking at the matrix, these failures appear to be limited to certain Linux and Solaris rigs. I see 'void' in the hostname on one of your Linux failure reports. Is that "Void Linux" -- a platform which has given us problems before?

  2. added
    BBCBlead Breaks CPAN - changes in blead broke a cpan module(s)
    and removed on Sep 3, 2025
  3. cjg-cguevara commented on Sep 3, 2025

    @cjg-cguevara
    Author

    The failure only seems to appear when compiling with GCC 14.

  4. jkeenan commented on Sep 4, 2025

    @jkeenan
    Contributor

    The failure only seems to appear when compiling with GCC 14.

    Hmm, I seem to recall previous bug reports that involved that specific version of gcc.

  5. jkeenan commented on Sep 4, 2025

    @jkeenan
    Contributor

    The failure only seems to appear when compiling with GCC 14.

    I can't confirm the "only" but you're correct that it appears when compiling with gcc-14. See: https://www.cpantesters.org/cpan/report/62b4ddf0-8930-11f0-97d5-cf0c662e10e0

    I have created a new label "breaks-with-gcc-14" to track such BBCs. I suspect that our response will simply be, "Don't compile with that version of gcc.

  6. cjg-cguevara commented on Sep 4, 2025

    @cjg-cguevara
    Author

    Probably related:
    Devel-CallParser-0.002

  7. jkeenan commented on Sep 4, 2025

    @jkeenan
    Contributor

    Probably related: Devel-CallParser-0.002

    Probably so; I just attempted to install it against the same gcc-14-built perl I mentioned earlier and it failed. But I should note that Devel-CallParser has a very mixed history on CPANtesters so that I'm reluctant to attribute its current problems entirely to gcc-14.

  8. cjg-cguevara commented on Sep 5, 2025

    @cjg-cguevara
    Author

    Probably related:
    Devel-GoFaster-0.001

  9. Leont commented on Sep 6, 2025

    @Leont
    Contributor

    It's trying to use a non-API Perl function (qerror), which is C23 is a bit more strict about because it no longer allows for calling undeclared functions.

    Probably related:
    Devel-GoFaster-0.001

    Different symbol (op_clear), same sort of problem yes.

  10. tonycoz commented on Oct 13, 2025

    @tonycoz
    Contributor

    Also Sub::StrictDecl

  11. tonycoz commented on Oct 13, 2025

    @tonycoz
    Contributor

    Should these functions be API?

    Extended parsing and OP tree manipulation have been on CPAN for a very long time and both qerror() and op_clear() are both useful there.

  12. Leont commented on Mar 16, 2026

    @Leont
    Contributor

    Should these functions be API?

    Extended parsing and OP tree manipulation have been on CPAN for a very long time and both qerror() and op_clear() are both useful there.

    They've been out so long that we might as well, though I don't particularly like the name qerror.

  13. Leont commented on Mar 30, 2026

    @Leont
    Contributor

    Do I understand this right that this is a gcc-breaks-cpan and not blead-breaks-cpan?

  14. tonycoz commented on Mar 30, 2026

    @tonycoz
    Contributor

    It is "ignoring the API boundary" breaks CPAN.

    PR #24335 exposes qerror() and op_clear() to the API which fixes IO::ExplicitHandle, Devel::GoFaster and Devel::CallParser and makes Data::Alias less sinful (it #defines PERL_CORE)

  15. tonycoz commented on Mar 30, 2026

    @tonycoz
    Contributor

    It is "ignoring the API boundary" breaks CPAN.

    Actually, there's a bit more to that,

    • these modules use these non-API functions (this part is still true)
    • 09a0707 default hid non-API declarations when generating proto.h unless you define PERL_EXT or PERL_CORE
    • GCC 15 (finally) disallowed implicit function declarations by default (removed by C99)
  16. jkeenan commented on Mar 30, 2026

    @jkeenan
    Contributor

    FWIW, I did some re-testing on this ticket. On Ubuntu Linux 24.04-LTS I configured an unthreaded build at today's HEAD (9c7db06) using gcc-14 as the C-compiler. (gcc-13 is the default on this machine). I then attempted to install all the modules mentioned in this ticket so far.

    ./bin/cpan IO::ExplicitHandle Devel::CallParser Devel::GoFaster \
        Sub::StrictDecl Data::Alias 
    

    Data::Alias was the only one to succeed. Hence, Data::Alias should not be labeled "breaks-with-gcc-14."

    gcc-14 Compilation:

    IO::ExplicitHandle failed during make:

    gcc-14 -I/home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.002"' '-DXS_VERSION="0.002"' -fPIC -c -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/IO/ExplicitHandle.o lib/IO/ExplicitHandle.c
    lib/IO/ExplicitHandle.xs: In function ‘THX_qerror_unspec_handle_op’:
    lib/IO/ExplicitHandle.xs:47:21: error: implicit declaration of function ‘Perl_qerror’; did you mean ‘Perl_yyerror’? [-Wimplicit-function-declaration]
       47 | #  define qerror(m) Perl_qerror(aTHX_ m)
          |                     ^~~~~~~~~~~
    lib/IO/ExplicitHandle.xs:116:9: note: in expansion of macro ‘qerror’
      116 |         qerror(mess("Unspecified I/O handle in %s", PL_op_desc[opcode]));
          |         ^~~~~~
    error building lib/IO/ExplicitHandle.o from 'lib/IO/ExplicitHandle.c' at /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
    

    Devel::CallParser similarly failed during make:

    gcc-14 -I/home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.002"' '-DXS_VERSION="0.002"' -fPIC -c -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Devel/CallParser.o lib/Devel/CallParser.c
    lib/Devel/CallParser.xs:10:9: warning: "PERL_VERSION_GE" redefined
       10 | #define PERL_VERSION_GE(r,v,s) \
          |         ^~~~~~~~~~~~~~~
    In file included from /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/perl.h:3250,
                     from lib/Devel/CallParser.xs:3:
    /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: this is the location of the previous definition
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^~~~~~~~~~~~~~~
    lib/Devel/CallParser.xs: In function ‘C8K61oRQKxigiqmUlVdk_pac0’:
    lib/Devel/CallParser.xs:34:20: error: implicit declaration of function ‘Perl_qerror’; did you mean ‘Perl_yyerror’? [-Wimplicit-function-declaration]
       34 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^~~~~~~~~~~
    lib/Devel/CallParser.xs:79:17: note: in expansion of macro ‘qerror’
       79 |                 qerror(mess("syntax error"));
          |                 ^~~~~~
    error building lib/Devel/CallParser.o from 'lib/Devel/CallParser.c' at /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Devel-CallParser-0.002.tar.gz
      ./Build -- NOT OK
    

    Devel::GoFaster

    Error: unparseable XSUB parameter: '....' in GoFaster.xs, line 481
    gcc-14 -I/home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.001"' '-DXS_VERSION="0.001"' -fPIC -c -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Devel/GoFaster.o lib/Devel/GoFaster.c
    lib/Devel/GoFaster.xs:9:9: warning: "PERL_VERSION_GE" redefined
        9 | #define PERL_VERSION_GE(r,v,s) \
          |         ^~~~~~~~~~~~~~~
    In file included from /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/perl.h:3250,
                     from lib/Devel/GoFaster.xs:3:
    /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: this is the location of the previous definition
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^~~~~~~~~~~~~~~
    lib/Devel/GoFaster.xs: In function ‘THX_make_op_faster’:
    lib/Devel/GoFaster.xs:54:22: error: implicit declaration of function ‘Perl_op_clear’; did you mean ‘Perl_sv_clear’? [-Wimplicit-function-declaration]
       54 | # define op_clear(o) Perl_op_clear(aTHX_ o)
          |                      ^~~~~~~~~~~~~
    lib/Devel/GoFaster.xs:261:17: note: in expansion of macro ‘op_clear’
      261 |                 op_clear(first);
          |                 ^~~~~~~~
    error building lib/Devel/GoFaster.o from 'lib/Devel/GoFaster.c' at /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Devel-GoFaster-0.001.tar.gz
      ./Build -- NOT OK
    

    Sub::StrictDecl

    cc-14 -I/home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.005"' '-DXS_VERSION="0.005"' -fPIC -c -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Sub/StrictDecl.o lib/Sub/StrictDecl.c
    lib/Sub/StrictDecl.xs:9:9: warning: "PERL_VERSION_GE" redefined
        9 | #define PERL_VERSION_GE(r,v,s) \
          |         ^~~~~~~~~~~~~~~
    In file included from /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/perl.h:3250,
                     from lib/Sub/StrictDecl.xs:3:
    /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: this is the location of the previous definition
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^~~~~~~~~~~~~~~
    lib/Sub/StrictDecl.xs: In function ‘THX_myck_rv2cv’:
    lib/Sub/StrictDecl.xs:53:20: error: implicit declaration of function ‘Perl_qerror’; did you mean ‘Perl_yyerror’? [-Wimplicit-function-declaration]
       53 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^~~~~~~~~~~
    lib/Sub/StrictDecl.xs:87:17: note: in expansion of macro ‘qerror’
       87 |                 qerror(mess("Undeclared subroutine &%"SVf"", SVfARG(name)));
          |                 ^~~~~~
    error building lib/Sub/StrictDecl.o from 'lib/Sub/StrictDecl.c' at /home/jkeenan/testing/9c7db06a44/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Sub-StrictDecl-0.005.tar.gz
      ./Build -- NOT OK
    

    clang-18 Compilation

    On the same machine I then compiled an unthreaded perl using clang-18 as the compiler. (This was done 1 commit earlier, which shouldn't make any difference with respect to the installation of these modules, as HEAD was a documentation-only commit.)

    IO::ExplicitHandle failed, albeit with slightly different error messages.

    Building IO-ExplicitHandle
    clang-18 -I/home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.002"' '-DXS_VERSION="0.002"' -fPIC -c -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/IO/ExplicitHandle.o lib/IO/ExplicitHandle.c
    lib/IO/ExplicitHandle.xs:116:2: error: call to undeclared function 'Perl_qerror'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      116 |         qerror(mess("Unspecified I/O handle in %s", PL_op_desc[opcode]));
          |         ^
    lib/IO/ExplicitHandle.xs:47:21: note: expanded from macro 'qerror'
       47 | #  define qerror(m) Perl_qerror(aTHX_ m)
          |                     ^
    lib/IO/ExplicitHandle.xs:116:2: note: did you mean 'Perl_yyerror'?
    lib/IO/ExplicitHandle.xs:47:21: note: expanded from macro 'qerror'
       47 | #  define qerror(m) Perl_qerror(aTHX_ m)
          |                     ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/proto.h:7159:1: note: 'Perl_yyerror' declared here
     7159 | Perl_yyerror(pTHX_ const char * const s)
          | ^
    lib/IO/ExplicitHandle.xs:168:5: error: call to undeclared function 'Perl_qerror'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      168 |                                 qerror(mess("Unspecified I/O handle in $%c",
          |                                 ^
    lib/IO/ExplicitHandle.xs:47:21: note: expanded from macro 'qerror'
       47 | #  define qerror(m) Perl_qerror(aTHX_ m)
          |                     ^
    2 errors generated.
    error building lib/IO/ExplicitHandle.o from 'lib/IO/ExplicitHandle.c' at /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/IO-ExplicitHandle-0.002.tar.gz
      ./Build -- NOT OK
    

    Devel::CallParser likewise.

    Running Build for Z/ZE/ZEFRAM/Devel-CallParser-0.002.tar.gz
    Building Devel-CallParser
    clang-18 -I/home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.002"' '-DXS_VERSION="0.002"' -fPIC -c -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Devel/CallParser.o lib/Devel/CallParser.c
    lib/Devel/CallParser.xs:10:9: warning: 'PERL_VERSION_GE' macro redefined [-Wmacro-redefined]
       10 | #define PERL_VERSION_GE(r,v,s) \
          |         ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: previous definition is here
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^
    lib/Devel/CallParser.xs:79:3: error: call to undeclared function 'Perl_qerror'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
       79 |                 qerror(mess("syntax error"));
          |                 ^
    lib/Devel/CallParser.xs:34:20: note: expanded from macro 'qerror'
       34 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^
    lib/Devel/CallParser.xs:79:3: note: did you mean 'Perl_yyerror'?
    lib/Devel/CallParser.xs:34:20: note: expanded from macro 'qerror'
       34 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/proto.h:7159:1: note: 'Perl_yyerror' declared here
     7159 | Perl_yyerror(pTHX_ const char * const s)
          | ^
    lib/Devel/CallParser.xs:86:3: error: call to undeclared function 'Perl_qerror'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
       86 |                 qerror(mess("syntax error"));
          |                 ^
    lib/Devel/CallParser.xs:34:20: note: expanded from macro 'qerror'
       34 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^
    1 warning and 2 errors generated.
    error building lib/Devel/CallParser.o from 'lib/Devel/CallParser.c' at /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Devel-CallParser-0.002.tar.gz
      ./Build -- NOT OK
    

    Devel::GoFaster likewise.

    Running Build for Z/ZE/ZEFRAM/Devel-GoFaster-0.001.tar.gz
    Building Devel-GoFaster
    Error: unparseable XSUB parameter: '....' in GoFaster.xs, line 481
    clang-18 -I/home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.001"' '-DXS_VERSION="0.001"' -fPIC -c -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Devel/GoFaster.o lib/Devel/GoFaster.c
    lib/Devel/GoFaster.xs:9:9: warning: 'PERL_VERSION_GE' macro redefined [-Wmacro-redefined]
        9 | #define PERL_VERSION_GE(r,v,s) \
          |         ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: previous definition is here
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^
    lib/Devel/GoFaster.xs:261:3: error: call to undeclared function 'Perl_op_clear'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      261 |                 op_clear(first);
          |                 ^
    lib/Devel/GoFaster.xs:54:22: note: expanded from macro 'op_clear'
       54 | # define op_clear(o) Perl_op_clear(aTHX_ o)
          |                      ^
    1 warning and 1 error generated.
    error building lib/Devel/GoFaster.o from 'lib/Devel/GoFaster.c' at /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Devel-GoFaster-0.001.tar.gz
      ./Build -- NOT OK
    

    Sub::StrictDecl likewise.

    Running Build for Z/ZE/ZEFRAM/Sub-StrictDecl-0.005.tar.gz
    Building Sub-StrictDecl
    clang-18 -I/home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE '-DVERSION="0.005"' '-DXS_VERSION="0.005"' -fPIC -c -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE '-D_FILE_OFFSET_BITS=64' -O2 -o lib/Sub/StrictDecl.o lib/Sub/StrictDecl.c
    lib/Sub/StrictDecl.xs:9:9: warning: 'PERL_VERSION_GE' macro redefined [-Wmacro-redefined]
        9 | #define PERL_VERSION_GE(r,v,s) \
          |         ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/handy.h:576:10: note: previous definition is here
      576 | # define PERL_VERSION_GE(j,n,p)  (! PERL_VERSION_LT(j,n,p))
          |          ^
    lib/Sub/StrictDecl.xs:87:3: error: call to undeclared function 'Perl_qerror'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
       87 |                 qerror(mess("Undeclared subroutine &%"SVf"", SVfARG(name)));
          |                 ^
    lib/Sub/StrictDecl.xs:53:20: note: expanded from macro 'qerror'
       53 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^
    lib/Sub/StrictDecl.xs:87:3: note: did you mean 'Perl_yyerror'?
    lib/Sub/StrictDecl.xs:53:20: note: expanded from macro 'qerror'
       53 | # define qerror(m) Perl_qerror(aTHX_ m)
          |                    ^
    /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/x86_64-linux/CORE/proto.h:7159:1: note: 'Perl_yyerror' declared here
     7159 | Perl_yyerror(pTHX_ const char * const s)
          | ^
    1 warning and 1 error generated.
    error building lib/Sub/StrictDecl.o from 'lib/Sub/StrictDecl.c' at /home/jkeenan/testing/3bb3eb4fca/lib/perl5/5.43.10/ExtUtils/CBuilder/Base.pm line 193.
      ZEFRAM/Sub-StrictDecl-0.005.tar.gz
      ./Build -- NOT OK
    

    Data::Alias tested and installed successfully.

  17. jkeenan commented on Mar 30, 2026

    @jkeenan
    Contributor

    To further confuse matters (and me), I then built an unthreaded perl at a recent commit using my default C-compiler on this machine, gcc-13.

    All 5 modules cited built (albeit with warnings), then tested and installed successfully.

  18. tonycoz commented on Mar 31, 2026

    @tonycoz
    Contributor

    Data::Alias was the only one to succeed. Hence, Data::Alias should not be labeled "breaks-with-gcc-14."

    Yeah, Data::Alias cheats, it claims to be part of core (it defines the PERL_CORE symbol.)

  19. ap commented on Apr 13, 2026

    @ap
    Contributor

    We didn’t break this ourselves, but nevertheless we don’t want to leave this broken any longer than we can help it.

  20. jkeenan commented on Apr 15, 2026

    @jkeenan
    Contributor

    We didn’t break this ourselves, but nevertheless we don’t want to leave this broken any longer than we can help it.

    Just now I conducted some testing of @tonycoz's pull request addressing this issue: #24335 (comment). Results favorable. However, since this is a case where (IIUC) using specific versions of specific C-compilers was the ultimate source of the problem, we don't have clear criteria for evaluating the robustness of any pull request addressing the problem. I suspect we'll need some level of discussion of that before we can deem this ticket closable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    BBCBlead Breaks CPAN - changes in blead broke a cpan module(s)Release Blockerbreaks-with-gcc-14CPAN breakage reported on perls compiled with gcc-14

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions