Attached debdiff cfortran_20210827-1.1ubuntu1 for stonking.
** Description changed: - [ Impact ] - cfortran 20210827-1.1 fails to build from source (FTBFS) in Ubuntu stonking under GCC 15. This blocks cfortran from migrating to stonking and holds up autopkgtests for reverse dependencies. + Reproduction & Issue: + cfortran 20210827-1.1 fails to build from source in Ubuntu stonking with GCC 15 due to two testsuite failures during dh_auto_test: + 1. GCC 15 defaults to C23 where empty prototype parameter lists mean 0 arguments, failing function pointer casts and wrappers (e.g. e2/e2.c: too many arguments to function 'easy_'). + 2. eg/fstr/fstr.c triggers heap buffer overflow under Ubuntu default _FORTIFY_SOURCE=3 because malloc allocates without space for the terminating NUL byte before strcpy. - During package build, the testsuite fails with two distinct errors: - 1. GCC 15 defaults to C23, where empty parameter lists in prototypes mean strictly 0 arguments. The package testsuite exercises function pointer casts and legacy wrappers, failing with: - e2/e2.c:10:28: error: too many arguments to function 'easy_'; expected 0, have 2 - q/q.c:15: error: passing 'int (*)(void)' to parameter of type '__compar_fn_t' - 2. Under default Ubuntu -D_FORTIFY_SOURCE=3, eg/fstr/fstr.c triggers heap buffer overflow termination because malloc(ls>lsave?ls:lsave) misses + 1 byte for the terminating NUL byte before strcpy. + Fix: + - debian/rules: pass export DEB_CFLAGS_MAINT_APPEND = -std=gnu17 to restore C17 prototype semantics for testsuite compilation under GCC 15. + - debian/patches/0002-fix-fstr-test-buffer-overflow.patch: allocate +1 byte for terminating NUL byte in eg/fstr/fstr.c under _FORTIFY_SOURCE=3. + - debian/control: update maintainer to Ubuntu Developers and set XSBC-Original-Maintainer. - [ Fix ] - 1. debian/rules: pass export DEB_CFLAGS_MAINT_APPEND = -std=gnu17 so the internal testsuite builds with C17 semantics. - 2. debian/patches/0002-fix-fstr-test-buffer-overflow.patch: allocate + 1 byte in eg/fstr/fstr.c to accommodate the terminating NUL byte under _FORTIFY_SOURCE=3. + Test Verification: + Built in Ubuntu stonking container (GCC 15.2.0, glibc 2.43). All 41 testsuites in eg/ pass cleanly during dh_auto_test (abc, cf14, e2, easy, eq, f0, f20, f27, fa, fb, fc, fcb, fd, fe, ff, fg, fh, fi, fj, fk, fl, fm, fn, forr, fstr, ft, fun, fz, pz, q, rev, rr, ss1, strtok, sub, subt, sz, sz1, user, v7, vv). Generated cfortran_20210827-1.1ubuntu1_all.deb cleanly. - [ Test Plan ] - 1. Build cfortran in stonking container with GCC 15: - dpkg-buildpackage -us -uc -b - 2. Verify all test binaries in eg/ are compiled and executed during dh_auto_test: - abc, cf14, e2, easy, eq, f0, f20, f27, fa, fb, fc, fcb, fd, fe, ff, fg, fh, fi, fj, fk, fl, fm, fn, forr, fstr, ft, fun, fz, pz, q, rev, rr, ss1, strtok, sub, subt, sz, sz1, user, v7, vv. - 3. Verify test exit code is 0 and cfortran_20210827-1.1ubuntu1_all.deb is generated cleanly. - - [ Where problems could occur ] - - Scope is minimal: cfortran is an Architecture: all package distributing the header file /usr/include/cfortran/cfortran.h and examples. - - -std=gnu17 is appended to DEB_CFLAGS_MAINT_APPEND in debian/rules, affecting only the package build and its internal testsuite, with zero adverse impact on installed header files. - - The fstr test patch only affects the example test executable. - - [ Other Info ] - - Debian Bug: #1114078 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1114078). Patch forwarded to Debian BTS. - - Upstream PR for buffer overflow: https://github.com/bastien-roucaries/cfortran/pull/3 - - Target series: stonking (Ubuntu 26.10 devel series). - - All 41 testsuites pass with 0 regressions. - - PPA: https://launchpad.net/~steelf/+archive/ubuntu/ppa (built: cfortran 20210827-1.1ubuntu1) + Upstream & Debian references: + - Debian BTS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1114078 + - Upstream PR: https://github.com/bastien-roucaries/cfortran/pull/3 + - PPA: https://launchpad.net/~steelf/+archive/ubuntu/ppa --- [ Original Report ] cfortran 20210827-1.1 fails to build from source in stonking. Regressing architectures (built before, fail now): amd64. Build log(s): - https://launchpad.net/ubuntu/+source/cfortran/20210827-1.1/+build/32793393/+files/buildlog_ubuntu-stonking-amd64.cfortran_20210827-1.1_BUILDING.txt.gz Diagnosis (deterministic matcher): testsuite-failure - dh_auto_test. Root cause: GCC 15 defaults to C23, where an empty parameter list `()` means "no arguments". cfortran.h's PROTOCCALLSFFUN* macros (PROTOCCALLSFFUN2 -> VOID_cfG -> VOID_cfGZ -> CFC_, cfortran.h:1482/1494) declare Fortran routines as e.g. `easy_()` and then call them with arguments, so `make check` fails: e2/e2.c:10:28: error: too many arguments to function 'easy_'; expected 0, have 2 This is a toolchain-induced regression (20210827-1 last built with an older GCC); the source itself did not change in a relevant way. Existing reports: - Debian: https://bugs.debian.org/1114078 (serious, same error) - Debian (autopkgtest, same root cause): https://bugs.debian.org/1119857 - Upstream: https://github.com/bastien-roucaries/cfortran/issues/2 (open, no fix) - Possibly also needed afterwards: https://github.com/bastien-roucaries/cfortran/pull/3 (fstr_test coredump with -D_FORTIFY_SOURCE=3 -O2) Suggested workaround: build with -std=gnu17, e.g. export DEB_CFLAGS_MAINT_APPEND = -std=gnu17 in debian/rules. Since cfortran.h is a header consumed by reverse dependencies, a proper fix needs cfortran.h to emit full prototypes. - The autopkgtest block ("arch:all not built yet") will clear once the - package builds. + The autopkgtest block ("arch ** Patch removed: "cfortran 20210827-1.1ubuntu1 debdiff for stonking" https://bugs.launchpad.net/ubuntu/+source/cfortran/+bug/2168915/+attachment/6005168/+files/cfortran_20210827-1.1ubuntu1.debdiff ** Patch added: "cfortran 20210827-1.1ubuntu1 clean debdiff for stonking" https://bugs.launchpad.net/ubuntu/+source/cfortran/+bug/2168915/+attachment/6006196/+files/cfortran_20210827-1.1ubuntu1.debdiff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2168915 Title: cfortran 20210827-1.1 FTBFS: C23 (GCC 15) rejects K&R-style prototypes in cfortran.h To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cfortran/+bug/2168915/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
