Hi, On 2020-06-27 18:43:40 -0400, Tom Lane wrote: > Andres Freund <and...@anarazel.de> writes: > > I can test that with another program, but for some reason pg_bsd_indent > > fails to build against 13/HEAD, but builds fine against 12. Not sure yet > > what's up: > > Huh. Works here on RHEL8 ... what platform are you using?
That was on Debian unstable, but I don't think it's really related. The issue turns out to be that gcc 10 changed the default from -fno-common to -fcommon, and I had 13/HEAD set up to use gcc 10, but 12 to use gcc 9. The way that pg_bsd_indent defines its variables isn't standard C, as far as I can tell, which explains the errors I was getting. All the individual files include indent_globs.h, which declares/defines a bunch of variables. Since it doesn't use extern, they'll all end up as full definitions in each .o when -fno-common is used (the default now), hence the multiple definition errors. The only reason it works with -fcommon is that they'll end up processed as weak symbols and 'deduplicated' at link time. Ick. Greetings, Andres Freund