On Thu, 12 Dec 2024 12:56:36 -0500
"James K. Lowden" <[email protected]> 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 <[email protected]>
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