https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119414
Simon Sobisch <simonsobisch at gnu dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |simonsobisch at gnu dot org
--- Comment #18 from Simon Sobisch <simonsobisch at gnu dot org> ---
Just to add:
* explicit exported should be all
ENTRY "abc".
* PROGRAM-ID. "def".
is the most common (internal) entry point, with the code starting in the
first non-declarative procedure
* PROGRAM-ID. GFH. and
PROGRAM-id. gfh.
should be handled identical = somehow exported, most environments export an
uppercase variant for non-literals
* FUNCTION-ID. "abc".
needs to be somehow available, but how is implementation defined, and it it
totally valid if this is only done via an "internal" external-repository -
because function definitions _can_ be implemented 100% static - and their used
name in COBOL is always case-insensitive (the actual exported entry point is an
implementation internal definition)
at least from COBOL CALLs the entry points should be available:
* in nested programs (those don't need to be exported otherwise, but also be
accessible inside via CALL var)
* in the same binary
* in linked objects (linker optimisation of "unused" symbols may apply, in
which case the user may need to disable that)
* in already loaded (COBOL) shared objects
* in binaries resolved "implementor defined" - but for dynamic CALL "VAR"
people will expect VAR.so (or var.so) to be loaded - COBOL requires to document
this to the user
It is _very_ useful to have an option to "pre-load" libraries somehow - because
often multiple functions are in a single shared objects. An environment var
similar to LD_PRELOAD (but portable and only applying to COBOL) is useful.
Another option is to allow "pre-loading" by CALL "binary-name" (this is at
least done in ACUCOBOL, but I think also in other COBOL environments).