Hi Bruno, At 2026-09-03T14:07:09+0200, Bruno Haible wrote: > G. Branden Robinson wrote: > > > Is there a recipe for reproducing the problem that you ran into? > > > > Sure. Grab the groff 1.25.0.rc2 release candidate archive. > > > > https://alpha.gnu.org/gnu/groff/ > > > > Run the attached script. It assumes GCC but you can make it use Clang. > > > > $ env CORES=10 ~/bin/make-groff-fast-from-archive-reducer > > $ env CORES=10 CC="clang -std=c99" CXX="clang++ -std=c++98" \ > > ~/bin/make-groff-fast-from-archive-reducer > > I reproduce the compilation error with > - an unmodified groff-1.25.0-rc2.tar.gz, > - on Debian 11 (which went end-of-life 3 days ago), > - CC="clang -std=gnu99" CXX="clang++ -std=gnu++98" > - $ ./configure; make > > And when I apply Lasse Collin's patch to lib/verify.h (commit > a4aa733b3651ed437d37fe51f14b8f5986e7ef8e), "make" succeeds.
Not for me under the procedure described. I already applied that patch to my working copy. $ (cd gnulib && git log --author=Lasse | head -n 25) commit 35a0794570013e589754450a04e14dd50a53f235 Author: Lasse Collin <[email protected]> Date: Fri Jul 31 18:33:35 2026 +0300 string-h: Fix inconsistent nonnull attributes in strncpy * lib/string.in.h: The first strncpy prototype (with _GL_EXTERN_C) correctly had _GL_ATTRIBUTE_NONNULL_IF_NONZERO, but the second prototype (with _GL_FUNCDECL_RPL) used pre-N3322 _GL_ARG_NONNULL. This triggered a sanitizer failure in test-strncpy when configured with gl_cv_func_strncpy_works=no. commit de0e0b699ac8a434e346b046e8b13e9612fc4b7b Author: Lasse Collin <[email protected]> Date: Sat Aug 8 13:30:08 2026 +0300 verify: Fix single-argument static_assert with glibc in C89 & C99 modes * lib/verify.h: glibc's <sys/cdefs.h> may define _Static_assert with two arguments when the compiler is in C89 or C99 mode. Undefine it so that Gnulib's own version is used instead. Reported by G. Branden Robinson in <https://lists.gnu.org/archive/html/bug-gnulib/2026-08/msg00125.html>. Copyright-paperwork-exempt: Yes > So, you have nothing to complain about. Second time I've heard that in 4 weeks! > Just make a new groff prerelease with either the newest Gnulib > ('master') or the stable-202607 branch, and it will work on that > platform. It doesn't. But, I concede, I can't expect anyone to believe me until I either push my working copy to Savannah Git, and/or roll an RC3. I was trying to get this problem resolved _before_ that, but I reckon it now that it ain't in the cards. > Stamp files should only be used when plain dependencies are not > sufficient. Have you tried adding libgnu.a as a dependency (in > Makefile.am) of your programss? Yes, if Automake _LDADD variables imply a dependency. See attachment. If they don't, guess I have yet another problem. But this has been working since 2014.[1] False sense of security? Regards, Branden [1] Though I can only attest first-hand since 2017.
src/devices/grodvi/grodvi.am-grodvi_LDADD = \ src/devices/grodvi/grodvi.am- libdriver.a \ src/devices/grodvi/grodvi.am- libgroff.a \ src/devices/grodvi/grodvi.am: lib/libgnu.a $(LIBM) src/devices/grodvi/grodvi.am- src/devices/grodvi/grodvi.am-GRODVITMACFILES = tmac/dvi.tmac src/devices/grodvi/grodvi.am-grodvitmacdir = $(tmacdir) -- src/devices/grohtml/grohtml.am-post_grohtml_LDADD = $(LIBM) \ src/devices/grohtml/grohtml.am- libdriver.a \ src/devices/grohtml/grohtml.am- libgroff.a \ src/devices/grohtml/grohtml.am: lib/libgnu.a src/devices/grohtml/grohtml.am- src/devices/grohtml/grohtml.am-POSTGROHTMLTMACFILES = \ src/devices/grohtml/grohtml.am- tmac/html.tmac \ -- src/devices/grolbp/grolbp.am-grolbp_LDADD = $(LIBM) \ src/devices/grolbp/grolbp.am- libdriver.a \ src/devices/grolbp/grolbp.am- libgroff.a \ src/devices/grolbp/grolbp.am: lib/libgnu.a src/devices/grolbp/grolbp.am- src/devices/grolbp/grolbp.am-GROLBPTMACFILES = tmac/lbp.tmac src/devices/grolbp/grolbp.am-grolbptmacdir = $(tmacdir) -- src/devices/grolj4/grolj4.am-grolj4_LDADD = $(LIBM) \ src/devices/grolj4/grolj4.am- libdriver.a \ src/devices/grolj4/grolj4.am- libgroff.a \ src/devices/grolj4/grolj4.am: lib/libgnu.a src/devices/grolj4/grolj4.am- src/devices/grolj4/grolj4.am-GROLJ4TMACFILES = tmac/lj4.tmac src/devices/grolj4/grolj4.am-grolj4tmacdir = $(tmacdir) -- src/devices/grops/grops.am-grops_LDADD = $(LIBM) \ src/devices/grops/grops.am- libdriver.a \ src/devices/grops/grops.am- libgroff.a \ src/devices/grops/grops.am: lib/libgnu.a src/devices/grops/grops.am- src/devices/grops/grops.am-GROPSTMACFILES = \ src/devices/grops/grops.am- tmac/europs.tmac \ -- src/devices/grotty/grotty.am-grotty_LDADD = $(LIBM) \ src/devices/grotty/grotty.am- libdriver.a \ src/devices/grotty/grotty.am- libgroff.a \ src/devices/grotty/grotty.am: lib/libgnu.a src/devices/grotty/grotty.am- src/devices/grotty/grotty.am-GROTTYTMACFILES = \ src/devices/grotty/grotty.am- tmac/tty.tmac \ -- src/devices/xditview/xditview.am-gxditview_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) -Dlint \ src/devices/xditview/xditview.am- -I$(top_builddir)/src/devices/xditview src/devices/xditview/xditview.am-gxditview_LDADD = $(X_LIBS) $(X_PRE_LIBS) -lXaw -lXmu $(X_AW_DEPS) \ src/devices/xditview/xditview.am: -lXt -lX11 $(X_EXTRA_LIBS) $(LIBM) libxutil.a lib/libgnu.a src/devices/xditview/xditview.am-XDITVIEW_GENHDRS = \ src/devices/xditview/xditview.am- src/devices/xditview/GXditview-ad.h \ src/devices/xditview/xditview.am- $(GXDITVIEW_GROFF_VERSION_H) -- src/preproc/eqn/eqn.am- $(AM_CPPFLAGS) \ src/preproc/eqn/eqn.am- -I $(top_srcdir)/src/preproc/eqn \ src/preproc/eqn/eqn.am- -I $(top_builddir)/src/preproc/eqn src/preproc/eqn/eqn.am:eqn_LDADD = $(LIBM) libgroff.a lib/libgnu.a src/preproc/eqn/eqn.am-eqn_SOURCES = \ src/preproc/eqn/eqn.am- src/preproc/eqn/main.cpp \ src/preproc/eqn/eqn.am- src/preproc/eqn/lex.cpp \ -- src/preproc/grn/grn.am- src/preproc/grn/hgraph.cpp \ src/preproc/grn/grn.am- src/preproc/grn/main.cpp src/preproc/grn/grn.am-src/preproc/grn/main.$(OBJEXT): defs.h src/preproc/grn/grn.am:grn_LDADD = libgroff.a lib/libgnu.a $(LIBM) src/preproc/grn/grn.am-PREFIXMAN1 += src/preproc/grn/grn.1 src/preproc/grn/grn.am-EXTRA_DIST += src/preproc/grn/README src/preproc/grn/grn.1.man src/preproc/grn/grn.am- -- src/preproc/html/html.am-# along with this program. If not, see <http://www.gnu.org/licenses/>. src/preproc/html/html.am- src/preproc/html/html.am-bin_PROGRAMS += pre-grohtml src/preproc/html/html.am:pre_grohtml_LDADD = libgroff.a lib/libgnu.a $(LIBM) src/preproc/html/html.am-pre_grohtml_SOURCES = \ src/preproc/html/html.am- src/preproc/html/pre-html.cpp \ src/preproc/html/html.am- src/preproc/html/pushback.cpp \ -- src/preproc/pic/pic.am-pic_CPPFLAGS = $(AM_CPPFLAGS) \ src/preproc/pic/pic.am- -I $(top_srcdir)/src/preproc/pic \ src/preproc/pic/pic.am- -I $(top_builddir)/src/preproc/pic src/preproc/pic/pic.am:pic_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/preproc/pic/pic.am-pic_SOURCES = \ src/preproc/pic/pic.am- src/preproc/pic/pic.ypp \ src/preproc/pic/pic.am- src/preproc/pic/lex.cpp \ -- src/preproc/preconv/preconv.am- src/preproc/preconv/preconv.am-bin_PROGRAMS += preconv src/preproc/preconv/preconv.am-preconv_LDADD = libgroff.a $(LIBM) $(LIBICONV) $(UCHARDET_LIBS) \ src/preproc/preconv/preconv.am: lib/libgnu.a src/preproc/preconv/preconv.am-preconv_SOURCES = src/preproc/preconv/preconv.cpp src/preproc/preconv/preconv.am-preconv_CPPFLAGS = $(AM_CPPFLAGS) $(UCHARDET_CFLAGS) src/preproc/preconv/preconv.am-man1_MANS += src/preproc/preconv/preconv.1 -- src/preproc/refer/refer.am- src/preproc/refer/refer.am-prefixexecbin_PROGRAMS += refer src/preproc/refer/refer.am-refer_CPPFLAGS = $(AM_CPPFLAGS) -I $(top_srcdir)/src/preproc/refer src/preproc/refer/refer.am:refer_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a src/preproc/refer/refer.am-refer_SOURCES = \ src/preproc/refer/refer.am- src/preproc/refer/command.cpp \ src/preproc/refer/refer.am- src/preproc/refer/ref.cpp \ -- src/preproc/soelim/soelim.am-# along with this program. If not, see <http://www.gnu.org/licenses/>. src/preproc/soelim/soelim.am- src/preproc/soelim/soelim.am-prefixexecbin_PROGRAMS += soelim src/preproc/soelim/soelim.am:soelim_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/preproc/soelim/soelim.am-soelim_SOURCES = src/preproc/soelim/soelim.cpp src/preproc/soelim/soelim.am-PREFIXMAN1 += src/preproc/soelim/soelim.1 src/preproc/soelim/soelim.am-EXTRA_DIST += \ -- src/preproc/tbl/tbl.am-# along with this program. If not, see <http://www.gnu.org/licenses/>. src/preproc/tbl/tbl.am- src/preproc/tbl/tbl.am-prefixexecbin_PROGRAMS += tbl src/preproc/tbl/tbl.am:tbl_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/preproc/tbl/tbl.am-tbl_SOURCES = \ src/preproc/tbl/tbl.am- src/preproc/tbl/main.cpp \ src/preproc/tbl/tbl.am- src/preproc/tbl/table.cpp \ -- src/roff/groff/groff.am-bin_PROGRAMS += groff src/roff/groff/groff.am-groff_LDADD = \ src/roff/groff/groff.am- libgroff.a \ src/roff/groff/groff.am: lib/libgnu.a \ src/roff/groff/groff.am- $(LIBM) src/roff/groff/groff.am-groff_SOURCES = \ src/roff/groff/groff.am- src/roff/groff/groff.cpp \ -- src/roff/troff/troff.am- src/roff/troff/column.cpp \ src/roff/troff/troff.am- src/roff/troff/troff.1.man \ src/roff/troff/troff.am- src/roff/troff/TODO src/roff/troff/troff.am:troff_LDADD = libgroff.a lib/libgnu.a $(LIBM) src/roff/troff/troff.am-troff_SOURCES = \ src/roff/troff/troff.am- src/roff/troff/dictionary.cpp \ src/roff/troff/troff.am- src/roff/troff/div.cpp \ -- src/utils/addftinfo/addftinfo.am-bin_PROGRAMS += addftinfo src/utils/addftinfo/addftinfo.am-man1_MANS += src/utils/addftinfo/addftinfo.1 src/utils/addftinfo/addftinfo.am-EXTRA_DIST += src/utils/addftinfo/addftinfo.1.man src/utils/addftinfo/addftinfo.am:addftinfo_LDADD = libgroff.a lib/libgnu.a src/utils/addftinfo/addftinfo.am-addftinfo_SOURCES = \ src/utils/addftinfo/addftinfo.am- src/utils/addftinfo/addftinfo.cpp \ src/utils/addftinfo/addftinfo.am- src/utils/addftinfo/guess.cpp \ -- src/utils/hpftodit/hpftodit.am-bin_PROGRAMS += hpftodit src/utils/hpftodit/hpftodit.am-man1_MANS += src/utils/hpftodit/hpftodit.1 src/utils/hpftodit/hpftodit.am-EXTRA_DIST += src/utils/hpftodit/hpftodit.1.man src/utils/hpftodit/hpftodit.am:hpftodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/utils/hpftodit/hpftodit.am-hpftodit_SOURCES = \ src/utils/hpftodit/hpftodit.am- src/utils/hpftodit/hpftodit.cpp \ src/utils/hpftodit/hpftodit.am- src/utils/hpftodit/hpftodit.h \ -- src/utils/indxbib/indxbib.am- src/utils/indxbib/indxbib.cpp \ src/utils/indxbib/indxbib.am- src/utils/indxbib/signal.c src/utils/indxbib/indxbib.am-src/utils/indxbib/indxbib.$(OBJEXT): defs.h src/utils/indxbib/indxbib.am:indxbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a src/utils/indxbib/indxbib.am-PREFIXMAN1 += src/utils/indxbib/indxbib.1 src/utils/indxbib/indxbib.am-EXTRA_DIST += \ src/utils/indxbib/indxbib.am- src/utils/indxbib/indxbib.1.man \ -- src/utils/lkbib/lkbib.am-bin_PROGRAMS += lkbib src/utils/lkbib/lkbib.am-man1_MANS += src/utils/lkbib/lkbib.1 src/utils/lkbib/lkbib.am-EXTRA_DIST += src/utils/lkbib/lkbib.1.man src/utils/lkbib/lkbib.am:lkbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a src/utils/lkbib/lkbib.am-lkbib_SOURCES = src/utils/lkbib/lkbib.cpp src/utils/lkbib/lkbib.am-src/utils/lkbib/lkbib.$(OBJEXT): defs.h src/utils/lkbib/lkbib.am- -- src/utils/lookbib/lookbib.am-prefixexecbin_PROGRAMS += lookbib src/utils/lookbib/lookbib.am-PREFIXMAN1 += src/utils/lookbib/lookbib.1 src/utils/lookbib/lookbib.am-EXTRA_DIST += src/utils/lookbib/lookbib.1.man src/utils/lookbib/lookbib.am:lookbib_LDADD = libbib.a libgroff.a $(LIBM) lib/libgnu.a src/utils/lookbib/lookbib.am-lookbib_SOURCES = src/utils/lookbib/lookbib.cpp src/utils/lookbib/lookbib.am- src/utils/lookbib/lookbib.am- -- src/utils/pfbtops/pfbtops.am-man1_MANS += src/utils/pfbtops/pfbtops.1 src/utils/pfbtops/pfbtops.am-EXTRA_DIST += src/utils/pfbtops/pfbtops.1.man src/utils/pfbtops/pfbtops.am-pfbtops_SOURCES = src/utils/pfbtops/pfbtops.c src/utils/pfbtops/pfbtops.am:pfbtops_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/utils/pfbtops/pfbtops.am- src/utils/pfbtops/pfbtops.am-pfbtops_TESTS = \ src/utils/pfbtops/pfbtops.am- src/utils/pfbtops/tests/smoke-test.sh -- src/utils/tfmtodit/tfmtodit.am-man1_MANS += src/utils/tfmtodit/tfmtodit.1 src/utils/tfmtodit/tfmtodit.am-EXTRA_DIST += src/utils/tfmtodit/tfmtodit.1.man src/utils/tfmtodit/tfmtodit.am-tfmtodit_SOURCES = src/utils/tfmtodit/tfmtodit.cpp src/utils/tfmtodit/tfmtodit.am:tfmtodit_LDADD = libgroff.a $(LIBM) lib/libgnu.a src/utils/tfmtodit/tfmtodit.am- src/utils/tfmtodit/tfmtodit.am-# Local Variables: src/utils/tfmtodit/tfmtodit.am-# fill-column: 72 -- src/utils/xtotroff/xtotroff.am-xtotroff_SOURCES = src/utils/xtotroff/xtotroff.c src/utils/xtotroff/xtotroff.am-XLIBS=$(LIBXUTIL) $(LIBGROFF) src/utils/xtotroff/xtotroff.am-xtotroff_LDADD = libxutil.a libgroff.a $(X_LIBS) $(X_PRE_LIBS) \ src/utils/xtotroff/xtotroff.am: -lXaw -lXt -lX11 $(X_EXTRA_LIBS) $(LIBM) lib/libgnu.a src/utils/xtotroff/xtotroff.am-xtotroff_CPPFLAGS = $(AM_CPPFLAGS) $(X_CFLAGS) src/utils/xtotroff/xtotroff.am-endif src/utils/xtotroff/xtotroff.am-EXTRA_DIST += src/utils/xtotroff/xtotroff.1.man
signature.asc
Description: PGP signature
