** 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.
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 ]
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 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)
--- [ 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.
--
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