On Thu, 12 Dec 2024 12:56:36 -0500 "James K. Lowden" <jklow...@schemamania.org> wrote:
> The following 8 patches constitute the 80 files needed to build and > document the COBOL front end. Below is a list of issues with the COBOL front end, listed in order of priority, most important first. Each is tagged with who raised it and a brief status. It is intended to be comprehensive; if something is missing, please say. Our git repository is maintained at https://gitlab.cobolworx.com/COBOLworx/gcc-cobol The next set of patches will be against commit 7d6dc2130970ccf6555d4e9f977515c6c20f7d2f Author: Jonathan Wakely <jwak...@redhat.com> Date: Fri Dec 13 16:53:06 2024 +0000 I think the issue that raised the most concern is the one I think is most important: diagnostics. It was unclear -- still is, to me -- whether the COBOL front end must or should use the gcc diagnostic framework. (In my defense, the system goes unmentioned in gccint.info.) >From where I sit now, having not yet opened the hood, I think we could have gcc diagnostics incorporated in January. Probably it's one of those things that's easy if you know how, and getting to step #1 is the hard part. We regard translatable messages as something that can be deferred. I would very much like to see the compiler in the hands of users, and respond to their actual needs. When someone volunteers to translate the messages, I would make it a priority to support the effort. == Build Issues == * Some files were mislabled in the ChangeLog heading [Marc] - Hopefully all fixed * gcc/cobol/config-lang.in was in both bld and cfg patches. [Marc] - We Regret the Error * regenerate gcc/cobol/lang.opt.urls [David] - David's patch will be included verbatim as patch #9 * Makefile variables DESTDIR, YACC, LEX, udfdir [Joseph] - IIUC, YACC = BISON and LEX = FLEX - unclear what default definition of udfdir should be * install directory for gcobc script - will try to correct * uninstall shouldn't remove anything from the build directory [Joseph] - understood * If m4 is needed for something other than regenerating configure scripts, or if the requirements on m4 for COBOL are stricter - unsure what to do * a version of gm4 that recognises ?gnu [Marc] - Not as far as I know * trivial fix to placate older C++ compilers [David] - applied, thanks * Please make sure to do all regeneration with *unmodified* versions [Joseph] - I don't understand. * does not build on Darwin/macOS [Iain] - We have built only on Linux, on aarch64 x86_64 (per arch(1)). - We rely on support for 128-bit integer and floating point to meet ISO COBOL requirements. - We want to build on any 64-bit Posix OS, BE and LE. - 32-bit architectures are not a consideration. * building on the compile farm? [Iain] - No, don't know how yet. Willing. * does your testing include bootstrap builds? [David] - No, we normally use --disable-bootstrap --disable-multilib * How would it be regression tested? [Andi] - need to discuss licensing and feasibility * ideal would be a branch with just the 8 patches [Iain] - I test the patches on the cobol-patched branch, but I don't normally push them. == Front-end Issues == * Bison dependency [Iain] - we require Bison 3.5.1, released nearly 6 years ago. As a point of comparison, it predates GCC 8.4. * Bison dependency needs to be documented [Joseph] - will do * there isn't any HTML documentation [David, Joseph] - patches include the changes required to update_web_docs_git for mdoc files - will post HTML and PDF versions for reference - can include generated HTML on request * check asprintf [Joseph] - The only examples I find where the returned value of asprintf is not checked is in symbols_dump(), which is used only to debug the front end. * symbol versioned on targets [Jakub] - We will endeavor to use symbol versioning - We have no experience with it * Leading underscores [Joseph] - pending discussion * Static buffers with a PATH_MAX size will probably break the build on Hurd host. [Joseph] - Hurd probably not relevant to COBOL - PATH_MAX is Posix. There is no perfect solution. - If any provided filename is too long, the front end should report it as an error. That's what tar(1) does. == Diagnositics == * diagnositics [David, Joseph] - We intended to move to using the gcc diagnositic framework before submitting the patches. It's still on the front burner. - Is it OK to apply David's SARIF patch to our branch, subsuming it into our patches? - prefer explicit locations, check - Regarding translation support, we would prefer to add that soon after the front end is accepted. == Infeasible == * Please use `git send-email` with threading. [Sam] - dev machines have no email * please make sure that every function has such a comment [Josef] - There are 2074 functions, 1295 of which are static. I estimate the effort would require 86 man-days. - IMO this is not the best way to write documentation, nor a measure of its quality. = [end] = I hope this captures everything. There are a few open questions I need to follow up on, and some technology to learn. Please let me know if the indicated disposition presents a problem. I plan to provide a new set of patches remedying the technical problems (hopefully) to be followed by another set dealing with diagnostics. --jkl