gnu/gcc/d556f558b9db9a136ac9ec4cc804dd899d2e63cd cobol: Accept FD name as CALL parameter.
A nonstandard extension CALL may pass an FD. On the mainframe the
called cannot be a COBOL program and the passed parameter is the
file's DCB. With this patch the parser is accepts an FD name as a
CALL parameter and interprets it, for now, as a buffer name, with a
warning. Without -dialect ibm it is an error [Wcall-fd]. Further
development is needed to emulate mainframe semantics. Begins to
address RT 3619.
Also introduce __funcsig__ as a debugging convenience to print the
full name of __PRETTY_FUNCTION__ without type and parameters.
gcc/cobol/ChangeLog:
* cbldiag.h (enum cbl_diag_id_t): Add IbmCallFd.
* cobol1.cc (cobol_langhook_handle_option): Handle Wcall-fd.
* gcobol.1: Document Wcall-fd.
* lang-specs.h: Add Wcall-fd.
* lang.opt: Same
* messages.cc: Add Wcall-fd as IBM dialect option.
* parse.y: Use was_fd_name() to prevent misuse.
* parse_ante.h (field_find): Add incompatible semantics warning.
(parser_move_carefully): Same.
* symbols.cc (symbols_update): Add FD name to symbol map.
* symbols.h (update_symbol_map2): Declare overload for file.
(was_fd_name): Declare function.
* symfind.cc (struct funcname): Define to minimize __PRETTY_FUNCTION__.
(__funcsig__): Define function-name macro.
(class sym_name_t): Redefine public members as const.
(class symbol_file_names_t) Define maps for FD names.
(update_symbol_map2): Define overload for file.
(was_fd_name): Define.
(symbol_find): Use new symbol_file_names class.
11 files changed