Am 17.01.2026 um 00:44 schrieb Jeffrey Law:

On 1/16/2026 1:00 PM, James K. Lowden wrote:

At present libgcobol requires the target to supply libxml2.  That
complicates building cross compilers and mitigates against how
distributions are normally built.  The remedy is to make libgcobol a
bootstrap library, meaning AIUI that libraries it requires are built
first, so that libgcobol can be built on a vanilla machine, from
scratch, with the target providing nothing more than a C++ compiler.
Let's get some clarity on this paragraph.  You say "requires the target to supply libxml2".   I could read that a couple different ways and the differences are likely meaningful.

So does libxml2 get linked into target code?  Or libxml2 needed to build the compiler itself?

In the former case, we'd likely need a copy in the tree managed like we do with other target libraries.  If it's the later, then we have a lot more flexibility.

Jeff

Only in the compiler itself - libgcobol wraps all calls and therefore it is only needed "there". Also it won't use every part of libxml2 (obviously) so part of its CVEs in the last years won't "apply" if static linking woulds be done (and the unused symbols be optimized out).

Background:
It is needed to implement two COBOL statements handling XML generation from pre-defined data in pre-defined structure (easy) and parsing "anything in stream mode / chunks" - which "surprisingly" matches the ABI of libxml2. I'd expect the compiler gcobol to also use it for pre-validation of encodings and other parts if those are coded as literals in COBOL.


Side note:
The way GnuCOBOL 2+3 does it is to "just link" libxml2 (our biggest, but optional dependency) into the runtime "libcob". GnuCOBOL 4 - by default, also possible to disable - has a shim library around it "libcob-xml" which does the linking and is delay-loaded only upon use (allowing much smaller distributions and dependencies as long as it isn't used at runtime [or compile time, see above], while still having the full feature-set with a single build [distros _could_ seperate libcob-xml out of libcob]).

Kind regards,
Simon

Reply via email to