mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
reflection
9 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d8e3ddc319 |
cobol: Correct libgcobol install directory and add components.
Set libgcobol/Makefile.am to define libdir and libsubdir the way libada does. Reorganize libgcobol/compat directory to group by emulation, not component. Move orphan gcc/udf/stored-char-length.cbl to the compat directory. Introduce new POSIX bindings. gcc/cobol/ChangeLog: PR cobol/122702 * Make-lang.in: Move stored-char-length.cbl to libgcobol. libgcobol/ChangeLog: PR cobol/122702 * Makefile.am: Set libdir and libsubdir per libada example. * Makefile.in: Regenerate. * compat/README.md: Revise per new directory structure. * compat/gnu/lib/CBL_ALLOC_MEM.cbl: Moved from compat/lib/gnu. * compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl: Moved from compat/lib/gnu. * compat/gnu/lib/CBL_DELETE_FILE.cbl: Moved from compat/lib/gnu. * compat/gnu/lib/CBL_FREE_MEM.cbl: Moved from compat/lib/gnu. * compat/gnu/udf/stored-char-length.cbl: New file. * compat/lib/gnu/CBL_ALLOC_MEM.cbl: Moved to compat/gnu/lib. * compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl: Moved to compat/gnu/lib. * compat/lib/gnu/CBL_DELETE_FILE.cbl: Moved to compat/gnu/lib. * compat/lib/gnu/CBL_FREE_MEM.cbl: Moved to compat/gnu/lib. * posix/cpy/psx-open.cpy: New file. * posix/shim/open.cc: New file. * posix/shim/stat.h: Add mode & flag bits for open.cc * posix/udf/posix-lseek.cbl: New file. * posix/udf/posix-open.cbl: New file. * posix/udf/posix-read.cbl: New file. * posix/udf/posix-write.cbl: New file. * xmlparse.cc: Quell context_t initialization-order warning. |
||
|
|
08e9df2546 |
cobol: Introduce vendor-compatibility layer as user-defined functions.
Install COBOL UDFs in a target directory that includes the GCC version in its path, to permit side-by-side installation. Support compat library with COBOL POSIX bindings; support those binding with C functions in libgcobol as needed. Changes to the compiler to support POSIX binding and testing. Include developer conveniences -- Makefiles, bin/ and t/ directories -- to ensure UDFs compile and return reasonable results. These are not installed and do not affect how libgcobol is built. gcc/cobol/ChangeLog: * cdf.y: Install literals in symbol table. * genapi.cc (parser_alphabet): Use std::string for currency. (initialize_the_data): Rely on constructor. (parser_file_add): Better #pragma message. (parser_exception_file): Return early if not generating code. * parse.y: Allow library programs to act as functions. * parse_ante.h (dialect_proscribed): Standardize message. (intrinsic_call_2): Correct s/fund/func/ misspelling. * scan.l: Comment. * symbols.cc (symbols_update): Add unreachable assertion. (symbol_field_parent_set): Reduce error to debug message. (cdf_literalize): Declare. (symbol_table_init): Insert CDF constants as literals. * symbols.h (cbl_dialect_str): Provide string values for enum. (is_working_storage): Remove function. (struct cbl_field_data_t): Add manhandle_initial for Numeric Edited. (struct cbl_field_t): Initialize name to zeros. (struct cbl_section_t): Delete unused attr() function. (symbol_unique_index): Declare. * token_names.h: Regenerate. * util.cc (cdf_literalize): Construct a cbl_field_t from a CDF literal. (symbol_unique_index): Supply "globally" unique number for a program. libgcobol/ChangeLog: * Makefile.am: Move UDF-support to posix/shim, add install targets * Makefile.in: Regenerate * charmaps.cc (__gg__currency_signs): Use std::string. * charmaps.h: Include string and vector headers. (class charmap_t): Use std::string and vector for currency. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Check for libxml2. * intrinsic.cc (numval_c): Constify. * libgcobol.cc (struct program_state): Use std::string and vector. (__gg__inspect_format_2): Add debug messages. * libgcobol.h (__gg__get_default_currency_string): Constify. * valconv.cc (expand_picture): Use std::string and vector. (__gg__string_to_numeric_edited): Use std::string and vector. (__gg__currency_sign_init): Use std::string and vector. (__gg__currency_sign): Use std::string and vector. * xmlparse.cc (xml_push_parse): Reformat. * posix/stat.cc: Removed. * posix/stat.h: Removed. * .gitignore: New file. * compat/README.md: New file. * compat/lib/gnu/CBL_ALLOC_MEM.cbl: New file. * compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl: New file. * compat/lib/gnu/CBL_DELETE_FILE.cbl: New file. * compat/lib/gnu/CBL_FREE_MEM.cbl: New file. * compat/t/Makefile: New file. * compat/t/smoke.cbl: New file. * posix/README.md: New file. * posix/bin/Makefile: New file for UDF-developer. * posix/bin/headers: New file. * posix/bin/scrape.awk: New file. * posix/bin/sizeofs.c: New file. * posix/bin/udf-gen: New file. * posix/cpy/posix-errno.cbl: New file. * posix/cpy/statbuf.cpy: New file. * posix/cpy/tm.cpy: New file. * posix/errno.cc: Removed. * posix/localtime.cc: Removed. * posix/shim/stat.cc: New file. * posix/shim/stat.h: New file. * posix/t/Makefile: New file. * posix/t/errno.cbl: New file. * posix/t/exit.cbl: New file. * posix/t/localtime.cbl: New file. * posix/t/stat.cbl: New file. * posix/tm.h: Removed. * posix/udf/posix-exit.cbl: New file. * posix/udf/posix-localtime.cbl: New file. * posix/udf/posix-mkdir.cbl: New file. * posix/udf/posix-stat.cbl: New file. * posix/udf/posix-unlink.cbl: New file. |
||
|
|
1139d69306 |
cobol: Mainly extends compilation and execution in finternal-ebcdic.
We expanded our extended testing regime to execute many testcases in EBCDIC mode as well as in ASCII. This exposed hundreds of problems in both compilation (where conversions must be made between the ASCII source code and the EBCDIC execution environment) and in run-time functionality, where results from calls to system routines and internal calculations that must be done in ASCII have to be converted to EBCDIC. These changes also switch to using FIXED_WIDE_INT(128) instead of REAL_VALUE_TYPE when initializing fixed-point COBOL variable types. This provides for accurate initialization up to 37 digits, instead of losing accuracy after 33 digits. These changes also support the implementation of the COBOL DELETE FILE (Format 2) statement. These changes also introduce expanded support for specifying character encodings, including support for locales. co-authored-by: Robert Dubner <rdubner@symas.com> co-authored-by: James K. Lowden <jklowden@cobolworx.com> gcc/cobol/ChangeLog: * Make-lang.in: Repair documentation generation. * cdf.y: Changes to tokens. * cobol1.cc (cobol_langhook_handle_option): Add comment. * genapi.cc (function_pointer_from_name): Use data.original() for function name. (parser_initialize_programs): Likewise. (cobol_compare): Make sure encodings of comparands are the same. (move_tree): Change name of DEFAULT_SOURCE_ENCODING macro. (parser_enter_program): Typo. (psa_FldLiteralN): Break out dirty_to_binary() support routine. (dirty_to_binary): Likewise. (parser_alphabet): Rename 'alphabet' to 'collation_sequence'. (parser_allocate): Change wsclear() to be uint32_t instead of char. (parser_label_label): Formatting. (parser_label_goto): Likewise. (get_the_filename): Breakout get_the_filename(), which handles encoding. (parser_file_open): Likewise. (set_up_delete_file_label): Implement DELETE FILE (Format 2). (parser_file_delete_file): Likewise. (parser_file_delete_on_exception): Likewise. (parser_file_delete_not_exception): Likewise. (parser_file_delete_end): Likewise. (parser_call): Use data.original(). (parser_entry): Use data.original(). (mh_source_is_literalN): Convert from sourceref.field->codeset.encoding. (binary_initial_from_float128): Change to "binary_initial". (binary_initial): Calculate in FIXED_WIDE_INT(128) instead of REAL_VALUE_TYPE. (digits_from_int128): New routine uses binary_initial. (digits_from_float128): Removed. Kept as comment for reference. (initial_from_initial): Use binary_initial. (actually_create_the_static_field): Use correct encoding. (parser_symbol_add): Likewise. * genapi.h (parser_file_delete_file): Implement FILE DELETE. (parser_file_delete_on_exception): Implement FILE DELETE. (parser_file_delete_not_exception): Implement FILE DELETE. (parser_file_delete_end): Implement FILE DELETE. * genmath.cc: Include charmaps.h. * genutil.cc (get_literal_string): Change name of DEFAULT_SOURCE_ENCODING macro. * parse.y: Token changes; numerous changes in support of encoding; support for DELETE FILE. * parse_ante.h (name_of): Use data.original(). (class prog_descr_t): Support of locales. (current_options): Formatting. (current_encoding): Formatting. (current_program_index): Formatting. (current_section): Formatting. (current_paragraph): Formatting. (is_integer_literal): Use correct encoding. (value_encoding_check): Handle encoding changes. (alphabet_add): Likewise. (data_division_ready): Likewise. * scan.l: Use data.original(). * show_parse.h: Use correct encoding. * symbols.cc (elementize): Likewise. (symbol_elem_cmp): Handle locale. (struct symbol_elem_t): Likewise. (symbol_locale): Likewise. (field_str): Change DEFAULT_SOURCE_ENCODING macro name. (symbols_alphabet_set): Formatting. (symbols_update): Modify consistency checks. (symbol_locale_add): Locale support. (cbl_locale_t::cbl_locale_t): Locale support. (cbl_alphabet_t::cbl_alphabet_t): New structure. (cbl_alphabet_t::reencode): Formatting. (cbl_alphabet_t::assign): Change name of collation_sequence. (cbl_alphabet_t::also): Likewise. (new_literal_add): Anticipate the need for four-byte characters. (guess_encoding): Eliminate. (cbl_field_t::internalize): Refine conversion of data.initial to specified encoding. * symbols.h (enum symbol_type_t): Add SymLocale. (struct cbl_field_data_t): Incorporate data.orig. (struct cbl_field_t): Likewise. (struct cbl_delete_file_t): New structure. (struct cbl_label_t): Incorporate cbl_delete_file_t. (struct cbl_locale_t): Support for locale. (hex_decode): Comment. (struct cbl_alphabet_t): Incorporate locale; change variable name to collation_sequence. (struct symbol_elem_t): Incorporate locale. (cbl_locale_of): Likewise. (cbl_alphabet_of): Likewise. (symbol_locale_add): Likewise. (wsclear): Type is now uint32_t instead of char. * util.cc (symbol_type_str): Incorporate locale. (cbl_field_t::report_invalid_initial_value): Change test so that pure PIC A() variables are limited to [a-zA-Z] and space. (valid_move): Use DEFAULT_SOURCE_ENCODING macro. (cobol_filename): Formatting. libgcobol/ChangeLog: * charmaps.cc (__gg__encoding_iconv_type): Eliminate trailing '/' characters from encoding names. (__gg__get_charmap): Switch to DEFAULT_SOURCE_ENCODING macro name. * charmaps.h (DEFAULT_CHARMAP_SOURCE): Likewise. (DEFAULT_SOURCE_ENCODING): Likewise. (class charmap_t): Enhance constructor. * encodings.h (valid_encoding): New routine. * gcobolio.h (enum cblc_file_prior_op_t): Support DELETE FILE. * gfileio.cc (get_filename): Likewise. (__io__file_remove): Likewise. (__gg__file_reopen): Likewise. (__io__file_open): Likewise. (gcobol_fileops): Likewise. (__gg__file_delete): Likewise. (__gg__file_remove): Likewise. * intrinsic.cc (get_all_time): Switch to DEFAULT_SOURCE_ENCODING macro name. (ftime_replace): Support ASCII/EBCDIC encoding. (__gg__current_date): Likewise. (__gg__max): Likewise. (__gg__lower_case): Likewise. (numval): Likewise. (numval_c): Likewise. (__gg__upper_case): Likewise. (__gg__when_compiled): Likewise. (gets_int): Likewise. (gets_nanoseconds): Likewise. (fill_cobol_tm): Likewise. (floating_format_tester): Likewise. (__gg__numval_f): Likewise. (__gg__test_numval_f): Likewise. (iscasematch): Likewise. (strcasestr): Likewise. (strcaselaststr): Likewise. (__gg__substitute): Likewise. (__gg__locale_compare): Support for locale. (__gg__locale_date): Likewise. (__gg__locale_time): Likewise. (__gg__locale_time_from_seconds): Likewise. * libgcobol.cc (class ec_status_t): Support for encoding. (int128_to_field): Likewise. (__gg__dirty_to_float): Likewise. (format_for_display_internal): Likewise. (get_float128): Likewise. (compare_field_class): Likewise. (__gg__compare_2): Likewise. (init_var_both): Likewise. (__gg__move): Likewise. (display_both): Likewise. (is_numeric_display_numeric): Likewise. (accept_envar): Likewise. (__gg__get_argv): Likewise. (__gg__unstring): Likewise. (__gg__check_fatal_exception): Likewise. (__gg__adjust_encoding): Likewise. (__gg__func_exception_location): Likewise. (__gg__func_exception_statement): Likewise. (__gg__func_exception_status): Likewise. (__gg__func_exception_file): Likewise. (__gg__just_mangle_name): Likewise. (__gg__function_handle_from_name): Likewise. (get_the_byte): Likewise. (__gg__module_name): Likewise. (__gg__accept_arg_value): Likewise. * xmlparse.cc (fatalError): Formatting. (setDocumentLocator): Formatting. (xmlchar_of): Formatting. (xmlParserErrors_str): Formatting. |
||
|
|
71233d3170 |
libgcobol: fix xmlCtxtGetVersion typo again
Followup to r16-4668-g374ec67294fc4f. I'd assumed the build got past this point but it turned out it hadn't. libgcobol/ChangeLog: PR cobol/122451 * xmlparse.cc (context_t): Make 'ctxt' public. (xml_push_parse): Fix xmlCtxtGetVersion argument. |
||
|
|
374ec67294 |
libgcobol: fix xmlCtxtGetVersion typo
libgcobol/ChangeLog: PR cobol/122451 * xmlparse.cc (xml_push_parse): Fix xmlCtxtGetVersion argument typo to be 'context'. |
||
|
|
89a6db7bbe |
Various fixes for XML PARSE.
Annotate unused parameters. Do not compile some functions that might not be needed. Consistent with libgcobol, log errors via syslog(3). Introduce push-parser as experiment. libgcobol/ChangeLog: Correct warnings and errors in xmlparse.cc. * xmlparse.cc (CTX): Macro for unused user-context parameter. (attributeDecl): Mark unused parameters. (cdataBlock): Same. (characters): Same. (comment): Same. (elementDecl): Same. (endDocument): Same. (endElementNs): Same. (endElement): Same. (entityDecl): Same. (error): Same. (externalSubset): Same. (fatalError): Same. (getEntity): Eliminate via preprocessor until needed. (getParameterEntity): Same. (hasExternalSubset): Mark unused parameters. (hasInternalSubset): Same. (ignorableWhitespace): Same. (internalSubset): Same. (isStandalone): Eliminate via preprocessor until needed. (notationDecl): Mark unused parameters. (processingInstruction): Same. (reference): Same. (resolveEntity): Eliminate via preprocessor until needed. (setDocumentLocator): Mark unused parameters. (startDocument): Same. (startElementNs): Same. (startElement): Same. (unparsedEntityDecl): Same. (warning): Same. (xmlchar_of): Utility cast function. (xmlParserErrors_str): Message string for libxml2 errors. (xmlerror_str): Macro to include textual form of libxml2 error. (context_t): Push-parser context class. (xml_push_parse): Use push-parser. (__gg__xml_parse_done): Signify end-of-input to XML push-parser. (__gg__xml_parse): Mark unused parameters. |
||
|
|
c1b9b3812d |
libgcobol: fix compat w/ >=libxml2-2.12
libgcobol/ChangeLog: PR cobol/122398 * xmlparse.cc (__gg__xml_parse): Make 'msg' const. |
||
|
|
e9757133bb |
cobol: Corrected FUNCTION CHAR and FUNCTION ORD.
The functions CHAR and ORD have been changed to correctly report on character positions within the collation sequence. The use of the LOW-VALUE and HIGH-VALUE figurative constants has been corrected. Some establishment of DISPLAY and NATIONAL encodings has been done in anticipation of changes soon to come. Some new testsuite tests have been added. gcc/cobol/ChangeLog: * genapi.cc (parser_alphabet): Alphabet encoding. (parser_alphabet_use): Likewise. (parser_xml_parse): Use correct debugging macro; encoding. (parser_xml_on_exception): Likewise. (parser_xml_not_exception): Likewise. (parser_xml_end): Likewise. (initialize_the_data): Encoding. (parser_label_label): Debugging macros. (parser_label_goto): Likewise. (parser_file_add): Encoding. (parser_intrinsic_call_1): Special handling for __gg__char. (parser_intrinsic_call_2): Formatting. * parse.y: Response from FUNCTION ORD is flagged "unsigned". * symbols.cc (cbl_alphabet_t::reencode): Establish low_char & high_char. * symbols.h (struct cbl_alphabet_t): Likewise. libgcobol/ChangeLog: * charmaps.cc: Encoding. * charmaps.h (class charmap_t): Encoding. * intrinsic.cc (__gg__char): Report the character at the collation position. (__gg__ord): Report the collation position of a character. * libgcobol.cc (struct program_state): Add encodings; Remove obsolete defines. (__gg__current_collation): New function for encoding/collation. (__gg__pop_program_state): Encoding. (__gg__init_program_state): Encoding. (format_for_display_internal): Handle LOW-VALUE and HIGH-VALUE. (__gg__compare_2): Encoding. (__gg__alphabet_use): Likewise. * libgcobol.h (__gg__current_collation): New declaration. * xmlparse.cc (__gg__xml_parse): Make a parameter const. gcc/testsuite/ChangeLog: * cobol.dg/group2/Length_overflow__2_.out: Updated test result. * cobol.dg/group2/Length_overflow_with_offset__1_.out: Likewise. * cobol.dg/group2/Offset_overflow.out: Likewise. * cobol.dg/group2/CALL_with_OCCURS_DEPENDING_ON.cob: New test. * cobol.dg/group2/CALL_with_OCCURS_DEPENDING_ON.out: New test. * cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_ASCII.cob: New test. * cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_ASCII.out: New test. * cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_EBCDIC.cob: New test. * cobol.dg/group2/CHAR_and_ORD_with_COLLATING_sequence_-_EBCDIC.out: New test. * cobol.dg/group2/EC-BOUND-REF-MOD_checking_process_termination.cob: New test. * cobol.dg/group2/EC-BOUND-REF-MOD_checking_process_termination.out: New test. * cobol.dg/group2/Intrinsics_without_FUNCTION_keyword__3_.cob: New test. * cobol.dg/group2/Occurs_DEPENDING_ON__source_and_dest.cob: New test. * cobol.dg/group2/Occurs_DEPENDING_ON__source_and_dest.out: New test. * cobol.dg/group2/Recursive_subscripts.cob: New test. * cobol.dg/group2/Recursive_subscripts.out: New test. * cobol.dg/group2/SEARCH_ALL_with_OCCURS_DEPENDING_ON.cob: New test. * cobol.dg/group2/SEARCH_ALL_with_OCCURS_DEPENDING_ON.out: New test. * cobol.dg/group2/Subscript_by_arithmetic_expression.cob: New test. * cobol.dg/group2/Subscript_out_of_bounds__1_.cob: New test. * cobol.dg/group2/Subscript_out_of_bounds__1_.out: New test. * cobol.dg/group2/Subscript_out_of_bounds__2_.cob: New test. * cobol.dg/group2/Subscript_out_of_bounds__2_.out: New test. * cobol.dg/group2/Subscripted_refmods.cob: New test. * cobol.dg/group2/Subscripted_refmods.out: New test. * cobol.dg/group2/length_of_ODO_Rules_7__8A__and_8B.cob: New test. * cobol.dg/group2/length_of_ODO_Rules_7__8A__and_8B.out: New test. * cobol.dg/group2/length_of_ODO_w_-_reference_modification.cob: New test. |
||
|
|
b20c6458fa |
cobol: Implement the XML PARSE statement.
These changes implement the XML PARSE statement as described in the IBM specification. A repair to exception handling is included. Up until now, an exception after a successful file operation wasn't handled properly. A repair to value declarations for BINARY / COMP / COMP-4 / COMP-5 values now allows them to have digits to the right of the implied decimal point. Processing of the "S" PICTURE character has been normalized as well. Co-Authored-By: James K. Lowden <jklowden@cobolworx.com> Co-Authored-By: Robert Dubner <rdubner@symas.com> gcc/cobol/ChangeLog: * Make-lang.in: Incorporate new token_names.h file. * cdf.y: Modify tokens. * gcobol.1: Document XML PARSE statement * genapi.cc (parser_enter_program): Verify that every goto has a matching label. (parser_end_program): Likewise. (parser_alphabet): Refine handling codeset encodings. (parser_alphabet_use): Likewise. (label_fetch): Moved from later in the source code. (parser_xml_parse): New routine for XML PARSE. (parser_xml_on_exception): Likewise. (parser_xml_not_exception): Likewise. (parser_xml_end): Likewise. (parser_label_label): Verify goto/label matching. (parser_label_goto): Likewise. (parser_entry): Minor change to SHOW_PARSE report. * genapi.h (parser_alphabet): Set parameter to const. (parser_xml_parse): Declare new function. (parser_xml_on_exception): Likewise. (parser_xml_not_exception): Likewise. (parser_xml_end): Likewise. (parser_label_addr): Likewise. * parse.y: label_pair_t structure; locale processing; new token processing for alphabets and XML PARSE. * parse_ante.h (name_of): Return field->name when initial is NULL. (new_tempnumeric): Make signable_e optional. (ast_save_locale): New function. (data_division_ready): Warning for "no alphabet". * scan.l: Repair interpretation of BINARY, COMP, COMP-4, and COMP-5. * scan_ante.h (struct bint_t): Likewise. * scan_post.h (current_tokens_t::tokenset_t::tokenset_t): Include token_names.h. * symbols.cc (symbols_alphabet_set): Revert to prior alphabet determination. (symbol_table_init): New XML special registers. (new_temporary): Make signable_e controllable, not fixed. * symbols.h (__gg__encoding_iconv_valid): New declaration. (enum cbl_label_type_t): New LblXml label type. (struct cbl_xml_parse_t): (struct cbl_label_t): Implement XML PARSE. (new_temporary): Incorporate boolean for signable_e. (symbol_elem_of): Change label field type handling. (cbl_section_of): Likewise. (cbl_field_of): Likewise. (cbl_label_of): Likewise. (cbl_special_name_of): Likewise. (cbl_alphabet_of): Likewise. (cbl_file_of): Likewise. * token_names.h: New file. * util.cc (gcc_location_set_impl): Improve location_t calculations when entering and leaving COPYBOOKs. libgcobol/ChangeLog: * Makefile.am: Changes for XML PARSE and POSIX functions. * Makefile.in: Likewise. * charmaps.cc: Augment encodings[] table with "supported" boolean. (__gg__encoding_iconv_name): Modify how encodings are identified. (encoding_descr): Likewise. (__gg__encoding_iconv_valid): Likewise. * common-defs.h (callback_t): Define function pointer. * constants.cc: Use named cbl_attr_e constants instead of magic numbers.; New definitions for XML special registers. * encodings.h (struct encodings_t): Declare "supported" boolean. * libgcobol.cc (format_for_display_internal): Use std::ptrdiff_t. (__gg__alphabet_use): Add case for iconv_CP1252_e. (default_exception_handler): Repair exception handling after a successful file operation. * posix/errno.cc: New file. * posix/localtime.cc: New file. * posix/stat.cc: New file. * posix/stat.h: New file. * posix/tm.h: New file. * xmlparse.cc: New file to support XML PARSE statement. gcc/testsuite/ChangeLog: * cobol.dg/typo-1.cob: New test for squiggles and carets. |