From: Matthias Klose Date: Sun, 3 Nov 2019 09:37:13 +0000 (+0000) Subject: Import gcc-9_9.2.1-17.debian.tar.xz X-Git-Tag: archive/raspbian/13.2.0-4+rpi1^2~8^2~5^2~16^2~2^2~1^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c0524aff0c5d81f8d234a783a1e3dd2672e9a8f0;p=gcc-13.git Import gcc-9_9.2.1-17.debian.tar.xz [dgit import tarball gcc-9 9.2.1-17 gcc-9_9.2.1-17.debian.tar.xz] --- c0524aff0c5d81f8d234a783a1e3dd2672e9a8f0 diff --git a/NEWS.gcc b/NEWS.gcc new file mode 100644 index 0000000..aeccd06 --- /dev/null +++ b/NEWS.gcc @@ -0,0 +1,917 @@ + GCC 8 Release Series + Changes, New Features, and Fixes + +This page is a "brief" summary of some of the huge number of improvements in +GCC 8. You may also want to check out our Porting_to_GCC_8 page and the full +GCC_documentation. + +Caveats + + * Support for the obsolete SDB/coff debug info format has been removed. The + option -gcoff no longer does anything. + * The Cilk+ extensions to the C and C++ languages have been removed. + * The MPX extensions to the C and C++ languages have been deprecated and + will be removed in a future release. + * The extension allowing arithmetic on std::atomic and types like + std::atomic has been deprecated. + * The non-standard C++0x std::copy_exception function was removed. std:: + make_exception_ptr should be used instead. + * Support for the powerpc*-*-*spe* target ports which have been recently + unmaintained and untested in GCC has been declared obsolete in GCC 8 as + announced here. Unless there is activity to revive them, the next release + of GCC will have their sources permanently removed. + +General Improvements + + * Inter-procedural optimization improvements: + o Reworked run-time estimation metrics leading to more realistic + guesses driving inliner and cloning heuristics. + o The ipa-pure-const pass is extended to propagate the malloc + attribute, and the corresponding warning option -Wsuggest- + attribute=malloc emits a diagnostic for functions which can be + annotated with the malloc attribute. + * Profile driven optimization improvements: + o New infrastructure for representing profiles (both statically + guessed and profile feedback) which allows propagation of + additional information about the reliability of the profile. + o A number of improvements in the profile updating code solving + problems found by new verification code. + o Static detection of code which is not executed in a valid run of + the program. This includes paths which trigger undefined behavior + as well as calls to functions declared with the cold attribute. + Newly the noreturn attribute does not imply all effects of cold to + differentiate between exit (which is noreturn) and abort (which is + in addition not executed in valid runs). + o -freorder-blocks-and-partition, a pass splitting function bodies + into hot and cold regions, is now enabled by default at -O2 and + higher for x86 and x86-64. + * Link-time optimization improvements: + o We have significantly improved debug information on ELF targets + using DWARF by properly preserving language-specific information. + This allows for example the libstdc++ pretty-printers to work with + LTO optimized executables. + * A new option -fcf-protection=[full|branch|return|none] is introduced to + perform code instrumentation to increase program security by checking + that target addresses of control-flow transfer instructions (such as + indirect function call, function return, indirect jump) are valid. + Currently the instrumentation is supported on x86 GNU/Linux targets only. + See the user guide for further information about the option syntax and + section "New Targets and Target Specific Improvements" for IA-32/x86-64 + for more details. + * The -gcolumn-info option is now enabled by default. It includes column + information in addition to just filenames and line numbers in DWARF + debugging information. + * The polyhedral-based loop nest optimization pass -floop-nest-optimize has + been overhauled. It's still considered experimental and may not result in + any runtime improvements. + * Two new classical loop nest optimization passes have been added. -floop- + unroll-and-jam performs outer loop unrolling and fusing of the inner loop + copies. -floop-interchange exchanges loops in a loop nest to improve data + locality. Both passes are enabled by default at -O3 and above. + * The classic loop nest optimization pass -ftree-loop-distribution has been + improved and enabled by default at -O3 and above. It supports loop nest + distribution in some restricted scenarios; it also supports cancellable + innermost loop distribution with loop versioning under run-time alias + checks. + * The new option -fstack-clash-protection causes the compiler to insert + probes whenever stack space is allocated statically or dynamically to + reliably detect stack overflows and thus mitigate the attack vector that + relies on jumping over a stack guard page as provided by the operating + system. + * A new pragma GCC unroll has been implemented in the C family of + languages, as well as Fortran and Ada, so as to make it possible for the + user to have a finer-grained control over the loop unrolling + optimization. + * GCC has been enhanced to detect more instances of meaningless or mutually + exclusive attribute specifications and handle such conflicts more + consistently. Mutually exclusive attribute specifications are ignored + with a warning regardless of whether they appear on the same declaration + or on distinct declarations of the same entity. For example, because the + noreturn attribute on the second declaration below is mutually exclusive + with the malloc attribute on the first, it is ignored and a warning is + issued. + void* __attribute__ ((malloc)) f (unsigned); + void* __attribute__ ((noreturn)) f (unsigned); + + warning: ignoring attribute 'noreturn' because it conflicts with + attribute 'malloc' [-Wattributes] + * The gcov tool can distinguish functions that begin on a same line in a + source file. This can be a different template instantiation or a class + constructor: + File 'ins.C' + Lines executed:100.00% of 8 + Creating 'ins.C.gcov' + + -: 0:Source:ins.C + -: 0:Graph:ins.gcno + -: 0:Data:ins.gcda + -: 0:Runs:1 + -: 0:Programs:1 + -: 1:template + -: 2:class Foo + -: 3:{ + -: 4: public: + 2: 5: Foo(): b (1000) {} + ------------------ + Foo::Foo(): + 1: 5: Foo(): b (1000) {} + ------------------ + Foo::Foo(): + 1: 5: Foo(): b (1000) {} + ------------------ + 2: 6: void inc () { b++; } + ------------------ + Foo::inc(): + 1: 6: void inc () { b++; } + ------------------ + Foo::inc(): + 1: 6: void inc () { b++; } + ------------------ + -: 7: + -: 8: private: + -: 9: int b; + -: 10:}; + -: 11: + 1: 12:int main(int argc, char **argv) + -: 13:{ + 1: 14: Foo a; + 1: 15: Foo b; + -: 16: + 1: 17: a.inc (); + 1: 18: b.inc (); + 1: 19:} + * The gcov tool has more accurate numbers for execution of lines in a + source file. + * The gcov tool can use TERM colors to provide more readable output. + * AddressSanitizer gained a new pair of sanitization options, - + fsanitize=pointer-compare and -fsanitize=pointer-subtract, which warn + about subtraction (or comparison) of pointers that point to a different + memory object: + int + main () + { + /* Heap allocated memory. */ + char *heap1 = (char *)__builtin_malloc (42); + char *heap2 = (char *)__builtin_malloc (42); + if (heap1 > heap2) + return 1; + + return 0; + } + + ==17465==ERROR: AddressSanitizer: invalid-pointer-pair: + 0x604000000010 0x604000000050 + #0 0x40070f in main /tmp/pointer-compare.c:7 + #1 0x7ffff6a72a86 in __libc_start_main (/lib64/ + libc.so.6+0x21a86) + #2 0x400629 in _start (/tmp/a.out+0x400629) + + 0x604000000010 is located 0 bytes inside of 42-byte region + [0x604000000010,0x60400000003a) + allocated by thread T0 here: + #0 0x7ffff6efb390 in __interceptor_malloc ../../../../ + libsanitizer/asan/asan_malloc_linux.cc:86 + #1 0x4006ea in main /tmp/pointer-compare.c:5 + #2 0x7ffff6a72a86 in __libc_start_main (/lib64/ + libc.so.6+0x21a86) + + 0x604000000050 is located 0 bytes inside of 42-byte region + [0x604000000050,0x60400000007a) + allocated by thread T0 here: + #0 0x7ffff6efb390 in __interceptor_malloc ../../../../ + libsanitizer/asan/asan_malloc_linux.cc:86 + #1 0x4006f8 in main /tmp/pointer-compare.c:6 + #2 0x7ffff6a72a86 in __libc_start_main (/lib64/ + libc.so.6+0x21a86) + + SUMMARY: AddressSanitizer: invalid-pointer-pair /tmp/pointer- + compare.c:7 in main + * The store merging pass has been enhanced to handle bit-fields and not + just constant stores, but also data copying from adjacent memory + locations into other adjacent memory locations, including bitwise logical + operations on the data. The pass can also handle byte swapping into + memory locations. + * The undefined behavior sanitizer gained two new options included in - + fsanitize=undefined: -fsanitize=builtin which diagnoses at run time + invalid arguments to __builtin_clz or __builtin_ctz prefixed builtins, + and -fsanitize=pointer-overflow which performs cheap run time tests for + pointer wrapping. + +New Languages and Language specific improvements + +Ada + + * For its internal exception handling used on the host for error recovery + in the front-end, the compiler now relies on the native exception + handling mechanism of the host platform, which should be more efficient + than the former mechanism. + +BRIG (HSAIL) + +In this release cycle, the focus for the BRIGFE was on stabilization and +performance improvements. Also a couple of completely new features were added. + * Improved support for function and module scope group segment variables. + PRM specs define function and module scope group segment variables as an + experimental feature. However, PRM test suite uses them. Now group + segment is handled by separate book keeping of module scope and function + (kernel) offsets. Each function has a "frame" in the group segment offset + to which is given as an argument, similar to traditional call stack frame + handling. + * Reduce the number of type conversions due to the untyped HSAIL registers. + Instead of always representing the HSAIL's untyped registers as unsigned + int, the gccbrig now pre-analyzes the BRIG code and builds the register + variables as a type used the most when storing or reading data to/from + each register. This reduces the number of total casts which cannot be + always optimized away. + * Support for BRIG_KIND_NONE directives. + * Made -O3 the default optimization level for BRIGFE. + * Fixed illegal addresses generated from address expressions which refer + only to offset 0. + * Fixed a bug with reg+offset addressing on 32b segments. In 'large' mode, + the offset is treated as 32bits unless it's in global, read-only or + kernarg address space. + * Fixed a crash caused sometimes by calls with more than 4 arguments. + * Fixed a mis-execution issue with kernels that have both unexpanded ID + functions and calls to subfunctions. + * Treat HSAIL barrier builtins as setjmp/longjump style functions to avoid + illegal optimizations. + * Ensure per WI copies of private variables are aligned correctly. + * libhsail-rt: Assume the host runtime allocates the work group memory. + +C family + + * New command-line options have been added for the C and C++ compilers: + o -Wmultistatement-macros warns about unsafe macros expanding to + multiple statements used as a body of a statement such as if, else, + while, switch, or for. + o -Wstringop-truncation warns for calls to bounded string + manipulation functions such as strncat, strncpy, and stpncpy that + might either truncate the copied string or leave the destination + unchanged. For example, the following call to strncat is diagnosed + because it appends just three of the four characters from the + source string. + void append (char *buf, size_t bufsize) + { + strncat (buf, ".txt", 3); + } + warning: 'strncat' output truncated copying 3 bytes from a + string of length 4 [-Wstringop-truncation] + Similarly, in the following example, the call to strncpy specifies + the size of the destination buffer as the bound. If the length of + the source string is equal to or greater than this size the result + of the copy will not be NUL-terminated. Therefore, the call is also + diagnosed. To avoid the warning, specify sizeof buf - 1 as the + bound and set the last element of the buffer to NUL. + void copy (const char *s) + { + char buf[80]; + strncpy (buf, s, sizeof buf); + … + } + warning: 'strncpy' specified bound 80 equals destination size + [-Wstringop-truncation] + The -Wstringop-truncation option is included in -Wall. + Note that due to GCC bug 82944, defining strncat, strncpy, or + stpncpy as a macro in a system header as some implementations do, + suppresses the warning. + o -Wif-not-aligned controls warnings issued in response to invalid + uses of objects declared with attribute warn_if_not_aligned. + The -Wif-not-aligned option is included in -Wall. + o -Wmissing-attributes warns when a declaration of a function is + missing one or more attributes that a related function is declared + with and whose absence may adversely affect the correctness or + efficiency of generated code. For example, in C++, the warning is + issued when an explicit specialization of a primary template + declared with attribute alloc_align, alloc_size, assume_aligned, + format, format_arg, malloc, or nonnull is declared without it. + Attributes deprecated, error, and warning suppress the warning. + The -Wmissing-attributes option is included in -Wall. + o -Wpacked-not-aligned warns when a struct or union declared with + attribute packed defines a member with an explicitly specified + alignment greater than 1. Such a member will wind up under-aligned. + For example, a warning will be issued for the definition of struct + A in the following: + struct __attribute__ ((aligned (8))) + S8 { char a[8]; }; + + struct __attribute__ ((packed)) A + { + struct S8 s8; + }; + warning: alignment 1 of 'struct S' is less than 8 [-Wpacked- + not-aligned] + The -Wpacked-not-aligned option is included in -Wall. + o -Wcast-function-type warns when a function pointer is cast to an + incompatible function pointer. This warning is enabled by -Wextra. + o -Wsizeof-pointer-div warns for suspicious divisions of the size of + a pointer by the size of the elements it points to, which looks + like the usual way to compute the array size but won't work out + correctly with pointers. This warning is enabled by -Wall. + o -Wcast-align=strict warns whenever a pointer is cast such that the + required alignment of the target is increased. For example, warn if + a char * is cast to an int * regardless of the target machine. + o -fprofile-abs-path creates absolute path names in the .gcno files. + This allows gcov to find the correct sources in projects where + compilations occur with different working directories. + * -fno-strict-overflow is now mapped to -fwrapv -fwrapv-pointer and signed + integer overflow is now undefined by default at all optimization levels. + Using -fsanitize=signed-integer-overflow is now the preferred way to + audit code, -Wstrict-overflow is deprecated. + * The -Warray-bounds option has been improved to detect more instances of + out-of-bounds array indices and pointer offsets. For example, negative or + excessive indices into flexible array members and string literals are + detected. + * The -Wrestrict option introduced in GCC 7 has been enhanced to detect + many more instances of overlapping accesses to objects via restrict- + qualified arguments to standard memory and string manipulation functions + such as memcpy and strcpy. For example, the strcpy call in the function + below attempts to truncate the string by replacing its initial characters + with the last four. However, because the function writes the terminating + NUL into a[4], the copies overlap and the call is diagnosed. + void f (void) + { + char a[] = "abcd1234"; + strcpy (a, a + 4); + … + } + The -Wrestrict option is included in -Wall. + * Several optimizer enhancements have enabled improvements to the -Wformat- + overflow and -Wformat-truncation options. The warnings detect more + instances of buffer overflow and truncation than in GCC 7 and are better + at avoiding certain kinds of false positives. + * When reporting mismatching argument types at a function call, the C and + C++ compilers now underline both the argument and the pertinent parameter + in the declaration. + $ gcc arg-type-mismatch.cc + arg-type-mismatch.cc: In function 'int caller(int, int, + float)': + arg-type-mismatch.cc:5:24: error: invalid conversion from 'int' + to 'const char*' [-fpermissive] + return callee(first, second, third); + ^~~~~~ + arg-type-mismatch.cc:1:40: note: initializing argument 2 of 'int + callee(int, const char*, float)' + extern int callee(int one, const char *two, float three); + ~~~~~~~~~~~~^~~ + * When reporting on unrecognized identifiers, the C and C++ compilers will + now emit fix-it hints suggesting #include directives for various headers + in the C and C++ standard libraries. + $ gcc incomplete.c + incomplete.c: In function 'test': + incomplete.c:3:10: error: 'NULL' undeclared (first use in this + function) + return NULL; + ^~~~ + incomplete.c:3:10: note: 'NULL' is defined in header + ''; did you forget to '#include + '? + incomplete.c:1:1: + +#include + const char *test(void) + incomplete.c:3:10: + return NULL; + ^~~~ + incomplete.c:3:10: note: each undeclared identifier is reported only once + for each function it appears in + $ gcc incomplete.cc + incomplete.cc:1:6: error: 'string' in namespace 'std' + does not name a type + std::string s("hello world"); + ^~~~~~ + incomplete.cc:1:1: note: 'std::string' is defined in header + ''; did you forget to '#include '? + +#include + std::string s("hello world"); + ^~~ + * The C and C++ compilers now use more intuitive locations when reporting + on missing semicolons, and offer fix-it hints: + $ gcc t.c + t.c: In function 'test': + t.c:3:12: error: expected ';' before '}' token + return 42 + ^ + ; + } + ~ + * When reporting on missing '}' and ')' tokens, the C and C++ compilers + will now highlight the corresponding '{' and '(' token, issuing a 'note' + if it's on a separate line: + $ gcc unclosed.c + unclosed.c: In function 'log_when_out_of_range': + unclosed.c:12:50: error: expected ')' before '{' + token + && (temperature < MIN || temperature > MAX) { + ^~ + ) + unclosed.c:11:6: note: to match this '(' + if (logging_enabled && check_range () + ^ + or highlighting it directly if it's on the same line: + $ gcc unclosed-2.c + unclosed-2.c: In function 'test': + unclosed-2.c:8:45: error: expected ')' before '{' + token + if (temperature < MIN || temperature > MAX { + ~ ^~ + ) + They will also emit fix-it hints. + +C++ + + * The value of the C++11 alignof operator has been corrected to match C + _Alignof (minimum alignment) rather than GNU __alignof__ (preferred + alignment); on ia32 targets this means that alignof(double) is now 4 + rather than 8. Code that wants the preferred alignment should use + __alignof__ instead. + * New command-line options have been added for the C++ compiler to control + warnings: + o -Wclass-memaccess warns when objects of non-trivial class types are + manipulated in potentially unsafe ways by raw memory functions such + as memcpy, or realloc. The warning helps detect calls that bypass + user-defined constructors or copy-assignment operators, corrupt + virtual table pointers, data members of const-qualified types or + references, or member pointers. The warning also detects calls that + would bypass access controls to data members. For example, a call + such as: + memcpy (&std::cout, &std::cerr, sizeof std::cout); + results in + warning: 'void* memcpy(void*, const void*, long unsigned int)' + writing to an object of type 'std::ostream' {aka 'class std:: + basic_ostream'} with no trivial copy-assignment [-Wclass- + memaccess] + The -Wclass-memaccess option is included in -Wall. + * The C++ front end has experimental support for some of the upcoming C++2a + draft features with the -std=c++2a or -std=gnu++2a flags, including + designated initializers, default member initializers for bit-fields, + __VA_OPT__ (except that #__VA_OPT__ is unsupported), lambda [=, this] + captures, etc. For a full list of new features, see the_C++_status_page. + * When reporting on attempts to access private fields of a class or struct, + the C++ compiler will now offer fix-it hints showing how to use an + accessor function to get at the field in question, if one exists. + $ gcc accessor.cc + accessor.cc: In function 'void test(foo*)': + accessor.cc:12:12: error: 'double foo::m_ratio' is private + within this context + if (ptr->m_ratio >= 0.5) + ^~~~~~~ + accessor.cc:7:10: note: declared private here + double m_ratio; + ^~~~~~~ + accessor.cc:12:12: note: field 'double foo::m_ratio' can be + accessed via 'double foo::get_ratio() const' + if (ptr->m_ratio >= 0.5) + ^~~~~~~ + get_ratio() + * The C++ compiler can now give you a hint if you use a macro before it was + defined (e.g. if you mess up the order of your #include directives): + $ gcc ordering.cc + ordering.cc:2:24: error: expected ';' at end of member + declaration + virtual void clone() const OVERRIDE { } + ^~~~~ + ; + ordering.cc:2:30: error: 'OVERRIDE' does not name a type + virtual void clone() const OVERRIDE { } + ^~~~~~~~ + ordering.cc:2:30: note: the macro 'OVERRIDE' had not yet been + defined + In file included from ordering.cc:5: + c++11-compat.h:2: note: it was later defined here + #define OVERRIDE override + * The -Wold-style-cast diagnostic can now emit fix-it hints telling you + when you can use a static_cast, const_cast, or reinterpret_cast. + $ gcc -c old-style-cast-fixits.cc -Wold-style-cast + old-style-cast-fixits.cc: In function 'void test(void*)': + old-style-cast-fixits.cc:5:19: warning: use of old-style cast to + 'struct foo*' [-Wold-style-cast] + foo *f = (foo *)ptr; + ^~~ + ---------- + static_cast (ptr) + * When reporting on problems within extern "C" linkage specifications, the + C++ compiler will now display the location of the start of the extern + "C". + $ gcc -c extern-c.cc + extern-c.cc:3:1: error: template with C linkage + template void test (void); + ^~~~~~~~ + In file included from extern-c.cc:1: + unclosed.h:1:1: note: 'extern "C"' linkage started here + extern "C" { + ^~~~~~~~~~ + extern-c.cc:3:39: error: expected '}' at end of input + template void test (void); + ^ + In file included from extern-c.cc:1: + unclosed.h:1:12: note: to match this '{' + extern "C" { + ^ + * When reporting on mismatching template types, the C++ compiler will now + use color to highlight the mismatching parts of the template, and will + elide the parameters that are common between two mismatching templates, + printing [...] instead: + $ gcc templates.cc + templates.cc: In function 'void test()': + templates.cc:9:8: error: could not convert 'vector()' + from 'vector' to 'vector' + fn_1(vector ()); + ^~~~~~~~~~~~~~~~~ + templates.cc:10:8: error: could not convert 'map + ()' from 'map<[...],double>' to 'map<[...],int>' + fn_2(map()); + ^~~~~~~~~~~~~~~~~~ + Those [...] elided parameters can be seen using -fno-elide-type: + $ gcc templates.cc -fno-elide-type + templates.cc: In function 'void test()': + templates.cc:9:8: error: could not convert 'vector()' + from 'vector' to 'vector' + fn_1(vector ()); + ^~~~~~~~~~~~~~~~~ + templates.cc:10:8: error: could not convert 'map + ()' from 'map' to 'map' + fn_2(map()); + ^~~~~~~~~~~~~~~~~~ + The C++ compiler has also gained an option -fdiagnostics-show-template- + tree which visualizes such mismatching templates in a hierarchical form: + $ gcc templates-2.cc -fdiagnostics-show-template-tree + templates-2.cc: In function 'void test()': + templates-2.cc:9:8: error: could not convert 'vector()' + from 'vector' to 'vector' + vector< + [double != int]> + fn_1(vector ()); + ^~~~~~~~~~~~~~~~~ + templates-2.cc:10:8: error: could not convert 'map >, vector >()' from 'map>,vector>' to 'map>,vector>' + map< + map< + [...], + vector< + [double != float]>>, + vector< + [double != float]>> + fn_2(map>, vector> ()); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + which again works with -fno-elide-type: + $ gcc templates-2.cc -fdiagnostics-show-template-tree -fno-elide-type + templates-2.cc: In function 'void test()': + templates-2.cc:9:8: error: could not convert 'vector()' + from 'vector' to 'vector' + vector< + [double != int]> + fn_1(vector ()); + ^~~~~~~~~~~~~~~~~ + templates-2.cc:10:8: error: could not convert 'map >, vector >()' from + 'map>,vector>' to + 'map>,vector>' + map< + map< + int, + vector< + [double != float]>>, + vector< + [double != float]>> + fn_2(map>, vector> ()); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * Flowing off the end of a non-void function is considered unreachable and + may be subject to optimization on that basis. As a result of this change, + -Wreturn-type warnings are enabled by default for C++. + +Runtime Library (libstdc++) + + * Improved experimental support for C++17, including the following + features: + o Deduction guides to support class template argument deduction. + o std::filesystem implementation. + o std::char_traits and std::char_traits are usable in + constant expressions. + o std::to_chars and std::from_chars (for integers only, not for + floating point types). + * Experimental support for C++2a: std::to_address (thanks to Glen + Fernandes) and std::endian. + * On GNU/Linux, std::random_device::entropy() accesses the kernel's entropy + count for the random device, if known (thanks to Xi Ruoyao). + * Support for std::experimental::source_location. + * AddressSanitizer integration for std::vector, detecting out-of-range + accesses to the unused capacity of a vector. + * Extensions __gnu_cxx::airy_ai and __gnu_cxx::airy_bi added to the + Mathematical Special Functions. + +Fortran + + * The main version of libfortran has been changed to 5. + * Parameterized derived types, a major feature of Fortran 2003, have been + implemented. + * The maximum rank for arrays has been increased to 15, conforming to the + Fortran 2008 standard. + * Transformational intrinsics are now fully supported in initialization + expressions. + * New flag -fc-prototypes to write C prototypes for BIND(C) procedures and + variables. + * If -fmax-stack-var-size is honored if given together with -Ofast, - + fstack-arrays is no longer set in that case. + * New options -fdefault-real-16 and -fdefault-real-10 to control the + default kind of REAL variables. + * A warning is now issued if an array subscript inside a DO loop could lead + to an out-of-bounds-access. The new option -Wdo-subscript, enabled by - + Wextra, warns about this even if the compiler can not prove that the code + will be executed. + * The Fortran front end now attempts to interchange loops if it is deemed + profitable. So far, this is restricted to FORALL and DO CONCURRENT + statements with multiple indices. This behavior be controlled with the + new flag -ffrontend-loop-interchange, which is enabled with optimization + by default. The -Wfrontend-loop-interchange option warns about such + occurrences. + * When an actual argument contains too few elements for a dummy argument, + an error is now issued. The -std=legacy option can be used to still + compile such code. + * The RECL= argument to OPEN and INQUIRE statements now allows 64-bit + integers, making records larger than 2GiB possible. + * The GFORTRAN_DEFAULT_RECL environment variable no longer has any effect. + The record length for preconnected units is now larger than any practical + limit, same as for sequential access units opened without an explicit + RECL= specifier. + * Character variables longer than HUGE(0) elements are now possible on 64- + bit targets. Note that this changes the procedure call ABI for all + procedures with character arguments on 64-bit targets, as the type of the + hidden character length argument has changed. The hidden character length + argument is now of type INTEGER(C_SIZE_T). + +Go + + * GCC 8 provides a complete implementation of the Go 1.10.1 user packages. + * The garbage collector is now fully concurrent. As before, values stored + on the stack are scanned conservatively, but value stored in the heap are + scanned precisely. + * Escape analysis is fully implemented and enabled by default in the Go + frontend. This significantly reduces the number of heap allocations by + allocating values on the stack instead. + +libgccjit + +The libgccjit API gained four new entry points: + * gcc_jit_type_get_vector and + * gcc_jit_context_new_rvalue_from_vector for working with vectors, + * gcc_jit_type_get_aligned + * gcc_jit_function_get_address +The C code generated by gcc_jit_context_dump_reproducer_to_file is now easier- +to-read. + +New Targets and Target Specific Improvements + +AArch64 + + * The Armv8.4-A architecture is now supported. It can be used by specifying + the -march=armv8.4-a option. + * The Dot Product instructions are now supported as an optional extension + to the Armv8.2-A architecture and newer and are mandatory on Armv8.4-A. + The extension can be used by specifying the +dotprod architecture + extension. E.g. -march=armv8.2-a+dotprod. + * The Armv8-A +crypto extension has now been split into two extensions for + finer grained control: + o +aes which contains the Armv8-A AES crytographic instructions. + o +sha2 which contains the Armv8-A SHA2 and SHA1 cryptographic + instructions. + Using +crypto will now enable these two extensions. + * New Armv8.4-A FP16 Floating Point Multiplication Variant instructions + have been added. These instructions are mandatory in Armv8.4-A but + available as an optional extension to Armv8.2-A and Armv8.3-A. The new + extension can be used by specifying the +fp16fml architectural extension + on Armv8.2-A and Armv8.3-A. On Armv8.4-A the instructions can be enabled + by specifying +fp16. + * New cryptographic instructions have been added as optional extensions to + Armv8.2-A and newer. These instructions can be enabled with: + o +sha3 New SHA3 and SHA2 instructions from Armv8.4-A. This implies + +sha2. + o +sm4 New SM3 and SM4 instructions from Armv8.4-A. + * The Scalable Vector Extension (SVE) is now supported as an optional + extension to the Armv8.2-A architecture and newer. This support includes + automatic vectorization with SVE instructions, but it does not yet + include the SVE Arm C Language Extensions (ACLE). It can be enabled by + specifying the +sve architecture extension (for example, -march=armv8.2- + a+sve). By default, the generated code works with all vector lengths, but + it can be made specific to N-bit vectors using -msve-vector-bits=N. + * Support has been added for the following processors (GCC identifiers in + parentheses): + o Arm Cortex-A75 (cortex-a75). + o Arm Cortex-A55 (cortex-a55). + o Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE (cortex-a75.cortex- + a55). + The GCC identifiers can be used as arguments to the -mcpu or -mtune + options, for example: -mcpu=cortex-a75 or -mtune=cortex-a75 or as + arguments to the equivalent target attributes and pragmas. + +ARC + + * Added support for: + o Fast interrupts. + o Naked functions. + o aux variable attributes. + o uncached type qualifier. + o Secure functions via sjli instruction. + * New exception handling implementation. + * Revamped trampoline implementation. + * Refactored small data feature implementation, controlled via -G command + line option. + * New support for reduced register set ARC architecture configurations, + controlled via -mrf16 command line option. + * Refurbished and improved support for zero overhead loops. Introduced - + mlpc-width command line option to control the width of lp_count register. + +ARM + + * The -mfpu option now takes a new option setting of -mfpu=auto. When set + to this the floating-point and SIMD settings are derived from the + settings of the -mcpu or -march options. The internal CPU configurations + have been updated with information about the permitted floating-point + configurations supported. See the user guide for further information + about the extended option syntax for controlling architectural extensions + via the -march option. -mfpu=auto is now the default setting unless the + compiler has been configured with an explicit --with-fpu option. + * The -march and -mcpu options now accept optional extensions to the + architecture or CPU option, allowing the user to enable or disable any + such extensions supported by that architecture or CPU such as (but not + limited to) floating-point and AdvancedSIMD. For example: the option - + mcpu=cortex-a53+nofp will generate code for the Cortex-A53 processor with + no floating-point support. This, in combination with the new -mfpu=auto + option, provides a straightforward way of specifying a valid build target + through a single -mcpu or -march option. The -mtune option accepts the + same arguments as -mcpu but only the CPU name has an effect on tuning. + The architecture extensions do not have any effect. For details of what + extensions a particular architecture or CPU option supports please refer + to the documentation. + * The -mstructure-size-boundary option has been deprecated and will be + removed in a future release. + * The default link behavior for Armv6 and Armv7-R targets has been changed + to produce BE8 format when generating big-endian images. A new flag - + mbe32 can be used to force the linker to produce legacy BE32 format + images. There is no change of behavior for Armv6-M and other Armv7 or + later targets: these already defaulted to BE8 format. This change brings + GCC into alignment with other compilers for the ARM architecture. + * The Armv8-R architecture is now supported. It can be used by specifying + the -march=armv8-r option. + * The Armv8.3-A architecture is now supported. It can be used by specifying + the -march=armv8.3-a option. + * The Armv8.4-A architecture is now supported. It can be used by specifying + the -march=armv8.4-a option. + * The Dot Product instructions are now supported as an optional extension + to the Armv8.2-A architecture and newer and are mandatory on Armv8.4-A. + The extension can be used by specifying the +dotprod architecture + extension. E.g. -march=armv8.2-a+dotprod. + * Support for setting extensions and architectures using the GCC target + pragma and attribute has been added. It can be used by specifying #pragma + GCC target ("arch=..."), #pragma GCC target ("+extension"), __attribute__ + ((target("arch=..."))) or __attribute__((target("+extension"))). + * New Armv8.4-A FP16 Floating Point Multiplication Variant instructions + have been added. These instructions are mandatory in Armv8.4-A but + available as an optional extension to Armv8.2-A and Armv8.3-A. The new + extension can be used by specifying the +fp16fml architectural extension + on Armv8.2-A and Armv8.3-A. On Armv8.4-A the instructions can be enabled + by specifying +fp16. + * Support has been added for the following processors (GCC identifiers in + parentheses): + o Arm Cortex-A75 (cortex-a75). + o Arm Cortex-A55 (cortex-a55). + o Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE (cortex-a75.cortex- + a55). + o Arm Cortex-R52 for Armv8-R (cortex-r52). + The GCC identifiers can be used as arguments to the -mcpu or -mtune + options, for example: -mcpu=cortex-a75 or -mtune=cortex-r52 or as + arguments to the equivalent target attributes and pragmas. + +AVR + + * The AVR port now supports the following XMEGA-like devices: + ATtiny212, ATtiny214, ATtiny412, ATtiny414, ATtiny416, + ATtiny417, ATtiny814, ATtiny816, ATtiny817, ATtiny1614, + ATtiny1616, ATtiny1617, ATtiny3214, ATtiny3216, ATtiny3217 + The new devices are listed under -mmcu=avrxmega3. + o These devices see flash memory in the RAM address space, so that + features like PROGMEM and __flash are not needed any more (as + opposed to other AVR families for which read-only data will be + located in RAM except special, non-standard features are used to + locate and access such data). This requires that the compiler is + used with Binutils 2.29 or newer so that read-only_data_will_be + located_in_flash_memory. + o A new command-line option -mshort-calls is supported. This option + is used internally for multilib selection of the avrxmega3 + variants. It is not an optimization option. Do not set it by hand. + * The compiler now generates efficient_interrupt_service_routine_(ISR) + prologues_and_epilogues. This is achieved by using the new AVR_pseudo + instruction __gcc_isr which is supported and resolved by the GNU + assembler. + o As the __gcc_isr pseudo-instruction will be resolved by the + assembler, inline assembly is transparent to the process. This + means that when inline assembly uses an instruction like INC that + clobbers the condition code, then the assembler will detect this + and generate an appropriate ISR prologue / epilogue chunk to save / + restore SREG as needed. + o A new command-line option -mno-gas-isr-prologues disables the + generation of the __gcc_isr pseudo instruction. Any non-naked ISR + will save and restore SREG, tmp_reg and zero_reg, no matter whether + the respective register is clobbered or used. + o The feature is turned on per default for all optimization levels + except for -O0 and -Og. It is explicitly enabled by means of option + -mgas-isr-prologues. + o Support has been added for a new AVR_function_attribute no_gccisr. + It can be used to disable __gcc_isr pseudo instruction generation + for individual ISRs. + o This optimization is only available if GCC is configured with GNU + Binutils 2.29 or newer; or at least with a version of Binutils that + implements feature PR21683. + * The compiler no more saves / restores registers in main; the effect is + the same as if attribute OS_task was specified for main. This + optimization can be switched off by the new command-line option -mno- + main-is-OS_task. + +IA-32/x86-64 + + * The x86 port now supports the naked function attribute. + * Better tuning for znver1 and Intel Core based CPUs. + * Vectorization cost metrics has been reworked leading to significant + improvements on some benchmarks. + * GCC now supports the Intel CPU named Cannonlake through - + march=cannonlake. The switch enables the AVX512VBMI, AVX512IFMA and SHA + ISA extensions. + * GCC now supports the Intel CPU named and Icelake through -march=icelake. + The switch enables the AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, + AVX512BITALG, RDPID and AVX512VPOPCNTDQ ISA extensions. + * GCC now supports the Intel Control-flow Enforcement Technology (CET) + extension through -mibt, -mshstk, -mcet options. One of these options has + to accompany the -fcf-protection option to enable code instrumentation + for control-flow protection. + +NDS32 + + * New command-line options -mext-perf, -mext-perf2, and -mext-string have + been added for performance extension instructions. + +Nios II + + * The Nios II back end has been improved to generate better-optimized code. + Changes include switching to LRA, more accurate cost models, and more + compact code for addressing static variables. + * New command-line options -mgprel-sec= and -mr0rel-sec= have been added. + * The stack-smashing protection options are now enabled on Nios II. + +PA-RISC + + * The default call ABI on 32-bit linux has been changed from callee copies + to caller copies. This affects objects larger than eight bytes passed by + value. The goal is to improve compatibility with x86 and resolve issues + with OpenMP. + * Other PA-RISC targets are unchanged. + +PowerPC / PowerPC64 / RS6000 + + * The PowerPC SPE support is split off to a separate powerpcspe port. The + separate port is deprecated and might be removed in a future release. + * The Paired Single support (as used on some PPC750 CPUs, -mpaired, + powerpc*-*-linux*paired*) is deprecated and will be removed in a future + release. + * The Xilinx floating point support (-mxilinx-fpu, powerpc-xilinx-eabi*) is + deprecated and will be removed in a future release. + * Support for using big-endian AltiVec intrinsics on a little-endian target + (-maltivec=be) is deprecated and will be removed in a future release. + +Tile + + * The TILE-Gx port is deprecated and will be removed in a future release. + +Operating Systems + +Windows + + * GCC on Microsoft Windows can now be configured via --enable-mingw- + wildcard or --disable-mingw-wildcard to force a specific behavior for GCC + itself with regards to supporting the wildcard character. Prior versions + of GCC would follow the configuration of the MinGW runtime. This behavior + can still be obtained by not using the above options or by using -- + enable-mingw-wildcard=platform. + +Improvements for plugin authors + + * Plugins can now register a callback hook for when comments are + encountered by the C and C++ compilers, e.g. allowing for plugins to + handle documentation markup in code comments. + * The gdbinit support script for debugging GCC now has a break-on- + diagnostic command, providing an easy way to trigger a breakpoint + whenever a diagnostic is emitted. + * The API for creating fix-it hints now supports newlines, and for emitting + mutually incompatible fix-it hints for one diagnostic. + +Other significant improvements + + For questions related to the use of GCC, please consult these web + pages and the GCC_manuals. If that fails, the gcc-help@gcc.gnu.org + mailing list might help. Comments on these web pages and the + development of GCC are welcome on our developer list at + gcc@gcc.gnu.org. All of our_lists have public archives. + +Copyright (C) Free_Software_Foundation,_Inc. Verbatim copying and distribution +of this entire article is permitted in any medium, provided this notice is +preserved. +These pages are maintained_by_the_GCC_team. Last modified 2018-04-27. diff --git a/NEWS.html b/NEWS.html new file mode 100644 index 0000000..d71e31a --- /dev/null +++ b/NEWS.html @@ -0,0 +1,1353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 8 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

GCC 8 Release Series
Changes, New Features, and Fixes

+ +

+This page is a "brief" summary of some of the huge number of improvements +in GCC 8. +You may also want to check out our +Porting to GCC 8 page and the +full GCC documentation. +

+ +

Caveats

+
    +
  • Support for the obsolete SDB/coff debug info format has been + removed. The option -gcoff no longer + does anything.
  • +
  • The Cilk+ extensions to the C and C++ languages have been removed.
  • +
  • + The MPX extensions to the C and C++ languages have been deprecated and + will be removed in a future release. +
  • +
  • + The extension allowing arithmetic on std::atomic<void*> + and types like std::atomic<R(*)()> + has been deprecated.
  • +
  • + The non-standard C++0x std::copy_exception function was + removed. std::make_exception_ptr should be used instead. +
  • +
  • Support for the powerpc*-*-*spe* target ports which have + been recently unmaintained and untested in GCC has been declared + obsolete in GCC 8 as announced + here. + Unless there is activity to revive them, the + next release of GCC will have their sources permanently + removed.

    +
  • +
+ + + +

General Improvements

+
    +
  • Inter-procedural optimization improvements: +
      +
    • Reworked run-time estimation metrics leading to more realistic guesses + driving inliner and cloning heuristics.
    • +
    • The ipa-pure-const pass is extended to propagate the + malloc attribute, and the corresponding warning option + -Wsuggest-attribute=malloc emits a diagnostic for + functions which can be annotated with the malloc + attribute.
    • +
  • +
  • Profile driven optimization improvements: +
      +
    • New infrastructure for representing profiles (both statically guessed + and profile feedback) which allows propagation of additional information + about the reliability of the profile.
    • +
    • A number of improvements in the profile updating code solving problems + found by new verification code.
    • +
    • Static detection of code which is not executed in a valid run of the + program. This includes paths which trigger undefined behavior + as well as calls to functions declared with the cold attribute. + Newly the noreturn attribute does not imply all effects of + cold to differentiate between exit (which + is noreturn) and abort (which is in addition + not executed in valid runs).
    • +
    • -freorder-blocks-and-partition, a pass splitting function + bodies into hot and cold regions, is now enabled by default at -O2 + and higher for x86 and x86-64.
    • +
  • +
  • Link-time optimization improvements: +
      +
    • We have significantly improved debug information on ELF targets + using DWARF by properly preserving language-specific information. + This allows for example the libstdc++ pretty-printers to work with + LTO optimized executables.
    • +
  • +
  • + A new option -fcf-protection=[full|branch|return|none] is + introduced to perform code instrumentation to increase program security by + checking that target addresses of control-flow transfer instructions (such as + indirect function call, function return, indirect jump) are valid. Currently + the instrumentation is supported on x86 GNU/Linux targets only. See the user + guide for further information about the option syntax and section "New Targets + and Target Specific Improvements" for IA-32/x86-64 for more details. +
  • +
  • The -gcolumn-info option is now enabled by default. + It includes column information in addition to just filenames and + line numbers in DWARF debugging information.
  • +
  • + The polyhedral-based loop nest optimization pass + -floop-nest-optimize has been overhauled. It's still + considered experimental and may not result in any runtime improvements. +
  • +
  • + Two new classical loop nest optimization passes have been added. + -floop-unroll-and-jam performs outer loop unrolling + and fusing of the inner loop copies. -floop-interchange + exchanges loops in a loop nest to improve data locality. Both passes + are enabled by default at -O3 and above. +
  • +
  • + The classic loop nest optimization pass -ftree-loop-distribution + has been improved and enabled by default at -O3 and above. + It supports loop nest distribution in some restricted scenarios; it also + supports cancellable innermost loop distribution with loop versioning + under run-time alias checks. +
  • +
  • + The new option -fstack-clash-protection causes the + compiler to insert probes whenever stack space is allocated + statically or dynamically to reliably detect stack overflows and + thus mitigate the attack vector that relies on jumping over + a stack guard page as provided by the operating system. +
  • +
  • + A new pragma GCC unroll has been implemented in the C + family of languages, as well as Fortran and Ada, so as to make it + possible for the user to have a finer-grained control over the loop + unrolling optimization. +
  • +
  • + GCC has been enhanced to detect more instances of meaningless or + mutually exclusive attribute specifications and handle such conflicts + more consistently. Mutually exclusive attribute specifications are + ignored with a warning regardless of whether they appear on the same + declaration or on distinct declarations of the same entity. For + example, because the noreturn attribute on the second + declaration below is mutually exclusive with the malloc + attribute on the first, it is ignored and a warning is issued. +
    +      void* __attribute__ ((malloc)) f (unsigned);
    +      void* __attribute__ ((noreturn)) f (unsigned);
    +
    +      warning: ignoring attribute 'noreturn' because it conflicts with attribute 'malloc' [-Wattributes]
  • +
  • + The gcov tool can distinguish functions that begin + on a same line in a source file. This can be a different template + instantiation or a class constructor: +
    +File 'ins.C'
    +Lines executed:100.00% of 8
    +Creating 'ins.C.gcov'
    +
    +        -:    0:Source:ins.C
    +        -:    0:Graph:ins.gcno
    +        -:    0:Data:ins.gcda
    +        -:    0:Runs:1
    +        -:    0:Programs:1
    +        -:    1:template<class T>
    +        -:    2:class Foo
    +        -:    3:{
    +        -:    4: public:
    +        2:    5:   Foo(): b (1000) {}
    +------------------
    +Foo<char>::Foo():
    +        1:    5:   Foo(): b (1000) {}
    +------------------
    +Foo<int>::Foo():
    +        1:    5:   Foo(): b (1000) {}
    +------------------
    +        2:    6:   void inc () { b++; }
    +------------------
    +Foo<char>::inc():
    +        1:    6:   void inc () { b++; }
    +------------------
    +Foo<int>::inc():
    +        1:    6:   void inc () { b++; }
    +------------------
    +        -:    7:
    +        -:    8:  private:
    +        -:    9:   int b;
    +        -:   10:};
    +        -:   11:
    +        1:   12:int main(int argc, char **argv)
    +        -:   13:{
    +        1:   14:  Foo<int> a;
    +        1:   15:  Foo<char> b;
    +        -:   16:
    +        1:   17:  a.inc ();
    +        1:   18:  b.inc ();
    +        1:   19:}
    +    
    +
  • +
  • The gcov tool has more accurate numbers for execution of lines + in a source file.
  • +
  • The gcov tool can use TERM colors to provide more readable output.
  • +
  • AddressSanitizer gained a new pair of sanitization options, + -fsanitize=pointer-compare and -fsanitize=pointer-subtract, which + warn about subtraction (or comparison) of pointers that point to + a different memory object: +
    +int
    +main ()
    +{
    +  /* Heap allocated memory.  */
    +  char *heap1 = (char *)__builtin_malloc (42);
    +  char *heap2 = (char *)__builtin_malloc (42);
    +  if (heap1 > heap2)
    +      return 1;
    +
    +  return 0;
    +}
    +
    +==17465==ERROR: AddressSanitizer: invalid-pointer-pair: 0x604000000010 0x604000000050
    +    #0 0x40070f in main /tmp/pointer-compare.c:7
    +    #1 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
    +    #2 0x400629 in _start (/tmp/a.out+0x400629)
    +
    +0x604000000010 is located 0 bytes inside of 42-byte region [0x604000000010,0x60400000003a)
    +allocated by thread T0 here:
    +    #0 0x7ffff6efb390 in __interceptor_malloc ../../../../libsanitizer/asan/asan_malloc_linux.cc:86
    +    #1 0x4006ea in main /tmp/pointer-compare.c:5
    +    #2 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
    +
    +0x604000000050 is located 0 bytes inside of 42-byte region [0x604000000050,0x60400000007a)
    +allocated by thread T0 here:
    +    #0 0x7ffff6efb390 in __interceptor_malloc ../../../../libsanitizer/asan/asan_malloc_linux.cc:86
    +    #1 0x4006f8 in main /tmp/pointer-compare.c:6
    +    #2 0x7ffff6a72a86 in __libc_start_main (/lib64/libc.so.6+0x21a86)
    +
    +SUMMARY: AddressSanitizer: invalid-pointer-pair /tmp/pointer-compare.c:7 in main
    +    
    +
  • +
  • + The store merging pass has been enhanced to handle bit-fields and not + just constant stores, but also data copying from adjacent memory + locations into other adjacent memory locations, including bitwise + logical operations on the data. The pass can also handle byte swapping + into memory locations. +
  • +
  • + The undefined behavior sanitizer gained two new options included in + -fsanitize=undefined: -fsanitize=builtin which + diagnoses at run time invalid arguments to __builtin_clz or + __builtin_ctz prefixed builtins, and + -fsanitize=pointer-overflow which performs cheap run time + tests for pointer wrapping. +
  • +
+ + + +

New Languages and Language specific improvements

+ +

Ada

+
    +
  • For its internal exception handling used on the host for error + recovery in the front-end, the compiler now relies on the native + exception handling mechanism of the host platform, which should + be more efficient than the former mechanism. +
  • +
+ +

BRIG (HSAIL)

+ +

In this release cycle, the focus for the BRIGFE was on stabilization and + performance improvements. Also a couple of completely new features were + added.

+ +
    +
  • Improved support for function and module scope group + segment variables. PRM specs define function and module scope group + segment variables as an experimental feature. However, PRM test + suite uses them. Now group segment is handled by separate book + keeping of module scope and function (kernel) offsets. Each function + has a "frame" in the group segment offset to which is given as an + argument, similar to traditional call stack frame handling.
  • +
  • Reduce the number of type conversions due to + the untyped HSAIL registers. Instead of always representing the HSAIL's + untyped registers as unsigned int, the gccbrig now pre-analyzes + the BRIG code and builds the register variables as a type used + the most when storing or reading data to/from each register. + This reduces the number of total casts which cannot be always + optimized away.
  • +
  • Support for BRIG_KIND_NONE directives.
  • +
  • Made -O3 the default optimization level for BRIGFE.
  • +
  • Fixed illegal addresses generated from address expressions + which refer only to offset 0.
  • +
  • Fixed a bug with reg+offset addressing on 32b segments. + In 'large' mode, the offset is treated as 32bits unless it's + in global, read-only or kernarg address space.
  • +
  • Fixed a crash caused sometimes by calls with more + than 4 arguments.
  • +
  • Fixed a mis-execution issue with kernels that have + both unexpanded ID functions and calls to subfunctions.
  • +
  • Treat HSAIL barrier builtins as setjmp/longjump style + functions to avoid illegal optimizations.
  • +
  • Ensure per WI copies of private variables are aligned correctly.
  • +
  • libhsail-rt: Assume the host runtime allocates the work group + memory.
  • +
+ + +

C family

+
    +
  • New command-line options have been added for the C and C++ compilers: +
      +
    • -Wmultistatement-macros + warns about unsafe macros expanding to multiple statements used + as a body of a statement such as if, else, + while, switch, or for.
    • +
    • -Wstringop-truncation + warns for calls to bounded string manipulation functions such as + strncat, strncpy, and stpncpy + that might either truncate the copied string or leave the destination + unchanged. For example, the following call to strncat + is diagnosed because it appends just three of the four characters + from the source string.
      +	    void append (char *buf, size_t bufsize)
      +	    {
      +	        strncat (buf, ".txt", 3);
      +	    }
      +	    warning: 'strncat' output truncated copying 3 bytes from a string of length 4 [-Wstringop-truncation]
      + Similarly, in the following example, the call to strncpy + specifies the size of the destination buffer as the bound. If the + length of the source string is equal to or greater than this size + the result of the copy will not be NUL-terminated. Therefore, + the call is also diagnosed. To avoid the warning, specify + sizeof buf - 1 as the bound and set the last element of + the buffer to NUL.
      +	    void copy (const char *s)
      +	    {
      +	        char buf[80];
      +	        strncpy (buf, s, sizeof buf);
      +	        …
      +	    }
      +	    warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-truncation]
      + The -Wstringop-truncation option is included in + -Wall.
      + Note that due to GCC bug 82944, defining strncat, strncpy, + or stpncpy as a macro in a system header as some + implementations do, suppresses the warning.
    • +
    • -Wif-not-aligned controls warnings issued in response + to invalid uses of objects declared with attribute + warn_if_not_aligned.
      + The -Wif-not-aligned option is included in + -Wall.
    • +
    • -Wmissing-attributes warns + when a declaration of a function is missing one or more attributes + that a related function is declared with and whose absence may + adversely affect the correctness or efficiency of generated code. + For example, in C++, the warning is issued when an explicit + specialization of a primary template declared with attribute + alloc_align, alloc_size, + assume_aligned, format, + format_arg, malloc, or nonnull + is declared without it. Attributes deprecated, + error, and warning suppress the warning. +
      + The -Wmissing-attributes option is included in + -Wall.
    • +
    • -Wpacked-not-aligned warns + when a struct or union declared with + attribute packed defines a member with an explicitly + specified alignment greater than 1. Such a member will wind up + under-aligned. For example, a warning will be issued for + the definition of struct A in the following: +
      +	    struct __attribute__ ((aligned (8)))
      +	    S8 { char a[8]; };
      +
      +	    struct __attribute__ ((packed)) A
      +	    {
      +	        struct S8 s8;
      +	    };
      +	    warning: alignment 1 of 'struct S' is less than 8 [-Wpacked-not-aligned]
      + The -Wpacked-not-aligned option is included in + -Wall.
    • +
    +
      +
    • -Wcast-function-type warns when a function pointer + is cast to an incompatible function pointer. This warning is enabled + by -Wextra.
    • +
    +
      +
    • -Wsizeof-pointer-div warns for suspicious divisions + of the size of a pointer by the size of the elements it points to, + which looks like the usual way to compute the array size but + won't work out correctly with pointers. + This warning is enabled by -Wall.
    • +
    +
      +
    • -Wcast-align=strict warns whenever a pointer is cast + such that the required alignment of the target is increased. For + example, warn if a char * is cast to an int * + regardless of the target machine.
    • +
    +
      +
    • -fprofile-abs-path creates absolute path names in the + .gcno files. This allows gcov to find the + correct sources in projects where compilations occur with different + working directories.
    • +
    +
  • +
  • -fno-strict-overflow is now mapped to + -fwrapv -fwrapv-pointer and signed integer overflow + is now undefined by default at all optimization levels. Using + -fsanitize=signed-integer-overflow is now the preferred + way to audit code, -Wstrict-overflow is deprecated.
  • +
  • The -Warray-bounds option has been + improved to detect more instances of out-of-bounds array indices and + pointer offsets. For example, negative or excessive indices into + flexible array members and string literals are detected.
  • +
  • The -Wrestrict option introduced in + GCC 7 has been enhanced to detect many more instances of overlapping + accesses to objects via restrict-qualified arguments to + standard memory and string manipulation functions such as + memcpy and strcpy. For example, + the strcpy call in the function below attempts to truncate + the string by replacing its initial characters with the last four. + However, because the function writes the terminating NUL into + a[4], the copies overlap and the call is diagnosed.
    +	void f (void)
    +	{
    +	    char a[] = "abcd1234";
    +	    strcpy (a, a + 4);
    +	    …
    +	}
    + The -Wrestrict option is included in -Wall. +
  • +
  • Several optimizer enhancements have enabled improvements to + the -Wformat-overflow and + -Wformat-truncation options. + The warnings detect more instances of buffer overflow and truncation + than in GCC 7 and are better at avoiding certain kinds of false + positives.
  • +
  • When reporting mismatching argument types at a function call, the + C and C++ compilers now underline both the argument and the pertinent + parameter in the declaration. +
    +$ gcc arg-type-mismatch.cc
    +arg-type-mismatch.cc: In function 'int caller(int, int, float)':
    +arg-type-mismatch.cc:5:24: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
    +   return callee(first, second, third);
    +                        ^~~~~~
    +arg-type-mismatch.cc:1:40: note:   initializing argument 2 of 'int callee(int, const char*, float)'
    + extern int callee(int one, const char *two, float three);
    +                            ~~~~~~~~~~~~^~~
    +
    + +
  • +
  • When reporting on unrecognized identifiers, the C and C++ compilers + will now emit fix-it hints suggesting #include directives + for various headers in the C and C++ standard libraries. +
    +$ gcc incomplete.c
    +incomplete.c: In function 'test':
    +incomplete.c:3:10: error: 'NULL' undeclared (first use in this function)
    +   return NULL;
    +          ^~~~
    +incomplete.c:3:10: note: 'NULL' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?
    +incomplete.c:1:1:
    ++#include <stddef.h>
    + const char *test(void)
    +incomplete.c:3:10:
    +   return NULL;
    +          ^~~~
    +incomplete.c:3:10: note: each undeclared identifier is reported only once for each function it appears in
    +
    + +
    +$ gcc incomplete.cc
    +incomplete.cc:1:6: error: 'string' in namespace 'std' does not name a type
    + std::string s("hello world");
    +      ^~~~~~
    +incomplete.cc:1:1: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
    ++#include <string>
    + std::string s("hello world");
    + ^~~
    +
    + +
  • +
  • The C and C++ compilers now use more intuitive locations when + reporting on missing semicolons, and offer fix-it hints: +
    +$ gcc t.c
    +t.c: In function 'test':
    +t.c:3:12: error: expected ';' before '}' token
    +   return 42
    +            ^
    +            ;
    + }
    + ~
    +
    + +
  • +
  • When reporting on missing '}' and ')' tokens, the C and C++ + compilers will now highlight the corresponding '{' and '(' token, + issuing a 'note' if it's on a separate line: +
    +$ gcc unclosed.c
    +unclosed.c: In function 'log_when_out_of_range':
    +unclosed.c:12:50: error: expected ')' before '{' token
    +       && (temperature < MIN || temperature > MAX) {
    +                                                  ^~
    +                                                  )
    +unclosed.c:11:6: note: to match this '('
    +   if (logging_enabled && check_range ()
    +      ^
    +
    + or highlighting it directly if it's on the same line: +
    +$ gcc unclosed-2.c
    +unclosed-2.c: In function 'test':
    +unclosed-2.c:8:45: error: expected ')' before '{' token
    +   if (temperature < MIN || temperature > MAX {
    +      ~                                      ^~
    +                                             )
    +
    + They will also emit fix-it hints. +
  • +
+ +

C++

+
    +
  • The value of the C++11 alignof operator has been corrected + to match C _Alignof (minimum alignment) rather than + GNU __alignof__ (preferred alignment); on ia32 targets this + means that alignof(double) is now 4 rather than 8. Code that + wants the preferred alignment should use __alignof__ instead. +
  • +
  • New command-line options have been added for the C++ compiler to + control warnings: +
      +
    • -Wclass-memaccess warns + when objects of non-trivial class types are manipulated in potentially + unsafe ways by raw memory functions such as memcpy, or + realloc. The warning helps detect calls that bypass + user-defined constructors or copy-assignment operators, corrupt + virtual table pointers, data members of const-qualified + types or references, or member pointers. The warning also detects + calls that would bypass access controls to data members. For example, + a call such as: +
      +	memcpy (&std::cout, &std::cerr, sizeof std::cout);
      + results in +
      +	warning: 'void* memcpy(void*, const void*, long unsigned int)' writing to an object of type 'std::ostream' {aka 'class std::basic_ostream<char>'} with no trivial copy-assignment [-Wclass-memaccess]
      + The -Wclass-memaccess option is included in + -Wall.
    • +
    +
  • +
  • + The C++ front end has experimental support for some of the upcoming C++2a + draft features with the -std=c++2a or -std=gnu++2a + flags, including designated initializers, default member initializers for + bit-fields, __VA_OPT__ (except that + #__VA_OPT__ is unsupported), lambda [=, this] + captures, etc. + For a full list of new features, + see the C++ + status page. +
  • +
  • When reporting on attempts to access private fields of a class or + struct, the C++ compiler will now offer fix-it hints showing how to + use an accessor function to get at the field in question, if one exists. +
    +$ gcc accessor.cc
    +accessor.cc: In function 'void test(foo*)':
    +accessor.cc:12:12: error: 'double foo::m_ratio' is private within this context
    +   if (ptr->m_ratio >= 0.5)
    +            ^~~~~~~
    +accessor.cc:7:10: note: declared private here
    +   double m_ratio;
    +          ^~~~~~~
    +accessor.cc:12:12: note: field 'double foo::m_ratio' can be accessed via 'double foo::get_ratio() const'
    +   if (ptr->m_ratio >= 0.5)
    +            ^~~~~~~
    +            get_ratio()
    +
    + +
  • +
  • The C++ compiler can now give you a hint if you use a macro before it + was defined (e.g. if you mess up the order of your #include + directives): +
    +$ gcc ordering.cc
    +ordering.cc:2:24: error: expected ';' at end of member declaration
    +   virtual void clone() const OVERRIDE { }
    +                        ^~~~~
    +                             ;
    +ordering.cc:2:30: error: 'OVERRIDE' does not name a type
    +   virtual void clone() const OVERRIDE { }
    +                              ^~~~~~~~
    +ordering.cc:2:30: note: the macro 'OVERRIDE' had not yet been defined
    +In file included from ordering.cc:5:
    +c++11-compat.h:2: note: it was later defined here
    + #define OVERRIDE override
    +
    +
    + +
  • +
  • The -Wold-style-cast diagnostic can now emit fix-it hints + telling you when you can use a static_cast, + const_cast, or reinterpret_cast. +
    +$ gcc -c old-style-cast-fixits.cc -Wold-style-cast
    +old-style-cast-fixits.cc: In function 'void test(void*)':
    +old-style-cast-fixits.cc:5:19: warning: use of old-style cast to 'struct foo*' [-Wold-style-cast]
    +   foo *f = (foo *)ptr;
    +                   ^~~
    +            ----------
    +            static_cast<foo *> (ptr)
    +
    + +
  • +
  • When reporting on problems within extern "C" linkage + specifications, the C++ compiler will now display the location of the + start of the extern "C". +
    +$ gcc -c extern-c.cc
    +extern-c.cc:3:1: error: template with C linkage
    + template <typename T> void test (void);
    + ^~~~~~~~
    +In file included from extern-c.cc:1:
    +unclosed.h:1:1: note: 'extern "C"' linkage started here
    + extern "C" {
    + ^~~~~~~~~~
    +extern-c.cc:3:39: error: expected '}' at end of input
    + template <typename T> void test (void);
    +                                       ^
    +In file included from extern-c.cc:1:
    +unclosed.h:1:12: note: to match this '{'
    + extern "C" {
    +            ^
    +
    + +
  • +
  • When reporting on mismatching template types, the C++ compiler will + now use color to highlight the mismatching parts of the template, and will + elide the parameters that are common between two mismatching templates, + printing [...] instead: +
    +$ gcc templates.cc
    +templates.cc: In function 'void test()':
    +templates.cc:9:8: error: could not convert 'vector<double>()' from 'vector<double>' to 'vector<int>'
    +   fn_1(vector<double> ());
    +        ^~~~~~~~~~~~~~~~~
    +templates.cc:10:8: error: could not convert 'map<int, double>()' from 'map<[...],double>' to 'map<[...],int>'
    +   fn_2(map<int, double>());
    +        ^~~~~~~~~~~~~~~~~~
    +
    + + Those [...] elided parameters can be seen using + -fno-elide-type: +
    +$ gcc templates.cc -fno-elide-type
    +templates.cc: In function 'void test()':
    +templates.cc:9:8: error: could not convert 'vector<double>()' from 'vector<double>' to 'vector<int>'
    +   fn_1(vector<double> ());
    +        ^~~~~~~~~~~~~~~~~
    +templates.cc:10:8: error: could not convert 'map<int, double>()' from 'map<int,double>' to 'map<int,int>'
    +   fn_2(map<int, double>());
    +        ^~~~~~~~~~~~~~~~~~
    +
    + + The C++ compiler has also gained an option + -fdiagnostics-show-template-tree which visualizes such + mismatching templates in a hierarchical form: +
    +$ gcc templates-2.cc -fdiagnostics-show-template-tree
    +templates-2.cc: In function 'void test()':
    +templates-2.cc:9:8: error: could not convert 'vector<double>()' from 'vector<double>' to 'vector<int>'
    +  vector<
    +    [double != int]>
    +   fn_1(vector<double> ());
    +        ^~~~~~~~~~~~~~~~~
    +templates-2.cc:10:8: error: could not convert 'map<map<int, vector<double> >, vector<double> >()' from 'map<map<[...],vector<double>>,vector<double>>' to 'map<map<[...],vector<float>>,vector<float>>'
    +  map<
    +    map<
    +      [...],
    +      vector<
    +        [double != float]>>,
    +    vector<
    +      [double != float]>>
    +   fn_2(map<map<int, vector<double>>, vector<double>> ());
    +        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    + + which again works with -fno-elide-type: +
    +$ gcc templates-2.cc -fdiagnostics-show-template-tree -fno-elide-type
    +templates-2.cc: In function 'void test()':
    +templates-2.cc:9:8: error: could not convert 'vector<double>()' from 'vector<double>' to 'vector<int>'
    +  vector<
    +    [double != int]>
    +   fn_1(vector<double> ());
    +        ^~~~~~~~~~~~~~~~~
    +templates-2.cc:10:8: error: could not convert 'map<map<int, vector<double> >, vector<double> >()' from 'map<map<int,vector<double>>,vector<double>>' to 'map<map<int,vector<float>>,vector<float>>'
    +  map<
    +    map<
    +      int,
    +      vector<
    +        [double != float]>>,
    +    vector<
    +      [double != float]>>
    +   fn_2(map<map<int, vector<double>>, vector<double>> ());
    +        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    +
    + +
  • +
  • Flowing off the end of a non-void function + is considered unreachable and may be subject to optimization + on that basis. As a result of this change, -Wreturn-type + warnings are enabled by default for C++.
  • +
+ +

Runtime Library (libstdc++)

+
    +
  • Improved experimental support for C++17, including the following features: +
      +
    • Deduction guides to support class template argument deduction.
    • +
    • std::filesystem implementation.
    • +
    • std::char_traits<char> and + std::char_traits<wchar_t> are usable in constant + expressions.
    • +
    • std::to_chars and std::from_chars (for + integers only, not for floating point types).
    • +
    +
  • +
  • Experimental support for C++2a: + std::to_address (thanks to Glen Fernandes) + and std::endian.
  • +
  • On GNU/Linux, std::random_device::entropy() accesses the + kernel's entropy count for the random device, if known + (thanks to Xi Ruoyao).
  • +
  • Support for std::experimental::source_location.
  • +
  • AddressSanitizer integration for std::vector, detecting + out-of-range accesses to the unused capacity of a vector. +
  • +
  • Extensions __gnu_cxx::airy_ai and + __gnu_cxx::airy_bi added to the Mathematical Special + Functions. +
  • +
+ +

Fortran

+
    +
  • + The main version of libfortran has been changed to 5. +
  • +
  • + Parameterized derived types, a major feature of Fortran 2003, have been + implemented. +
  • +
  • + The maximum rank for arrays has been increased to 15, conforming to the + Fortran 2008 standard. +
  • +
  • + Transformational intrinsics are now fully supported in initialization + expressions. +
  • +
  • + New flag -fc-prototypes to write C prototypes for + BIND(C) procedures and variables. +
  • +
  • + If -fmax-stack-var-size is honored if given together with + -Ofast, -fstack-arrays is no longer set in that + case. +
  • +
  • + New options -fdefault-real-16 and -fdefault-real-10 + to control the default kind of REAL variables. +
  • +
  • + A warning is now issued if an array subscript inside a DO loop could lead + to an out-of-bounds-access. The new option -Wdo-subscript, + enabled by -Wextra, warns about this even if the compiler can + not prove that the code will be executed. +
  • +
  • + The Fortran front end now attempts to interchange loops if it is deemed + profitable. So far, this is restricted to FORALL and DO + CONCURRENT statements with multiple indices. This behavior be + controlled with the new flag -ffrontend-loop-interchange, + which is enabled with optimization by default. + The -Wfrontend-loop-interchange option warns about such + occurrences. +
  • +
  • + When an actual argument contains too few elements for a dummy argument, + an error is now issued. The -std=legacy option can be + used to still compile such code. +
  • +
  • + The RECL= argument to OPEN + and INQUIRE statements now allows 64-bit + integers, making records larger than 2GiB possible. +
  • +
  • + The GFORTRAN_DEFAULT_RECL environment variable no + longer has any effect. The record length for preconnected units is + now larger than any practical limit, same as for sequential access + units opened without an explicit RECL= specifier. +
  • +
  • + Character variables longer than HUGE(0) elements are + now possible on 64-bit targets. Note that this changes the + procedure call ABI for all procedures with character arguments on + 64-bit targets, as the type of the hidden character length + argument has changed. The hidden character length argument is now + of type INTEGER(C_SIZE_T). +
  • +
+ +

Go

+
    +
  • GCC 8 provides a complete implementation of the Go 1.10.1 + user packages.
  • + +
  • The garbage collector is now fully concurrent. As before, + values stored on the stack are scanned conservatively, but value + stored in the heap are scanned precisely.
  • + +
  • Escape analysis is fully implemented and enabled by default in + the Go frontend. This significantly reduces the number of heap + allocations by allocating values on the stack instead.
  • +
+ + + +

libgccjit

+ +

The libgccjit API gained four new entry points:

+ +

The C code generated by +gcc_jit_context_dump_reproducer_to_file +is now easier-to-read.

+ + +

New Targets and Target Specific Improvements

+ +

AArch64

+
    +
  • + The Armv8.4-A architecture is now supported. It can be used by + specifying the -march=armv8.4-a option. +
  • +
  • + The Dot Product instructions are now supported as an optional extension to the + Armv8.2-A architecture and newer and are mandatory on Armv8.4-A. The extension can be used by + specifying the +dotprod architecture extension. E.g. -march=armv8.2-a+dotprod. +
  • +
  • + The Armv8-A +crypto extension has now been split into two extensions for finer grained control: +
      +
    • +aes which contains the Armv8-A AES crytographic instructions.
    • +
    • +sha2 which contains the Armv8-A SHA2 and SHA1 cryptographic instructions.
    • +
    + Using +crypto will now enable these two extensions. +
  • +
  • + New Armv8.4-A FP16 Floating Point Multiplication Variant instructions have been added. These instructions are + mandatory in Armv8.4-A but available as an optional extension to Armv8.2-A and Armv8.3-A. The new extension + can be used by specifying the +fp16fml architectural extension on Armv8.2-A and Armv8.3-A. On Armv8.4-A + the instructions can be enabled by specifying +fp16. +
  • +
  • + New cryptographic instructions have been added as optional extensions to Armv8.2-A and newer. These instructions can + be enabled with: +
      +
    • +sha3 New SHA3 and SHA2 instructions from Armv8.4-A. This implies +sha2.
    • +
    • +sm4 New SM3 and SM4 instructions from Armv8.4-A.
    • +
    +
  • +
  • + The Scalable Vector Extension (SVE) is now supported as an + optional extension to the Armv8.2-A architecture and newer. + This support includes automatic vectorization with SVE instructions, + but it does not yet include the SVE Arm C Language Extensions (ACLE). + It can be enabled by specifying the +sve architecture + extension (for example, -march=armv8.2-a+sve). + By default, the generated code works with all vector lengths, + but it can be made specific to N-bit vectors using + -msve-vector-bits=N. +
  • +
  • + Support has been added for the following processors + (GCC identifiers in parentheses): +
      +
    • Arm Cortex-A75 (cortex-a75).
    • +
    • Arm Cortex-A55 (cortex-a55).
    • +
    • Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE (cortex-a75.cortex-a55).
    • +
    + The GCC identifiers can be used + as arguments to the -mcpu or -mtune options, + for example: -mcpu=cortex-a75 or + -mtune=cortex-a75 or as arguments to the equivalent target + attributes and pragmas. +
  • +
+ +

ARC

+
    +
  • + Added support for: +
      +
    • Fast interrupts.
    • +
    • Naked functions.
    • +
    • aux variable attributes.
    • +
    • uncached type qualifier.
    • +
    • Secure functions via sjli instruction.
    • +
    +
  • +
  • + New exception handling implementation. +
  • +
  • + Revamped trampoline implementation. +
  • +
  • + Refactored small data feature implementation, controlled + via -G command line option. +
  • +
  • + New support for reduced register set ARC architecture + configurations, controlled via -mrf16 command line + option. +
  • +
  • + Refurbished and improved support for zero overhead loops. + Introduced -mlpc-width command line option to control the + width of lp_count register. +
  • +
+ +

ARM

+
    +
  • + The -mfpu option now takes a new option setting of + -mfpu=auto. When set to this the floating-point and SIMD + settings are derived from the settings of the -mcpu + or -march options. The internal CPU configurations have been + updated with information about the permitted floating-point configurations + supported. See the user guide for further information about the extended + option syntax for controlling architectural extensions via the + -march option. -mfpu=auto is now the default + setting unless the compiler has been configured with an explicit + --with-fpu option. +
  • +
  • + The -march and -mcpu options now accept optional + extensions to the architecture or CPU option, allowing the user to enable + or disable any such extensions supported by that architecture or CPU + such as (but not limited to) floating-point and AdvancedSIMD. + For example: the option + -mcpu=cortex-a53+nofp will generate code for the Cortex-A53 + processor with no floating-point support. + This, in combination with the new -mfpu=auto option, + provides a straightforward way of specifying a valid build target through + a single -mcpu or -march option. + The -mtune option accepts the same arguments as + -mcpu but only the CPU name has an effect on tuning. + The architecture extensions do not have any effect. + For details of what extensions a particular architecture or CPU option + supports please refer to the + documentation. +
  • +
  • + The -mstructure-size-boundary option has been deprecated and will be + removed in a future release. +
  • +
  • + The default link behavior for Armv6 and Armv7-R targets has been + changed to produce BE8 format when generating big-endian images. A new + flag -mbe32 can be used to force the linker to produce + legacy BE32 format images. There is no change of behavior for + Armv6-M and other Armv7 or later targets: these already defaulted + to BE8 format. This change brings GCC into alignment with other + compilers for the ARM architecture. +
  • +
  • + The Armv8-R architecture is now supported. It can be used by specifying the + -march=armv8-r option. +
  • +
  • + The Armv8.3-A architecture is now supported. It can be used by + specifying the -march=armv8.3-a option. +
  • +
  • + The Armv8.4-A architecture is now supported. It can be used by + specifying the -march=armv8.4-a option. +
  • +
  • + The Dot Product instructions are now supported as an optional extension to the + Armv8.2-A architecture and newer and are mandatory on Armv8.4-A. The extension can be used by + specifying the +dotprod architecture extension. E.g. -march=armv8.2-a+dotprod. +
  • + +
  • + Support for setting extensions and architectures using the GCC target pragma and attribute has been added. + It can be used by specifying #pragma GCC target ("arch=..."), #pragma GCC target ("+extension"), + __attribute__((target("arch=..."))) or __attribute__((target("+extension"))). +
  • +
  • + New Armv8.4-A FP16 Floating Point Multiplication Variant instructions have been added. These instructions are + mandatory in Armv8.4-A but available as an optional extension to Armv8.2-A and Armv8.3-A. The new extension + can be used by specifying the +fp16fml architectural extension on Armv8.2-A and Armv8.3-A. On Armv8.4-A + the instructions can be enabled by specifying +fp16. +
  • +
  • + Support has been added for the following processors + (GCC identifiers in parentheses): +
      +
    • Arm Cortex-A75 (cortex-a75).
    • +
    • Arm Cortex-A55 (cortex-a55).
    • +
    • Arm Cortex-A55/Cortex-A75 DynamIQ big.LITTLE (cortex-a75.cortex-a55).
    • +
    • Arm Cortex-R52 for Armv8-R (cortex-r52).
    • +
    + The GCC identifiers can be used + as arguments to the -mcpu or -mtune options, + for example: -mcpu=cortex-a75 or + -mtune=cortex-r52 or as arguments to the equivalent target + attributes and pragmas. +
  • +
+ +

AVR

+
    +
  • + The AVR port now supports the following XMEGA-like devices: +
    + ATtiny212, ATtiny214, ATtiny412, ATtiny414, ATtiny416, ATtiny417, + ATtiny814, ATtiny816, ATtiny817, ATtiny1614, ATtiny1616, ATtiny1617, + ATtiny3214, ATtiny3216, ATtiny3217 +
    + The new devices are listed under + -mmcu=avrxmega3. +
      +
    • These devices see flash memory in the RAM address space, so that + features like PROGMEM and __flash + are not needed any more (as opposed to other AVR families for which + read-only data will be located in RAM except special, non-standard + features are used to locate and access such data). This requires + that the compiler is used with Binutils 2.29 or newer so that + read-only data will be + located in flash memory.
    • +
    • A new command-line option -mshort-calls is supported. + This option is used internally for multilib selection of the + avrxmega3 variants. It is + not an optimization option. Do not set it by hand.
    • +
    +
  • +
  • + The compiler now generates + efficient interrupt service routine + (ISR) prologues and epilogues. This is achieved by using the new + + AVR pseudo instruction __gcc_isr which is supported + and resolved by the GNU assembler. +
      +
    • As the __gcc_isr pseudo-instruction will be resolved by + the assembler, inline assembly is transparent to the process. + This means that when inline assembly uses an instruction like + INC that clobbers the condition code, + then the assembler will detect this and generate an appropriate + ISR prologue / epilogue chunk to save / restore SREG as needed.
    • +
    • A new command-line option -mno-gas-isr-prologues + disables the generation of the __gcc_isr pseudo + instruction. Any non-naked ISR will save and restore SREG, + tmp_reg and zero_reg, no matter + whether the respective register is clobbered or used.
    • +
    • The feature is turned on per default for all optimization levels + except for -O0 and -Og. It is explicitly + enabled by means of option -mgas-isr-prologues.
    • +
    • Support has been added for a new + + AVR function attribute no_gccisr. It can be used + to disable __gcc_isr pseudo instruction generation + for individual ISRs.
    • +
    • This optimization is only available if GCC is configured with GNU + Binutils 2.29 or newer; or at least with a version of Binutils + that implements feature + PR21683.
    • +
    +
  • +
  • + The compiler no more saves / restores registers in main; + the effect is the same as if attribute OS_task was + specified for main. This optimization can be switched + off by the new command-line option -mno-main-is-OS_task. +
  • +
+ + + +

IA-32/x86-64

+
    +
  • + The x86 port now supports the naked function attribute.
  • +
  • + Better tuning for znver1 and Intel Core based CPUs.
  • +
  • + Vectorization cost metrics has been reworked leading to significant improvements + on some benchmarks.
  • +
  • GCC now supports the Intel CPU named Cannonlake through + -march=cannonlake. The switch enables the AVX512VBMI, + AVX512IFMA and SHA ISA extensions.
  • +
  • GCC now supports the Intel CPU named and Icelake through + -march=icelake. The switch enables the AVX512VNNI, GFNI, VAES, + AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID and AVX512VPOPCNTDQ ISA + extensions.
  • +
  • + GCC now supports the Intel Control-flow Enforcement Technology + (CET) extension through -mibt, -mshstk, + -mcet options. One of these options has to accompany the + -fcf-protection option to enable code instrumentation for + control-flow protection. +
  • +
+ + + + + + + + +

NDS32

+
    +
  • + New command-line options -mext-perf, -mext-perf2, and + -mext-string have been added for performance extension instructions. +
  • +
+ +

Nios II

+
    +
  • + The Nios II back end has been improved to generate better-optimized + code. Changes include switching to LRA, more accurate cost models, + and more compact code for addressing static variables. +
  • +
  • + New command-line options -mgprel-sec= and + -mr0rel-sec= have been added. +
  • +
  • + The stack-smashing protection options are now enabled on Nios II. +
  • +
+ + + +

PA-RISC

+
    +
  • + The default call ABI on 32-bit linux has been changed from callee + copies to caller copies. This affects objects larger than eight + bytes passed by value. The goal is to improve compatibility with + x86 and resolve issues with OpenMP. +
  • +
  • + Other PA-RISC targets are unchanged. +
  • +
+ +

PowerPC / PowerPC64 / RS6000

+
    +
  • + The PowerPC SPE support is split off to a separate powerpcspe + port. The separate port is deprecated and might be removed in a future + release. +
  • +
  • + The Paired Single support (as used on some PPC750 CPUs, + -mpaired, powerpc*-*-linux*paired*) + is deprecated and will be removed in a future release. +
  • +
  • + The Xilinx floating point support (-mxilinx-fpu, + powerpc-xilinx-eabi*) + is deprecated and will be removed in a future release. +
  • +
  • + Support for using big-endian AltiVec intrinsics on a little-endian target + (-maltivec=be) is deprecated and will be removed in a + future release. +
  • +
+ + + + + + + + + + + +

Tile

+
    +
  • + The TILE-Gx port is deprecated and will be removed in a future release. +
  • +
+ + +

Operating Systems

+ + + + + + + + + + + + + + + + + +

Windows

+
    +
  • GCC on Microsoft Windows can now be configured via + --enable-mingw-wildcard or + --disable-mingw-wildcard to force a specific behavior for + GCC itself with regards to supporting the wildcard character. Prior + versions of GCC would follow the configuration of the MinGW runtime. + This behavior can still be obtained by not using the above options or by + using --enable-mingw-wildcard=platform.
  • +
+ + + + + + + +

Improvements for plugin authors

+
    +
  • Plugins can now register a callback hook for when comments are + encountered by the C and C++ compilers, e.g. allowing for plugins + to handle documentation markup in code comments. +
  • +
  • The gdbinit support script for debugging GCC now has a + break-on-diagnostic command, providing an easy way + to trigger a breakpoint whenever a diagnostic is emitted. +
  • +
  • The API for creating fix-it hints now supports newlines, and for + emitting mutually incompatible fix-it hints for one diagnostic. +
  • +
+ + +

Other significant improvements

+
    +
  • +
+ + + + + + + + + + + + + + + + + + diff --git a/README.Bugs.m4 b/README.Bugs.m4 new file mode 100644 index 0000000..a2d1606 --- /dev/null +++ b/README.Bugs.m4 @@ -0,0 +1,333 @@ +Reporting Bugs in the GNU Compiler Collection for DIST +======================================================== + +Before reporting a bug, please +------------------------------ + +- Check that the behaviour really is a bug. Have a look into some + ANSI standards document. + +- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known + +- Try to reproduce the bug with a current GCC development snapshot. You + usually can get a recent development snapshot from the gcc-snapshot +ifelse(DIST,`Debian',`dnl + package in the unstable (or experimental) distribution. + + See: http://packages.debian.org/gcc-snapshot +', DIST, `Ubuntu',`dnl + package in the current development distribution. + + See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ +')dnl + +- Try to find out if the bug is a regression (an older GCC version does + not show the bug). + +- Check if the bug is already reported in the bug tracking systems. + +ifelse(DIST,`Debian',`dnl + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +', DIST, `Ubuntu',`dnl + Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org +')dnl + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +ifelse(DIST,`Debian',`dnl +Please report bugs found in the packaging of GCC to the Debian bug tracking +system. See http://www.debian.org/Bugs/ for instructions (or use the +reportbug script). +', DIST, `Ubuntu',`dnl +Please report bugs found in the packaging of GCC to Launchpad. See below +how issues should be reported. +')dnl + +DIST's current policy is to closely follow the upstream development and +only apply a minimal set of patches (which are summarized in the README.Debian +document). + +ifelse(DIST,`Debian',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Debian +GCC package maintainers, if you report the bug upstream and then submit +a bug report to the Debian BTS and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to the Debian BTS (but read "How to report a bug" +below). +', DIST, `Ubuntu',`dnl +If you think you have found an upstream bug, you did check the section +above ("Before reporting a bug") and are able to provide a complete bug +report (see below "How to report a bug"), then you may help the Ubuntu +GCC package maintainers, if you report the bug upstream and then submit +a bug report to Launchpad and tell us the upstream report number. +This way you are able to follow the upstream bug handling as well. If in +doubt, report the bug to Launchpad (but read "How to report a bug" below). + +Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. +')dnl + + +How to report a bug +------------------- + +There are complete instructions in the gcc info manual (found in the +gcc-doc package), section Bugs. + +The manual can be read using `M-x info' in Emacs, or if the GNU info +program is installed on your system by `info --node "(gcc)Bugs"'. Or see +the file BUGS included with the gcc source code. + +Online bug reporting instructions can be found at + + http://gcc.gnu.org/bugs.html + +[Some paragraphs taken from the above URL] + +The main purpose of a bug report is to enable us to fix the bug. The +most important prerequisite for this is that the report must be +complete and self-contained, which we explain in detail below. + +Before you report a bug, please check the list of well-known bugs and, +if possible in any way, try a current development snapshot. + +Summarized bug reporting instructions +------------------------------------- + +What we need + +Please include in your bug report all of the following items, the +first three of which can be obtained from the output of gcc -v: + + * the exact version of GCC; + * the system type; + * the options given when GCC was configured/built; + * the complete command line that triggers the bug; + * the compiler output (error messages, warnings, etc.); and + * the preprocessed file (*.i*) that triggers the bug, generated by + adding -save-temps to the complete compilation command, or, in + the case of a bug report for the GNAT front end, a complete set + of source files (see below). + +What we do not want + + * A source file that #includes header files that are left out + of the bug report (see above) + * That source file and a collection of header files. + * An attached archive (tar, zip, shar, whatever) containing all + (or some :-) of the above. + * A code snippet that won't cause the compiler to produce the + exact output mentioned in the bug report (e.g., a snippet with + just a few lines around the one that apparently triggers the + bug, with some pieces replaced with ellipses or comments for + extra obfuscation :-) + * The location (URL) of the package that failed to build (we won't + download it, anyway, since you've already given us what we need + to duplicate the bug, haven't you? :-) + * An error that occurs only some of the times a certain file is + compiled, such that retrying a sufficient number of times + results in a successful compilation; this is a symptom of a + hardware problem, not of a compiler bug (sorry) + * E-mail messages that complement previous, incomplete bug + reports. Post a new, self-contained, full bug report instead, if + possible as a follow-up to the original bug report + * Assembly files (*.s) produced by the compiler, or any binary files, + such as object files, executables, core files, or precompiled + header files + * Duplicate bug reports, or reports of bugs already fixed in the + development tree, especially those that have already been + reported as fixed last week :-) + * Bugs in the assembler, the linker or the C library. These are + separate projects, with separate mailing lists and different bug + reporting procedures + * Bugs in releases or snapshots of GCC not issued by the GNU + Project. Report them to whoever provided you with the release + * Questions about the correctness or the expected behavior of + certain constructs that are not GCC extensions. Ask them in + forums dedicated to the discussion of the programming language + + +Known Bugs and Non-Bugs +----------------------- + +[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] + + +C++ exceptions don't work with C libraries +------------------------------------------ + +[Taken from the closed bug report #22769] C++ exceptions don't work +with C libraries, if the C code wasn't designed to be thrown through. +A solution could be to translate all C libraries with -fexceptions. +Mostly trying to throw an exception in a callback function (qsort, +Tcl command callbacks, etc ...). Example: + + #include + #include + + class A {}; + + static + int SortCondition(void const*, void const*) + { + printf("throwing 'sortcondition' exception\n"); + throw A(); + } + + int main(int argc, char *argv[]) + { + int list[2]; + + try { + SortCondition(NULL,NULL); + } catch (A) { + printf("caught test-sortcondition exception\n"); + } + try { + qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), + &SortCondition); + } catch (A) { + printf("caught real-sortcondition exception\n"); + } + return 0; +} + +Andrew Macleod responded: + +When compiled with the table driven exception handling, exception can only +be thrown through functions which have been compiled with the table driven EH. +If a function isn't compiled that way, then we do not have the frame +unwinding information required to restore the registers when unwinding. + +I believe the setjmp/longjmp mechanism will throw through things like this, +but its produces much messier code. (-fsjlj-exceptions) + +The C compiler does support exceptions, you just have to turn them on +with -fexceptions. + +Your main options are to: + a) Don't use callbacks, or at least don't throw through them. + b) Get the source and compile the library with -fexceptions (You have to + explicitly turn on exceptions in the C compiler) + c) always use -fsjlj-exceptions (boo, bad choice :-) + + +g++: "undefined reference" to static const array in class +--------------------------------------------------------- + +The following code compiles under GNU C++ 2.7.2 with correct results, +but produces the same linker error with GNU C++ 2.95.2. +Alexandre Oliva responded: + +All of them are correct. A static data member *must* be defined +outside the class body even if it is initialized within the class +body, but no diagnostic is required if the definition is missing. It +turns out that some releases do emit references to the missing symbol, +while others optimize it away. + +#include + +class Test +{ + public: + Test(const char *q); + protected: + static const unsigned char Jam_signature[4] = "JAM"; +}; + +Test::Test(const char *q) +{ + if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) + cerr << "Hello world!\n"; +} + +int main(void) +{ + Test::Test("JAM"); + return 0; +} + +g++: g++ causes passing non const ptr to ptr to a func with const arg + to cause an error (not a bug) +--------------------------------------------------------------------- + +Example: + +#include +void test(const char **b){ + printf ("%s\n",*b); +} +int main(void){ + char *test1="aoeu"; + test(&test1); +} + +make const +g++ const.cc -o const +const.cc: In function `int main()': +const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' +make: *** [const] Error 1 + +Answer from "Martin v. Loewis" : + +> ok... maybe I missed something.. I haven't really kept up with the latest in +> C++ news. But I've never heard anything even remotly close to passing a non +> const var into a const arg being an error before. + +Thanks for your bug report. This is a not a bug in the compiler, but +in your code. The standard, in 4.4/4, puts it that way + +# A conversion can add cv-qualifiers at levels other than the first in +# multi-level pointers, subject to the following rules: +# Two pointer types T1 and T2 are similar if there exists a type T and +# integer n > 0 such that: +# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) +# pointer to cv(1,n) T +# and +# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) +# pointer to cv(2,n) T +# where each cv(i,j) is const, volatile, const volatile, or +# nothing. The n-tuple of cv-qualifiers after the first in a pointer +# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type +# T1, is called the cv-qualification signature of the pointer type. An +# expression of type T1 can be converted to type T2 if and only if the +# following conditions are satisfied: +# - the pointer types are similar. +# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , +# and similarly for volatile. +# - if the cv(1,j) and cv(2,j) are different, then const is in every +# cv(2,k) for 0 < k < j. + +It is the last rule that your code violates. The standard gives then +the following example as a rationale: + +# [Note: if a program could assign a pointer of type T** to a pointer +# of type const T** (that is, if line //1 below was allowed), a +# program could inadvertently modify a const object (as it is done on +# line //2). For example, +# int main() { +# const char c = 'c'; +# char* pc; +# const char** pcc = &pc; //1: not allowed +# *pcc = &c; +# *pc = 'C'; //2: modifies a const object +# } +# - end note] + +If you question this line of reasoning, please discuss it in one of +the public C++ fora first, eg. comp.lang.c++.moderated, or +comp.std.c++. + + +cpp removes blank lines +----------------------- + +With the new cpp, you need to add -traditional to the "cpp -P" args, else +blank lines get removed. + +[EDIT ME: scan Debian bug reports and write some nice summaries ...] diff --git a/README.C++ b/README.C++ new file mode 100644 index 0000000..8cc40f8 --- /dev/null +++ b/README.C++ @@ -0,0 +1,35 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the +installation of the package, look at: + + file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-4.3-doc package. After installing these packages, +point your browser to + + file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html + +Other documentation can be found: + + http://www.sgi.com/tech/stl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +mirror sites linked from the following URL (this was last updated on +2010/09/11): + + http://www.parashift.com/c++-faq/ + +or use some search engin site to find it, e.g.: + + http://www.google.com/search?q=c%2B%2B+faq+lite + +Be careful not to use outdated mirors. + +Please send updates to this list as bug report for the g++ package. diff --git a/README.Debian b/README.Debian new file mode 100644 index 0000000..b2275d4 --- /dev/null +++ b/README.Debian @@ -0,0 +1,45 @@ + The Debian GNU Compiler Collection setup + ======================================== + +Please see the README.Debian in /usr/share/doc/gcc, contained in the +gcc package for a description of the setup of the different compiler +versions. + +For general discussion about the Debian toolchain (GCC, glibc, binutils) +please use the mailing list debian-toolchain@lists.debian.org; for GCC +specific things, please use debian-gcc@lists.debian.org. When in doubt +use the debian-toolchain ML. + + +Maintainers of these packages +----------------------------- + +Matthias Klose +Ludovic Brenta (gnat) +Iain Buclaw (gdc) +Aurelien Jarno (mips*-linux) +Aurelien Jarno (s390X*-linux) + +The following ports lack maintenance in Debian: powerpc, ppc64, +sparc, sparc64 (unmentioned ports are usually handled by the Debian +porters). + +Former and/or inactive maintainers of these packages +---------------------------------------------------- + +Falk Hueffner (alpha-linux) +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Randolph Chung (ia64-linux) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Arthur Loiret (gdc) + +=============================================================================== + diff --git a/README.cross b/README.cross new file mode 100644 index 0000000..ccf245b --- /dev/null +++ b/README.cross @@ -0,0 +1,22 @@ +Building cross-compiler Debian packages +--------------------------------------- + +The packaging for cross toolchains is now in the archive, including +all frontends, and targeting all release and ports architectures. + +Cross toolchains are built from the following source packages: + + - binutils + - cross-toolchain-base + - cross-toolchain-base-ports + - gcc-7-cross + - gcc-7-cross-ports + - gcc-8-cross + - gcc-8-cross-ports + - gcc-9-cross + - gcc-9-cross-ports + - gcc-defaults + - gcc-defaults-ports + +Issues about the cross toolchains should be filed for one of the +above source packages. diff --git a/README.gnat b/README.gnat new file mode 100644 index 0000000..1efd8df --- /dev/null +++ b/README.gnat @@ -0,0 +1,34 @@ +If you want to develop Ada programs and libraries on Debian, please +read the Debian Policy for Ada: + +http://people.debian.org/~lbrenta/debian-ada-policy.html + +The default Ada compiler is and always will be the package `gnat'. +Debian contains many programs and libraries compiled with it, which +are all ABI-compatible. + +Starting with gnat-4.2, Debian provides both zero-cost and +setjump/longjump versions of the run-time library. The zero-cost +exception handling mechanism is the default as it provides the best +performance. The setjump/longjump exception handling mechanism is new +and only provided as a static library. It is necessary to use this +exception handling mechanism in distributed (annex E) programs. If +you wish to use the new sjlj library: + +1) call gnatmake with --RTS=sjlj +2) call gnatbind with -static + +Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX +mechanism. + + +This package also includes small tools covering specific needs. + +* When linking objects compiled from both Ada and C sources, you need + to use compatible versions of the Ada and C compilers. The + /usr/bin/gnatgcc symbolic link targets a version of the C compiler + compatible with the default Ada compiler, and may differ from the + default C compiler /usr/bin/gcc. + +* When packaging Ada sources for Debian, you may want to read the + /usr/share/ada/debian_packaging-$(gnat_version).mk Makefile snippet. diff --git a/README.libstdc++-baseline.in b/README.libstdc++-baseline.in new file mode 100644 index 0000000..e771c16 --- /dev/null +++ b/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. diff --git a/README.maintainers b/README.maintainers new file mode 100644 index 0000000..9240455 --- /dev/null +++ b/README.maintainers @@ -0,0 +1,190 @@ +-*- Outline -*- + +Read this file if you are a Debian Developer or would like to become +one, or if you would like to create your own binary packages of GCC. + +* Overview + +From the GCC sources, Debian currently builds 3 source packages and +almost 100 binary packages, using a single set of build scripts. The +3 source packages are: + +gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp and libgcc. +gnat-x.y: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-x.y source package, we produce, among many +others, a gcc-x.y-source binary package that contains the pristine +upstream tarball and some Debian-specific patches. Any user can then +install this package on their Debian system, and will have the full +souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the +Makefile snippets that unpack and patch them. + +The intended use for this package is twofold: (a) allow users to build +their own cross-compilers, and (b) build the other packages like +gnat-x.y. + +- gcc-x.y requires only a C compiler to build and produces C, C++, + Fortran, Go and Objective-C compilers and libraries. It also + produces the binary package gcc-x.y-source containing all the + sources and patches in a tarball. + +- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It + does not even have an .orig.tar.bz2 package; it is a Debian native + package. + +The benefits of this split are many: + +- bootstrapping a subset of languages is much faster than + bootstrapping all languages and libraries (which can take a full + week on slow architectures like mips or arm) + +- the language maintainers don't have to wait for each other + +- for new ports, the absence of a port of, say, gnat-x.y does not + block the porting of gcc-x.y. + +gcc-x.y-source is also intended for interested users to build +cross-compiler packages. Debian cannot provide all possible +cross-compiler packages (i.e. all possible host, target, language and +library combinations), so instead tries to facilitate building them. + +* The build sequence + +As for all other Debian packages, you build GCC by calling +debian/rules. + +The first thing debian/rules does it to look at the top-most entry in +debian/changelog: this tells it which source package it is building. +For example, if the first entry in debian/changelog reads: + +gnat-6 (6.2.0-1) unstable; urgency=low + + * Upload as gnat-6. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the gnat binary packages. + +The second step is to build debian/control from debian/control.m4 and +a complex set of rules specified in debian/rules.conf. The resulting +control file contains only the binary packages to be built. + +The third step is to select which patches to apply (this is done in +debian/rules.defs), and then to apply the selected patches (see +debian/rules.patch). The result of this step is a generated +debian/patches/series file for use by quilt. + +The fourth step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-x.y), or in +/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source +packages). + +The fifth step is to apply all patches to the unpacked sources with +quilt. + +The sixth step is to create a "build" directory, cd into it, call +../src/configure, and bootstrap the compiler and libraries selected. +This is in debian/rules2. + +The seventh step is to call "make install" in the build directory: +this installs the compiler and libraries into debian/tmp +(i.e. debian/tmp/usr/bin/gcc, etc.) + +The eighth step is to run the GCC test suite. This actually takes at +least as much time as bootstrapping, and you can disable it by setting +WITHOUT_CHECK to "yes" in the environment. + +The ninth step is to build the binary packages, i.e. the .debs. This +is done by a set of language- and architecture-dependent Makefile +snippets in the debian/rules.d/ directory, which move files from the +debian/tmp tree to the debian/ trees. + +* Making your own packages + +In this example, we will build our own gnat-x.y package. + +1) Install gcc-x.y-source, which contains the real sources: + +# aptitude install gcc-x.y-source + +2) Create a build directory: + +$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z + +3) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian + +4) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-x.y". + +5) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +8) Build: + +$ dpkg-buildpackage + +* Hints + +You need a powerful machine to build GCC. The larger, the better. +The build scripts take advantage of as many CPU threads as are +available in your box (for example: 2 threads on a dual-core amd64; 4 +threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, +etc.). + +If you have 2 GB or more of physical RAM, you can achieve maximum +performance by building in a tmpfs, like this: + +1) as root, create the new tmpfs: + +# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram + +By default, the tmpfs will be limited to half your physical RAM. The +beauty of it is that it only consumes as much physical RAM as +necessary to hold the files in it; deleting files frees up RAM. + +2) As your regular user, create the working directory in the tmpfs + +$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes + to build gnat, and the tmpfs takes 992 MiB of physical RAM but + exceeds 1 GiB during the build. + +Note that the build process uses a lot of temporary files. Your $TEMP +directory should therefore also be in a ram disk. You can achieve +that either by mounting it as tmpfs, or by setting TEMP to point to +~/src/debian/ram. + +Also note that each thread in your processor(s) will run a compiler in +it and use up RAM. Therefore your physical memory should be: + +Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) + +(this is an estimate; your mileage may vary). If you have less +physical RAM than recommended, reduce the number of threads allocated +to the build process, or do not use a tmpfs to build. + +* Patching GCC + +Debian applies a large number of patches to GCC as part of the build +process. It uses quilt but the necessary debian/patches/series is not +part of the packaging scripts; instead, "debian/rules patch" generates +this file by looking at debian/control (which is itself generated!), +debian/changelog and other files. Then it applies all the patches. +At this point, you can use quilt as usual: + +$ cd ~/src/debian/gcc-x.y +$ export QUILT_PATCHES=$PWD/debian/patches +$ quilt series + +If you add new patches, remember to add them to the version control +system too. + +-- +Ludovic Brenta, 2012-04-02. diff --git a/README.snapshot b/README.snapshot new file mode 100644 index 0000000..3e5be69 --- /dev/null +++ b/README.snapshot @@ -0,0 +1,36 @@ +Debian gcc-snapshot package +=========================== + +This package contains a recent development SNAPSHOT of all files +contained in the GNU Compiler Collection (GCC). + +DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + +This package will NEVER hit the testing distribution. It's used for +tracking gcc bugs submitted to the Debian BTS in recent development +versions of gcc. + +To use this snapshot, you should set the following environment variables: + + LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH + PATH=/usr/lib/gcc-snapshot/bin:$PATH + +You might also like to use a shell script to wrap up this +funcationality, e.g. + +place in /usr/local/bin/gcc-snapshot and chmod +x it + +----------- snip ---------- +#! /bin/sh +LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH +PATH=/usr/lib/gcc-snapshot/bin:$PATH +gcc "$@" +----------- snip ---------- + +Make the same for g++, g77, cpp, ... + +Don't forget the quotes around the $@ or gcc will not parse it's +command line correctly! + +Unset these variables before building Debian packages destined for an +upload to ftp-master.debian.org. diff --git a/README.source b/README.source new file mode 100644 index 0000000..4eceda6 --- /dev/null +++ b/README.source @@ -0,0 +1,16 @@ +Patches applied to the Debian version of GCC +-------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Quilt is used as the patch system. See /usr/share/doc/quilt/README.source +for details about quilt. + +Patches are applied by calling `debian/rules patch'. The `series' +file is constructed on the fly based on the files found in the to +debian/rules.patch "debian_patches" variable, configure scripts are +regenerated in the `patch' target. The gcc source is unpacked under +src/ this needs to be reflected in the patch header. + +The source packages gdc-x.y and gnat-x.y do not contain copies of the +source code but build-depend on the appropriate gcc-x.y-source package +instead. diff --git a/README.ssp b/README.ssp new file mode 100644 index 0000000..9facca7 --- /dev/null +++ b/README.ssp @@ -0,0 +1,28 @@ +Stack smashing protection is a feature of GCC that enables a program to +detect buffer overflows and immediately terminate execution, rather than +continuing execution with corrupt internal data structures. It uses +"canaries" and local variable reordering to reduce the likelihood of +stack corruption through buffer overflows. + +Options that affect stack smashing protection: + +-fstack-protector + Enables protection for functions that are vulnerable to stack + smashing, such as those that call alloca() or use pointers. + +-fstack-protector-all + Enables protection for all functions. + +-Wstack-protector + Warns about functions that will not be protected. Only active when + -fstack-protector has been used. + +Applications built with stack smashing protection should link with the +ssp library by using the option "-lssp" for systems with glibc-2.3.x or +older; glibc-2.4 and newer versions provide this functionality in libc. + +The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not +have support for stack smashing protection. + +More documentation can be found at the project's website: +http://researchweb.watson.ibm.com/trl/projects/security/ssp/ diff --git a/TODO b/TODO new file mode 100644 index 0000000..4ce4b0b --- /dev/null +++ b/TODO @@ -0,0 +1,46 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2008-05-02 + +* General + +- Clean up the sprawl of debian/rules. I'm sure there are neater + ways to do some of it; perhaps split it up into some more files? + Partly done. + +- Make debian/rules control build the control file without unpacking + the sources or applying patches. Currently, it unpacks the sources, + patches them, creates the control file, and a subsequent + dpkg-buildpackage deletes the sources, re-unpacks them, and + re-patches them. + +- Reorganise debian/rules.defs to decide which packages to build in a + more straightforward and less error-prone fashion: (1) start with + all languages; override the list of languages depending on the name + of the source package (gcc-4.3, gnat-4.3, gdc-4.3). (2) + filter the list of languages depending on the target platform; (3) + depending on the languages to build, decide on which libraries to + build. + +o [Ludovic Brenta] Ada + +- Done: Link the gnat tools with libgnat.so, instead of statically. + +- Done: Build libgnatvsn containing parts of the compiler (version + string, etc.) under GNAT-Modified GPL. Link the gnat tools with it. + +- Done: Build libgnatprj containing parts of the compiler (the project + manager) under pure GPL. Link the gnat tools with it. + +- Done: Build both the zero-cost and setjump/longjump exceptions + versions of libgnat. In particular, gnat-glade (distributed systems) + works best with SJLJ. + +- Done: Re-enable running the test suite. + +- Add support for building cross-compilers. + +- Add support for multilib (not yet supported upstream). + +* Fortran + +- gfortran man page generation diff --git a/acats-killer.sh b/acats-killer.sh new file mode 100755 index 0000000..29a2550 --- /dev/null +++ b/acats-killer.sh @@ -0,0 +1,62 @@ +#! /bin/sh + +# on ia64 systems, the acats hangs in unaligned memory accesses. +# kill these testcases. + +pidfile=acats-killer.pid + +usage() +{ + echo >&2 "usage: `basename $0` [-p ] " + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -eq 2 ] || usage + +logfile=$1 +stopfile=$2 +interval=30 + +echo $$ > $pidfile + +while true; do + if [ -f "$stopfile" ]; then + echo "`basename $0`: finished." + rm -f $pidfile + exit 0 + fi + sleep $interval + if [ ! -f "$logfile" ]; then + continue + fi + pids=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ -n "$pids" ]; then + sleep $interval + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill: $pids + kill $pids + sleep 1 + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill -9: $pids + kill -9 $pids + fi + fi + fi +done diff --git a/ada/check_ali_update.sh b/ada/check_ali_update.sh new file mode 100644 index 0000000..4067341 --- /dev/null +++ b/ada/check_ali_update.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# Helper for debian/rules2. + +# A modification of libgnat sources invalidates the .ali checksums in +# reverse dependencies as described in the Debian Policy for Ada. GCC +# cannot afford the recommended passage through NEW, but this check at +# least reports the issue before causing random FTBFS. + +set -Cefu +[$# = 2] +# Argument 1: old ALI dir +# Argument 2: new ALI dir + +# A missing $1 means that we build a new GCC Base Version, and that +# libgnatBV-dev package will be renamed anyway. +[-d "$1"] || exit 0 + +report () { + echo 'error: changes in Ada Library Information files.' + echo 'You are seeing this because' + echo ' * DEB_CHECK_ALI_UPDATE=1 in the environment.' + echo ' * build_type=build-native and with_libgnat=yes in debian/rules.defs.' + echo " * $1 exists, so libgnat is probably rebuilding itself with the same version." + echo " * checksums in former $1 and freshly built $2 differ." + echo 'This may break Ada packages, see https://people.debian.org/~lbrenta/debian-ada-policy.html.' + echo 'If you are uploading to Debian, please contact debian-ada@lists.debian.org.' + exit 1 +} + +for ali1 in `find "$1" -name "*.ali"`; do + unit=`basename "$ali1" .ali` + ali2="$2/$unit.ali" + + [-r "$ali2"] || report "$ali1" "$ali2" + + pattern="^D $unit\.ad" + lines1=`grep "$pattern" "$ali1"` + lines2=`grep "$pattern" "$ali2"` + ["$lines1" = "lines2"] || report "$ali1" "$ali2" +done diff --git a/ada/confirm_debian_bugs.py b/ada/confirm_debian_bugs.py new file mode 100644 index 0000000..c076730 --- /dev/null +++ b/ada/confirm_debian_bugs.py @@ -0,0 +1,962 @@ +#!/usr/bin/python3 + +# Helper when migrating bugs from a gnat version to another. + +from __future__ import print_function +import os.path +import re +import shutil +import subprocess +import tempfile + +os.environ ['LC_ALL'] = 'C' + +# If True, "reassign" -> "found" and "retitle" -> "fixed". +# Once the bug tracking system is informed, please update this boolean. +same_gcc_base_version = True + +# The current version. +new_version = "9" + +for line in subprocess.check_output (("dpkg", "--status", "gnat-" + new_version)).decode ().split ("\n"): + if line.startswith ("Version: "): + deb_version = line [len ("Version: "):] + break +# Will cause an error later if deb_version is not defined. + +# Each bug has its own subdirectory in WORKSPACE. +# Every bug subdir is removed if the bug is confirmed, +# and WORKSPACE is removed if empty. +workspace = tempfile.mkdtemp (suffix = "-gnat-" + deb_version + "-bugs") + +def attempt_to_reproduce (bug, make, sources): + tmp_dir = os.path.join (workspace, "bug{}".format (bug)) + os.mkdir (tmp_dir) + + for (name, contents) in sources: + with open (os.path.join (tmp_dir, name), "w") as f: + f.write (contents) + + path = os.path.join (tmp_dir, "stderr.log") + with open (path, "w") as e: + status = subprocess.call (make, stderr=e, cwd=tmp_dir) + with open (path, "r") as e: + stderr = e.read () + return tmp_dir, status, stderr + +def reassign_and_remove_dir (bug, tmp_dir): + if same_gcc_base_version: + print ("found {} {}".format (bug, deb_version)) + else: + print ("reassign {} {} {}".format (bug, "gnat-" + new_version, deb_version)) + shutil.rmtree (tmp_dir) + +def report (bug, message, output): + print ("# {}: {}.".format (bug, message)) + for line in output.split ("\n"): + print ("# " + line) + +def report_and_retitle (bug, message, output): + report (bug, message, output) + if same_gcc_base_version: + print ("fixed {} {}".format (bug, deb_version)) + else: + print ("retitle {} [Fixed in {}] ".format (bug, new_version)) + +def check_compiles_but_should_not (bug, make, sources): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + reassign_and_remove_dir (bug, tmp_dir) + else: + report_and_retitle (bug, "now fails to compile (bug is fixed?)", stderr) + +def check_reports_an_error_but_should_not (bug, make, sources, regex): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + report_and_retitle (bug, "now compiles (bug is fixed?)", stderr) + elif re.search (regex, stderr): + reassign_and_remove_dir (bug, tmp_dir) + else: + report (bug, "still fails to compile, but with a new stderr", stderr) + +def check_reports_error_but_forgets_one (bug, make, sources, regex): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status == 0: + report (bug, "now compiles (?)", stderr); + elif re.search (regex, stderr): + report_and_retitle (bug, "now reports the error (bug is fixed ?)", stderr) + else: + reassign_and_remove_dir (bug, tmp_dir) + +def check_produces_a_faulty_executable (bug, make, sources, regex, trigger): + tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources) + if status != 0: + report (bug, "cannot compile the trigger anymore", stderr) + else: + output = subprocess.check_output ((os.path.join (tmp_dir, trigger),), cwd=tmp_dir).decode () + if re.search (regex, output): + reassign_and_remove_dir (bug, tmp_dir) + else: + report_and_retitle (bug, "output of the trigger changed (bug fixed?)", output) + +###################################################################### + +check_reports_an_error_but_should_not ( + bug = 244936, + make = ("gnatmake", "p"), + regex = 'p\.ads:3:25: "foo" is hidden within declaration of instance', + sources = ( + ("foo.ads", """generic +procedure foo; +"""), + ("foo.adb", """procedure foo is +begin + null; +end foo; +"""), ("p.ads", """with foo; +package p is + procedure FOO is new foo; -- OK +end p; +"""))) + +check_compiles_but_should_not ( + bug = 244970, + make = ("gnatmake", "pak5"), + sources = ( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-pak2.ads", """generic +package pak1.pak2 is +end pak1.pak2; +"""), + ("pak5.ads", """with pak1.pak2; +generic + with package new_pak2 is new pak1.pak2; -- ERROR: illegal use of pak1 +package pak5 is +end pak5; +"""))) + +check_reports_an_error_but_should_not ( + bug = 246187, + make = ("gnatmake", "test_43"), + regex = "Error detected at test_43.ads:11:4", + sources = ( + ("test_43.ads", """package Test_43 is + type T1 is private; + +private + + type T2 is record + a: T1; + end record; + type T2_Ptr is access T2; + + type T1 is record + n: T2_Ptr := new T2; + end record; + +end Test_43; +"""),)) + +check_compiles_but_should_not ( + bug = 247013, + make = ("gnatmake", "test_53"), + sources = ( + ("test_53.ads", """generic + type T1 is private; +package Test_53 is + type T2 (x: integer) is new T1; -- ERROR: x not used +end Test_53; +"""),)) + +check_compiles_but_should_not ( + bug = 247017, + make = ("gnatmake", "test_59"), + sources = ( + ("test_59.adb", """procedure Test_59 is + + generic + type T1 (<>) is private; + procedure p1(x: out T1); + + procedure p1 (x: out T1) is + b: boolean := x'constrained; --ERROR: not a discriminated type + begin + null; + end p1; + +begin + null; +end Test_59; +"""),)) + +check_compiles_but_should_not ( + bug = 247018, + make = ("gnatmake", "test_60"), + sources = ( + ("pak1.ads", """package pak1 is + generic + package pak2 is + end pak2; +end pak1; +"""), + ("test_60.ads", """with pak1; +package Test_60 is + package PAK1 is new pak1.pak2; --ERROR: illegal reference to pak1 +end Test_60; +"""))) + +check_compiles_but_should_not ( + bug = 247019, + make = ("gnatmake", "test_61"), + sources = ( + ("test_61.adb", """procedure Test_61 is + procedure p1; + + generic + package pak1 is + procedure p2 renames p1; + end pak1; + + package new_pak1 is new pak1; + procedure p1 renames new_pak1.p2; --ERROR: circular renames +begin + p1; +end Test_61; +"""),)) + +check_produces_a_faulty_executable ( + bug = 247569, + make = ("gnatmake", "test_75"), + trigger = "test_75", + regex = "failed: wrong p1 called", + sources = ( + ("test_75.adb", """with text_io; +procedure Test_75 is + generic + package pak1 is + type T1 is null record; + end pak1; + + generic + with package A is new pak1(<>); + with package B is new pak1(<>); + package pak2 is + procedure p1(x: B.T1); + procedure p1(x: A.T1); + end pak2; + + package body pak2 is + + procedure p1(x: B.T1) is + begin + text_io.put_line("failed: wrong p1 called"); + end p1; + + procedure p1(x: A.T1) is + begin + text_io.put_line("passed"); + end p1; + + x: A.T1; + begin + p1(x); + end pak2; + + package new_pak1 is new pak1; + package new_pak2 is new pak2(new_pak1, new_pak1); -- (1) + +begin + null; +end Test_75; +"""),)) + +check_compiles_but_should_not ( + bug = 247570, + make = ("gnatmake", "test_76"), + sources = ( + ("test_76.adb", """procedure Test_76 is + + generic + procedure p1; + + pragma Convention (Ada, p1); + + procedure p1 is + begin + null; + end p1; + + procedure new_p1 is new p1; + pragma Convention (Ada, new_p1); --ERROR: new_p1 already frozen + +begin + null; +end Test_76; +"""),)) + +check_produces_a_faulty_executable ( + bug = 247571, + make = ("gnatmake", "test_77"), + trigger = "test_77", + regex = "failed: wrong p1 called", + sources = ( + ("pak.ads", """package pak is + procedure p1; + procedure p1(x: integer); + pragma export(ada, p1); +end pak; +"""), + ("pak.adb", """with text_io; use text_io; +package body pak is + procedure p1 is + begin + put_line("passed"); + end; + + procedure p1(x: integer) is + begin + put_line("failed: wrong p1 called"); + end; +end pak; +"""), + ("test_77.adb", """with pak; +procedure Test_77 is + procedure p1; + pragma import(ada, p1); +begin + p1; +end Test_77; +"""))) + +check_compiles_but_should_not ( + bug = 248166, + make = ("gnatmake", "test_82"), + sources = ( + ("test_82.adb", """procedure Test_82 is + package pak1 is + type T1 is tagged null record; + end pak1; + + package body pak1 is + -- type T1 is tagged null record; -- line 7 + + function "=" (x, y : T1'class) return boolean is -- line 9 + begin + return true; + end "="; + + procedure proc (x, y : T1'class) is + b : boolean; + begin + b := x = y; --ERROR: ambiguous "=" + end proc; + + end pak1; + +begin + null; +end Test_82; +"""),)) + +check_compiles_but_should_not ( + bug = 248168, + make = ("gnatmake", "test_84"), + sources = ( + ("test_84.adb", """procedure Test_84 is + package pak1 is + type T1 is abstract tagged null record; + procedure p1(x: in out T1) is abstract; + end pak1; + + type T2 is new pak1.T1 with null record; + + protected type T3 is + end T3; + + protected body T3 is + end T3; + + procedure p1(x: in out T2) is --ERROR: declared after body of T3 + begin + null; + end p1; + +begin + null; +end Test_84; +"""),)) + +check_compiles_but_should_not ( + bug = 248678, + make = ("gnatmake", "test_80"), + sources = ( + ("test_80.ads", """package Test_80 is + generic + type T1(<>) is private; + with function "=" (Left, Right : T1) return Boolean is <>; + package pak1 is + end pak1; + + package pak2 is + type T2 is abstract tagged null record; + package new_pak1 is new pak1 (T2'Class); --ERROR: no matching "=" + end pak2; +end Test_80; +"""),)) + +check_compiles_but_should_not ( + bug = 248680, + make = ("gnatmake", "test_90"), + sources = ( + ("test_90.adb", """procedure Test_90 is + type T1 is tagged null record; + + procedure p1 (x : access T1) is + b: boolean; + y: aliased T1; + begin + B := Y'Access = X; -- ERROR: no matching "=" +-- B := X = Y'Access; -- line 11: error detected + end p1; + +begin + null; +end Test_90; +"""),)) + +check_compiles_but_should_not ( + bug = 248681, + make = ("gnatmake", "test_91"), + sources = ( + ("test_91.adb", """-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +with unchecked_deallocation; +procedure Test_91 is + generic -- when non generic, we get the expected error + package pak1 is + type int_ptr is access integer; + procedure free(x: in out int_ptr); + end pak1; + + package body pak1 is + procedure deallocate is new + unchecked_deallocation(integer, int_ptr); + procedure free(x: in out int_ptr) renames + deallocate; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end Test_91; +"""),)) + +check_compiles_but_should_not ( + bug = 248682, + make = ("gnatmake", "main"), + sources = ( + ("main.adb", """-- RM 6.3.1(9) +-- The default calling convention is Intrinsic for ... an attribute +-- that is a subprogram; + +-- RM 8.5.4(5) +-- ...the convention of the renamed subprogram shall not be +-- Intrinsic. +procedure main is + package pak1 is + function f1(x: integer'base) return integer'base; + end pak1; + + package body pak1 is + function f1(x: integer'base) return integer'base renames + integer'succ; --ERROR: renaming as body can't rename intrinsic + end pak1; +begin + null; +end; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 253737, + make = ("gnatmake", "test_4"), + regex = 'test_4.ads:.:01: "pak2" not declared in "pak1"', + sources = ( + ("parent.ads", """generic +package parent is +end parent; +"""), + ("parent-pak2.ads", """generic +package parent.pak2 is +end parent.pak2; +"""), + ("parent-pak2-pak3.ads", """generic +package parent.pak2.pak3 is +end parent.pak2.pak3; +"""), + ("parent-pak2-pak4.ads", """with parent.pak2.pak3; +generic +package parent.pak2.pak4 is + package pak3 is new parent.pak2.pak3; +end parent.pak2.pak4; +"""), + ("pak1.ads", """with parent; +package pak1 is new parent; +"""), + ("pak6.ads", """with parent.pak2; +with pak1; +package pak6 is new pak1.pak2; +"""), + ("test_4.ads", """with parent.pak2.pak4; +with pak6; +package Test_4 is new pak6.pak4; +"""))) + +check_compiles_but_should_not ( + bug = 269948, + make = ("gnatmake", "test_119"), + sources = ( + ("test_119.ads", """-- RM 3.9.3/11 A generic actual subprogram shall not be an abstract +-- subprogram. works OK if unrelated line (A) is commented out. +package Test_119 is + generic + with function "=" (X, Y : integer) return Boolean is <>; -- Removing this allows GCC to detect the problem. + package pak1 is + function "=" (X, Y: float) return Boolean is abstract; + generic + with function Equal (X, Y : float) return Boolean is "="; --ERROR: + package pak2 is + end pak2; + end pak1; + + package new_pak1 is new pak1; + package new_pak2 is new new_pak1.pak2; +end Test_119; +"""),)) + +check_compiles_but_should_not ( + bug = 269951, + make = ("gnatmake", "test_118"), + sources = ( + ("pak1.ads", """generic +package pak1 is +end pak1; +"""), + ("pak1-foo.ads", """generic +package pak1.foo is +end pak1.foo; +"""), + ("test_118.ads", """with pak1.foo; +package Test_118 is + package pak3 is + foo: integer; + end pak3; + use pak3; + + package new_pak1 is new pak1; + use new_pak1; + + x: integer := foo; -- ERROR: foo hidden by use clauses +end Test_118; +"""),)) + +# As long as 24:14 is detected, it inhibits detection of 25:21. +check_reports_error_but_forgets_one ( + bug = 276224, + make = ("gnatmake", "test_121"), + regex = "test_121\.adb:25:21: dynamically tagged expression not allowed", + sources = ( + ("test_121.adb", """-- If the expected type for an expression or name is some specific +-- tagged type, then the expression or name shall not be dynamically +-- tagged unless it is a controlling operand in a call on a +-- dispatching operation. +procedure Test_121 is + package pak1 is + type T1 is tagged null record; + function f1 (x1: T1) return T1; + end pak1; + + package body pak1 is + function f1 (x1: T1) return T1 is + begin + return x1; + end; + end pak1; + use pak1; + + type T2 is record + a1: T1; + end record; + + z0: T1'class := T1'(null record); + z1: T1 := f1(z0); -- ERROR: gnat correctly rejects + z2: T2 := (a1 => f1(z0)); -- ERROR: gnat mistakenly allows +begin + null; +end Test_121; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 276227, + make = ("gnatmake", "test_124"), + regex = 'test_124\.ads:6:35: size for "T_arr_constrained" too small, minimum allowed is 256', + sources = ( + ("test_124.ads", """package Test_124 is + type T is range 1 .. 32; + type T_arr_unconstrained is array (T range <>) of boolean; + type T_arr_constrained is new T_arr_unconstrained (T); + pragma pack (T_arr_unconstrained); + for T_arr_constrained'size use 32; +end Test_124; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 278687, + make = ("gnatmake", "test_127"), + regex = 'test_127\.adb:1.:21: expected type "T2" defined at line .', + sources = ( + ("test_127.ads", """-- The second parameter of T2'Class'Read is of type T2'Class, +-- which should match an object of type T3, which is derived +-- from T2. +package test_127 is + pragma elaborate_body; +end test_127; +"""), + ("test_127.adb", """with ada.streams; +package body test_127 is + type T1 is access all ada.streams.root_stream_type'class; + type T2 is tagged null record; + type T3 is new T2 with null record; + + x: T1; + y: T3; +begin + T2'class'read(x, y); +end test_127; +"""))) + +check_compiles_but_should_not ( + bug = 278831, + make = ("gnatmake", "test_128"), + sources = ( + ("test_128.ads", """package Test_128 is + package inner is + private + type T1; + end inner; + type T1_ptr is access inner.T1; -- line 9 ERROR: gnat mistakenly accepts +end Test_128; +"""), + ("test_128.adb", """package body test_128 is + package body inner is + type T1 is new Integer; + end inner; +end Test_128; +"""))) + +# Note that we also check the absence of the next inhibited message. +check_reports_an_error_but_should_not ( + bug = 279893, + make = ("gnatmake", "test_129"), + regex = """gcc-[0-9.]+ -c test_129\.ads +test_129\.ads:1.:49: designated type of actual does not match that of formal "T2" +test_129\.ads:1.:49: instantiation abandoned +gnatmake: "test_129\.ads" compilation error$""", + sources = ( + ("pak1.ads", """-- legal instantiation rejected; illegal instantiation accepted +-- adapted from John Woodruff c.l.a. post + +generic + type T1 is private; +package pak1 is + subtype T3 is T1; +end pak1; +"""), + ("pak2.ads", """with pak1; +generic + type T2 is private; +package pak2 is + package the_pak1 is new pak1 (T1 => T2); +end pak2; +"""), + ("pak2-pak3.ads", """generic + type T2 is access the_pak1.T3; +package pak2.pak3 is +end pak2.pak3; +"""), + ("test_129.ads", """with pak1; +with pak2.pak3; +package Test_129 is + + type T4 is null record; + type T5 is null record; + subtype T3 is T5; -- line 9: triggers the bug at line 16 + + type T4_ptr is access T4; + type T5_ptr is access T5; + + package new_pak2 is new pak2 (T2 => T4); + package new_pak3a is new new_pak2.pak3(T2 => T4_ptr); -- line 15: Legal + package new_pak3b is new new_pak2.pak3(T2 => T5_ptr); -- line 16: Illegal +end Test_129; +"""))) + +print ("# Please ignore the gnatlink message.") +check_reports_an_error_but_should_not ( + bug = 280939, + make = ("gnatmake", "test_130"), + regex = "test_130\.adb:\(\.text\+0x5\): undefined reference to \`p2\'", + sources = ( + ("pak1.ads", """-- RM 10.1.5(4) "the pragma shall have an argument that is a name +-- denoting that declaration." +-- RM 8.1(16) "The children of a parent library unit are inside the +-- parent's declarative region." + +package pak1 is + pragma Pure; +end pak1; +"""), + ("pak1-p2.ads", """procedure pak1.p2; +pragma Pure (p2); -- ERROR: need expanded name +pragma Import (ada, p2); -- ERROR: need expanded name +pragma Inline (p2); -- ERROR: need expanded name +"""), + ("test_130.adb", """with Pak1.P2; +procedure Test_130 is +begin + Pak1.P2; +end Test_130; +"""))) + +check_compiles_but_should_not ( + bug = 283833, + make = ("gnatmake", "test_132"), + sources = ( + ("pak1.ads", """-- RM 8.5.4(5) the convention of the renamed subprogram shall not +-- be Intrinsic, if the renaming-as-body completes that declaration +-- after the subprogram it declares is frozen. + +-- RM 13.14(3) the end of the declaration of a library package +-- causes freezing of each entity declared within it. + +-- RM 6.3.1(7) the default calling convention is Intrinsic for +-- any other implicitly declared subprogram unless it is a +-- dispatching operation of a tagged type. + +package pak1 is + type T1 is null record; + procedure p1 (x1: T1); + type T2 is new T1; +end pak1; +"""), + ("pak1.adb", """package body Pak1 is + procedure P1 (X1 : T1) is begin null; end P1; +end Pak1; +"""), + ("test_132.ads", """with pak1; +package Test_132 is + procedure p2 (x2: pak1.T2); +end Test_132; +"""), + ("test_132.adb", """package body Test_132 is + procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic +end Test_132; +"""))) + +check_compiles_but_should_not ( + bug = 283835, + make = ("gnatmake", "test_133"), + sources = ( + ("test_133.ads", """package Test_133 is + package pak1 is + type T1 is null record; + end pak1; + + package pak2 is + subtype boolean is standard.boolean; + function "=" (x, y: pak1.T1) return boolean; + end pak2; + + use pak1, pak2; + + x1: pak1.T1; + b1: boolean := x1 /= x1; -- ERROR: ambigous (gnat misses) + -- b2: boolean := x1 = x1; -- ERROR: ambigous +end Test_133; +"""), + ("test_133.adb", """package body test_133 is + package body pak2 is + function "=" (x, y: pak1.T1) return boolean is + begin + return true; + end "="; + end pak2; +end test_133; +"""))) + +check_compiles_but_should_not ( + bug = 416979, + make = ("gnatmake", "pak1"), + sources = ( + ("pak1.ads", """package pak1 is + -- RM 7.3(13), 4.9.1(1) + -- check that discriminants statically match + type T1(x1: integer) is tagged null record; + x2: integer := 2; + x3: constant integer := x2; + type T2 is new T1 (x2) with private; + type T3 is new T1 (x3) with private; +private + type T2 is new T1 (x2) with null record; --ERROR: nonstatic discriminant + type T3 is new T1 (x3) with null record; --ERROR: nonstatic discriminant +end pak1; +"""),)) + +check_reports_an_error_but_should_not ( + bug = 660698, + make = ("gnatmake", "proc.adb"), + regex = 'proc\.adb:17:28: there is no applicable operator "And" for type "Standard\.Integer"', + sources = ( + ("proc.adb", """procedure Proc is + package P1 is + type T is new Integer; + function "and" (L, R : in Integer) return T; + end P1; + package body P1 is + function "and" (L, R : in Integer) return T is + pragma Unreferenced (L, R); + begin + return 0; + end "and"; + end P1; + use type P1.T; + package P2 is + use P1; + end P2; + G : P1.T := Integer'(1) and Integer'(2); +begin + null; +end Proc; +"""), )) + +check_produces_a_faulty_executable ( + bug = 737225, + make = ("gnatmake", "round_decimal"), + trigger = "round_decimal", + regex = "Bug reproduced.", + sources = ( + ("round_decimal.adb", """with Ada.Text_IO; + +procedure Round_Decimal is + + -- OJBECTIVE: + -- Check that 'Round of a decimal fixed point type does round + -- away from zero if the operand is of a decimal fixed point + -- type with a smaller delta. + + Unexpected_Compiler_Bug : exception; + + type Milli is delta 0.001 digits 9; + type Centi is delta 0.01 digits 9; + + function Rounded (Value : Milli) return Centi; + -- Value, rounded using Centi'Round + + function Rounded (Value : Milli) return Centi is + begin + return Centi'Round (Value); + end Rounded; + +begin + -- Operands used directly: + if not (Milli'Round (0.999) = Milli'(0.999) + and + Centi'Round (0.999) = Centi'(1.0) + and + Centi'Round (Milli'(0.999)) = Centi'(1.0)) + then + raise Unexpected_Compiler_Bug; + end if; + if Rounded (Milli'(0.999)) /= Centi'(1.0) then + Ada.Text_IO.Put_Line ("Bug reproduced."); + end if; +end Round_Decimal; +"""),)) + +# Even if an error is reported, the problem with the atomic variable +# should be checked. +check_reports_an_error_but_should_not ( + bug = 643663, + make = ("gnatmake", "test"), + regex = 'test\.adb:4:25: no value supplied for component "Reserved"', + sources = ( + ("pkg.ads", """package Pkg is + type Byte is mod 2**8; + type Reserved_24 is mod 2**24; + + type Data_Record is + record + Data : Byte; + Reserved : Reserved_24; + end record; + + for Data_Record use + record + Data at 0 range 0 .. 7; + Reserved at 0 range 8 .. 31; + end record; + + for Data_Record'Size use 32; + for Data_Record'Alignment use 4; + + Data_Register : Data_Record; + pragma Atomic (Data_Register); +end Pkg; +"""), ("test.adb", """with Pkg; +procedure Test is +begin + Pkg.Data_Register := ( + Data => 255, + others => <> -- expected error: no value supplied for component "Reserved" + ); +end Test; +"""))) + +check_produces_a_faulty_executable ( + bug = 864969, + make = ("gnatmake", "main"), + trigger = "main", + regex = "ZZund", + sources = ( + ("main.adb", """with Ada.Locales, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (String (Ada.Locales.Country) + & String (Ada.Locales.Language)); +end Main; +"""),)) + +check_produces_a_faulty_executable ( + bug = 894225, + make = ("gnatmake", "main"), + trigger = "main", + sources = ( + ("main.adb", + """with Ada.Directories, Ada.Text_IO; +procedure Main is +begin + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("/a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("a/b/")); + Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("b/")); +end Main; +"""), + ), + regex = """^/a/b +a/b +b$""") + +try: + os.rmdir (workspace) +except: + print ("Some unconfirmed, not removing directory {}.".format (workspace)) diff --git a/ada/debian_packaging.mk b/ada/debian_packaging.mk new file mode 100644 index 0000000..2680dc8 --- /dev/null +++ b/ada/debian_packaging.mk @@ -0,0 +1,105 @@ +# Common settings for Ada Debian packaging. +# +# Copyright (C) 2012-2019 Nicolas Boulenguez +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Typical use: +# +# gnat_version := $(shell gnatgcc -dumpversion) +# DEB_BUILD_MAINT_OPTIONS := hardening=+all +# DEB_LDFLAGS_MAINT_APPEND := -Wl,--no-undefined -Wl,--no-copy-dt-needed-entries -Wl,--no-allow-shlib-undefined +# DEB_ADAFLAGS_MAINT_APPEND := -gnatwa -Wall +# include /usr/share/dpkg/buildflags.mk +# include /usr/share/ada/debian_packaging-$(gnat_version).mk + +# dpkg-dev provides /usr/share/dpkg/default.mk (or the +# more specific buildflags.mk) to set standard variables like +# DEB_HOST_MULTIARCH, CFLAGS, LDFLAGS... according to the build +# environment (DEB_BUILD_OPTIONS...) and the policy (hardening +# flags...). +# You must include it before this file. +ifeq (,$(findstring /usr/share/dpkg/buildflags.mk,$(MAKEFILE_LIST))) + $(error Please include /usr/share/dpkg/default.mk (or the more specific \ + buildflags.mk) before $(lastword $(MAKEFILE_LIST))) +endif + +# Ada is not in dpkg-dev flag list. We add a sensible default here. + +# Format checking is meaningless for Ada sources. +ADAFLAGS := $(filter-out -Wformat -Werror=format-security, $(CFLAGS)) + +ifdef DEB_ADAFLAGS_SET + ADAFLAGS := $(DEB_ADAFLAGS_SET) +endif +ADAFLAGS := $(DEB_ADAFLAGS_PREPEND) \ + $(filter-out $(DEB_ADAFLAGS_STRIP),$(ADAFLAGS)) \ + $(DEB_ADAFLAGS_APPEND) + +ifdef DEB_ADAFLAGS_MAINT_SET + ADAFLAGS := $(DEB_ADAFLAGS_MAINT_SET) +endif +ADAFLAGS := $(DEB_ADAFLAGS_MAINT_PREPEND) \ + $(filter-out $(DEB_ADAFLAGS_MAINT_STRIP),$(ADAFLAGS)) \ + $(DEB_ADAFLAGS_MAINT_APPEND) + +ifdef DPKG_EXPORT_BUILDFLAGS + export ADAFLAGS +endif + +###################################################################### +# C compiler version + +# GCC binaries must be compatible with GNAT at the binary level, use +# the same version. This setting is mandatory for every upstream C +# compilation. Typical use: +# override_dh_auto_configure: +# dh_auto_configure -- CC='$(CC)' + +CC := gnatgcc + +###################################################################### +# Options for gprbuild/gnatmake. + +# Let Make delegate parallelism to gnatmake/gprbuild. +.NOTPARALLEL: + +# Use all processors unless parallel=n is set in DEB_BUILD_OPTIONS. +# http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options +# The value may be useful elsewhere. Example: SPHINXOPTS=-j$(BUILDER_JOBS) +BUILDER_JOBS := $(filter parallel=%,$(DEB_BUILD_OPTIONS) $(DEB_BUILD_MAINT_OPTIONS)) +ifneq (,$(BUILDER_JOBS)) + BUILDER_JOBS := $(subst parallel=,,$(BUILDER_JOBS)) +else + BUILDER_JOBS := $(shell getconf _NPROCESSORS_ONLN) +endif +BUILDER_OPTIONS += -j$(BUILDER_JOBS) + +BUILDER_OPTIONS += -R +# Avoid lintian warning about setting an explicit library runpath. +# http://wiki.debian.org/RpathIssue + +ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS) $(DEB_BUILD_MAINT_OPTIONS))) +BUILDER_OPTIONS += -v +endif +# Make exact command lines available for automatic log checkers. + +BUILDER_OPTIONS += -eS +# Tell gnatmake to echo commands to stdout instead of stderr, avoiding +# buildds thinking it is inactive and killing it. +# -eS is the default on gprbuild. + +# You may be interested in +# -s recompile if compilation switches have changed +# (bad default because of interactions between -amxs and standard library) +# -we handle warnings as errors +# -vP2 verbose when parsing projects. diff --git a/bin-wrapper.in b/bin-wrapper.in new file mode 100644 index 0000000..f8ca63b --- /dev/null +++ b/bin-wrapper.in @@ -0,0 +1,11 @@ +#! /bin/sh + +# some build tools are linked with a new libstdc++ and fail to run +# when building libstdc++. + +if [ -n "$LD_LIBRARY_PATH" ]; then + ma=$(dpkg-architecture -qDEB_BUILD_MULTIARCH) + export LD_LIBRARY_PATH="/lib/$ma:/usr/lib/$ma:/lib:/usr/lib:$LD_LIBRARY_PATH" +fi + +exec /usr/bin/$(basename $0) "$@" diff --git a/changelog b/changelog new file mode 100644 index 0000000..646b5f1 --- /dev/null +++ b/changelog @@ -0,0 +1,15007 @@ +gcc-9 (9.2.1-17) unstable; urgency=medium + + * Update to SVN 20191102 (r277743) from the gcc-9-branch. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191031, more parallel + build issues. + * ada-libgnatvsn.diff: + - Copy some of configure.ac's common stuff from libatomic/libgomp. + - Regenerate with automake 1.15.1 and autoconf 2.69. + + -- Matthias Klose Sun, 03 Nov 2019 10:37:13 +0100 + +gcc-9 (9.2.1-16) unstable; urgency=medium + + * Update to SVN 20191030 (r277619) from the gcc-9-branch. + - Fix PR target/92225 (x86), PR rtl-optimization/92007, + PR target/70010 (PPC), PR target/65342 (PPC), PR target/67183, + PR fortran/91926, PR fortran/91863, PR fortran/86248, PR c++/92201. + * Use a proper configure check when linking with libatomic in libgnatvsn. + Closes: #943796. + * Enable gm2 on x32. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191030, parallel build issues. + * Fix PR libstdc++/92267, taken from the trunk. + + -- Matthias Klose Wed, 30 Oct 2019 13:13:31 +0100 + +gcc-9 (9.2.1-15) unstable; urgency=medium + + * Update to SVN 20191027 (r277486) from the gcc-9-branch. + - Fix PR c++/85254. + * Update gm2 from the gcc_9_2_0_gm2 branch 20191026. + * Link libgnatvsn against libatomic. + + -- Matthias Klose Sun, 27 Oct 2019 18:08:50 +0100 + +gcc-9 (9.2.1-14) unstable; urgency=medium + + * Update to SVN 20191025 (r277460) from the gcc-9-branch. + - Fix PR libstdc++/90682, PR libstdc++/61761, PR libstdc++/89164, + PR libstdc++/92143, PR libstdc++/91456, PR libstdc++/92059, + PR libstdc++/91748, PR tree-optimization/91885, PR debug/91887, + PR tree-optimization/92131, PR c++/92062, PR fortran/92174, + PR target/88167 (ARM), PR middle-end/92153. + * Configure again with --enable-objc-gc=auto, somehow dropped in gcc-9. + Closes: #942049. + * Revert the libgnatvsn changes from 9.2.1-9. + + -- Matthias Klose Fri, 25 Oct 2019 19:31:48 +0200 + +gcc-9 (9.2.1-12) unstable; urgency=medium + + * Update to SVN 20191022 (r277294) from the gcc-9-branch. + - Fix PR c++/91925, PR c++/88203, PR c/91401, PR tree-optimization/92056, + PR tree-optimization/91734, PR bootstrap/90543, PR middle-end/91920, + PR tree-optimization/91723, PR tree-optimization/91665, + PR middle-end/91001, PR middle-end/91105, PR middle-end/91106, + PR go/91617, PR middle-end/91623, PR lto/91572, + PR tree-optimization/91351. PR target/86040 (AVR), PR target/59888, + PR target/89400 (ARM), PR target/87243, PR c++/92106, PR c++/91974, + PR c++/88203, PR c/91401, PR fortran/69455, PR fortran/91586, + PR fortran/83113, PR fortran/89943. + + [Nicolas Boulenguez] + * Fix race condition in libgnatvsn/Makefile. + + [ Matthias Klose ] + * Configure for s390x Ubuntu focal --with-arch=z13 --with-mtune=z15. + + -- Matthias Klose Tue, 22 Oct 2019 21:35:13 +0200 + +gcc-9 (9.2.1-11) unstable; urgency=medium + + [Nicolas Boulenguez] + * Fix diff index in libgnatvsn patch. Closes: #942442. + + -- Matthias Klose Thu, 17 Oct 2019 10:32:53 +0200 + +gcc-9 (9.2.1-10) unstable; urgency=medium + + * Update to SVN 20191016 (r277058) from the gcc-9-branch. + - Fix PR lto/91968, PR tree-optimization/91812, PR debug/91772, + PR tree-optimization/91790, PR target/92022 (ALPHA), + PR target/88630 (SH), PR c++/91606, PR c++/91740, PR ada/91995, + PR fortran/91715, PR fortran/91649, PR fortran/91801. + + [Nicolas Boulenguez] + * Rewrite libgnatvsn support with autotools. Closes: #746689. + * Converge towards similar gnat_util library. + * Cherry-pick repinfo stuff for latest ASIS. + + [ Matthias Klose ] + * gm2: Fix a time_t cast, and enable gm2 on x32. Closes: #942059, + * Fix PR lto/91307, reproducible LTO builds, taken from the trunk. + + -- Matthias Klose Wed, 16 Oct 2019 12:29:50 +0200 + +gcc-9 (9.2.1-9) unstable; urgency=medium + + * Update to SVN 20191008 (r276687) from the gcc-9-branch. + - Fix PR libstdc++/91748, PR rtl-optimization/89795, PR c++/91705, + PR target/86805 (SH), PR target/80672 (SH), PR rtl-optimization/88751, + PR target/91683 (riscv), PR target/91269 (SPARC), + PR target/91635 (riscv), PR c++/91923, PR fortran/91557, + PR fortran/91553, PR fortran/91566, PR fortran/91642, PR fortran/91588, + PR fortran/91727, PR fortran/91550, PR target/91275 (PPC), + PR target/91769 (MIPS), PR fortran/91716, PR target/88562 (SH), + PR driver/69471, PR fortran/84487, PR fortran/47054, PR fortran/91942, + PR fortran/91785, PR fortran/91864, PR fortran/91802, PR fortran/91714, + PR fortran/91641. + - Fix ICE on MIPS. Closes: #941263. + * Disable gm2 on hurd-i386, mc hangs there (Samuel Thibault). Closes: #940600. + * Apply proposed patch for PR target/92022. Addresses: #931815. + + [ Nicolas Boulenguez ] + * Update ada local patches. + + -- Matthias Klose Tue, 08 Oct 2019 10:21:22 +0200 + +gcc-9 (9.2.1-8) unstable; urgency=medium + + * Update to SVN 20190909 (r275519) from the gcc-9-branch. + - Fix PR fortran/91496, PR fortran/91496, PR fortran/91660, + PR fortran/91589, PR target/87853 (x86), PR target/91704 (x86). + * libstdc++: Fix GCC_LINUX_FUTEX to work with C99 compilers, taken from + the trunk. + * Make LTO link pick up compile-time -g (proposed patch). + + -- Matthias Klose Mon, 09 Sep 2019 17:18:48 +0200 + +gcc-9 (9.2.1-7) unstable; urgency=medium + + * Update to SVN 20190905 (r275396) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR target/91481 (PPC), + PR tree-optimization/90278, PR tree-optimization/91568, + PR tree-optimization/90637, PR fortran/91565, PR fortran/91564, + PR fortran/91551, PR fortran/91587, PR pch/61250, PR c++/91155, + PR tree-optimization/91597, PR gcov-profile/91601, + PR target/91472 (SPARC), PR c++/91129, PR fortran/91552, + PR target/81800 (AArch64). + * Drop the gcc-alpha-bs-ignore patch, apparently not necessary anymore. + * For the omp.h header, use the configured OMP_NEST_LOCK_SIZE and + OMP_NEST_LOCK_ALIGN values for some non-multilib architectures. + Closes: #935750. + * Use Python3 to build the gm2 frontend. Closes: #936586. + * libgphobos76: Add breaks: dub (<< 1.16.0-1~). Addresses: #935275. + + -- Matthias Klose Thu, 05 Sep 2019 06:45:00 +0200 + +gcc-9 (9.2.1-6) unstable; urgency=medium + + * Update to SVN 20190827 (r274974) from the gcc-9-branch. + - Fix PR ipa/91508, PR ipa/91438, PR ipa/91404, PR lto/91287, + PR target/91533 (x86), PR ipa/91508, PR ipa/91438, PR ipa/91404, + PR c++/91521. + * Backport LTO jobserver support (-flto=auto). + * any_archs: Remove mips and powerpcspe, add riscv64. + + -- Matthias Klose Wed, 28 Aug 2019 01:01:47 +0200 + +gcc-9 (9.2.1-4) unstable; urgency=medium + + * Fix typo for gm2 enablement. + * Disable gm2 on powerpc, ppc64, sh4, kfreebsd-i386, kfreebsd-amd64. + See the build logs of 9.2.1-3 for the various issues. + + -- Matthias Klose Thu, 22 Aug 2019 12:12:07 +0200 + +gcc-9 (9.2.1-3) unstable; urgency=medium + + * Update to SVN 20190821 (r274792) from the gcc-9-branch. + - Fix PR rtl-optimization/91347, PR target/91386 (AArch64). + + [ Aurelien Jarno ] + * Enable Ada on riscv64. + + [ Matthias Klose ] + * Build the gm2 packages except on powerpc and x32. + * Update gm2 cross build dependencies. + * Fix gm2 build with -j32. + * Configure with --enable-libpth-m2 for gm2 cross builds. + * Configure --without-target-system-zlib for gdc cross builds. + * Remove not needed libpth-dev dependency for gm2 packages. + * Ignore M2Version.o for gm2 bootstrap comparison. + * Update gm2 from the gcc_9_2_0_gm2 branch 20190820. + + -- Matthias Klose Wed, 21 Aug 2019 12:15:27 +0200 + +gcc-9 (9.2.1-2) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20190819 (r274667) from the gcc-9-branch. + - Fix PR c++/90947, PR c++/91436, PR fortran/87991, PR fortran/90563, + PR fortran/88072, PR fortran/90561, PR fortran/89647, PR fortran/87993, + PR tree-optimization/91109, PR tree-optimization/91109, + PR tree-optimization/91445, PR tree-optimization/91091, + PR c++/90393, PR c++/81429, PR c++/87519, PR c++/90473, PR c++/90884, + PR libsanitizer/87880, PR fortran/91485, PR fortran/91471, + PR fortran/78739, PR fortran/78719, PR fortran/82992. + * More gm2/libgm2 packaging fixes. + * Disable lto build on sparc64 (if porters would only test that before + making a request to enable it ...). + * Bootstrap using gnat-9 on development distributions. + + [ Aurelien Jarno ] + * Fix libstdc++6.symbols.riscv64. + + [ Nicolas Boulenguez ] + * ada: update packaging Makefile snippet for gcc-9. + + -- Matthias Klose Mon, 19 Aug 2019 13:01:37 +0200 + +gcc-9 (9.2.1-1) unstable; urgency=medium + + * Update to SVN 20190813 (r274380) from the gcc-9-branch. + - Fix PR fortran/91422, PR lto/91375, PR driver/91130, PR driver/91130, + PR c++/91378, PR c++/90538, PR fortran/91424, PR fortran/91359, + PR fortran/42546, PR fortran/91414, PR libstdc++/90361. + * Minor updates to debian/copyright for GCC 9. + * Include a snapshot of the gm2 tarball. + * Add copyright information for gcc/gm2, gcc/testsuite/gm2 and libgm2. + + -- Matthias Klose Tue, 13 Aug 2019 15:43:49 +0200 + +gcc-9 (9.2.0-1) unstable; urgency=medium + + * GCC 9.2.0 release. + + [ Matthias Klose ] + * Enable pgo/lto build on sparc64 (ok, when done on landau buildd). + * Add initial gm2 packaging bits. + * Bump standards version. + + [ James Clarke ] + * ada-kfreebsd.diff: Fix fatal unreferenced formal parameter warnings. + + [ Aurelien Jarno ] + * Add libstdc++6.symbols.riscv64. + * Update debian/libgcc.symbols for riscv64. + + -- Matthias Klose Tue, 13 Aug 2019 12:24:04 +0200 + +gcc-9 (9.1.0-10) unstable; urgency=medium + + * Fix typo in libstdc++ symbols file. + + -- Matthias Klose Wed, 17 Jul 2019 21:56:07 +0200 + +gcc-9 (9.1.0-9) unstable; urgency=medium + + * Update to SVN 20190717 (r273554) from the gcc-9-branch. + - Fix PR c++/91125, PR c/91149, PR driver/90684, PR middle-end/78884, + PR rtl-optimization/90756, PR tree-optimization/91063, PR ipa/91062, + PR ipa/90982, PR tree-optimization/90972, PR debug/90914, PR debug/90900, + PR lto/90369, PR rtl-optimization/91136, PR tree-optimization/91108, + PR fortran/91077. + + [ Matthias Klose ] + * Make the lto-verbose-linker patch more robust for hppa (Dave Anglin). + * Avoid building stuff which is not needed for architecture independent + packages. Addresses: #900554. + * lib32gphobos-dev, libn32gphobos-dev: Remove dependency on non-existing + libz-dev multilib packages. + * Update libgfortran symbols files. + * Update libstdc++ symbols files. + + [ Nicolas Boulenguez ] + * Ada: update confirm_debian_bugs.py. + * Ada: fully port 50b8286b from the gcc-8 branch to gcc-9. + + -- Matthias Klose Wed, 17 Jul 2019 21:53:24 +0200 + +gcc-9 (9.1.0-8) unstable; urgency=medium + + * Update to SVN 20190707 (r273175) from the gcc-9-branch. + * Re-add a lost hunk to the add-kfreebsd patch (James Clarke). + * Dump config files on failed jit and nvptx builds. + * Disable the LTO builds on architectures where the buildds can't keep up. + + -- Matthias Klose Sun, 07 Jul 2019 12:10:25 +0200 + +gcc-9 (9.1.0-7) experimental; urgency=medium + + * Update to SVN 20190704 (r273081) from the gcc-9-branch. + - Fix PR libstdc++/91067, PR tree-optimization/90892, PR middle-end/90899. + - Fix gnat build failure on kfreebsd-* (James Clarke). Closes: #922496. + * Add ppc64el as architecture for the nvptx offload packages. + * Increase the timeouts for the LTO link builds. + * Fix PR rtl-optimization/90756, taken from the trunk. Addresses: #930012. + + -- Matthias Klose Thu, 04 Jul 2019 22:44:41 +0200 + +gcc-9 (9.1.0-6) experimental; urgency=medium + + * Update to SVN 20190703 (r273015) from the gcc-9-branch. + - Fix PR sanitizer/90954, PR c++/91024, PR target/90991 (x86), PR c/90760, + PR tree-optimization/90949, PR c++/90950, PR middle-end/64242, + PR c++/60223, PR c++/90490. + * Disable LTO builds for snapshot builds. + * Don't use --push-state/--pop-state options for old linkers. + * Fix explicit autoconf version for backport packages. + * Allow to build with the locales package instead of locales-all. + * Disable LTO and profiled builds for older binutils versions. + * Try to enable the LTO builds everywhere. + * Make the LTO link step a bit more verbose to avoid timeouts on + the buildds. + + -- Matthias Klose Wed, 03 Jul 2019 20:21:23 +0200 + +gcc-9 (9.1.0-5) experimental; urgency=medium + + * Update to SVN 20190628 (r272781) from the gcc-9-branch. + - Fix PR libstdc++/85494, PR libstdc++/91012, R libstdc++/90920, + PR libstdc++/90281, PR libstdc++/88881, PR libstdc++/90770, + PR libstdc++/90252, PR ipa/90939, PR tree-optimization/90930, + PR tree-optimization/90930, PR tree-optimization/90316, + PR middle-end/64242, PR c++/90825, PR c++/90832, PR c++/90736, + PR fortran/90937, PR fortran/90290, PR fortran/90002, PR fortran/89344, + PR fortran/87907, PR fortran/86587, PR fortran/77632, PR fortran/69499, + PR fortran/69398, PR fortran/68544, PR fortran/90577, PR fortran/90578. + * Fix cross building gdc (Iain Buclaw). + * Apply proposed fix for PR libgcc/90714 (ia64 only). Addresses: #930119. + + -- Matthias Klose Fri, 28 Jun 2019 13:13:25 +0200 + +gcc-9 (9.1.0-4) experimental; urgency=medium + + * Update to SVN 20190612 (r272183) from the gcc-9-branch. + - Fix PR target/90811 (nvidia), PR libgomp/90641, PR libgomp/90585, + PR c++/90598, PR libstdc++/90700, PR libstdc++/90686, PR libstdc++/90634, + PR c/90474, PR d/90778, PR target/90751 (PARISC), + PR tree-optimization/90450, PR tree-optimization/90402, + PR tree-optimization/90328, PR debug/90733, PR target/82920 (x86), + PR fortran/90329, PR fortran/90329, PR bootstrap/90543, + PR c++/90810, PR c++/90598, PR c++/90548, PR fortran/90744, + PR fortran/90329. + * Update the watch file. + + -- Matthias Klose Wed, 12 Jun 2019 17:56:59 +0200 + +gcc-9 (9.1.0-3) experimental; urgency=medium + + * Update to SVN 20190526 (r271629) from the gcc-9-branch. + - Fix PR libgomp/90527, PR c++/90532, PR libstdc++/90299, + PR libstdc++/90454, PR debug/90197, PR pch/90326, PR c++/90484, + PR tree-optimization/90385, PR c++/90383, PR tree-optimization/90303, + PR tree-optimization/90316, PR tree-optimization/90316, + PR libstdc++/90220, PR libstdc++/90557, PR sanitizer/90570, + PR target/90547 (x86), PR libfortran/90038, PR fortran/90498, + PR libfortran/90038, PR libfortran/90038, PR fortran/54613, + PR fortran/54613, PR libstdc++/85965, PR target/90530 (PARISC), + PR c++/90572. + * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on + supported architectures. + * Fix PR bootstrap/87338 on ia64 (James Clarke). Addresses: #927976. + * Enable LTO builds on 64bit architectures. + * Update libstdc++ symbols files for gcc-4-compatible builds. + * Build the nvptx offload compiler on ppc64el. + * Build the libgomp-hsa plugin. + + -- Matthias Klose Sun, 26 May 2019 17:59:59 +0200 + +gcc-9 (9.1.0-2) experimental; urgency=medium + + * Update to SVN 20190514 (r271161) from the gcc-9-branch. + - Fix PR target/89424 (PPC), PR sanitizer/90312, PR c++/90265, + PR c++/90173, PR target/87835, PR libstdc++/81266, PR libstdc++/90397, + PR libstdc++/90239, PR tree-optimization/90416, PR gcov-profile/90380, + PR gcov-profile/90380, PR target/90357 (MIPS), PR target/89765 (PPC), + PR c++/78010, PR c++/90265, PR c++/90173, PR fortran/90093, + PR fortran/90352, PR fortran/90355, PR fortran/90351, PR fortran/90329, + PR target/90379, PR bootstrap/89864. + * Update the cross installation patch. + * Enable Go on sh4. + * Adjust some regex patterns used in the packaging for GCC 10. + * Drop the build dependency on binutils-multiarch (libgo-9-dev is now split + out into its own package). Closes: #804190. + * Ignore any distro default flags for the hppa64 cross build. + + -- Matthias Klose Tue, 14 May 2019 13:38:03 +0200 + +gcc-9 (9.1.0-1) experimental; urgency=medium + + * GCC 9.1.0 release. + * Update to SVN 20190504 (r270874) from the gcc-9-branch. + - Fix PR tree-optimization/90316. + * Merge some hardening defaults patches into one patch set. + * Turn on -fasynchronous-unwind-tables by default on supported architectures. + * Refresh patches. + + -- Matthias Klose Sat, 04 May 2019 17:17:23 +0200 + +gcc-9 (9-20190428-1) experimental; urgency=medium + + * GCC snapshot, taken from the gcc-9 branch (20190428, r270630). + * Build the phobos and D runtime on s390x and riscv64. + + -- Matthias Klose Sun, 28 Apr 2019 09:15:08 +0200 + +gcc-9 (9-20190420-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190420, r270466). + + -- Matthias Klose Sat, 20 Apr 2019 08:30:33 +0200 + +gcc-9 (9-20190402-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190402, r270074). + * Mark gcc-9-source as M-A: foreign. + + -- Matthias Klose Tue, 02 Apr 2019 08:22:27 +0200 + +gcc-9 (9-20190321-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190321, r269832). + * Split out lib*go-dev packages. + * Fix PR jit/87808: Don't rely on the gcc driver. Let libgccjit0 + depend on binutils and libgcc-dev. Addresses: #911668. + * Fix stripping the gcc-hppa64 package. + * Update libstdc++ and libgccjit symbols files. + + -- Matthias Klose Thu, 21 Mar 2019 12:39:47 +0100 + +gcc-9 (9-20190311-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190311, r269597). + + -- Matthias Klose Mon, 11 Mar 2019 23:23:20 +0100 + +gcc-9 (9-20190305-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190305, r269387). + + [ Aurelien Jarno ] + * Run the tests in parallel again on Debian/s390x, the libgo bug is + fixed. + + [ Matthias Klose ] + * Fix test dependencies for the Hurd and KFreeBSD. + + -- Matthias Klose Tue, 05 Mar 2019 10:51:09 +0100 + +gcc-9 (9-20190223-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190223, r269152). + + -- Matthias Klose Sat, 23 Feb 2019 11:00:00 +0100 + +gcc-9 (9-20190216-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190216, r268955). + * Fix libgo s390x biarch build. + * Run test suite on the Hurd and KFreeBSD. + * Fix linking libgphobos with the system zlib. + + -- Matthias Klose Sat, 16 Feb 2019 14:28:15 +0100 + +gcc-9 (9-20190215-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190215, r268943). + * Build libphobos on all mips variants. + * Build-depend on locales-all instead of locales, don't generate locales + during the build, and attribute test dependencies with . + * Don't run the tests on Debian/s390x in parallel, memory constraints on + the buildds. + * gdc-9: Include again the libgphobos spec file. + + -- Matthias Klose Fri, 15 Feb 2019 19:13:42 +0100 + +gcc-9 (9-20190208-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190208, r268704). + * Update the support to build without packages being built by the next GCC + version. + * Fix ISO_Fortran_binding.h installation for cross builds. + + -- Matthias Klose Fri, 08 Feb 2019 18:17:45 +0100 + +gcc-9 (9-20190202-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190202, r268474). + + -- Matthias Klose Sat, 02 Feb 2019 12:19:53 +0100 + +gcc-9 (9-20190125-2) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190125, r268260). + + [ Matthias Klose ] + * Turn on ld --as-needed by default on Debian development versions. + * Turn on profiled bootstrap on x86, AArch64, PPC64 and s390x + architectures for native builds. + * Relax the shlibs dependency for libgnat-8. Addresses: #920246. + + [ Nicolas Boulenguez ] + * Update the ada-kfreebsd patch. Closes: #919996. + + -- Matthias Klose Fri, 25 Jan 2019 11:58:44 +0100 + +gcc-9 (9-20190120-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190120, r268102). + - Updates to Go 1.12 beta2. + * Build libphobos on hppa. + * Drop libgo patch for the Hurd. + * Refresh patches. + * Update newlib to newlib-3.1.0.20181231. + + -- Matthias Klose Sun, 20 Jan 2019 11:28:26 +0100 + +gcc-9 (9-20190116-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190116, r267965). + * libgccjit-9-doc: Breaks libgccjit-8-doc. Closes: #918445. + * Update libstdc++6 symbols files. + * Override some libasan and gccgo lintian warnings. + * Build the Ada packages except for gnat-9-sjlj. + * Bump standards version. + + -- Matthias Klose Wed, 16 Jan 2019 09:42:19 +0100 + +gcc-9 (9-20190103-1) experimental; urgency=medium + + * GCC snapshot, taken from the trunk (20190103). + + [ Matthias Klose ] + * Update packaging, patches and symbols files. + * Remove libmpx packaging, removed upstream. + * Update newlib to the newlib-3.0.0.20180831 snapshot. + * Disable building Ada for now. + * Build D and libphobos from the now integrated upstream sources. + * gcc-9-base: Break gnat (<< 7). Addresses: #911633. + * gdc: Dynamically link the phobos library. + * Adopt gcc-snapshot build for the current trunk. + * Don't apply gcc-as-needed patch for snapshot builds. + * Fix control file generation for gphobos n32 multilibs. + * Disable gnat build on alpha. See PR ada/88200. + * powerpcspe support removed upstream. Remove the powerpcspe packaging + references and powerpcspe patches. + * gcc-9-source: Depend on lsb-release. + * Disable broken selective scheduling on ia64 (Adrian Glaubitz). + See PR rtl-optimization/85412. Addresses: #916591. + * Fix perl shebang for the gnathtml binary. + * Lower priority of libgcc[124] and libstdc++6 packages. + * Stop building the fixincludes package, never used by lintian. + * Remove the libstdc++6 breaks for the stretch release. + * libgccjit-doc: Install image files. + * Don't provide -compiler names for cross compiler packages. + Addresses: #916376. Not a final solution. + * Disable the gnat build for now, ftbfs in the sjlj variant. + * Bump the libgo soname. + + [ Nicolas Boulenguez ] + * Update Ada patches. + + -- Matthias Klose Thu, 03 Jan 2019 13:35:00 +0100 + +gcc-8 (8.2.0-8.1) UNRELEASED; urgency=medium + + * Update to SVN 20181020 (r265339) from the gcc-8-branch. + - Fix PR middle-end/87087, PR middle-end/87623, PR libstdc++/87641, + PR middle-end/87645. + * Update VCS attributes in the control file. + * Don't configure native builds with --with-sysroot. Apparently this cannot + be completely overridden with the command line option --sysroot. + + -- Matthias Klose Sat, 20 Oct 2018 09:25:48 +0200 + +gcc-8 (8.2.0-8) unstable; urgency=medium + + * Update to SVN 20181017 (r265234) from the gcc-8-branch. + - Fix PR libstdc++/86751, PR libstdc++/78595, PR libstdc++/87061, + PR libstdc++/70966, PR libstdc++/77854, PR libstdc++/87538, + PR libgcc/85334, PR middle-end/63155, PR target/87511 (AArch64), + PR middle-end/87610, PR tree-optimization/87465, PR target/87550 (x86), + PR target/87414 (x86), PR tree-optimization/86844, PR target/86731 (PPC), + PR target/87370 (x86), PR target/87517 (x86), PR target/87522 (x86), + PR other/87353, PR gcov-profile/86109, PR target/82699 (x86), + PR target/87467 (x86), PR target/87033 (PPC), PR sanitizer/85774, + PR rtl-optimization/86882, PR gcov-profile/85871, PR c++/87582, + PR c++/84940, PR gcov-profile/86109, PR c++/85070, PR c++/86881, + PR fortran/83999, PR fortran/86372, PR fortran/86111, PR fortran/85395, + PR fortran/86830, PR fortran/85954. + + -- Matthias Klose Wed, 17 Oct 2018 09:45:31 +0200 + +gcc-8 (8.2.0-7) unstable; urgency=medium + + * Update to SVN 20180917 (r264370) from the gcc-8-branch. + - Fix PR libstdc++/87278, PR target/85666 (mmix), PR middle-end/87188, + PR target/87224 (PPC), PR target/86989 (PPC), PR rtl-optimization/86771, + PR middle-end/87248, PR c++/87093, PR fortran/87284, PR fortran/87277. + + -- Matthias Klose Mon, 17 Sep 2018 17:46:50 +0200 + +gcc-8 (8.2.0-6) unstable; urgency=medium + + * Update to SVN 20180908 (r264168) from the gcc-8-branch. + - Fix PR c++/87137, PR bootstrap/87225, PR target/87198 (x86), + PR middle-end/87138, PR tree-optimization/86835, PR c++/87185, + PR c++/87095, PR c++/86836, PR c++/86738, PR c++/86706, PR fortran/86116. + * Apply proposed patch for PR go/87260. + * Apply proposed patch for PR tree-optimization/87188. Closes: #907586. + * Fix PR target/86731 (PPC), taken from the trunk. Closes: #905868. + + -- Matthias Klose Sun, 09 Sep 2018 14:43:43 +0200 + +gcc-8 (8.2.0-5) unstable; urgency=medium + + * Update to SVN 20180904 (r264075) from the gcc-8-branch. + - Fix PR sanitizer/86022, PR libstdc++/87116, PR other/86992, + PR tree-optimization/86914, PR middle-end/87099, + PR rtl-optimization/87065, PR target/86662, PR target/87014, + PR target/86640, PR gcov-profile/86817, PR tree-optimization/86871, + PR c++/86763, PR fortran/86837, PR libfortran/86704, + PR tree-optimization/85859, PR tree-optimization/87074, + PR tree-optimization/86927, PR middle-end/87024, PR middle-end/86505, + PR tree-optimization/86945, PR tree-optimization/86816, + PR lto/86456, PR c++/87155, PR c++/84707, PR c++/87122, + PR fortran/86328, PR fortran/86760. + * Remove ia64 boostrap work around (Jason Duerstock). Closes: #906675. + + -- Matthias Klose Tue, 04 Sep 2018 09:04:17 +0200 + +gcc-8 (8.2.0-4) unstable; urgency=medium + + * Update to SVN 20180814 (r263527) from the gcc-8-branch. + - Fix PR libstdc++/86597, PR libstdc++/84535, PR libstdc++/60555, + PR libstdc++/86874, PR libstdc++/86861, PR target/86386 (x86), + PR c++/86728, PR c++/86767, PR fortran/86906. + + [ Nicolas Boulenguez ] + * gnat: set ld_library_path for tested gnat tools. + * In the gnat autopkg test, tell gnatmake to report progress on stdout. + * gnat: Improve the ada-gcc-name patch. + * Update ada/debian_packaging.mk. + + -- Matthias Klose Tue, 14 Aug 2018 11:45:55 +0200 + +gcc-8 (8.2.0-3) unstable; urgency=medium + + * Update to SVN 20180803 (r263086) from the gcc-8-branch. + - Fix PR middle-end/86705, PR target/86820 (m68k). + * Build using ISL 0.20. + * Fix some autopkg tests (allow stderr, explicitly depend on libc-dev). + + -- Matthias Klose Fri, 03 Aug 2018 12:32:31 +0200 + +gcc-8 (8.2.0-2) unstable; urgency=medium + + * Update to SVN 20180802 (r263045) from the gcc-8-branch. + - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, + PR middle-end/86627, PR target/86511, PR sanitizer/86759, PR c/85704, + PR libstdc++/86734, PR bootstrap/86724, PR target/86651, PR c/86617, + PR c++/86190. + - Fix PR libstdc++/84654, PR libstdc++/85672. LP: #1783705. + * Update cross-build patches for GCC 8.2. + * Refresh patches. + * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. + * Backport r262835 to fix a wrong-code generation on m68k (Adrian Glaubits). + + -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 + +gcc-8 (8.2.0-1) unstable; urgency=medium + + * GCC 8.2.0 release. + * Update GDC to 20180726 from the gdc-8-stable branch.. + + -- Matthias Klose Thu, 26 Jul 2018 13:28:20 +0200 + +gcc-8 (8.1.0-12) unstable; urgency=medium + + * GCC 8.2.0 release candidate. + * Update to SVN 20180719 (r262861) from the gcc-8-branch. + - Fix PR middle-end/85602, PR c++/86480. + + [ Nicolas Boulenguez ] + * ada-verbose patch: Make the ada build more verbose. + * Update the ada-gcc-name patch again. See #856274. Closes: #903694. + + [ Matthias Klose ] + * Rewrite debian/README.cross. + + -- Matthias Klose Thu, 19 Jul 2018 17:39:39 +0200 + +gcc-8 (8.1.0-11) unstable; urgency=medium + + * Update to SVN 20180717 (r262818) from the gcc-8-branch. + - Fix PR c/86453, PR debug/86452, PR debug/86457, PR middle-end/85974, + PR middle-end/86076, PR tree-optimization/85935, + PR tree-optimization/86514, PR tree-optimization/86274, + PR target/84413 (x86), PR middle-end/86202, PR target/84829, + PR c++/3698, PR c++/86208, PR c++/86374, PR sanitizer/86406, + PR fortran/83184, PR fortran/86417, PR fortran/83183, + PR fortran/86325. + + [ Nicolas Boulenguez ] + * Update the ada-gcc-name patch, not appending the suffix twice. + Addresses: #856274. + + -- Matthias Klose Tue, 17 Jul 2018 14:09:13 +0200 + +gcc-8 (8.1.0-10) unstable; urgency=medium + + * Update to SVN 20180712 (r262577) from the gcc-8-branch. + - Fix PR libstdc++/86272, PR libstdc++/86127, PR target/85904, + PR libstdc++/85098, PR libstdc++/85671, PR libstdc++/83982, + PR libstdc++/86292, PR libstdc++/86138, PR libstdc++/84087, + PR libstdc++/86398, PR hsa/86371, PR tree-optimization/86492, + PR c++/86400, PR target/86285 (PPC), PR debug/86064, + PR target/86222 (PPC), PR rtl-optimization/85645, + PR rtl-optimization/85645, PR target/86314 (x86), PR sanitizer/86406, + PR c++/86398, PR c++/86378, PR c++/86320, PR c++/80290, + PR fortran/82969, PR fortran/86242, PR fortran/82865. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 12 Jul 2018 10:07:17 +0200 + +gcc-8 (8.1.0-9) unstable; urgency=medium + + * Update to SVN 20180626 (r262138) from the gcc-8-branch. + - Fix PR libstdc++/86138, PR libstdc++/82644, PR libgcc/86213, + PR c++/86210, PR c/86093, PR target/86197 (PPC), PR target/85358 (PPC), + PR tree-optimization/85989, PR target/85657 (PPC), PR target/85657 (PPC), + PR target/85994, PR rtl-optimization/86108, PR debug/86194, + PR tree-optimization/86231, PR c/82063, PR c++/86219, PR c++/86182, + PR c++/85634, PR c++/86200, PR c++/81060, PR fortran/83118, + PR libstdc++/86112, PR libstdc++/81092, PR fortran/82972, + PR fortran/83088, PR fortran/85851, PR c++/86291. + + [ Nicolas Boulenguez ] + * Remove Ludovic Brenta's work to let Ada build tools link with freshly + built libgnat.so, this is now handled by upstream testsuite. + + [ Iain Buclaw ] + * gdc: Explicitly set test action as compile in all dg tests. + + [ Matthias Klose ] + * Build using gnat-8. + + -- Matthias Klose Tue, 26 Jun 2018 10:45:36 +0200 + +gcc-8 (8.1.0-8) unstable; urgency=medium + + * Update to SVN 20180617 (r261686) from the gcc-8-branch. + - Fix PR libstdc++/86169, PR middle-end/86095, PR middle-end/85878, + PR middle-end/86123, PR middle-end/86122, PR c++/86147, PR c++/82882, + PR fortran/85703, PR fortran/85702, PR fortran/85701. + * Fix applying the powerpcspe patches. + + -- Matthias Klose Sun, 17 Jun 2018 12:56:15 +0200 + +gcc-8 (8.1.0-6) unstable; urgency=medium + + * Update to SVN 20180614 (r261597) from the gcc-8-branch. + - Fix PR libstdc++/86008, PR libstdc++/85930, PR libstdc++/85951, + PR target/85591 (x86), PR c++/85710, PR c++/80485, PR target/85755 (PPC), + PR target/85755 (PPC), PR target/81497 (ARM), PR target/85684 (x86), + PR target/63177 (PPC), PR tree-optimization/86038, + PR tree-optimization/85964, PR tree-optimization/85934, PR c++/86025, + PR tree-optimization/85863, PR c/85623, PR target/86003 (ARM), + PR tree-optimization/85712, PR target/85950 (x86), PR target/85984, + PR target/85829 (x86), PR c++/85792, PR c++/85963, PR c++/61806, + PR c++/85765, PR c++/85764, PR c++/85807, PR c++/85815, PR c++/86094, + PR c++/86060, PR c++/85847, PR c++/85976, PR c++/85731, PR c++/85739, + PR c++/85761, PR c++/85873, PR fortran/44491, PR fortran/85138, + PR fortran/85996, PR fortran/86051, PR fortran/86059, PR fortran/63514, + PR fortran/78278, PR fortran/38351, PR fortran/78571, PR fortran/85631, + PR fortran/86045, PR fortran/85641, PR fortran/85816, PR fortran/85975, + PR libgfortran/85840, PR target/85945, PR middle-end/86139, + PR other/77609, PR tree-optimization/86114, PR target/86048 (x86), + PR fortran/86110. + - libgo: update to Go 1.10.3 release. + + -- Matthias Klose Thu, 14 Jun 2018 16:57:14 +0200 + +gcc-8 (8.1.0-5) unstable; urgency=medium + + * Update to SVN 20180531 (r260992) from the gcc-8-branch. + - Fix PR sanitizer/86012, PR c/85696, PR c++/85662, PR target/85756 (x86), + PR target/85683 (x86), PR c++/85952, PR c/85696, PR c++/85662. + - Fix libsanitizer build on sparc64. + * libgo: Make the vet tool work with gccgo (taken from the trunk). + + -- Matthias Klose Thu, 31 May 2018 15:18:52 +0200 + +gcc-8 (8.1.0-4) unstable; urgency=medium + + * Update to SVN 20180529 (r260895) from the gcc-8-branch. + - Fix PR c++/85782, PR sanitizer/85835, PR libstdc++/85818, + PR libstdc++/85818, PR libstdc++/83891, PR libstdc++/84159, + PR libstdc++/67554, PR libstdc++/82966, PR bootstrap/85921, + PR sanitizer/85556, PR target/85900 (x86), PR target/85345 (x86), + PR c++/85912, PR target/85903 (x86), PR tree-optimization/85793, + PR middle-end/85874, PR tree-optimization/85822, PR middle-end/85643, + PR tree-optimization/85814, PR target/85698 (PPC), PR c++/85842, + PR c++/85864, PR c++/81420, PR c++/85866, PR c++/85782, PR fortran/85786, + PR fortran/85895, PR fortran/85780, PR fortran/85779, PR fortran/85543, + PR fortran/80657, PR fortran/49636, PR fortran/82275, PR fortran/82923, + PR fortran/66694, PR fortran/82617, PR fortran/85742, PR fortran/85542, + PR libgfortran/85906, PR libgfortran/85840. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs to gcc-8 and python3. + + [ Matthias Klose ] + * gnat-*: Don't search the target dirs when calling dh_shlibdeps. + * Stop shipping unstripped binaries with the final release. Closes: #894014. + + -- Matthias Klose Tue, 29 May 2018 14:34:37 +0200 + +gcc-8 (8.1.0-3) unstable; urgency=medium + + * Update to SVN 20180512 (r260194) from the gcc-8-branch. + - Fix PR ipa/85655, PR target/85733 (ARM), PR target/85606 (ARM), + PR fortran/70870, PR fortran/85521, PR fortran/85687, PR fortran/68846, + PR fortran/70864. + * Fix name of the g++ multiarch include directory. Closes: #898323. + * Fix PR sanitizer/85556, attribute no_sanitize does not accept multiple + options; taken from the trunk. Closes: #891489. + + -- Matthias Klose Sat, 12 May 2018 10:36:05 -0400 + +gcc-8 (8.1.0-2) unstable; urgency=medium + + * Update to SVN 20180510 (r260147) from the gcc-8-branch. + - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, + PR libstdc++/84769, PR libstdc++/85632, PR libstdc++/80506, + PR target/85512 (AArch64), PR c++/85305, PR ada/85635, PR ada/85540, + PR rtl-optimization/85638, PR middle-end/85588, PR middle-end/85588, + PR tree-optimization/85615, PR middle-end/85567, PR target/85658 (ARM), + PR tree-optimization/85597, PR middle-end/85627, PR c++/85659, + PR c++/85706, PR c++/85695, PR c++/85646, PR c++/85618, PR fortran/85507. + * Don't configure with --with-as and --with-ld, but search the triplet + prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. + * Enable decimal float support on kfreebsd-amd64. Closes: #897416. + + -- Matthias Klose Thu, 10 May 2018 20:43:42 -0400 + +gcc-8 (8.1.0-1) unstable; urgency=medium + + * GCC 8.1.0 release. + * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++. + * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9. + * Build libmpx libraries when not building the common libs. + * Update NEWS files for GCC 8.1. + + -- Matthias Klose Wed, 02 May 2018 11:43:46 +0200 + +gcc-8 (8-20180425-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180425 (r259628). + + [ Matthias Klose ] + * Update nvptx-newlib to 20180424. + * Use the binutils in the build chroot if present. + * Don't use dwz for GCC backports. + * Install the movdirintrin.h header file. + + [ Aurelien Jarno ] + * Enable logwatch on riscv64. + + -- Matthias Klose Wed, 25 Apr 2018 06:56:58 +0200 + +gcc-8 (8-20180414-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180414 (r259383). + + [ Matthias Klose ] + * Update GDC to 20180410. + * Don't install i586 symlinks anymore for i386 builds in sid. + * Fix zlib-dev dependencies for the libphobos cross multilib packages. + * Fix dependency generation for libatomic and libquadmath cross packages. + * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251. + * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. + * Use --push-state --as-needed and --pop-state instead of --as-needed and + --no-as-needed for linking libgcc. + * Update the gcc-foffload-default patch. LP: #1721355. + + [ Svante Signell ] + * Reintroduce libgo patches for hurd-i386. Closes: #894080. + + -- Matthias Klose Sat, 14 Apr 2018 07:10:01 +0200 + +gcc-8 (8-20180402-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180402 (r259004). + * Build a native compiler with a cross directory layout using the + FORCE_CROSS_LAYOUT environment variable. + + -- Matthias Klose Mon, 02 Apr 2018 10:09:27 +0200 + +gcc-8 (8-20180331-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180331 (r258989). + - Fix PR/libstdc++/85040, std::less fails when operator< is + overloaded. Closes: #893517. + - Fix PR/target 84148, CET shouldn't be enabled in 32-bit run-time + libraries by default. Closes: #890092. + + [ Samuel Thibault ] + * Fix disabling go on hurd-i386 for now. + + [ Matthias Klose ] + * gdc: Link with the shared libphobos library by default. + * Fix control file generation for nolang=biarch builds (Helmut Grohne). + Closes: #891289. + * Simplify architecture to gnu-type mapping (Helmut Grohne). Closes: #893493. + + -- Matthias Klose Sat, 31 Mar 2018 15:14:44 +0800 + +gcc-8 (8-20180321-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180321 (r258712). + - Fix PR sanitizer/84761. Addresses: #892096. + * Update GDC to 20180320. + * Reenable building gdc. + + -- Matthias Klose Wed, 21 Mar 2018 19:47:27 +0800 + +gcc-8 (8-20180319-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180319 (r258631). + + [ Aurelien Jarno ] + * Default to PIE on riscv64. + * Temporarily do not build-depend on gdb on riscv64. + + -- Matthias Klose Mon, 19 Mar 2018 02:18:29 +0800 + +gcc-8 (8-20180312-2) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180312 (r258445). + * Update GDC to 20180311. + + [ Matthias Klose ] + * Fix typo in libasan and lib32asan symbols files for s390x. + + [ Aurelien Jarno ] + * Disable gnat on riscv64. + * Backport RISC-V libffi support from upstream. + + -- Matthias Klose Mon, 12 Mar 2018 12:33:10 +0100 + +gcc-8 (8-20180310-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180310 (r258410). + * Build libasan and libubsan packages on s390x. + * Update libasan symbols files for s390x. + + -- Matthias Klose Sat, 10 Mar 2018 10:54:02 +0700 + +gcc-8 (8-20180308-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180308 (r258348). + * Update GDC to 20180304. + + [ Matthias Klose ] + * Fix cross builds building without "common" libraries. + * Fix cross-building libgnat on armel, when not building the common libraries. + * Remove the go patches for the Hurd. Unmaintained. + * Update libcc1 symbols file. + * Install more intrinsic header files. + + [ Aurelien Jarno ] + * Configure s390x build with --with-arch=z196 on Debian. + * Drop libgo-s390x-default-isa.diff patch. + * Disable multilib on riscv64. + * Update gcc-as-needed.diff, gcc-hash-style-both.diff and + gcc-hash-style-gnu.diff for riscv64. + * Update gcc-multiarch.diff for riscv64. + + [ Karsten Merker ] + * Force the riscv64 ISA to rv64imafdc and ABI to lp64d. + + -- Matthias Klose Thu, 08 Mar 2018 14:17:37 +0700 + +gcc-8 (8-20180218-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180208 (r257477). + * Update GDC to 20180211. + * Store basename only in gfortran .mod files. Addresses: #889133. + * Disable go on the hurd, patches are out of date. + * Configure with --disable-libquadmath-support when not explicitly enabled. + * For armel multilib builds, explicitly set architecture and cpu for the + hard-float multilib. + + -- Matthias Klose Sun, 18 Feb 2018 16:11:11 +0700 + +gcc-8 (8-20180207-2) unstable; urgency=medium + + * Revert the fix for PR target/84145. + * Override patch-file-present-but-not-mentioned-in-series lintian warning. + + -- Matthias Klose Wed, 07 Feb 2018 13:09:23 +0100 + +gcc-8 (8-20180207-1) unstable; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180207 (r257435). + * Update GDC to 20180204. + * Refresh patches. + * Disable go on m68k again. Closes: #886103. + * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. + * Include amo.h header for Power architectures. + * Include arm_cmse.h header for ARM32 architectures. + * Update tsan symbols file arm64. + + -- Matthias Klose Wed, 07 Feb 2018 01:34:14 +0100 + +gcc-8 (8-20180130-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180130 (r257194). + * Update GDC to 20180130. + + -- Matthias Klose Tue, 30 Jan 2018 18:49:51 +0100 + +gcc-8 (8-20180123-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180123 (r257004). + * Update GDC to 20180123. + * Install the msa.h header for mips targets (YunQiang Su). Addresses: #887066. + * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886976. + + -- Matthias Klose Tue, 23 Jan 2018 23:10:51 +0100 + +gcc-8 (8-20180110-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20180110 (r256425). + - Go 1.10 beta1 merged, bumping libgo soname. + * Update GDC to 20180108. + * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886459. + * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. + * Default to PIE on the hurd (Samuel Thibault). Addresses: #885056. + * Use internal libunwind for ia64 cross-builds. Addresses: #885931. + * Strip -z,defs from linker options for internal libunwind (James Clarke). + Addresses: #885937. + * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). + Closes: #879054. + + -- Matthias Klose Wed, 10 Jan 2018 12:23:12 +0100 + +gcc-8 (8-20171229-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171229. + * Update GDC to 20171227. + * Build the nvptx offload compiler again. + + -- Matthias Klose Fri, 29 Dec 2017 22:16:04 +0100 + +gcc-8 (8-20171223-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171223. + * Update GDC to 20171223. + * Don't build the nvptx offload compiler for now, see PR target/83524. + + -- Matthias Klose Sat, 23 Dec 2017 13:08:14 +0100 + +gcc-8 (8-20171215-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171215. + * Update GDC to 20171213. + * Move the .gox files into the gccgo packages. Addresses: #883136. + * libffi: mips/n32.S: disable .set mips4 on mips r6 (YunQiang Su). + * Fix shlibs search path for mips64 cross targets. Addresses: #883988. + * Set the armel port baseline to armv5te. Closes: #882174. + + -- Matthias Klose Fri, 15 Dec 2017 18:30:46 +0100 + +gcc-8 (8-20171209-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171209. + * Add more header files for builtins. Closes: #883423. + * Re-enable gccgo on m68k. Addresses: #883794. + + -- Matthias Klose Sat, 09 Dec 2017 21:23:08 +0100 + +gcc-8 (8-20171128-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171128. + + [ Matthias Klose ] + * Don't revert the fix for PR target/55947, fixed for GCC 8. + * Update libgfortran symbol versioning. + + [ Nicolas Boulenguez ] + * Fix the gnat bootstrap. + + -- Matthias Klose Tue, 28 Nov 2017 07:40:23 +0100 + +gcc-8 (8-20171122-1) experimental; urgency=medium + + [ Matthias Klose ] + * GCC 8 snapshot, taken from the trunk 20171122. + * Update GDC to 20171118. + * Port libgo to the Hurd (Svante Signell). + * Add support for a plethora of mips r6 packages (YunQiang Su). + * Remove the libcilkrts packaging bits. + * Remove libgphobos symbols files. + + [ Svante Signell ] + * Do not enable go on GNU/kFreeBSD. + + -- Matthias Klose Wed, 22 Nov 2017 14:02:35 +0100 + +gcc-8 (8-20171108-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171108. + * Update GDC to 20171106. Closes: #880548. + * libgcc-dev: Install the liblsan_preinit.o file. + * Compress debug symbols for compiler binaries with dwz. + + -- Matthias Klose Wed, 08 Nov 2017 20:00:30 +0100 + +gcc-8 (8-20171102-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171102. + * Bump libunwind (build-)dependency for ia64. Addresses: #879959. + * Drop the autogen build dependency. + * Install the gfniintrin.h header file. + * libgcc and libstdc++ symbols files updates for mipsn32. + * Remove the gcc-mips64-stack-spilling patch, applied upstream. + * Update libasan symbols files. + + -- Matthias Klose Thu, 02 Nov 2017 01:43:34 +0100 + +gcc-8 (8-20171031-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171031. + * Install cetintrin.h header. Closes: #879740. + * Update gnat patches (YunQiang Su). Closes: #879985. + * Build libphobos runtime library on x86 architectures again. + * Fix typo in libx32stdc++6-8-dbg conflicts. Closes: #879883. + + -- Matthias Klose Tue, 31 Oct 2017 02:22:07 +0100 + +gcc-8 (8-20171023-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171023. + * Mask __float128 from CUDA compilers. LP: #1717257. + * Update the gdc build support. + * Don't use quadmath on powerpc and ppc64. + * Bump asan and ubsan sonames. + * Adjust sanitizer symbols for the libsanitizer upstream merge. + * Install the gcov.h header file. + * Do the extra/optional dance ... + * Override hardening-no-pie lintian warnings for compiler executables. + + -- Matthias Klose Mon, 23 Oct 2017 10:57:54 +0200 + +gcc-8 (8-20171016-1) experimental; urgency=medium + + * GCC 8 snapshot, taken from the trunk 20171016. + * Update nvptx-newlib to 20171010. + * Fix lsan/tsan symbols files for arm64 and ppc64el. + * Add missing conflicts with GCC 7 packages. Closes: #877441. + * Fix builds without hppa64 cross compiler and new debhelper. See: #877589. + * Fix build dependency on realpath. + * Build the nvptx offload compiler again. + * Update symbols files. + * Fix build dependency on realpath. + * Set QUILT_PATCH_OPTS='-E' for applying patches. + + -- Matthias Klose Mon, 16 Oct 2017 14:56:04 +0200 + +gcc-8 (8-20170923-1) experimental; urgency=medium + + * GCC 8 snapshot. + * Disable Ada and D for a first build. + + -- Matthias Klose Tue, 26 Sep 2017 23:44:57 +0200 + +gcc-7 (7.2.0-7) unstable; urgency=medium + + * Update to SVN 20170923 (r253114) from the gcc-7-branch. + - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, + PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), + PR sanitizer/81929. + * Fix PR go/82284, taken from the trunk. Closes: #876353. + + -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 + +gcc-7 (7.2.0-6) unstable; urgency=medium + + * Update to SVN 20170920 (r253002) from the gcc-7-branch. + - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, + PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, + PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, + PR c++/81314, PR libgfortran/78387. + * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. + * Strip the compiler binaries again. Closes: #872672. + * Bump binutils dependency to 2.29.1 for sid/buster. + + -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 + +gcc-7 (7.2.0-5) unstable; urgency=medium + + * Update to SVN 20170915 (r252791) from the gcc-7-branch. + - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), + PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, + PR sanitizer/81923, PR target/81621, PR driver/81650, + PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, + PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, + PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), + PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, + PR tree-opt/81696. + * Enable libgo tests and rebuilds with make -C (Svante Signell). + Closes: #873929. + * Fix PR sanitizer/77631, support separate debug info in libbacktrace. + * Update the Linaro support to the 7-2017.09 snapshot. + + -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 + +gcc-7 (7.2.0-4) unstable; urgency=medium + + * Update to SVN 20170906 (r251753) from the gcc-7-branch. + - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, + PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, + PR ada/79542, PR ada/62235, PR fortran/81770. + * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. + + -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 + +gcc-7 (7.2.0-3) unstable; urgency=high + + * Update to SVN 20170901 (r251583) from the gcc-7-branch. + - Fix PR target/81504 (PPC), PR c++/82040. + * Apply proposed patch for PR target/81803 (James Cowgill), conditionally + for mips* targets. Closes: #871514. + * Bump standards version. + + -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 + +gcc-7 (7.2.0-2) unstable; urgency=medium + + * Update to SVN 20170830 (r251446) from the gcc-7-branch. + - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), + PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, + PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), + PR tree-optimization/81977, PR debug/81993 (closes: #873609), + PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, + PR middle-end/81884, PR tree-optimization/81181, + PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. + * Update the Linaro support to the 7-2017.08 snapshot. + * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. + * Default to PIE on powerpc again, now that PR target/81170 and + PR target/81295 are fixed. Closes: #856224. + + -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 + +gcc-7 (7.2.0-1) unstable; urgency=medium + + * GCC 7.2.0 release. + * Update libgcc1 symbols file for s390x. + * Apply proposed patch for PR driver/81829. Closes: #853537. + + -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 + +gcc-7 (7.1.0-13) unstable; urgency=medium + + * GCC 7.2 release candidate 2. + * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. + * Configure cross-build-native builds with --program-prefix (Adrian + Glaubitz). Closes: #871034. + * Update build dependencies for powerpcspe. Closes: #868186. + * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. + + -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 + +gcc-7 (7.1.0-12) unstable; urgency=medium + + * GCC 7.2 release candidate 1. + * Update to SVN 20170803 (r250853) from the gcc-7-branch. + + -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 + +gcc-7 (7.1.0-11) unstable; urgency=medium + + * Update to SVN 20170731 (r250749) from the gcc-7-branch. + + [ Matthias Klose ] + * Update sanitizer symbols for ppc64 and sparc64. + + [ Nicolas Boulenguez ] + * Only build gnatvsn as a native library. + + -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 + +gcc-7 (7.1.0-10) unstable; urgency=medium + + * Update to SVN 20170722 (r250453) from the gcc-7-branch. + + [ Nicolas Boulenguez ] + * libgnatvsn: embed xutil rident for version 2017 of asis package. + + [ Matthias Klose ] + * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. + * Enable gnat cross build on m68k. Closes: #868365. + * Update the Linaro support to the 7-2017.07 snapshot. + * Stop ignoring symbol mismatches for runtime libraries. + + [ Aurelien Jarno ] + * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, + use the default ISA instead. + + -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 + +gcc-7 (7.1.0-9) unstable; urgency=medium + + * Update to SVN 20170705 (r250006) from the gcc-7-branch. + + [ Matthias Klose ] + * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. + * Don't configure powerpc with --enable-default-pie, fails to build. + See #856224, PR target/81295. + + [ Nicolas Boulenguez ] + * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. + * Link libgnat with libatomic on armel. Closes: #861734. + * libgnat-dev: use multiarch paths in project and to install .ali files. + * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. + + -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 + +gcc-7 (7.1.0-8) unstable; urgency=medium + + * Update to SVN 20170629 (r249793) from the gcc-7-branch. + + [ Matthias Klose ] + * Move the liblto_plugin from the cpp to the gcc package. + * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. + Addresses: #863845, #863745. + * Don't provide libobjc_gc symlinks for the libobjc multilib packages. + * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and + powerpc (Mathieu Malaterre). Addresses: #856224. + + [ Nicolas Boulenguez ] + * Update ada/confirm_debian_bugs.py for gcc-7. + * Drop ada-driver-check.diff, the problem is unreproducible. + * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. + * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. + + -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 + +gcc-7 (7.1.0-7) unstable; urgency=medium + + * Update to SVN 20170618 (r249347) from the gcc-7-branch. + + [ Matthias Klose ] + * Don't build libada with -O3 (ftbfs on ppc64el). + * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. + + [ Aurelien Jarno ] + * Remove proposed patch for PR65618, the issue has been fixed upstream + another way. + + [ Nicolas Boulenguez ] + * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd + system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. + * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. + * Drop generated and obsolete debian/source.lintian-overrides. + * Drop debian/relink, never executed and redundant with ada patches. + * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. + * ada: Drop references to obsolete termio-h.diff. Closes: #845159. + * ada-749574.diff: replace work-around with fix and forward it. + * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. + * ada-link-lib.diff: remove dubious parts. + + -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 + +gcc-7 (7.1.0-6) experimental; urgency=medium + + * Update to SVN 20170522 (r248347) from the gcc-7-branch. + - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, + PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, + PR libgfortran/80727. + + [ Matthias Klose ] + * Re-add unwind support on kfreebsd-amd64 (James Clarke). + * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 + symlink. + * Fix gnat build dependencies on x32. + * Build gnat on mips64 and powerpcspe. + * Update the Linaro support to the 7-2017.05 snapshot. + * Fix libmpx dependency generation for cross builds. + * Build again gnat cross compilers on 32bit archs targeting 64bit targets. + + [ Nicolas Boulenguez ] + * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. + * Reduce diff with upstream in ada-gnattools-cross patch. + * debian/rules2: Simplify build flags transmission. + * Append build flags from dpkg during Ada target builds. + + -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 + +gcc-7 (7.1.0-5) experimental; urgency=medium + + * Update to SVN 20170514 (r248033) from the gcc-7-branch. + * Disable offload compilers for snapshot builds. + * Build libgo when not building common libs. + * Fix building libgfortran and libgphobos when building without common libs. + * Build gnat on x32. + + -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 + +gcc-7 (7.1.0-4) experimental; urgency=medium + + * Update to SVN 20170505 (r247630) from the gcc-7-branch. + * Add sh3 support to gcc-multiarch patch. Closes: #861760. + * Remove libquadmath/gdtoa license from debian/copyright (files removed). + * Fix gdc build on sh4 (sh5 support was removed upstream). + * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. + * Disable running the testsuite on KFreeBSD and the Hurd, hanging on + the buildds. + + -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 + +gcc-7 (7.1.0-3) experimental; urgency=medium + + * Update to SVN 20170503 (r247549) from the gcc-7-branch. + * Fix gdc build on sparc. + * Update the gdc-cross-install-location patch for GCC 7. + * Bump libgphobos soname. + * dpkg-buildflags stopped fiddling around with spec files; remove + the code removing and warning about dpkg's specs. + * Don't build the native gnat on armel. See issue #861734. + + -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 + +gcc-7 (7.1.0-2) experimental; urgency=medium + + * Update the disable-gdc-tests patch for GCC 7.1. + + -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 + +gcc-7 (7.1.0-1) experimental; urgency=medium + + * GCC 7.1.0 release. + * Update NEWS.html and NEWS.gcc. + * Update gdc to the gdc-7 branch 20170502. + * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut + Grohne). Closes: #861588. + * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). + Closes: #859938. + + -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 + +gcc-7 (7-20170407-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170407. + * Install gcov-dump and gcov-tool manual pages. + + -- Matthias Klose Fri, 07 Apr 2017 13:16:00 +0200 + +gcc-7 (7-20170316-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170316. + * Install the gcov-dump utility. + * Allow to use lld with -fuse-ld=ld.lld. + * Build gnattools sequentially (fails with parallel build). See #857831. + * Add profile to the autogen build dependency. + * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. + + -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 + +gcc-7 (7-20170314-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170314. + + [ Matthias Klose ] + * Bump binutils version requirement to 2.28. + * Fix libcc1.so symlink for cross compilers. Addresses: #856875. + * Fix base package name for rtlibs stage build (Helmut Grohne). + Closes: #857074. + * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. + * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. + * Don't ship the gnatgcc manpage symlink when building GFDL packages. + Addresses: #857384. + * Allow bootstrapping with libc headers installed in multiarch location. + (Helmut Grohne). Closes: #857535 + * gccbrig: Depend on hsail-tools. + + [ Nicolas Boulenguez ] + * Create the libgnatsvn packages again. Closes: #857606. + * Replace libgnat-BV.overrides with a fixed command. + * Install gnatvsn.gpr project into /u/s/gpr instead of + /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. + * Avoid hardcoding the version in the ada-gcc-name patch. + * Reorganize Ada patches. See #857606 for details. + + -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 + +gcc-7 (7-20170302-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170302. + + [ Matthias Klose ] + * Update gdc to trunk 20170227. + * Update libcc1 symbols file. + * Bump binutils version requirement. + * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. + * Build the nvptx offload compilers. + * Add the newlib copyright, used for the gcc-7-offload-nvptx package. + * Install the libcp1plugin. + * Fix the installation directory of the ada-sjlj includes and libraries. + + [ Nicolas Boulenguez ] + * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. + * Remove obsolete references to libgnatprj, but keep existing + references to libgnatvsn as it will be restored. Closes: #844367. + * Drop obsolete and unapplied ada-default-project-path.diff. + + -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 + +gcc-7 (7-20170226-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170226. + + -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 + +gcc-7 (7-20170221-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170221. + * Update gdc to trunk 20170221. + + [ Matthias Klose ] + * Fix some hppa64 related build issues. Addresses: #853023. + * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. + * Again, disable go on m68k. Closes: #853906. + * Configure with --enable-default-pie on sparc and sparc64 (James Clarke). + Addresses: #854090. + * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). + * Build gccbrig and the libhsail-rt library for i386. + * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. + * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). + Addresses: #855197. + * Bump binutils version requirement. + + [ Aurelien Jarno ] + * Disable lxc1/sxc1 instruction on mips and mipsel. + * Disable madd4 instructions on mipsel, mips64el and mipsn32el. + + -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 + +gcc-7 (7-20170129-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170129. + * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran + and gphobos runtime libraries. + * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. + * Build the BRIG frontend on amd64. + * Install new intrinsics headers. Closes: #852551. + * libgo version bumped to 11. + * Package gccbrig and the libhsail-rt library. + + -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 + +gcc-7 (7-20170121-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170121. + * Configure --with-gcc-major-version-only, drop the gcc-base-version, + gccgo-version and gdc-base-version patches. + * Adjust the g++-multiarch-incdir patch for reverted upstream patch, + causing bootstrap regression (PR 78880). Closes: #852104. + + -- Matthias Klose Sat, 21 Jan 2017 21:57:22 +0100 + +gcc-7 (7-20170118-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20170118. + * Always configure sparc builds --with-cpu-32=ultrasparc (James Clarke). + * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. + * Install the unprefixed man pages for gcc-ar, -nm and ranlib. + Closes: #851698. + + -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 + +gcc-7 (7-20161230-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161230. + * Update gdc to trunk 20161229. Closes: #844704. + * Build the cilk runtime on armel, armhf, sparc and sparc64. + * Use --push-state/--pop-state for gold as well when linking libtsan. + * In GCC ICE dumps, prefix each line with the PID of the driver. + * Apply proposed patch for PR target/78748. + * Apply proposed patch for PR libstdc++/64735. + * Don't mark libphobos multilib packages as M-A: same. + * Configure libphobos builds with --with-target-system-zlib. + * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. + * Drop m68k specific ada patches. Closes: #846872. + + -- Matthias Klose Fri, 30 Dec 2016 05:19:15 +0100 + +gcc-7 (7-20161201-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161201. + + * Install missing vecintrin.h header on s390x. + * Install missing avx512 intrinsics headers on x86*. Closes: #846075. + + -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 + +gcc-7 (7-20161125-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161125. + + [ Matthias Klose ] + * Update libgphobos symbol files. + * libphobos: Fix ARM32 multilib detection for system zlib. + * Update libgphobos symbols files for ARM32 targets. + * Build the GC enabled libobjc using the system libgc when available + * Mark libgphobos symbols changing with the file location (sic!) as optional. + * Add pkg-config to the build dependencies. + * Drop the work around for PR libstdc++/65913. + * gdc: Link with the shared libgphobos runtime by default. + * Fix PR middle-end/78501, proposed patch. + * Fix dependency generation for libgphobos multilib builds. + * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. + * Always apply the ada patches. + + [ YunQiang Su ] + * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. + Addresses: #844367. + + -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 + +gcc-7 (7-20161116-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161116. + * Build shared phobos runtime libraries (not yet enabled by default). + * Add symbols for libobjc_gc library. + + -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 + +gcc-7 (7-20161115-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161115. + * More symbol files updates. + * Update gdc to the trunk 20161113. + * Update conflicts with GCC 6 packages. Closes: #844296. + + -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 + +gcc-7 (7-20161112-1) experimental; urgency=medium + + * GCC 7 snapshot build, taken from the trunk 20161112. + * Remove gij/gcj packages, removed upstream. + * Don't build gdc and gnat for now. + + -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 + +gcc-6 (6.2.0-13) unstable; urgency=medium + + * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. + - Fix PR c/71115, PR target/78229 (closes: #843379), + PR tree-optimization/77768, PR c++/78039 (closes: #841316), + PR libgcc/78064, PR driver/78206. + * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. + * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. + * Fix PR target/77822 (s390x), proposed patch. + * Update libiberty to the trunk 20161108. Addresses security issues: + CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, + CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. + + -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 + +gcc-6 (6.2.0-11) unstable; urgency=medium + + * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. + - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, + PR tree-optimization/77879, PR tree-optimization/77839, + PR tree-optimization/77745, PR tree-optimization/77648, + PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, + PR middle-end/71002, PR fortran/69544, PR fortran/78178, + PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, + PR libgfortran/78123. + * Fix symlinks for gcj manual pages. Closes: #842407. + * Fix ICE in tree_to_shwi, Linaro issue #2575. + + -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 + +gcc-6 (6.2.0-10) unstable; urgency=medium + + * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, + PR tree-optimization/77550, PR tree-optimization/77916, + PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, + PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, + PR target/78057 (x86), PR target/78037 (x86). + * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's + debug/elf TestDWARFRelocations test case (James Clarke). + * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. + Closes: #841292. + * Don't install alternatives for go and gofmt. The preferred way to do that + is to install the golang-any package. + * For Debian builds, don't enable bind now by default when linking with pie + by default. + + -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 + +gcc-6 (6.2.0-9) unstable; urgency=medium + + * Regenerate the control file. + + -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 + +gcc-6 (6.2.0-8) unstable; urgency=medium + + * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77990, PR target/77991 (x86). + * Install arm_fp16.h header on arm* architectures for Linaro builds. + * Backport upstream revisions from trunk (James Clarke). Closes: #840574. + - r240457 (add getrandom for MIPS/SPARC) + - r241051 (fix getrandom on sparc64 and clone on sparc*) + - r241072 (make rawClone no_split_stack) + - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by + the included headers on arm64) + - r241171 (sparc64 relocations, e1fc2925 in go master, now also in + gofrontend/gccgo) + * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. + + -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 + +gcc-6 (6.2.0-7) unstable; urgency=medium + + * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, + PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, + PR tree-optimization/77937, PR tree-optimization/77943, + PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. + + [ Matthias Klose ] + * Backport Mips go closure support, taken from libffi. Closes: #839132. + * Configure with --enable-default-pie and pass -z now when pie is enabled; + on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. + Closes: #835148. + * Update the Linaro support to the 6-2016.10 snapshot. + + [ Aurelien Jarno ] + * Enable logwatch on mips64el. + + -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 + +gcc-6 (6.2.0-6) unstable; urgency=medium + + * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, + PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), + PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, + PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, + PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, + PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, + PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, + PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, + PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, + PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, + PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), + PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, + PR fortran/58992. + * Really fix gij installation on hppa. Closes: #838111. + * Install alternatives for go and gofmt. Closes: #840190. + + -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 + +gcc-6 (6.2.0-5) unstable; urgency=medium + + * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. + - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, + PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, + PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), + PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, + PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, + PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, + PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. + * Fix gij installation on hppa. Closes: #838111. + * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. + * Apply workaround for PR libstdc++/77686. Addresses: #838438. + + -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 + +gcc-6 (6.2.0-4) unstable; urgency=medium + + * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. + - Fix PR rtl-optimization/77452, PR c++/77427. + * gcj: Depend on the ecj1 standalone binary. + * Configure native builds using --with-program-prefix. + * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. + * Backport from libffi trunk (Stefan Bühler): + - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. + - dlmmap_locked always needs locking as it always modifies execsize. + + -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 + +gcc-6 (6.2.0-3) unstable; urgency=medium + + * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. + - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, + PR debug/77363, PR middle-end/77377, PR middle-end/77259, + PR target/71910 (cygwin), PR target/77281 (ARM), + PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, + PR fortran/77374, PR fortran/71014, PR fortran/69281. + * Fix setting the stage1 C++ compiler. + * gdc: Always link with -ldl when linking with -lgphobos. + Closes: #835255, #835757. + * Fix building D code with external C++ references. + + -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 + +gcc-6 (6.2.0-2) unstable; urgency=medium + + * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. + - Fix PR libstdc++/77334, PR tree-optimization/76783, + PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, + PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), + PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, + PR fortran/77358. + * Call default_file_start from s390_asm_file_start, taken from the trunk. + * Update multiarch patches for mips* r6 (YunQiang Su). + * Fix install location of D header files for cross builds (YunQiang Su). + Closes: #835847. + * Fix PR c++/77379, taken from the trunk. + * Update the Linaro support to the 6-2016.08 snapshot. + + -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 + +gcc-6 (6.2.0-1) unstable; urgency=medium + + * GCC 6.2 release. + * Update gdc to the gdc-6 branch 20160822. + + -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 + +gcc-6 (6.1.1-12) unstable; urgency=medium + + * GCC 6.2 release candidate 1. + * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. + Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), + PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, + PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, + PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, + PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, + PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, + PR tree-optimization/71881, PR target/72802, PR target/72802, + PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, + PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, + PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, + PR libgfortran/73142. + + [ Matthias Klose ] + * Fix running the libjava testsuite. + * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. + * Update the Linaro support to the 6-2016.07 snapshot. + + [ Aurelien Jarno ] + * Replace proposed fix for PR ipa/68273 by the corresponding patch taken + from trunk. + + -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 + +gcc-6 (6.1.1-11) unstable; urgency=medium + + * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. + - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, + PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, + PR c++/71833, PR fortran/71883. + + [ Nicolas Boulenguez ] + * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. + + [ Matthias Klose ] + * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. + + -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 + +gcc-6 (6.1.1-10) unstable; urgency=medium + + * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, + PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, + PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), + PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, + PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), + PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, + PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), + PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, + PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, + PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, + PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, + PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, + PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, + PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, + PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, + PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, + PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, + PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, + PR fortran/71783. + + [ Matthias Klose ] + * Build-depend on gnat-6 instead of gnat-5 on development distros. + + [ Aurelien Jarno ] + * Replace libjava-mips64el-proposed.diff by the corresponding patch + taken from trunk. + + -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 + +gcc-6 (6.1.1-9) unstable; urgency=medium + + * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. + - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, + PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), + PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, + PR fortran/71687, PR fortran/71704, PR fortran/71705. + * Mark cross compilers as M-A: foreign. Addresses: #827136. + * On sparc64, configure with --with-cpu-32=ultrasparc, drop the + sparc-force-cpu patch. Closes: #809509. + + -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 + +gcc-6 (6.1.1-8) unstable; urgency=medium + + * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/71647, PR target/30417 (AVR), + PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, + PR c++/71528, PR fortran/70673, PR middle-end/71693. + + [ Aurelien Jarno ] + * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. + + [ Matthias Klose ] + * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. + * gfortran: Suggest libcoarrays-dev. Closes: #827995. + * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. + * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. + + -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 + +gcc-6 (6.1.1-7) unstable; urgency=medium + + * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, + PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), + PR target/71554 (x86), PR middle-end/71494, PR c++/71448, + PR tree-optimization/71405, PR tree-optimization/71505, + PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), + PR c++/70572, PR c++/71516, PR c/71381. + * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). + Closes: #826503. + * Add build support for tilegx (Helmut Grohne). Closes: #827578. + * Drop support for loongson 2f (YunQiang Su). Closes: #827554. + + -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 + +gcc-6 (6.1.1-6) unstable; urgency=medium + + * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. + - Fix PR target/71389 (x86), PR tree-optimization/71259, + PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, + PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. + * gdc: Fix linking the runtime library. Addresses: #826645. + * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). + Closes: #826365. + + -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 + +gcc-6 (6.1.1-5) unstable; urgency=medium + + * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, + PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, + PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, + PR middle-end/71279, PR c++/71147, PR c++/71257, + PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, + PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, + PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, + PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), + PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, + PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, + PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, + PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, + PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. + * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). + Closes: #823126. + * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut + Grohne). Closes: #823894. + * Update embedded timestamp setting patch, backported from the trunk. + * gccgo: Combine combine gccgo's ld() and ldShared() methods + in cmd/go (Michael Hudson-Doyle). LP: #1586872. + + -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 + +gcc-6 (6.1.1-4) unstable; urgency=medium + + * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. + - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), + PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, + PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, + PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, + PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), + PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. + * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler + packages. + + -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 + +gcc-6 (6.1.1-3) unstable; urgency=medium + + * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, + PR target/70963, PR tree-optimization/70916, PR debug/70935. + * Enable gdc for sh4. + + -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 + +gcc-6 (6.1.1-2) unstable; urgency=medium + + * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. + - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, + PR ada/70969, PR ada/70900. + + [ Matthias Klose ] + * Call dh_makeshlibs with the --noscripts option when building a + cross compiler. + * Fix building cross gnat libs when not building the common libs. + * Fix building cross mips* multilibs when not building the common libs. + * Re-enable gnat build on some architectures for snapshot builds. + * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. + Addresses: #823126. + * Avoid empty architecture lists in build dependencies. Closes: #823280. + * Tighten debhelper build dependency for cross build dependencies. + * Allow build dependencies for musl configurations (Helmut Grohne). + Closes: #823769. + * Fix dependency resolution for libraries not built anymore from + this source package. + + [ Samuel Thibault ] + * patches/ada-hurd.diff: Fix Get_Page_Size type. + + -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 + +gcc-6 (6.1.1-1) unstable; urgency=medium + + * GCC 6.1.0 release. + - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, + PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, + PR ada/70786, PR c++/70540, PR middle-end/70626. + * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. + - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, + PR sanitizer/70712, PR target/70728 (x86). + - Don't encode the minor version in the gcj abi version. + + [ Aurelien Jarno ] + * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to + (invalid?) peeking at alignments in function_arg) on mips and mipsel. + + [ Matthias Klose ] + * Always configure with --enable-targets=powerpcle-linux on ppc64el. + * Stop building libcc1 and libgccjit0, when not building common libs. + * Rename libgccjit-5-dbg to libgccjit0-dbg. + * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. + * Allow embedded timestamps by C/C++ macros to be set externally (Eduard + Sanou). + * Add missing libstdc++ symbol to symbols file. + * libstdc++-doc: Ignore warnings about formulas and long identifiers in + man pages. + * Default the 32bit x86 architectures to i686, keep i585 symlinks. + See https://lists.debian.org/debian-devel/2015/09/msg00589.html + * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). + * Update gdc to the gdc-6 branch 20160430. + + -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 + +gcc-6 (6.0.1-2) unstable; urgency=medium + + * GCC 6.1 release candidate 2. + - Fix PR c++/68206, PR c++/70522, PR middle-end/70747, PR target/64971, + PR c++/66543, PR tree-optimization/70725, PR tree-optimization/70726, + PR target/70674 (s390x), PR tree-optimization/70724, PR c++/70690, + PR c++/70505, PR target/70711 (ARM32), PR c++/70685, + PR target/70662 (x86). + * Update gdc to the trunk 20160423. + + -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 + +gcc-6 (6.0.1-1) experimental; urgency=medium + + * GCC 6.1 release candidate 1. + + [ Michael Hudson-Doyle ] + * cmd/go: deduplicate gccgo afiles by package path, not *Package. + LP: #1566552. + + -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 + +gcc-6 (6-20160405-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160405. + + -- Matthias Klose Tue, 05 Apr 2016 16:39:49 +0200 + +gcc-6 (6-20160319-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160319. + * Stop providing alternative for /usr/bin/go. (Michael Hudson-Doyle). + LP: #1555856. + * Disable gnat on powerpcspe. Closes: #816051. + + -- Matthias Klose Sat, 19 Mar 2016 11:54:57 +0100 + +gcc-6 (6-20160312-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160312. + * Update gdc to the trunk 20160306. + * Remove powerpcspe specific patch, integrated upstream. Addresses: #816048. + * When configured to link with --as-needed by default, always link the + sanitizer libraries with --no-as-needed. + + -- Matthias Klose Sat, 12 Mar 2016 10:21:28 +0100 + +gcc-6 (6-20160228-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160228. + + [ Matthias Klose ] + * libgo: Port syscall.SetsockoptUcred from golang (Michael Vogt). + + [ Svante Signell ] + * patches/ada-hurd.diff: Update. + + -- Matthias Klose Sun, 28 Feb 2016 13:28:41 +0100 + +gcc-6 (6-20160225-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160225. + * Update gdc to the trunk 20160224. + * Install missing architecture specific plugin header files. + * Fix PR target/69885, bootstrap error on m68k. + + -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 + +gcc-6 (6-20160220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160220. + - Fix PR tree-optimization/68021. Closes: #812245. + - Fix PR ipa/69241. Closes: #812060. + - Fix PR libstdc++/56158. Closes: #789369. + * Update symbols files. + * libgccjit-6-doc: Really conflict with libgccjit-5-doc. Closes: #814527. + * Update conflict for gnat cross build packages. Closes: #810809. + * Disable the m68k gnat build, currently fails. See: #814221. + * Fix running the acats tests (Svante Signell): Addresses part of #814978. + + -- Matthias Klose Sat, 20 Feb 2016 16:58:47 +0100 + +gcc-6 (6-20160205-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160205. + - Fix PR tree-optimization/69320. Closes: #811921. + - Fix PR c++/68782. Closes: #812287. + - Fix PR tree-optimization/69328. Closes: #812247. + - Fix PR target/69421. Closes: #812246. + - Fix PR c++/69379. Closes: #812068. + - Fix PR lto/69393. Closes: #812062. + - Fix PR tree-optimization/69166. Closes: #812061. + * Update gdc to the trunk 20160205. + - Fix data corruption bug when passing around longdoubles. + Closes: #812080. + * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. + * Fix dependency generation for armel/armhf multilib cross targets. + * Fix libc dependency generation for multilib cross targets. + * Build libitm on alpha, s390x, sh4, sparc64. + + -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 + +gcc-6 (6-20160122-1) experimental; urgency=medium + + * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. + * Fix dependencies on target libraries which are not built anymore + from this source. + * Bump libmpx soname. Closes: #812084. + * Apply proposed patch for PR target/69129. Closes: #810081. + * Apply proposed patch for PR go/66904, pass linker flags from + "#cgo pkg-config:" directives (Michael Hudson). + * Configure with --enable-fix-cortex-a53-843419 on AArch64. + + -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 + +gcc-6 (6-20160117-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160117. + * Update gdc to the trunk 20160115. + * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. + * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). + Closes: #811063. + * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. + + -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 + +gcc-6 (6-20160109-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160109. + * Install new header file pkuintrin.h. Closes: #809807. + * Fix libcc1-0 dependency for cross compilers. + + -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 + +gcc-6 (6-20160103-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + + -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 + +gcc-6 (6-20160101-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20160101. + * Build native gnat on sh4. Addresses: #809498. + + -- Matthias Klose Fri, 01 Jan 2016 21:18:38 +0100 + +gcc-6 (6-20151220-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151220. + * Update libstdc++-dbg conflicts. Closes: #807885. + * Set target tools and build dependencies for cross builds. + * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. + * Fix cross build issues. + + -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 + +gcc-6 (6-20151213-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151213. + * Update the ada-kfreebsd and ada-m68k patches. + * Fix cross-building without having the common cross libraries installed. + * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS + including gccdebug. + * Remove obsolete libgccmath packaging support. + * Define SONAME macros whether the libraries are built or not. + + -- Matthias Klose Sun, 13 Dec 2015 16:04:56 +0100 + +gcc-6 (6-20151211-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from the trunk 20151211. + * Update gnat and gdc patches, re-enable gnat and gdc. + + -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 + +gcc-6 (6-20151210-1) experimental; urgency=medium + + * GCC 6 snapshot build, taken from 20151210. + + -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 + +gcc-5 (5.3.1-3) unstable; urgency=medium + + * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. + * Remove upstreamed chunks from the ada-kfreebsd patch. + + -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 + +gcc-5 (5.3.1-2) unstable; urgency=medium + + * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. + * Re-enable building gdc/libphobos, fixing the profiled build. + * Fix PR sanitizer/67899, build failure on sparc/sparc64. + + -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 + +gcc-5 (5.3.1-1) unstable; urgency=medium + + * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 05 Dec 2015 20:45:53 +0100 + +gcc-5 (5.3.0-3) unstable; urgency=medium + + * Update libgcc symbols file. + * Restore libgcc.symbols.aebi. + * Disabled profiled bootstraps for backports. + + -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 + +gcc-5 (5.3.0-1) experimental; urgency=medium + + * GCC 5.3 release. + - Fix PR libstdc++/65142 (CVE-2015-5276). + * Update gdc to the gcc-5 branch 20151130. + * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, + ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). + * Move test summary into the gcc-test-results package. + * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, + libmpx, libquadmath symbols files using versioned symbol references. + Closes: #806784. + * Only build the hppa64 cross compiler when either building the native compiler, + or when cross building the native compiler. Closes: #806479. + * Configure staged build with --enable-linker-build-id. + + -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 + +gcc-5 (5.2.1-27) unstable; urgency=medium + + * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. + * Don't strip cc1plus when shipping with unstripped frontends. + * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies + on gnat-5-*-linux-gnu. + * Fix setting the explicit libc dependency for cross builds. + * Don't build m4-nofpu multilibs on sh4, install the default multilib + into the standard location. + * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). + * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. + * Fix gnat sparc/sparc64 architecture detection. + * Update libgcc and libstdc++ symbols files. + * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. + * Run the autoconf generation in parallel. + * Add --enable-default-pie option to GCC configure, taken from the trunk. + * Enable gnat for m68k cross builds. + * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. + * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. + * Ship an empty debian/rules.parameters in the gcc-5-source package. + + -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 + +gcc-5 (5.2.1-26) unstable; urgency=medium + + * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. + * Fix the rtlibs stage build. Closes: #806186. + * Fix packaging the cross libphobos package. + * Build the hppa64 cross compiler on x86 architectures. + * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using + alternatives. Build a gcc-hppa64-linux-gnu package instead. + * Split out a gcc-5-test-results package from g++-5, allowing a post + build analysis, and reducing the size of the g++-5 package. + + -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 + +gcc-5 (5.2.1-25) unstable; urgency=medium + + * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. + * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. + * Fix building epoch prefixed cross packages. + + -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 + +gcc-5 (5.2.1-24) unstable; urgency=medium + + * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. + * Don't try to build a gnat cross compiler when there is no gnat compiler + for the build architecture. + * Update gnat build dependencies for backports. + * Parallelize building documentation and parallelize the packaging step. + * Update the Linaro support to the 5-2015.11 snapshot. + + -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 + +gcc-5 (5.2.1-23) unstable; urgency=medium + + * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.10 snapshot. + * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). + * gcj: Fix priority of java alternatives. Closes: #803055. + * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. + + [ Aurelien Jarno ] + * Replace proposed patch for PR rtl-optimization/67736 by the one + committed on trunk. + + -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 + +gcc-5 (5.2.1-22) unstable; urgency=medium + + * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, + PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, + PR debug/58315. + + [ Matthias Klose ] + * Restore the work around for PR libstdc++/65913, still needed at least + for powerpc. + * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency + on binutils. Closes: #800563. + * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting + globbing of arguments. Closes: #800250. + * Build-depend on gnat-5 instead of gnat-4.9. + + [ Aurelien Jarno ] + * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. + + -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 + +gcc-5 (5.2.1-21) unstable; urgency=medium + + * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. + * Fix building gnat. Closes: #800781. + + -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 + +gcc-5 (5.2.1-20) unstable; urgency=medium + + * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. + * Fix packaging the ada cross library packages. + + -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 + +gcc-5 (5.2.1-19) unstable; urgency=medium + + * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. + - Fix PR ipa/66424. Closes: #800318. + + [ Matthias Klose ] + * Update the Linaro support to the 5-2015.09 snapshot. + * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. + * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. + * gcj-5: Suggest gcj-5-jdk. + * Fix base dependency for ada cross library packages. + * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. + * Link lrealpath.o into libgnatprj. Closes: #800045. + * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files + into the gcc libdir. + * Default to POWER8 on ppc64el. + * armv8: Fix slt lda missing conditional code (taken from the trunk). + * Fix lintian pre-depends-directly-on-multiarch-support warnings. + + [ Aurelien Jarno ] + * Apply proposed patch for PR rtl-optimization/67736 when building for + mips64 or mips64el. Closes: #800321. + + -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 + +gcc-5 (5.2.1-18) unstable; urgency=medium + + * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. + + [ Matthias Klose ] + * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. + * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. + + [ YunQiang Su ] + * Build again the gnat-5-sjlj package. Closes: #798782. + * Fix gnat cross builds, and cross building gnat. + + -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 + +gcc-5 (5.2.1-17) unstable; urgency=medium + + * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. + - Fix PR c++/67369, ICE on valid code. LP: #1489173. + + [ Matthias Klose ] + * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. + Closes: #796906. + * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. + * Fix stage1 cross build for KFreeBSD. Closes: #796901. + * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more + like that in Go (Michael Hudson). LP: #1472650. + * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. + + [ Aurelien Jarno ] + * Use --with-mips-plt on mips*. + * Build for R2 ISA on mips, mips64 and mips64el. + * Optimize for R2 ISA on mipsel. + * Only apply mips-fix-loongson2f-nop on mipsel. + + [ YunQiang Su ] + * Fix running the acats tests. Closes: #798531. + + -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 + +gcc-5 (5.2.1-16) unstable; urgency=medium + + * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. + - Backport the filesystem TS library. + * libstdc++-dev: Install libstdc++fs.a. + * Again, configure with --enable-targets=powerpcle-linux on ppc64el. + * Apply proposed patch for PR target/67211 (ppc64el). + * libgo-dev: Install libgolibbegin.a. + * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. + + -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 + +gcc-5 (5.2.1-15) unstable; urgency=medium + + * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. + * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; + adjust libreoffice version (closes: #794203), drop xxsd break (see + #793289), remove cython breaks (closes: #794511), add breaks for + packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, + pysph, pytaglib, python-scipy, python-sfml, rasterio). + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + + -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 + +gcc-5 (5.2.1-14) unstable; urgency=high + + * Fix libstdc++6 breaks. + + -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 + +gcc-5 (5.2.1-13) unstable; urgency=high + + * Upload to unstable (https://wiki.debian.org/GCC5). See also + https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html + * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. + - Fix PR libstdc++/67015. Closes: #793784. + * Fix version macros in the plugin-header.h header. Closes: #793478. + * libstdc++6: Add breaks for issues tagged with gcc-pr66145. + * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. + * Fix PR c++/66857, taken from the trunk. + * Ignore differences in gcc/real.o in the bootstrap build for + sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy + of the register choice. Both codes are valid. It seems very hard to + find where has this indeterminacy come from". Suggested by Adrian + Glaubitz. + + -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 + +gcc-5 (5.2.1-12) experimental; urgency=medium + + * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. + * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from + libstdc++.so using the gcc4-compatible ABI. + Just build src/c++11/functexcept.cc using the new ABI. It will break + code, which will be handled in the archive by adding Breaks for the + affected packages. Third party code using such code will need a rebuild. + * Remove the work around to build with -O1 on sh4. + + -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 + +gcc-5 (5.2.1-11) experimental; urgency=medium + + * Configure without --disable-libstdcxx-dual-abi. + * Configure with --with-default-libstdcxx-abi=c++11. + + -- Matthias Klose Fri, 17 Jul 2015 08:13:08 +0200 + +gcc-5 (5.2.1-1) experimental; urgency=medium + + * GCC 5.2 release. + * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. + * Require version 5.2 for the libstdc++6 cxx symbols. + * Ignore missing libstdc++ symbols on sparc64 (work around #792204). + * Go escape analysis: analyze multiple result type assertions (taken + from the trunk). + + -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 + +gcc-5 (5.1.1-14) unstable; urgency=medium + + * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. + + -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 + +gcc-5 (5.1.1-13) unstable; urgency=medium + + * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. + * Update libasan symbol files. + * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default + to FPXX (YunQiang Su). Closes: #789612. + * Update libgccjit symbol file. + * Add x32 symbols files for libgcc1 and libstdc++6. + * libgccjit0: Add breaks for python-gccjit and python3-gccjit. + + -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 + +gcc-5 (5.1.1-12) unstable; urgency=medium + + * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. + * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). + Closes: #788990. + * Fix "empty-binary-package" lintian warnings. + + -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 + +gcc-5 (5.1.1-11) unstable; urgency=medium + + * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. + * gccgo: escape: Analyze binary expressions (taken from the trunk). + * Explicitly build with -Wl,--no-relax on alpha again. + * Build with -O1 on sh4 (try to work around PR target/66358). + + -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 + +gcc-5 (5.1.1-10) unstable; urgency=medium + + * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. + * Make removal of byte-compiled libstdc++ pretty printer files more + robust. Closes: #787630. + * Fix mips 32bit (o32) multilib builds (YunQiang Su). + * Build target libraries with -Wl,-z,relro. + * Build libstdc++6 when building the common libraries. + * Fix a bunch of lintian warnings. + + -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 + +gcc-5 (5.1.1-9) unstable; urgency=medium + + * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. + * Remove byte-compiled libstdc++ pretty printer files on upgrade. + Closes: #785939. + * Fix dangling libgccjit.so symlink. + * Fix base dependency for rtlibs stage builds. + * Fix build failure of the hppa64 cross compiler, introduced by the + gnat cross patches. Closes: #786692. + * Update README.source (Michael Vogt). + * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. + (Michael Vogt). LP: #1460530. + * Set CC and CXX matching the same GCC version for the stage1 build. + * Work around PR go/66368, build libgo with -fno-stack-protector. + LP: #1454183. + + -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 + +gcc-5 (5.1.1-8) unstable; urgency=medium + + * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. + * Set the priorities of the *-dev-*-cross packages to extra. + * Prepare to change the base dependency for *-cross packages. + * Fix dependencies for stage1 and stage2 builds. + * Relax dependencies on binary indep *-dev-*-cross packages. + * Disable building gdc on sh4 (bootstrap comparison failure). + + -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 + +gcc-5 (5.1.1-7) unstable; urgency=medium + + * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. + * Add description for the ada-gnattools-cross patch (YunQiang Su). + * Provide a rtlibs stage to build a subset of target library packages. + * Make symbols file symlinking for cross builds more robust. + * Prefer gnatgcc-5 over gnatgcc when building native packages. + * Various fixes to build a gnat cross compiler: + - Fix dependencies of packages. + - Fix building libgnatprj and libgnatvsn (still needed to figure + out if these are target or host libraries). + * Fix building cross compilers with dpkg 1.18. + + -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 + +gcc-5 (5.1.1-6) unstable; urgency=medium + + * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. + * Don't build gdc-multilib on armel. + * Remove old CFLAGS/LDFLAGS settings to build gdc. + * Remove reference to .ico file in NEWS.html. + * Fix gcc's dependency on libcc1-0 for native builds. + * Fix stripping the rpath when cross-building cross compilers. + * Remove work arounds to build 64bit multilibs on 32bit targets, + now properly fixed upstream. + * Partially apply patches to build a gnat cross compiler (submitted + by YunQiang Su). + - gnatmake: Call the versioned gnatbind and gnatlink commands. + Closes: #782257. + - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. + - New patch ada-gnattools-cross.diff (no documentation). + * Backport patch for gccgo: + - gccgo: If unary & does not escape, the var does not escape. + * Apply the backported patches for the go escape analysis. Need to + be enabled with -fgo-optimize-alloc (this option may go away again). + * Re-enable running the tests. + + -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 + +gcc-5 (5.1.1-5) unstable; urgency=medium + + * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. + * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. + * libx32phobos-dev: Don't depend on libx32z-dev, when not available. + * Fix gotools configury. + * Configure with + --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 + While libstdc++ provides a dual ABI to support both the c++98 and c++11 + ABI, there is no committment on compatibility of the old experimental + c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. + Closes: #784655. + + -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 + +gcc-5 (5.1.1-4) unstable; urgency=medium + + * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. + - Fix build failure on alpha. + * Fix applying the cross-biarch patch for stage1 builds. + * Fix libstdc++ symbols files for kfreebsd-amd64. + * Remove libn32phobos-5-dev from the control file. + * Really disable gnat on x32. + + -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 + +gcc-5 (5.1.1-3) unstable; urgency=high + + * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. + * Fix libstdc++ symbols files for kfreebsd-i386. + * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. + LP: #1439451. + * Backport patches for gccgo (not yet applied): + - Consider multi-result calls in escape analysis. + - Propagate escape info from closures to enclosed variables. + - Analyze function values and conversions. + - Use backend interface for stack allocation. + * More libstdc++ symbols updates for the Hurd and KFreeBSD. + * config-ml.in: Add D support. + * Update cross-biarch.diff to support D and Go. + * Apply the cross-biarch patch for every cross build. + + -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 + +gcc-5 (5.1.1-2) unstable; urgency=medium + + * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. + * Fix the gnat build dependency. + * Don't build go and gofmt for cross compilers. + + -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 + +gcc-5 (5.1.1-1) unstable; urgency=medium + + * GCC 5.1.0 release. + * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. + * Update NEWS files. + * Apply the ada-bootstrap-compare patch for snapshot builds as well. + * Update libasan, libgomp and libstdc++ symbols files. + * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols + files should be uptodate now. + * Split out the sjlj build related things from the ada-acats patch into + a new ada-acats-sjlj patch. + * Don't build libx32phobos-5-dev when not building x32 multilibs. + * Fix standard C++ include directory for cross builds. Closes: #783241. + * Ignore bootstrap comparison failure on ia64. Filed upstream as + PR middle-end/65874. + * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken + from the trunk). Turned off by default, enable with -fgo-optimize-alloc. + + -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 + +gcc-5 (5.1~rc1-1) experimental; urgency=medium + + * GCC 5.1 release candidate 1. + * Update to SVN 20150414 (r222066) from the gcc-5-branch. + * Update GDC to the gcc-5 branch, 20140414. + * Don't build libobjc, when not building the common libraries. + * Don't run the gccjit tests on KFreeBSD. Works around #782444:. + * Fix not building libs built by the next GCC version. + + -- Matthias Klose Tue, 14 Apr 2015 02:03:53 +0200 + +gcc-5 (5-20150410-1) experimental; urgency=medium + + * Update to SVN 20150410 + + [ Matthias Klose ] + * Fix /usr/include/c++/5.0.0 symlink. + * Re-enable building the D frontend. Closes: #782254. + * gccgo: Install libnetgo. + + [ Samuel Thibault ] + * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424. + + -- Matthias Klose Sat, 11 Apr 2015 02:24:08 +0200 + +gcc-5 (5-20150404-1) experimental; urgency=medium + + * Update to SVN 20150404. + * Don't explicitly configure --with-gxx-include-dir and an absolute path, + so the toolchain remains relocatible. Instead, canonicalize the include + path names at runtime. + * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. + * Don't build libmpx on older releases. + * Remove the work around to build libgccjit on arm64. + * Fix the libgccjit build using the just built compiler. + * Don't break other gcc, gcj, gnat -base packages for backports, only + needed for dist-upgrades. + * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). + Instead, ignore the one differing file (gcc/ada/a-except.o) for now. + See #781457, PR ada/65618. + * Update libasan, libtsan, libgfortran and libstdc++ symbols files. + * Add symbols files for libmpx, libgccjit and libcc1. + + -- Matthias Klose Sat, 04 Apr 2015 21:53:45 +0200 + +gcc-5 (5-20150329-1) experimental; urgency=medium + + * Update to SVN 20150329. + * Fix building the gnat-5-doc package. + * Fix gnat build dependencies. + * Fix installation of the gnat upstream ChangeLog. Closes: #781451. + * Restore the bootstrap-debug.mk patch to the ada-mips patch + for debugging purposes. See #781457. + + -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 + +gcc-5 (5-20150327-1) experimental; urgency=medium + + * Update to SVN 20150327. + * Update libcc1 build support. + * Fix syntax in libstdc++ symbols file. Closes: #780991. + * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. + * Fix PR go/65462: Fix go get dependencies. LP: #1432497. + * Limit the omp.h multilib fix to Linux. Closes: #778440. + * For ICEs, dump the preprocessed source file to stderr when in a + distro build environment. + * Remove the bootstrap-debug.mk patch from the ada-mips patch. + * gnat related work (partly based on #780640): + - Update patches for GCC 5. + - Build the gnat packages from the gcc-5 source package. + - Don't build a gnat-base package from the gcc-5 source. + - Stop building the gnat-5-sjlj package for now, patch needs an update. + - Fix the packaging when not building the gnat-5-sjlj package. + - Don't apply the ada-symbolic-tracebacks, patch needs an update. + - Fix the libgnatprj build, build with -DIN_GCC. + * Replace cloog/ppl build bits with isl build bits. + + -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 + +gcc-5 (5-20150321-1) experimental; urgency=medium + + * Update to SVN 20150321. + * Move the libcc1plugin from the gcc-5-plugin-dev package into the + gcc-5 package. + + -- Matthias Klose Sat, 21 Mar 2015 15:01:15 +0100 + +gcc-5 (5-20150316-1) experimental; urgency=medium + + * Update to SVN 20150316. + - Fix bootstrap failures on armel, armhh and arm64. + * Configure with --enable-checking=yes (instead of =release). + + -- Matthias Klose Tue, 17 Mar 2015 00:30:27 +0100 + +gcc-5 (5-20150314-1) experimental; urgency=medium + + * Update to SVN 20150314. + - libgo: Add arm64 to the pointer size map (Michael Hudson). + - libgo: Add ppc to the pointer size map. + - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. + - Fix PR/tree-optimization 65418. Closes: #778163. + - Fix PR c++/65370. Closes: #778073. + * Enable libmpx builds on amd64 and i386. + * Update the gcc-multiarch patch for mips64 (YunQiang Su). + Closes: #776402, #780271. + * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468. + + -- Matthias Klose Sat, 14 Mar 2015 14:48:19 +0100 + +gcc-5 (5-20150307-1) experimental; urgency=medium + + * Update to SVN 20150307. + - Update gccgo to Go 1.4.2. + * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). + * Remove the support to build empty libsanitizer packages on powerpc + and ppc64; libsanitizer should be stable on these architectures. + * Fix libcc1.so symlink. Closes: #779341. + * Revert the fix for PR65150 on armel and armhf to restore bootstrap. + * Don't strip the libgo library, or some things won't work as documented, + like runtime.Callers. Still keep the -dbg packages and check if some + debug information can be stripped. + * gccgo-5: Install alternatives for go and gofmt. + + -- Matthias Klose Sat, 07 Mar 2015 12:20:59 +0100 + +gcc-5 (5-20150226-1) experimental; urgency=medium + + * Update to SVN 20150226. + - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 + (closes: #778070, #778071), PR c++/64898 (closes: #778472). + * Allow not to strip the compiler executables to be able to print backtraces + for ICEs. + * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. + * Fix the hppa64 cross build (John David Anglin). Closes: #778658. + * Fix libstdc++ pretty printers for Python3. Closes: #778436. + + -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 + +gcc-5 (5-20150205-1) experimental; urgency=medium + + * Update to SVN 20150205. + * Update GDC for GCC 5. + * Build GDC multilib packages. + * Update cross-install-location.diff for gcc-5. Closes: #776100. + * Configure --with-default-libstdcxx-abi=c++11 for development, + --with-default-libstdcxx-abi=c++98 for backports. + * Apply proposed patch for PR target/64893 (AArch64), build using + 4.9 on AArch64 for now. + * Don't disable bootstrap mode for the jit build on arm64, gets + miscompiled. + * Allow one to build using gettext built with a newer GCC. + + -- Matthias Klose Thu, 05 Feb 2015 18:31:17 +0100 + +gcc-5 (5-20150127-1) experimental; urgency=medium + + * Update to SVN 20150127. + * More symbol file updates. + * Fix libbacktrace and libsanitizer multilib builds. + * Fix libssp builds on 64bit architectures. + * Update hardening testsuite patches for GCC 5. + + -- Matthias Klose Tue, 27 Jan 2015 14:10:30 +0100 + +gcc-5 (5-20150121-1) experimental; urgency=medium + + * GCC 5 (SVN trunk 20150121). + * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, + libgccjit-5-dbg, libgccjit-5-doc. + * Update symbols files (still incomplete). + + -- Matthias Klose Wed, 21 Jan 2015 21:02:05 +0100 + +gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium + + * Update to SVN 20150120 (r219885) from the gcc-4_9-branch. + - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, + PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, + PR libstdc++/64646, + PR middle-end/63704 (ice on valid), PR target/64513 (x86), + PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), + PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), + PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on + valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 + (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), + PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), + PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), + PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 + (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), + PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), + PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). + * Update the Linaro support to the 4.9-2015.01 release. + + -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 + +gcc-4.9 (4.9.2-10) unstable; urgency=medium + + * Really add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Use the final binutils 2.25 release. + * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). + + -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 + +gcc-4.9 (4.9.2-9) unstable; urgency=medium + + * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. + - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, + PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). + * Add x32 multilib packages for i386 cross builds to the control file. + Closes: #773265. + * Fix mips64el multilib cross builds. Closes: #772665. + * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. + + -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 + +gcc-4.9 (4.9.2-8) unstable; urgency=medium + + * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. + - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed + optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong + code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). + * Don't build libphobos multilibs, there is no gdc-multilib build. + * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. + * Paste config.log files to stdout in case of build errors. + + -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 + +gcc-4.9 (4.9.2-7) unstable; urgency=medium + + * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. + - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, + PR bootstrap/64213. + - libgcc hppa backports. + * Fix cross builds with dpkg-architecture unconditionally exporting + target variables. For now specify the target architecture + in debian/target. This still needs to work with older dpkg versions, + so don't "simplify" the packaging. Closes: #768167. + + -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 + +gcc-4.9 (4.9.2-6) unstable; urgency=medium + + * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. + - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, + PR target/50751 (SH), PR target/64108 (x86, ice), + PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), + PR c/59708, PR ipa/64153, PR target/64167) (wrong code, + closes: #771974), PR target/59593 (ARM, wrong code), + PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, + wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. + - Allow one to build with ISL 0.14. + + -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 + +gcc-4.9 (4.9.2-5) unstable; urgency=medium + + * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. + - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). + PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). + * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. + * Fix typo in last powerpcspe patch. Closes: #771654. + + -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 + +gcc-4.9 (4.9.2-4) unstable; urgency=medium + + * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. + -PR PR target/56846 (ARM), PR libstdc++/63497, + PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), + PR tree-optimization/61927 (wrong code), + PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), + PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), + PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), + PR rtl-optimization/63659 (wrong code). + * Don't let stage1 multilib builds depend on the multilib libc-dev. + Closes: #771243. + * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. + * Remove unsupported with_deps_on_target_arch_pkgs configurations. + Closes: #760770, #766924, #770413. + + -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 + +gcc-4.9 (4.9.2-3) unstable; urgency=medium + + * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. + - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), + PR target/60111 (SH), PR target/63673 (ppc), + PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), + PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), + PR ada/47500. + + [ Aurelien Jarno ] + * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, + even with multilib disabled, as it doesn't produce additional + libraries. + + [ Matthias Klose ] + * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. + + -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 + +gcc-4.9 (4.9.2-2) unstable; urgency=medium + + * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. + - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran + aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong + code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. + * Fix PR c/61553 (ice on illegal code), backported from the trunk. + Closes: #767668. + * Disable building the sanitizer libs on powerpc and ppc64. Not yet + completely ported, and causing kernel crashes running the tests. + * Update the Linaro support to the 4.9-2014.11 release. + + -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 + +gcc-4.9 (4.9.2-1) unstable; urgency=medium + + * GCC 4.9.2 release. + * Update GDC from the 4.9 branch. + + [ Matthias Klose ] + * Allow one to build the gcc-base package only. + + [Ludovic Brenta] + Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. + * debian/patches/ada-libgnatvsn.diff: compile the version.o of + libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the + change made in gcc-base-version.diff, which is compiled into gcc and + gnat1. Fixes: #759038. + * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion + compatibility of libgnatvsn4.9-dev with -3. + + Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low + Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low + + [Svante Signell] + * debian/patches/ada-hurd.diff: update and bring up to par with + ada-kfreebsd.diff. + + [Ludovic Brenta] + * Rebuild with newer dpkg. Fixes: #761248. + + Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low + + * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). + Fixes: #755490. + * debian/rules.d/binary-ada.mk: install the test-summary file in package + gnat-4.9 instead of gnat-4.9-base. test-summary is actually + architecture-dependent. This change reflects what happens in gcc-4.9 + and gcc-4.9-base as well. Fixes: #749869. + + Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low + + * Lintian warnings: + * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. + * debian/patches/ada-749574.diff: new. Fixes: #749574. + + -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 + +gcc-4.9 (4.9.1-19) unstable; urgency=medium + + * GCC 4.9.2 release candidate. + * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. + * Install sanitizer header files. + * Apply patch for PR 60655, taken from the trunk. + * Fix typo in the libstdc++ HTML docs. Closes: #766498. + * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. + * Force self-contained cross builds. + * Don't build functionally non-equivalent cross compilers. + * Update the Linaro support to the 4.9-2014.10-1 release. + + -- Matthias Klose Fri, 24 Oct 2014 14:20:00 +0200 + +gcc-4.9 (4.9.1-18) unstable; urgency=medium + + * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update libstdc++ symbols file for powerpcspe (Roland Stigge). + Closes: #765078. + + -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 + +gcc-4.9 (4.9.1-17) unstable; urgency=medium + + * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. + - Fix PR c++/63405 (ice) Closes: #761549. + - Fix PR ipa/61144 (wrong code). Closes: #748681. + + -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 + +gcc-4.9 (4.9.1-16) unstable; urgency=medium + + * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. + * Don't suggest libvtv and binutils-gold. Closes: #761612. + + -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 + +gcc-4.9 (4.9.1-15) unstable; urgency=medium + + * Update to SVN 20140919 (r215401) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Extend the fix for PR target/63190 (AArch64). Closes: #758964. + * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). + + [ Aurelien Jarno ] + * Default to mips64 ISA on mips64el, with tuning for mips64r2. + + -- Matthias Klose Fri, 19 Sep 2014 20:17:27 +0200 + +gcc-4.9 (4.9.1-14) unstable; urgency=medium + + * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. + * Update the Linaro support to the 4.9-2014.09 release. + * Fix installation of the libstdc++ documentation. Closes: #760872. + + -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 + +gcc-4.9 (4.9.1-13) unstable; urgency=medium + + * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. + * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. + * Update the Linaro support from the Linaro/4.9 branch. + * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. + + -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 + +gcc-4.9 (4.9.1-12) unstable; urgency=medium + + [ Samuel Thibault ] + * boehm-gc: use anonymous mmap instead of brk also on hurd-*. + Closes: #753791. + + -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 + +gcc-4.9 (4.9.1-11) unstable; urgency=medium + + * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. + * Update cross installation patches for the branch. + * Use the base version (4.9) when accessing files in gcc_lib_dir. + + -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 + +gcc-4.9 (4.9.1-10) unstable; urgency=medium + + * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. + * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. + * Update the Linaro support from the Linaro/4.9 branch. + - Fixes Aarch64 cross build on i386. + + -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 + +gcc-4.9 (4.9.1-9) unstable; urgency=medium + + * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. + * Fix -dumpversion output to print the full version number. + Addresses: #759038. LP: #1360404. + Use the GCC base version for the D include dir name. + + -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 + +gcc-4.9 (4.9.1-8) unstable; urgency=medium + + * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. + * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. + LP: #1352836. + * Update the Linaro support to 4.9-2014.08. + * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. + LP: #1227789. + * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut + Grohne). Closes: #758408. + * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. + Closes: #757738. + + -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 + +gcc-4.9 (4.9.1-7) unstable; urgency=medium + + * Build-depend on dpkg-dev (>= 1.17.11). + + -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 + +gcc-4.9 (4.9.1-6) unstable; urgency=medium + + * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. + * Really fix the GFDL build on AArch64. Closes: #757153. + * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. + Local patch needs an update and upstreaming. + * Apply the local ada-mips patch for snapshot builds too. + * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision + failure. Local patch needs upstreaming. + * Disable Ada for snapshot builds on hurd-i386, build dependencies are + not installable. + * Don't build the sanitizer libs for sparc snapshot builds. + * Proposed backport for PR libstdc++/61841. Closes: #749290. + + -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 + +gcc-4.9 (4.9.1-5) unstable; urgency=medium + + * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. + - Fix PR tree-optimization/61964. LP: #1347147. + * Fix libphobos cross build. + + -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 + +gcc-4.9 (4.9.1-4) unstable; urgency=high + + * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. + - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. + Closes: #756325. + * Build libphobos on armel and armhf. Closes: #755390. + * Fix java.security symlink. Closes: #756484. + + -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 + +gcc-4.9 (4.9.1-3) unstable; urgency=medium + + * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. + * Fix the GFDL build on AArch64. + * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. + + -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 + +gcc-4.9 (4.9.1-2) unstable; urgency=medium + + * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. + + * Fix installing test logs and summaries. + * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. + * Don't gzip the xz compressed testsuite logs and summaries. + * Build libphobos on armel and armhf. Closes: #755390. + * Update the Linaro support to the 4.9-2014.07 release. + + -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 + +gcc-4.9 (4.9.1-1) unstable; urgency=medium + + * GCC 4.9.1 release. + * Update GDC form the 4.9 branch (20140712). + + -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 + +gcc-4.9 (4.9.0-11) unstable; urgency=medium + + * GCC 4.9.1 release candidate 1. + * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. + - Fix PR middle-end/61725. Closes: #754548. + + * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). + Closes: #745372. + * Set java_cpu to ppc64 on ppc64el. + * Build AArch64 from the Linaro 4.9-2014.06 release. + * Re-enable running the testsuite on KFreeBSD and the Hurd. + * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa. + + -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 + +gcc-4.9 (4.9.0-10) unstable; urgency=medium + + * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. + + * Explicitly set cpu_32 to ultrasparc for sparc64 builds. + * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + * Ignore missing libstdc++ symbols on armel and hppa. The future and + exception_ptr implementation is incomplete. For more information see + https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. + + -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 + +gcc-4.9 (4.9.0-9) unstable; urgency=medium + + * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. + * Update libstdc++ symbols files for ARM. + * Configure --with-cpu-32=ultrasparc on sparc64. + + -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 + +gcc-4.9 (4.9.0-8) unstable; urgency=medium + + * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. + + * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial + 4.9 uploads. + * Update libgcc1 symbols for sh4. Closes: #751919. + * Stop building the libvtv packages. Not usable unless the build is + configured with --enable-vtable-verify, which comes with a performance + penalty just for the stubs in libstdc++. + * Update libstdc++ and libvtv symbols files for builds configured with + --enable-vtable-verify. + * Remove version requirement for dependency on make. Closes: #751891. + * Fix removal of python byte-code files in libstdc++6. Closes: #751435. + * Fix a segfault in the driver from calling free on non-malloc'd area. + * Drop versioned build dependency on gdb, and apply the pretty printer + patch for libstdc++ based on the release. + * Add support to build with isl-0.13. + + -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 + +gcc-4.9 (4.9.0-7) unstable; urgency=medium + + * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. + + Update context for powerpc_remove_many. + + Drop gcc-powerpcspe-ldbl-fix applied upstream. + + [ Aurelien Jarno ] + * Fix PR c++/61336, taken from the trunk. + + -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 + +gcc-4.9 (4.9.0-6) unstable; urgency=medium + + * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. + * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). + LP: #1317305. + * Don't install the libstdc++ pretty printer file into the debug directory, + but into the gdb auto-load directory. + * Fix the removal of the libstdc++6 package, removing byte-compiled pretty + printer files and pycache directories. + * Fix PR c++/61046, taken from the trunk. LP: #1313102. + * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. + Closes: #745906. + * Update patches for snapshot builds. + + -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 + +gcc-4.9 (4.9.0-5) unstable; urgency=medium + + * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. + * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. + * Build libitm on AArch64, patch taken from the trunk. + * Update the testsuite to allow more testcases to pass with hardening options + turned on (Steve Beattie). LP: #1317307. + * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure + on ppc64el. + * Fix PR other/61257, check for working sys/sdt.h. + * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. + + -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 + +gcc-4.9 (4.9.0-4) unstable; urgency=medium + + * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. + * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. + * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. + * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt + on architectures where it is not supported. Closes: #748315. + * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. + * Apply the proposed patch for PR c/57653. Closes: #734345. + + -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 + +gcc-4.9 (4.9.0-3) unstable; urgency=medium + + * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. + + [ Matthias Klose ] + * Update build dependencies for ada enabled snapshot builds. + * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. + * Ensure that the common libs (built from the next GCC version) are + available when building without common libs. + * Fix java.security symlink in libgcj15. Addresses: #746786. + * Move the libstdc++ gdb pretty printers into libstdc++6, install the + -gdb.py files into /usr/share/gdb/auto-load. + * Set the 'Multi-Arch: same' attribute for packages, cross built with + with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. + * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes + (Helmit Grohne). Addresses: #744782. + * Apply the proposed patches for PR driver/61106, PR driver/61126. + Closes: #747345. + + [ Aurelien Jarno ] + * Fix libasan1 symbols file for sparc and sparc64. + + -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 + +gcc-4.9 (4.9.0-2) unstable; urgency=medium + + * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. + - Fix PR go/60931, garbage collector issue with non 4kB system page size. + LP: #1304754. + + [Matthias Klose] + * Fix libgcc-dev dependency on gcc, when not building libgcc. + * Fix gnat for snapshot builds on ppc64el. + * Update the libsanitizer build fix for sparc. + * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 + cross compiler. Install hppa64 alternatives. Addresses: #745967. + * Fix the as and ld symlinks for the hppa64 cross compiler. + * Add the gnat backport for AArch64. + * Update gnat patches not to use tabs and too long lines. + * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat + build dependency on g++. Addresses: #746688. + + Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: + + [Ludovic Brenta] + * debian/patches/ada-hurd.diff: refresh for new upstream version that + restores POSIX compliance in System.OS_Interface.timespec. + * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec + consistent with s-osinte-posix.adb. + [Nicolas Boulenguez] + * rules.conf (Build-Depends): mention gnat before gnat-x.y so that + buildds can bootstrap 4.9 in unstable. Fixes: #744724. + + -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 + +gcc-4.9 (4.9.0-1) unstable; urgency=medium + + * GCC 4.9.0 release. + * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. + + [Matthias Klose] + * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). + * Update gold architectures. + * Update NEWS files. + * Remove more mudflap left overs. Closes: #742606. + * Add new libraries src/libvtv and src/libcilkrts to + cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. + * Let lib*gcc-dev depend on the corresponding libtsan packages. + * Build the liblsan packages (amd64 only). + * Install the libcilkrts spec file. + * Build the D frontend and libphobos from the gdc trunk. + + Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * Revert g4.9-base to Architecture: all. Fixes: #743833. + * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh. + + Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low + + * debian/patches/ada-arm.diff: new. Improve support for ZCX on this + architecture. + * debian/patches/rules.patch: apply architecture- and Ada-specific + patches before Debian-specific patches. + * debian/patches/ada-link-lib.diff, + debian/patches/ada-libgnatvsn.diff, + debian/patches/ada-libgnatprj.diff: refresh for the new upstream + sources. + + Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low + + [Nicolas Boulenguez] + * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. + * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | + gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). + + Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium + + * Uploading to unstable was a mistake. Upload to experimental. + + Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium + + [Nicolas Boulenguez] + * patches/ada-ppc64.diff: replace undefined variable arch with + target_cpu; this overrides the patch proposed by Ulrich Weigand as + it is more correct; approved by Ludovic Brenta. Fixes: #742590. + * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. + + Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: + (Suggests): suggest the correct version of ada-reference-manual. + (Vcs-Svn): specify the publicly accessible repository. + * Receive debian_packaging.mk from dh-ada-library (not library specific). + * Receive gnatgcc symlink from gnat (useful outside default compiler). + * debian/source/local-options: new. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + * debian/patches/ada-default-project-path.diff: when passed options such + as -m32 or -march, do not look for the RTS in + /usr/share/ada/adainclude but in + /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look + for project files in /usr/share/ada/adainclude. + * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: + Switch to ZCX by default on arm, armel, armhf; built SJLJ as the + package gnat-4.9-sjlj like on all other architectures. This is made + possible by the new upstream version. + * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of + timespec.tv_nsec from long to time_t, for compatibility with + s-osinte-posix.adb, even though this violates POSIX. Better solution + to come from upstream. Fixes: #740286. + + -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 + +gcc-4.9 (4.9-20140411-2) unstable; urgency=medium + + * Disable running the testsuite on kfreebsd, hangs the buildds. + * Stop building the sanitizer libs on sparc, fails to build. No reaction + from the Debian port maintainers and upstream. See PR sanitize/59758. + + -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 + +gcc-4.9 (4.9-20140411-1) unstable; urgency=medium + + * GCC 4.9.0 release candidate 1. + * Configure for i586-linux-gnu on i386. + + -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 + +gcc-4.9 (4.9-20140406-1) experimental; urgency=medium + + [Matthias Klose] + * Include include and include-fixed header files into the stage1 + gcc-4.9 package. + * Explicitly configure with --disable-multilib on sparc64 when no + multilibs are requested (Helmut Grohne). Addresses: #743342. + * Drop mudflap from cross-install-location.diff since mudflap was removed + from gcc 4.9. Closes: #742606 + * Build gnat in ppc64el snapshot builds. + * Apply the ada-ppc64 patch for snapshot builds as well. + * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. + * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. + * Add replaces when upgrading from a standalone gccgo build. + + [Yunqiang Su] + * Lower default optimization for mips64/n32 to mips3/mips64(32). + Closes: #742617. + + -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 + +gcc-4.9 (4.9-20140330-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140330. + + [Matthias Klose] + * Update symbols files. + * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). + * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. + + [Ludovic Brenta] + * debian/control.m4 (Build-Depends), debian/rules.conf: remove + AUTOGEN_BUILD_DEP and hardcode autogen. It is called by + fixincludes/genfixes during bootstrap and also when building gnat-*, + not just when running checks on gcc-*. + + -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 + +gcc-4.9 (4.9-20140322-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140322. + - Fixes build error on the Hurd. Closes: #740153. + + [Matthias Klose] + * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. + + Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low + + [Nicolas Boulenguez] + * debian/control.m4: suggest the correct version of + ada-reference-manual. + + [Ludovic Brenta] + * debian/control.m4: conflict with gnat-4.7, gnat-4.8. + + Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low + + * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but + not *86-linux-gnu, the target tripled used by GNU/Linux. + + Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler + warnings. + * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): + do not try to install the gnattools, this is the job of + gnattools/Makefile.in. + * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even + when making install-gnatlib. + + [Xavier Grave] + * debian/patches/ada-kfreebsd.diff: refresh. + * debian/rules.patch: re-enable the above. + + -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 + +gcc-4.9 (4.9-20140303-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140303. + + -- Matthias Klose Tue, 04 Mar 2014 02:13:20 +0100 + +gcc-4.9 (4.9-20140218-1) experimental; urgency=medium + + * Fix gij wrapper script on hppa. Closes: #739224. + + -- Matthias Klose Tue, 18 Feb 2014 23:59:31 +0100 + +gcc-4.9 (4.9-20140205-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140205. + * Install the libsanitizer spec file. + * Fix building standalone gccgo, including the libgcc packages. + * On AArch64, use "generic" target, if no other default. + + -- Matthias Klose Wed, 05 Feb 2014 12:53:52 +0100 + +gcc-4.9 (4.9-20140122-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140122. + * Update libstdc++ -dbg and -doc conflicts. + * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. + * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). + * Apply proposed patch for PR target/59799, allow passing arrays in + registers on AArch64 (Michael Hudson). + + -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 + +gcc-4.9 (4.9-20140116-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140116. + * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. + * Fix call frame information in ffi_closure_SYSV on AArch64. + + -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 + +gcc-4.9 (4.9-20140111-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140111. + * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. + * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. + + -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 + +gcc-4.9 (4.9-20140110-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot 20140110. + + -- Matthias Klose Fri, 10 Jan 2014 18:03:07 +0100 + +gcc-4.9 (4.9-20140109-1) experimental; urgency=medium + + * Package GCC 4.9 snapshot. + + -- Matthias Klose Thu, 09 Jan 2014 18:57:46 +0100 + +gcc-4.8 (4.8.2-11) unstable; urgency=low + + * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. + * Don't build x32 multilibs for wheezy backports. + * Set the goarch to arm64 for aarch64-linux-gnu. + * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). + LP: #1261604. + * Merge accumulated Ada changes from gnat-4.8. + * Update gnat build dependencies when not built from a separate source. + * Default to -mieee on alpha again (Michael Cree). Closes: #733291. + * Prepare gnat package for cross builds. + + -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 + +gcc-4.8 (4.8.2-10) unstable; urgency=low + + * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. + * Add missing commit in libjava for gcc-linaro. + + -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 + +gcc-4.8 (4.8.2-9) unstable; urgency=low + + * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Fix libitm symbols files for ppc64. + * Update libatomic symbol file for arm64 and ppc64. + * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. + * Fix permissions of some override files. + * Let cross compilers conflict with gcc-multilib (providing + /usr/include/asm for the non-default multilib). + * Configure --with-long-double-128 on powerpcspe (Roland Stigge). + Closes: #731941. + * Update the Linaro support to the 4.8-2013.12 release. + * Update the ibm branch to 20131212. + + [ Aurelien Jarno ] + * patches/note-gnu-stack.diff: restore and rebase lost parts. + + -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 + +gcc-4.8 (4.8.2-8) unstable; urgency=medium + + * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. + * Fix PR libgcc/57363, taken from the trunk. + + -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 + +gcc-4.8 (4.8.2-7) unstable; urgency=low + + * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. + * Introduce aarch64 goarch. + * libgo: Backport fix for calling a function or method that takes or returns + an empty struct via reflection. + * go frontend: Backport fix for the generated hash functions of types that + are aliases for structures containing unexported fields. + * Skip Go testcase on AArch64 which hangs on the buildds. + * Fix freetype includes in libjava/classpath. + + -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 + +gcc-4.8 (4.8.2-6) unstable; urgency=low + + * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. + + [ Matthias Klose ] + * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. + * Update the gcc-as-needed patch for mips*. Closes: #722067. + * Use dpkg-vendor information for distribution specific settings. + Closes: #697805. + * Check for the sys/auxv.h header file. + * On AArch64, make the frame grow downwards, taken from the trunk. + Enable ssp on AArch64. + * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. + + [ Aurelien Jarno ] + * Update README.Debian for s390 and s390x. + + [ Thorsten Glaser ] + * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and + gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to + fix more CC0-specific and m68k/Ada-specific problems. + * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, + to avoid relocation errors when linking big shared objects. + * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, + to fix ICE while building boost 1.54 on m68k. + * pr52306.diff: Disables -fauto-inc-dec by default on m68k to + work around ICE when building C++ code (e.g. Qt-related). + + -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 + +gcc-4.8 (4.8.2-5) unstable; urgency=low + + * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.11 release. + * Add missing replaces in libgcj14. Closes: #729022. + + -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 + +gcc-4.8 (4.8.2-4) unstable; urgency=low + + * Really fix disabling the gdc tests. + + -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 + +gcc-4.8 (4.8.2-3) unstable; urgency=low + + * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. + * Don't ship java.security in both libgcj14 and gcj-4.8-headless. + Closes: #729022. + * Disable gdc tests on architectures without libphobos port. + + -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 + +gcc-4.8 (4.8.2-2) unstable; urgency=low + + * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. + * Build ObjC, Obj-C++ and Go for AArch64. + * Fix some gcj symlinks. Closes: #726792, #728403. + * Stop building libmudflap (removed in GCC 4.9). + + -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 + +gcc-4.8 (4.8.2-1) unstable; urgency=low + + * GCC 4.8.2 release. + + * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. + * Update the Linaro support to the 4.8-2013.10 release. + * Fix PR c++/57850, option -fdump-translation-unit not working. + * Don't run the testsuite on aarch64. + * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. + * [ARM] Fix bug in add patterns due to commutativity modifier, + backport from trunk. LP: #1234060. + * Build libatomic on AArch64. + * Fix dependency generation for the cross gcc-4.8 package. + * Make the libstdc++ pretty printers compatible with Python3, if + gdb is built with Python3 support. + * Fix loading of libstdc++ pretty printers. Closes: #701935. + * Don't let gcc-snapshot build-depend on gnat on AArch64. + + -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 + +gcc-4.8 (4.8.1-10) unstable; urgency=low + + * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Don't rely on the most recent Debian release name for configuration + of the package. Addresses: #720263. Closes: #711824. + * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). + Closes: #718614. + * Add packaging support for mips64(el) and mipsn32(el) including multilib + configurations (YunQiang Su). Addresses: #708143. + * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. + * Fix boehm-gc test failures with a linker defaulting to + --no-copy-dt-needed-entries. + * Fix libstdc++ and libjava test failures with a linker defaulting + to --as-needed. + * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. + * Fix some gcc and g++ test failures for a compiler with hardening + defaults enabled. + * Fix gcc-default-format-security.diff for GCC 4.8. + * Run the testsuite again on armel and armhf. + * Disable running the testsuite on mips. Fails on the buildds, preventing + migration to testing for three months. No feedback from the mips porters. + + [ Thorsten Glaser ] + * Merge several old m68k-specific patches from gcc-4.6 package: + - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. + - m68k-revert-pr45144: Needed for Ada. + - pr52714: Revert optimisation that breaks CC0 arch. + * Fix PR49847 (Mikael Pettersson). Closes: #711558. + * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). + + -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 + +gcc-4.8 (4.8.1-9) unstable; urgency=low + + * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. + * Enable gomp on AArch64. + * Update the Linaro support to the 4.8-2013.08 release. + + -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 + +gcc-4.8 (4.8.1-8) unstable; urgency=low + + * Fix PR rtl-optimization/57878, taken from the 4.8 branch. + * Fix PR target/57909 (ARM), Linaro only. + + -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 + +gcc-4.8 (4.8.1-7) unstable; urgency=low + + * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. + - Go 1.1.1 updates. + * Define CPP_SPEC for aarch64. + * Don't include in libgcc/libgcc2.c, taken from the trunk. + Closes: #696267. + * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). + Closes: #717024. + + -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 + +gcc-4.8 (4.8.1-6) unstable; urgency=low + + * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Add 32-bit biarch packages on sparc64. + + [ Matthias Klose ] + * Fix multiarch include path for aarch64. + * Update the Linaro support to the 4.8-2013.07 release. + * Revert the proposed fix for PR target/57637 (ARM only). + * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. + + [ Iain Buclaw ] + * Avoid compiler warnings redefining D builtin macros. + + -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 + +gcc-4.8 (4.8.1-5) unstable; urgency=low + + * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. + + [ Aurelien Jarno ] + * Don't pass --with-mips-plt on mips/mipsel. + + [ Matthias Klose ] + * Fix documentation builds with texinfo-5.1. + * Update the ARM libsanitizer backport from the 4.8 Linaro branch. + * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). + * The gdc cross compiler doesn't depend on libphobos-4.8-dev. + * Work around libgo build failure on ia64. PR 57689. #714090. + * Apply proposed fix for PR target/57637 (ARM only). + + -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 + +gcc-4.8 (4.8.1-4) unstable; urgency=low + + * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. + - Bump the libgo soname (change in type layout for functions that take + function arguments). + - Fix finding the liblto_plugin.so without x permissions set (see + PR driver/57651). Closes: #712704. + * Update maintainer list. + * Fall back to the binutils version of the binutils build dependency + if the binutils version used for the build cannot be determined. + * For ARM multilib builds, use libsf/libhf system directories to lookup + files for the non-default multilib (for now, only for the cross compilers). + * Split out a gcj-4.8 package, allow to build a gcj cross compiler. + * Allow one to cross build gcj. + * Don't include object.di in the D cross compiler, but depend on gdc instead. + * Allow one to cross build gdc. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + + -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 + +gcc-4.8 (4.8.1-3) unstable; urgency=low + + * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Prepare gdc for cross builds, and multiarch installation. + * Prepare gnat to build out of the gcc-4.8 source package, not + building the gnat-4.8-base package anymore. + * Don't build a gcj cross compiler by default (not yet tested). + * Disable D on s390 (doesn't terminate the D testsuite). + * Build libphobos on x32. + * Fix build with DEB_BUILD_OPTIONS="nolang=d". + * Disable D for arm64. + * Update the Linaro support to the 4.8-2013.06 release. + * Fix cross building a native compiler. + * Work around dh_shlibdeps not working on target libraries (see #698881). + * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. + * Add handling for unwind inside signal trampoline for kfreebsd (Petr + Salinger). Closes: #712016. + * Let gcc depend on the binutils upstream version it was built with. + Addresses #710142. + * Force a build using binutils 2.23.52 in unstable. + + [ Iain Buclaw ] + * Update gdc to 20130610. + * Build libphobos on kFreeBSD. + + -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 + +gcc-4.8 (4.8.1-2) unstable; urgency=low + + * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. + * Force arm mode for libjava on armhf. + * Fix gdc build failure on kFreeBSD and the Hurd. + + -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 + +gcc-4.8 (4.8.1-1) unstable; urgency=low + + * GCC 4.8.1 release. + Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ + the first C++ compiler to implement all the major language features of + the C++11 standard. + * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. + * Build java packages from this source package. Works aroud ftp-master's + overly strict interpretation of the Built-Using attribute. + * Build D and libphobos packages from this source package. + * Disable the non-default multilib test runs for libjava and gnat. + + -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 + +gcc-4.8 (4.8.0-9) unstable; urgency=low + + * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. + * Drop build dependency on automake, not used anymore. + * Build with binutils from unstable (the 4.8.0-8 package was accidentally + built with binutils from experimental). Closes: #710142. + * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when + not building these libraries. Closes: #710224. + + -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 + +gcc-4.8 (4.8.0-8) unstable; urgency=medium + + * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). + - Fix PR tree-optimization/57230 (closes: #707118). + + * Remove gdc-doc.diff. + * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails + on some buildds. + * Update the Linaro support to the 4.8-2013.05 release. + * Use the %I spec when building the object file for the gcj main function. + * Fix PR c++/57211, don't warn about unused parameters of defaulted + functions. Taken from the trunk. Closes: #705066. + * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. + * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. + * Keep prev-* symlinks to fix plugin.exp test failures. + + -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 + +gcc-4.8 (4.8.0-7) unstable; urgency=medium + + * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Revert the r195826 patch, backported for the 4.8 branch. + * Tighten build dependency on libmpc-dev to ensure using libmpc3. + * Re-add build dependency on locales. + * Enable multilib build for gdc. + * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. + * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. + * Install host specific libstdc++ headers into the host include dir. + Closes: #707753. + * Enable Go for sparc64. + * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. + + [ Thorsten Glaser ] + * Regenerate m68k patches. Closes: #707766. + + [ Aurelien Jarno ] + * Fix libgcc1 symbols file for sparc64. + + -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 + +gcc-4.8 (4.8.0-6) unstable; urgency=low + + * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. + + [ Samuel Thibault ] + * Backport r195826 to fix gdb build on hurd-i386. + + [ Matthias Klose ] + * Drop build dependency on locales for this upload. + + -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 + +gcc-4.8 (4.8.0-5) unstable; urgency=low + + * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. + + [ Matthias Klose ] + * Stop building the spu cross compilers on powerpc and ppc64. + * Merge back changes from gnat-4.8 4.8.0-1~exp2. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the + library, it is used only in the gnattools. + + -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 + +gcc-4.8 (4.8.0-4) experimental; urgency=low + + * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. + * Ignore the return value for dh_shlibdeps for builds on precise/ARM. + * Use target specific names for libstdc++ baseline files. LP: #1168267. + * Update gcc-d-lang.diff for GDC port. + * Don't use extended libstdc++-doc build dependencies for older releases. + * In gnatlink, pass the options and libraries after objects to the + linker to avoid link failures with --as-needed. Addresses: #680292. + * Build gcj for aarch64-linux-gnu. + * Update the Linaro support to the 4.8-2013.04 release. + * Fix gdc build on architectures not providing libphobos. + + -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 + +gcc-4.8 (4.8.0-3) experimental; urgency=low + + * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. + + [ Iain Buclaw ] + * Port GDC to GCC 4.8.0 release. + + -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 + +gcc-4.8 (4.8.0-2) experimental; urgency=low + + * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. + * Update NEWS files. + * Apply proposed patch for PR c++/55951. Closes: #703945. + * Configure with --disable-libatomic for hppa64. Closes: #704020. + + -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 + +gcc-4.8 (4.8.0-1) experimental; urgency=low + + * GCC 4.8.0 release. + * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. + + -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 + +gcc-4.8 (4.8-20130318-1) experimental; urgency=low + + * GCC snapshot 20130318, taken from the trunk. + - Fix the build failures on ARM. + * Install the libasan_preinit.o files. Closes: #703229. + + -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 + +gcc-4.8 (4.8-20130315-1) experimental; urgency=low + + * GCC snapshot 20130315, taken from the trunk. + + -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 + +gcc-4.8 (4.8-20130308-1) experimental; urgency=low + + * GCC snapshot 20130308, taken from the trunk. + + -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 + +gcc-4.8 (4.8-20130222-1) experimental; urgency=low + + * GCC snapshot 20130222, taken from the trunk. + * Update libasan symbols files. + + -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 + +gcc-4.8 (4.8-20130217-1) experimental; urgency=low + + * GCC snapshot 20130217, taken from the trunk. + + * Update libasan symbols files. + * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael + Cree). Closes: #699220. + + -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 + +gcc-4.8 (4.8-20130209-1) experimental; urgency=low + + * GCC snapshot 20130209, taken from the trunk. + + [ Matthias Klose ] + * Add a Build-Using attribute for each binary package, which can be + built from the gcc-4.7-source package (patch derived from a proposal by + Ansgar Burchardt). + - Use it for cross-compiler packages. + - Not yet used when building gcj, gdc or gnat using the gcc-source package. + These packages don't require an exact version of the gcc-source package, + but just a versions which is specified by the build dependencies. + * Fix dh_shlibdeps calls for the libgo packages. + * libstdc-doc: Depend on libjs-jquery. + * Update libstdc++ symbols files. + * Downgrade the priority of the non-default multilib libasan packages. + + [ Thibaut Girka ] + * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for + libgfortran-dev packages. + + -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 + +gcc-4.8 (4.8-20130127-1) experimental; urgency=low + + * GCC snapshot 20130127, taken from the trunk. + + [ Matthias Klose ] + * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. + + [ Thibaut Girka ] + * Fix installation path for libatomic and libsanitizer when building a + cross-compiler with with_deps_on_target_arch_pkgs. + * Fix regexp used to list patched autotools files. + + -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 + +gcc-4.8 (4.8-20130113-1) experimental; urgency=low + + * GCC snapshot 20130113, taken from the trunk. + * Always configure --with-system-zlib. + * Search library dependencies in the build-sysroot too. + * Don't complain about missing .substvars files when trying to mangle + these files. + * Add ARM multilib packages to the control file for staged cross builds. + * Fix ARM multilib shlibs dependency generation for cross builds. + * Don't call dh_shlibdeps for staged cross builds. These packages + are never shipped, and the information is irrelevant. + * Build the libasan and libtsan packages before libstdc++. + * Bump build dependencies on isl and cloog. + * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. + + -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 + +gcc-4.8 (4.8-20130105-1) experimental; urgency=low + + * GCC snapshot 20130105, taken from the trunk. + * Keep the debug link for libstdc++6. Closes: #696854. + * Update libgfortran symbols file for the trunk. + * Fix libstdc++ symbols files for sparc 128bit symbols. + * Update libgcc and libstdc++ symbols files for s390. + * Keep the rt.jar symlink in the gcj-jre-headless package. + * Explicitly search multiarch and multilib system directories when + calling dh_shlibdeps. + * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. + * Fix build configured with --enable-java-maintainer-mode. + * Don't ship .md5 files in the libstdc++-doc package. + + -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 + +gcc-4.8 (4.8-20130102-1) experimental; urgency=low + + * GCC snapshot 20130102, taken from the trunk. + + [ Matthias Klose ] + * Resolve libgo dependencies with the built runtime libraries. + * Fix g++-4.8-multilib dependencies. + + [ Thibaut Girka ] + * Prepare for optional dependencies on the packages built on the + target architecture. + * When using the above, + - use the same settings for gcc_lib_dir, sysroot, header and C++ header + locations as for the native build. + - install libraries into the multiarch directories. + - use cpp-4.x- instead of gcc-4.x-base to collect doc files. + + -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 + +gcc-4.8 (4.8-20121218-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix dependency generation for asan and atomic multilibs. + * Fix libobjc-dbg dependencies on libgcc-dbg packages. + * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). + Closes: #695661. + * Move .jar symlinks from the -jre-lib into the -jre-headless package. + + -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 + +gcc-4.8 (4.8-20121217-1) experimental; urgency=low + + * GCC snapshot 20121217, taken from the trunk. + * Fix package builds with the common libraries provided by a newer + gcc-X.Y package. + * Drop build-dependency on libelf. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. Provide an asm symlink for + the build. + * Stop configuring cross compilers --with-headers --with-libs. + * Always call dh_shlibdeps with -l, pointing to the correct dependency + packages. + * Fix cross build stage1 package installation, only including the target + files in the gcc package. + * Explicitly configure with --enable-multiarch when doing builds + supporting the multiarch layout. + * Only configure --with-sysroot, --with-build-sysroot when values are set. + * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. + * Allow multilib enabled stage1 and stage2 cross builds. + * Don't check glibc version to configure --with-long-double-128. + * Don't auto-detect multilib osdirnames. + * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. + * Allow building a gcj cross compiler. + * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). + + -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 + +gcc-4.8 (4.8-20121211-1) experimental; urgency=low + + * GCC snapshot 20121211, taken from the trunk. + * Fix build failure on multilib configurations. + + -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 + +gcc-4.8 (4.8-20121210-1) experimental; urgency=low + + * GCC snapshot 20121210, taken from the trunk. + * For cross builds, don't use the multiarch location for the C++ headers. + * For cross builds, fix multilib inter package dependencies. + * For cross builds, fix libc6 dependencies for non-default multilib packages. + * Build libasan packages on powerpc, ppc64. + * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. + * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. + * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts + with the native compiler for the target architecture. + * For cross builds, don't add /usr/local/include to the standard include + path, however /usr/local/include/ is still on the path. + * For cross builds, provide symbols files based on the symbols files for + the native build. Not picked up by dh_makeshlibs yet. + * Drop the g++-multilib build dependency, use the built compiler to + check which multilib variants can be run. + * Fix spu cross build on powerpc/ppc64. + * Make libgcj packages Multi-Arch: same, append the Debian architecture + name to the gcj java home. + * Don't encode versioned build dependencies on binutils and dpkg-dev in + the control file (makes the package cross-buildable). + * Only include gengtype for native builds. Needs upstream changes. + See #645018. + * Fix cross build failure with --enable-libstdcxx-debug. + * Only install libbacktrace if it is built. + * When cross building the native compiler, configure --with-sysroot=/ + and without --without-isl. + + -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 + +gcc-4.8 (4.8-20121128-1) experimental; urgency=low + + [ Matthias Klose ] + * Update patches for GCC 4.8. + * Update debian/copyright for libatomic, libbacktrace, libsanitizer. + * Remove the soversion from the libstdc++*-dev packages. + * Build libatomic and libasan packages. + * Install the static libbacktrace library and header files. + * Update build-indep dependencies for building the libstdc++ docs. + * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. + * Apply proposed fix for PR fortran/55395, supposed to fix the build + failure on armhf and powerpc. + * For hardened builds, disable gcc-default-format-security for now, causing + build failure building the target libstdc++ library. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Fix gnat build failure on kfreebsd. + * Rename the gccgo info to gccgo-4.8 on installation. + * Install the libitm documentation (if built). + * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. + * Include libquadmath documentation in the gcc-4.8-doc package. + * Build libtsan packages. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 + +gcc-4.7 (4.7.2-12) experimental; urgency=low + + * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. + - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice + on valid), PR tree-optimization/54894 (ice on valid), + PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), + PR fortran/55314 (rejects valid). + + [ Matthias Klose ] + * Fix x32 multiarch name (x86_64-linux-gnux32). + * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. + * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. + * For stage1 builds, include gcc_lib_dir files in the gcc package. + + [ Thibaut Girka ] + * Fix libstdc++ multiarch include path for cross builds. + + -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 + +gcc-4.7 (4.7.2-11) experimental; urgency=low + + * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. + - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, + PR fortran/55352. + + * Update build-indep dependencies for building the libstdc++ docs. + * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. + * Pass --hash-style=gnu instead of --hash-style=both. + * Link using --hash-style=gnu on arm64 by default. + * Split multiarch patches into local and upstreamed parts. + * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew + Gretton-Dann). LP: #1049614, #1065509. + * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. + * Include libquadmath documentation in the gcc-4.7-doc package. + * Don't pretend to understand .d files, no D frontend available for 4.7. + * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. + * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). + + -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 + +gcc-4.7 (4.7.2-10) experimental; urgency=low + + * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. + - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, + PR rtl-optimization/53701, PR target/53975 (ia64), + PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, + PR target/55019 (ARM), PR c++/54984, PR target/55175, + PR tree-optimization/53708, PR tree-optimization/54985, + PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, + PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, + PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, + PR tree-optimization/54986, PR target/55204, PR debug/54828, + PR tree-optimization/54877, PR c++/54988, PR other/52438, + PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.11 release. + * Define MULTIARCH_DIRNAME for arm64 (Wookey). + * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. + * Let the libstdc++-dev package depend on the libgcc-dev package. + * Drop the dependency of the libstdc++-dev package on g++, make + libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. + * Install override files before calling dh_fixperms. + * Backport the libffi arm64 port. + * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. + * Allow conditional building of the x32 multilibs. + * Fix libmudflap build failure for x32 multilibs. + * Fix dependency on glibc for triarch builds. + * Add build-{arch,indep} targets. + * Fix libquadmath x32 multilib builds on kernels which don't support x32. + * Fix location of x32 specific C++ header files. + * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, + only if the optimization level is > 0. + * Keep the host alias when building multilib libraries which need to + be cross-built on some architectures/buildds. + * Update arm64 from the aarch64 branch 20121105. + * Fix PR other/54411, libiberty: objalloc_alloc integer overflows + (CVE-2012-3509). + * Use /usr/include//c++/4.x as the include directory + for host dependent c++ header files. + * Add alternative libelf-dev build dependency. Closes: #690952. + * Always build the aarch64-linux-gnu target from the Linaro branch. + * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. + * For powerpcspe prevent floating point register handling when there + are none available (Roland Stigge). Closes: #693328. + * Don't apply hurd-pthread.diff for trunk builds, integrated + upstream (Samuel Thibault). Addresses: #692538. + * Again, suggest graphite runtime dependencies. + * Clean up libstdc++ man pages. Closes: #692445. + + [ Thibaut Girka ] + * Split out lib*gcc-dev packages. + * Split out lib*objc-dev packages. + * Split out lib*gfortran-dev packages. + + [ Daniel Schepler ] + * Add support for x32. Closes: #667005. + * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from + that branch, including --with-abi=mx32 option. + * Split out lib*stdc++-dev packages. + + [ Marcin Juszkiewicz ] + * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. + * Remove conflicts for armhf/armel cross packages. + + -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 + +gcc-4.7 (4.7.2-4) unstable; urgency=low + + * Fix PR c++/54858 (ice on valid), taken from the branch. + * Build again Go on armel and armhf. + + -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 + +gcc-4.7 (4.7.2-3) unstable; urgency=low + + * Revert the fix PR c/33763, and just disable the sorry message, + taken from the branch. Closes: #678589. LP: #1062343. + * Update libgo to 1.0.3. + * Go fixes: + - Fix a, b, c := b, a, 1 when a and b already exist. + - Fix some type reflection strings. + - Fix parse of (<- chan <- chan <- int)(x). + - Fix handling of omitted expression in switch. + - Better error for switch on non-comparable type. + * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), + PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. + * gcc-4.7-base: ensure smooth upgrades from squeeze by adding + Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) + as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + Closes: #677582. + * Add arm64 support, partly based on Wookey's patches (only applied for + arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, + Obj-C++ and Java). + + -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 + +gcc-4.7 (4.7.2-2) unstable; urgency=low + + * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin + fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice + on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 + branch. + * Go fixes, taken from the 4.7 branch. + * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, + taken from the trunk. + * Mention the NEWS changes for all uploads. Closes: #688278. + + -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 + +gcc-4.7 (4.7.2-1) unstable; urgency=low + + * GCC 4.7.2 release. + * Issues addressed after the release candidate: + - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. + * Update NEWS files. + + -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 + +gcc-4.7 (4.7.1-9) unstable; urgency=low + + * GCC 4.7.2 release candidate 1. + * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. + - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, + PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), + PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), + PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), + PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, + PR fortran/54556. + * Update the Linaro support to the 4.7-2012.09 release. + - Adds support for the NEON vext instruction when shuffling. + - Backports improvements to scheduling transfers between VFP and core + registers. + - Backports support for the UBFX instruction on certain bit extract idioms. + + -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 + +gcc-4.7 (4.7.1-8) unstable; urgency=low + + * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. + - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, + PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), + PR target/54220 (AVR), PR fortran/54208 (rejects valid), + PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), + PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), + PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), + PR tree-optimization/54494 (wrong code), PR target/54436 (x86), + PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), + PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, + PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), + PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), + PR lto/53572, PR tree-optimization/53922 (wrong code). + - Go fixes. + + [ Nobuhiro Iwamatsu ] + * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. + + [ Matthias Klose ] + * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. + * Update libitm package description. Closes: #686802. + + -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 + +gcc-4.7 (4.7.1-7) unstable; urgency=low + + * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. + - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, + PR rtl-optimization/53942, PR rtl-optimization/54157. + + [ Thibaut Girka ] + * Fix cross compilers for 64bit architectures when using + DEB_CROSS_NO_BIARCH. + * Fix glibc dependency for multiarch enabled builds for architectures + with a different libc-dev package name. + + [ Aurelien Jarno ] + * powerpc64: Fix non-multilib builds. + + [ Matthias Klose ] + * Fix syntax error generating the control file for cross builds. + Closes: #682104. + * spu build: Move static libraries to version specific directories. + Closes: #680022. + * Don't run the libstdc++ tests on mipsel, times out on the buildds. + * Update the Linaro support to the 4.7-2012.08 release. + + -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 + +gcc-4.7 (4.7.1-6) unstable; urgency=low + + * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. + - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, + PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, + PR middle-end/54017, PR target/54029, PR target/53961 (x86), + PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, + PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), + PR c++/53953. + + -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 + +gcc-4.7 (4.7.1-5) unstable; urgency=high + + * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. + - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, + PR target/53853. + + -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 + +gcc-4.7 (4.7.1-4) unstable; urgency=medium + + * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. + - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, + PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, + PR middle-end/52621, PR middle-end/53433, PR fortran/53732, + PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. + * Update the Linaro support to the 4.7-2012.07 release. + * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). + Closes: #680590. + + -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 + +gcc-4.7 (4.7.1-3) unstable; urgency=low + + * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. + - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), + PR middle-end/53790, PR debug/53682, PR target/53759 (x86), + PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, + PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. + - The change for PR libstdc++/49561 was reverted. The std::list size is + now the same again in c++98 and c++11 mode. + * Revert the local std::list work around. + * Build using isl instead of ppl for snapshot builds. + + -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 + +gcc-4.7 (4.7.1-2) unstable; urgency=medium + + * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. + - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, + PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, + PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, + PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. + * Update NEWS files for 4.7.1. + * Bump gcc/FULL-VERSION to 4.7.1. + * Update the Linaro support to the 4.7-2012.06 release. + * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour + can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around + will be replaced with an upstream solution. + * Fix PR debug/53682, taken from the trunk. Closes: #677606. + * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it + in the control file (Thibaut Girka). + * When building a cross-compiler, runtime libraries for the target + architecture may be cross-built. Tell debhelper/dpkg-dev those packages + are indeed for a foreign architecture (Thibaut Girka). + + -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 + +gcc-4.7 (4.7.1-1) unstable; urgency=low + + * GCC 4.7.1 release. + + -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 + +gcc-4.7 (4.7.0-13) unstable; urgency=low + + * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. + - Fix PR c++/53602 (LP: #1007616). + + * Document the changed ssp-buffer-size default in Ubuntu 10.10 and + later (Kees Cook). LP: #990141. + * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. + * Fix PR c++/53599 (reverting the fix for PR c++/53137). + Closes: #676729. LP: #1010896. + * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. + * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). + Closes: #675511. + + -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 + +gcc-4.7 (4.7.0-12) unstable; urgency=low + + * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release + candidate 1 or 4.7.1). + - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, + PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, + PR target/46261, PR tree-optimization/53550, PR middle-end/52080, + PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, + PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, + PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, + PR c++/52905, PR fortran/53521. + - Go and libgo updates. + * Include README.Debian in README.Debian.. + * Fix PR c/33763, proposed patch from the issue. Closes: #672411. + * Fix build failure in libgo with hardening defaults. + + -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 + +gcc-4.7 (4.7.0-11) unstable; urgency=low + + * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. + - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, + PR middle-end/53501, PR rtl-optimization/53519, + PR tree-optimization/53516, PR tree-optimization/53438, + PR target/52999, PR middle-end/53008. + + [ Matthias Klose ] + * Build-depend on netbase when building Go. Closes: #674306. + + [ Marcin Juszkiewicz ] + * Use the multiarch default for staged builds. + + -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 + +gcc-4.7 (4.7.0-10) unstable; urgency=low + + * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. + - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, + PR ada/52362, PR target/53385, PR middle-end/53460, + PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, + PR ada/52362, PR fortran/53389. + * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. + + -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 + +gcc-4.7 (4.7.0-9) unstable; urgency=low + + * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. + - Fix PR bootstrap/53183, PR tree-optimization/53436, + PR tree-optimization/53366, PR tree-optimization/53409, + PR tree-optimization/53410, PR c/53418, PR target/53416, + PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, + PR target/53358, PR rtl-optimization/52804, PR target/46098, + PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, + PR fortran/53310 + * Update the Linaro support to the 4.7-2012.05 release. + + -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 + +gcc-4.7 (4.7.0-8) unstable; urgency=low + + * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. + - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, + PR tree-optimization/53195, PR target/52999, PR target/53228, + PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, + PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, + PR debug/53174, PR target/53187, PR tree-optimization/53144, + PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. + - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. + * Install man pages for gcc-{ar,nm,ranlib}-4.7. + + -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 + +gcc-4.7 (4.7.0-7) unstable; urgency=low + + * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. + - Fix PR libstdc++/53115, PR tree-optimization/53163, + PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. + - libgo fix for mips. + * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. + * Build Go on mips. + * Revert: Don't build multilib gnat on armel and armhf. + * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. + * Fix Go multilib packaging issue for mips and mipsel. + + -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 + +gcc-4.7 (4.7.0-6) unstable; urgency=low + + * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. + - Fix PR target/53138. + * Build Go on ARM. + * Treat wheezy the same as sid in more places (Peter Green). + Addresses: #670821. + + -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 + +gcc-4.7 (4.7.0-5) unstable; urgency=medium + + * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. + - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, + PR c/51527, PR target/53120. + + [ Matthias Klose ] + * Don't build multilib gnat on armel and armhf. + * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. + * Install the unwind-arm-common.h header file. + * Fix ARM biarch package builds. + + [ Aurelien Jarno ] + * Reenable parallel builds on GNU/kFreeBSD. + * Fix libgcc building on MIPS N32/64. Closes: #669858. + * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. + + -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 + +gcc-4.7 (4.7.0-4) unstable; urgency=low + + * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. + - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, + PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, + PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, + PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, + PR middle-end/53084, PR middle-end/52999, PR c/53060, + PR tree-optimizations/52891, PR target/53033, PR target/53020, + PR target/52932, PR middle-end/52939, PR tree-optimization/52969, + PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, + PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, + PR c++/52465, PR c++/52824, PR c++/52906. + + [ Matthias Klose ] + * Update the Linaro support to the 4.7-2012.04 release. + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Reenable the spu build on ppc64. Closes: #668272. + * Update and reenable the gcc-cloog-dl patch. + + [ Samuel Thibault ] + * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, + ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: + Add ada support for GNU/Hurd, thanks Svante Signell for the patches + and bootstrap! (Closes: #668426). + + -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 + +gcc-4.7 (4.7.0-3) unstable; urgency=low + + * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. + - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, + PR tree-optimization/52406, PR c++/52596, PR c++/52796, + PR fortran/52893, PR fortran/52668. + + [ Matthias Klose ] + * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. + * Add support for GNU locales for GNU/Hurd (Svante Signell). + Closes: #667662. + * Reenable the spu build on ppc64. Closes: #664617. + * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa + (John David Anglin). Closes: #667969. + + [ Nobuhiro Iwamatsu ] + * Fix cross build targeting sh4. Closes: #663028. + * Enable -mieee by default on sh4. Closes: #665328. + + -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 + +gcc-4.7 (4.7.0-2) unstable; urgency=low + + * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. + - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, + PR target/52507, PR target/52505, PR target/52461, PR target/52508, + PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, + PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, + PR rtl-optimization/52543, PR target/52461, PR target/52488, + PR target/52499, PR target/52148, PR target/52496, PR target/52484, + PR target/52506, PR target/52505, PR target/52461, PR other/52545, + PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, + PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, + PR middle-end/52691, PR middle-end/52750, PR target/52692, + PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, + PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, + PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, + PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, + PR tree-optimization/52701, PR tree-optimization/52754, + PR tree-optimization/52835. + + [ Matthias Klose ] + * Update NEWS files for 4.7. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Don't build Go on MIPS. + * Update alpha-ieee.diff for 4.7. + * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. + * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. + * Re-add build dependency on doxygen. + + [ Samuel Thibault ] + * debian/patches/ada-bug564232.diff: Enable on hurd too. + * debian/patches/ada-libgnatprj.diff: Add hurd configuration. + + -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 + +gcc-4.7 (4.7.0-1) unstable; urgency=low + + * GCC 4.7.0 release. + + -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 + +gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low + + * GCC-4.7 release candidate 2 (r185376). + * libgo: Work around parse error of struct timex_ on ARM. + * Update libstdc++6 symbols files. + * Allow building Go from a separate source package. + * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. + * Include -print-multiarch option in gcc --help output. Closes: #656998. + * Disable Go on mips* (PR go/52586). + + -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 + +gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low + + * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. + * Always configure with --enable-gnu-unique-object. LP: #949805. + * Enable Go for ARM on releases with working getcontext/setcontext. + + -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 + +gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low + + * GCC-4.7 release candidate 1 (r184777). + + [ Marcin Juszkiewicz ] + * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. + + [ Matthias Klose ] + * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, + but return ENOSYS. + * Fix multiarch build on ia64. + * Fix path calculation for the libstdc++ -gdb.py file when installed into + multiarch locations. Closes: #661385. LP: #908163. + * Disable Go on sparc (libgo getcontext/setcontext check failing). + + [ Thorsten Glaser ] + * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. + + [ Jonathan Nieder ] + * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support + (Eugene V. Lyubimkin). Closes: #584572. + * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks + pre-multiarch gcc. Closes: #651550. + * libstdc++6: Lower priority from required to important. Closes: #661118. + + [Samuel Thibault] + * Remove local patch, integrated upstream. Closes: ##661859. + + -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 + +gcc-4.7 (4.7-20120210-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). + * kbsd-gnu.diff: Remove, integrated upstream. + * Strip whitespace from with_libssp definition. Closes: #653255. + * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. + * Fix control file generation for cross packages. LP: #913734. + + -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 + +gcc-4.7 (4.7-20120205-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). + * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. + * libgo: Fix ioctl macro extracton. + * Fix PR middle-end/52074, ICE in libgo on powerpc. + * Revert: * Install static libc++{98,11} libraries. + * Don't strip a `/' sysroot from the C++ include directories. + Closes: #658442. + + -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 + +gcc-4.7 (4.7-20120129-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). + * Configure --with-sysroot for wheezy and sid. + * Install static libc++{98,11} libraries. + * Install libstdc++ gdb.py file into /usr/lib/debug. + * Just copy libstdc++convenience.a for the libstdc++_pic installation. + * Remove trailing dir separator from system root. + + -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 + +gcc-4.7 (4.7-20120121-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). + + [ Matthias Klose ] + * Fix C++ include paths when configured --with-system-root. + + [ Marcin Juszkiewicz ] + * Fix control file generation for ARM multiarch cross builds. + + -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 + +gcc-4.7 (4.7-20120107-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). + + * On armel/armhf, allow g*-multilib installation using the runtime + libraries of the corresponding multiarch architecture. + * Fix location of .jinfo files. Addresses: #654579. + * Replace Fortran 95 with Fortran in package descriptions. + + -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 + +gcc-4.7 (4.7-20111231-1) experimental; urgency=low + + * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). + + [ Aurelien Jarno ] + * Re-enable parallel builds on kfreebsd-i386, as the problem from bug + #637236 only affects kfreebsd-amd64. + + [ Matthias Klose ] + * Fix generating libphobos dependency for gdc. Addresses: #653078. + * Link libmudflapth.so with -lpthread. + + -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 + +gcc-4.7 (4.7-20111222-1) experimental; urgency=low + + * Update to SVN 20111222 (r182617) from the trunk. + + [Matthias Klose] + * Remove obsolete ARM patch. + * Install loongson.h header. + * Update libgcc and libstdc++ symbols files. + + [Samuel Thibault] + * Update hurd patch for 4.7, fixing build failure. Closes: #652693. + + [Robert Millan] + * Update kbsd-gnu.diff for the trunk. + + -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 + +gcc-4.7 (4.7-20111217-2) experimental; urgency=low + + * Don't provide 4.6.x symlinks. + * Disable multilib for armhf. + * Fix spu installation. + + -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 + +gcc-4.7 (4.7-20111217-1) experimental; urgency=low + + * GCC-4.7 snapshot build. + - Including the GFDL documentation; will stay in experimental + until the 4.7.0 release sometime next year. + * Update patches for the trunk. + * Update symbols files. + * Build libitm packages. + + -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 + +gcc-4.6 (4.6.2-9) unstable; urgency=medium + + * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. + - Fix PR c++/51331. + * Fix build dependencies for armel/armhf. + + -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 + +gcc-4.6 (4.6.2-8) unstable; urgency=low + + * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. + - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, + PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, + PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, + PR fortran/51075. + + [ Matthias Klose ] + * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. + + [Ludovic Brenta] + Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low + [Євгеній Мещеряков] + * debian/patches/pr47818.diff: new. Fixes: #614402. + * debian/rules.patch: apply it. + + Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low + [Ludovic Brenta] + * Suggest ada-reference-manual-{html,info,pdf,text} instead of just + ada-reference-manual which no longer exists. + * Do not suggest gnat-gdb, superseded by gdb. + * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict + with their 4.4 counterparts and priority optional packages may not + conflict with one another, per Policy 2.5. + + -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 + +gcc-4.6 (4.6.2-7) unstable; urgency=medium + + * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. + - Fix PR rtl-optimization/51469, PR tree-optimization/51466, + PR tree-optimization/50078, PR target/51408, PR fortran/51310, + PR fortran/51448. + + -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 + +gcc-4.6 (4.6.2-6) unstable; urgency=low + + * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. + - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), + PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, + PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), + PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, + PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, + PR middle-end/51323 (LP: #897583), PR middle-end/50074, + PR middle-end/50074. + + [ Matthias Klose ] + * Run the libstdc++ testsuite on all architectures again. Closes: #622699. + * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. + * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. + * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. + * Install the libstdc++.so-gdb.py file. LP: #883269. + * Fix PR c++/50114, backport from trunk. LP: #827806. + * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. + * Update the Linaro support to the 4.6 branch. + + [ Marcin Juszkiewicz ] + * Fix issues with gcc-snapshot cross builds. + * Allow building Linaro binary packages in a single package. + * Apply hardening patches for cross builds when enabled for native builds. + + -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 + +gcc-4.6 (4.6.2-5) unstable; urgency=low + + * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. + - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, + PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, + PR target/50979, PR target/4810, PR rtl-optimization/51187, + PR target/50493, PR target/49992, PR target/49641, PR c++/51150, + PR target/50678, PR libstdc++/51142, PR libstdc++/51133. + + [ Matthias Klose ] + * Use the default gcc as stage1 compiler for all architectures. + + [ Marcin Juszkiewicz ] + * debian/control.m4: Use BASEDEP in more places. + * Work around debhelper not calling the correct strip for cross builds. + * Drop dpkg-cross build dependency for cross builds. + + -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 + +gcc-4.6 (4.6.2-4) unstable; urgency=low + + * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. + - Fix PR target/50691, PR c++/50901, PR target/50945, + PR rtl-optimization/47918, PR libstdc++/50880. + + * Configure the armel build by explicitly passing --with-arch=armv4t + --with-float=soft. + * libffi: Simplify PowerPC assembly and avoid CPU-specific string + instructions (Kyle Moffett). + * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. + + -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 + +gcc-4.6 (4.6.2-3) unstable; urgency=low + + * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS + enables them (continued investigation for #637236). + + -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 + +gcc-4.6 (4.6.2-2) unstable; urgency=low + + * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. + - Fix PR target/50875. + + * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler + package dependency fixes. + * Update the Linaro support to the 4.6 branch. + * Fix gcc-4.6-hppa64 installation. Closes: #646805. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + * Don't use parallel builds on kfreebsd. + + -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 + +gcc-4.6 (4.6.2-1) unstable; urgency=low + + * GCC 4.6.2 release. + + * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. + * Fix stage1 cross-compiler package dependencies (Kyle Moffett). + Closes: #644439. + + -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 + +gcc-4.6 (4.6.1-16) unstable; urgency=medium + + * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. + - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, + PR tree-optimization/50700, PR c/50565 (closes: #642144), + PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, + PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, + PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, + PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, + PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, + PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, + PR fortran/50016, PR target/50737. + + [ Matthias Klose ] + * Fix libjava installation into /usr/lib/gcc//4.6. + * Fix powerpc and ppc64 libffi builds (Kyle Moffett). + * Apply proposed patch for PR target/50350. Closes: #642313. + * Re-apply the fix for PR tree-optimization/49911 on ia64. + * Apply proposed patch for PR target/50106 (ARM). + + [Xavier Grave] + * debian/patches/address-clauses-timed-entry-calls.diff: new; backport + bug fix about address clauses and timed entry calls. + + [Ludovic Brenta] + * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy + implementations of some optional POSIX Threads functions missing in + GNU/kFreeBSD. Closes: #642128. + + -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 + +gcc-4.6 (4.6.1-15) unstable; urgency=low + + * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. + - Fix PR target/50652. + * Update the Linaro support to the 4.6-2011.10-1 release. + * Fix gcc-spu installation. + * Restore symlink for subminor GCC version. Closes: #644849. + + -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 + +gcc-4.6 (4.6.1-14) unstable; urgency=low + + * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. + - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, + PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, + PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, + PR libstdc++/48698. + + [ Matthias Klose ] + * Configure and build to install into /usr/lib/gcc//4.6. + Closes: #643891. + * libgcc1: Versioned break to gcc-4.3. + * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. + * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). + + [ Marcin Juszkiewicz ] + * Enable gcc-snapshot cross builds. + + [ Iain Buclaw ] + * Port gdc to GCC-4.6. + + [ Aurelien Jarno ] + * Backport fix for PR target/49696 from the trunk (Closes: #633443). + + -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 + +gcc-4.6 (4.6.1-13) unstable; urgency=low + + * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. + - Fix PR tree-optimization/50472, PR tree-optimization/50413, + PR tree-optimization/50412, PR c++/20039, PR c++/42844, + PR libstdc++/50510, PR libstdc++/50509. + * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. + * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). + + -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 + +gcc-4.6 (4.6.1-12) unstable; urgency=low + + * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. + - Fix PR target/50464, PR target/50341, PR middle-end/49886, + PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). + + -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 + +gcc-4.6 (4.6.1-11) unstable; urgency=low + + * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. + - Fix PR c++/50424, PR c++/48320, PR fortran/49479. + + [ Matthias Klose ] + * Update the Linaro support to the 4.6-2011.09-1 release. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 + +gcc-4.6 (4.6.1-10) unstable; urgency=medium + + * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. + - Fix PR middle-end/50266, PR tree-optimization/49911, + PR tree-optimization/49518, PR tree-optimization/49628, + PR tree-optimization/49628, PR target/50310, PR target/50289, + PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. + - Revert fix for PR middle-end/49886, causing PR middle-end/50295. + + -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 + +gcc-4.6 (4.6.1-9) unstable; urgency=low + + * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. + - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, + PR c++/50157, PR fortran/50163, PR libfortran/50192, + PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, + PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, + PR libstdc++/50268. + + [ Matthias Klose ] + * Fix gcc --print-multilib-osdir for non-biarch architectures. + * Fix multiarch for non-biarch builds. Closes: #635860. + * Move the lto plugin to the cpp packge. Closes: #639531. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #639303. + + -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 + +gcc-4.6 (4.6.1-8) unstable; urgency=low + + * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. + Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, + PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, + PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, + PR c++/46862. + + * Properly disable multilib builds for selected libraries on armel and armhf. + * Update and re-enable the gcc-ice patch. + * Update and re-enable the gcc-cloog-dl patch. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Re-work the multiarch patches. + * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. + * Omit the target alias from the go libdir. + * Linaro updates from the 4.6-2011.07-stable branch. + * Revert: + - libjava: Build with the system libffi PIC library. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 + +gcc-4.6 (4.6.1-7) unstable; urgency=low + + * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. + - Fix PR middle-end/49923. + + [ Matthias Klose ] + * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. + * Don't hard-code build dependency on gcc-multilib. + * Build-depends on python when building java. + * Fix thinko in java::lang::Class::finalize (taken from the trunk). + * Add support for ARM 64bit sync intrinsics (David Gilbert). Only + enable for armv7 or better. + * libjava: Build with the system libffi PIC library. + * Disable gnat multilib builds on armel and armhf. + + Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + + Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low + + [Євгеній Мещеряков] + * debian/patches/ada-mips.diff: do not use the alternate stack on mips, + as on mipsel. Closes: #566234. + + [Ludovic Brenta] + * debian/patches/pr49940.diff: new; copy the definition of function + lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. + Closes: #636291. + * debian/patches/pr49944.diff: new. Closes: #636692. + * debian/patches/pr49819.diff: drop, merged upstream. + + -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 + +gcc-4.6 (4.6.1-6) unstable; urgency=low + + * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. + - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, + PR target/49866, PR tree-optimization/49671, PR target/39386, + PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, + PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), + PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, + PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, + PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, + PR c++/49988, PR fortran/49112. + + [ Aurelien Jarno ] + * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. + * Add s390x support. + + [ Marcin Juszkiewicz ] + * Fixes for multilib cross builds. LP: #816852, #819147. + + [ Matthias Klose ] + * Fix libgo installation for cross builds. + * Only apply arm-multilib when building for multilib. + + -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 + +gcc-4.6 (4.6.1-5) unstable; urgency=low + + * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. + - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, + PR target/49746, PR middle-end/49732, PR tree-optimization/49725, + PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, + PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, + PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, + PR fortran/49708, PR libstdc++/49293. + * Update the Linaro support to the 4.6-2011.07-0 release. + - Fix PR target/49335. LP: #791327. + * Update gcc-multiarch: + - Add -print-multiarch option. + - Fix library path for non-default multilib(s). + - Handle `.' in MULTILIB_DIRNAMES. + * Add support to build multilib on armel and armhf, only enable it for + Ubuntu/oneiric. LP: #810360. + * cpp-4.6: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + * Fix PR c++/49756, backport from trunk. LP: #721378. + * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 + +gcc-4.6 (4.6.1-4) unstable; urgency=low + + * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. + - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, + PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, + PR target/49487, PR tree-optimization/49651, PR ada/48711. + + [ Matthias Klose ] + * Build Go on alpha for gcc-snapshot builds. + * For multicore ARM, clear both caches, not just the dcache (proposed + patch by Andrew Haley). + * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. + LP: #807573. + * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit + off function pointers (Richard Sandiford). LP: #721531. + + [ Marcin Juszkiewicz ] + * Define DEB_TARGET_MULTIARCH macro. + * debian/rules2: Macro and configuration consolidation. + + -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 + +gcc-4.6 (4.6.1-3) unstable; urgency=medium + + * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. + - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, + PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, + PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, + PR c++/48157, PR c/49644, PR fortran/48926. + - Apparently fixes a boost issue. Closes: #632938. + * Apply proposed patch for PR fortran/49690. Closes: #631204. + + * README.Debian: New section 'Former and/or inactive maintainers'. + + -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 + +gcc-4.6 (4.6.1-2) unstable; urgency=medium + + * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. + - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, + PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, + PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, + PR target/49089, PR rtl-optimization/49014, PR target/48273, + PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, + PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, + PR fortran/49540. + + [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave] + * Adjust patches to GCC 4.6. + * Remove patches merged upstream: + - debian/patches/ada-arm-eabi.diff + - debian/patches/ada-bug589164.diff + - debian/patches/ada-bug601133.diff + - debian/patches/ada-gnatvsn.diff + - debian/patches/ada-mips.diff + - debian/patches/ada-polyorb-dsa.diff + + [Ludovic Brenta] + * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH + and ADA_OBJECTS_PATH so that the GNAT testsuite runs. + * debian/patches/adalibgnat{vsn,prj}.diff, + debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct + multiarch directory. + * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version + of the Ada run-time library to a new package, gnat-4.6-sjlj. + * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, + libgnatprj4.6-dbg): pre-depend on multiarch-support and add + Multi-Arch: same. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + + [ Matthias Klose ] + * Do not install the spu and hppa64 cross compilers into the multiarch path. + * Update the Linaro support to 20110704. + + [ Thorsten Glaser ] + * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. + - debian/rules.defs: Remove m68k from locale_no_cpus. + - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. + - debian/patches/pr43804.diff: Fix backported from SVN. + - debian/rules.patch: Add pr43804. + + -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 + +gcc-4.6 (4.6.1-1) unstable; urgency=low + + * GCC 4.6.1 release. + + [Ludovic Brenta] + * debian/patches/ada-gnatvsn.diff, + debian/patches/ada-polyorb-dsa.diff: remove backports, no longer + needed. + + [ Matthias Klose ] + * Fix plugin header installation. Closes: #631082. + * Stop passing -Wno-error=unused-but-set-parameter and + -Wno-error=unused-but-set-variable if -Werror is present. + This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. + * gcc-4.6-spu: Install the lto plugin. Closes: #631772. + + -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 + +gcc-4.6 (4.6.0-14) unstable; urgency=low + + * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. + - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, + PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, + PR tree-optimization/49419 (closes: #630567). + * Update the Linaro support to the 4.6-2011.06-0 release. + + -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 + +gcc-4.6 (4.6.0-13) unstable; urgency=low + + * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. + * Extend multiarch support for mips/mipsel. + * Fix control files for gcj multiarch builds. + * Update libstdc++ symbols files. + + -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 + +gcc-4.6 (4.6.0-12) unstable; urgency=medium + + * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. + - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, + PR tree-optimization/49243, PR c++/49134, PR target/49238, + PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. + * Fix c++ biarch header installation on i386. LP: #793411. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Adjust build dependency on multiarch glibc. + + -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 + +gcc-4.6 (4.6.0-11) unstable; urgency=low + + * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. + - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, + PR target/43700, PR target/43995, PR tree-optimization/49217, + PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, + PR c++/49176, PR fortran/48955, PR tree-optimization/49038, + PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, + PR c++/49276, PR fortran/49265, PR fortran/45786. + * Configure the hppa64 and spu cross builds with --enable-plugin. + + -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 + +gcc-4.6 (4.6.0-10) unstable; urgency=high + + * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. + - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, + PR target/49128, PR tree-optimization/44897, PR target/49133, + PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, + PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, + PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, + PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, + PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, + PR libobjc/48177. + * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. + Closes: #627795. + * Proposed fix for PR fortran/PR48955. + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 + +gcc-4.6 (4.6.0-9) unstable; urgency=low + + * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. + - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, + PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, + PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. + * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around + a bootstrap issue. + + -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 + +gcc-4.6 (4.6.0-8) unstable; urgency=low + + * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. + - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, + PR tree-optimization/48822, PR debug/48967, PR debug/48159, + PR target/48857, PR target/48495, PR tree-optimization/48837, + PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, + PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, + PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, + PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, + PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, + PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, + PR tree-optimization/49079, PR tree-optimization/49073. + * Update the Linaro support to the 4.6-2011.05-0 release. + * pr45979.diff: Update to the version from the trunk. + + -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 + +gcc-4.6 (4.6.0-7) unstable; urgency=low + + * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. + - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, + PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, + PR target/48262, PR fortran/48462, PR fortran/48746, + PR fortran/48810, PR fortran/48800, PR libstdc++/48760, + PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, + PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, + PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, + PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, + PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. + + * Fix issue with volatile bitfields vs. inline asm memory constraints, + taken from the trunk, apply for ARM only. Addresses: #625825. + + -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 + +gcc-4.6 (4.6.0-6) unstable; urgency=low + + * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. + - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, + PR c/48742, PR debug/48768, PR tree-optimization/48734, + PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, + PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, + PR preprocessor/48740. + * Update the ibm/gcc-4_6-branch to 20110428. + * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. + + -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 + +gcc-4.6 (4.6.0-5) unstable; urgency=low + + * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. + - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, + PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, + PR c++/46304, PR target/48708, PR middle-end/48695. + + * Update the Linaro support to the 4.6-2011.04-0 release. + + -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 + +gcc-4.6 (4.6.0-4) unstable; urgency=medium + + * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. + - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, + PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, + PR libstdc++/48635, PR libfortran/47571. + + [ Aurelien Jarno ] + * Enable SSP on mips/mipsel. + + [ Matthias Klose ] + * (Build-)depend on binutils 2.21.51. + + -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 + +gcc-4.6 (4.6.0-3) unstable; urgency=high + + * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. + - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, + PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, + PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, + PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, + PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, + PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, + PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, + PR libstdc++/48465, PR middle-end/48591, PR target/48605, + PR middle-end/48591, PR target/48090, PR tree-optimization/48195, + PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, + PR fortran/48360, PR fortran/48456, PR libstdc++/48631, + PR libstdc++/48635, PR libstdc++/48476. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Add mudflap support for varargs (patch taken from the trunk). + * gcc-4.6-plugin-dev: Install gtype.state. + * Bootstrap with gcc-4.4 -g -O2 on armel. + * Fix linker plugin configuration. Closes: #620661. + * Update the Linaro support for GCC-4.6. + * gcc-snapshot builds: + - Fix build with multiarch changes. + - Use gcc-snapshot as the bootstrap compiler on armel. + - Re-enable building java in the gcc-snapshot package. + * Build supporting multiarch on wheezy/sid. + * Adjust (build)-dependency to new libgmp-dev name. + + [ Marcin Juszkiewicz ] + * Configure stage1 cross builds with --disable-libquadmath. + + -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 + +gcc-4.6 (4.6.0-2) unstable; urgency=low + + * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. + - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, + PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, + PR other/48179, PR other/48221, PR other/48234, PR target/48237, + PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, + PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, + PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, + PR c++/47570, PR preprocessor/48248, PR c++/48319. + + [ Matthias Klose ] + * Update NEWS files. + * Configure the hppa64 cross build with --disable-libquadmath. + * Don't build armhf from the Linaro branch. + * Don't try to build Go on sh4. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 + +gcc-4.6 (4.6.0-1) unstable; urgency=low + + * GCC 4.6.0 release. + + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR target/47487 ICE building libgo, taken from the trunk. + * Merge multiarch changes from the gcc-4.5 package. + * Apply proposed patch to reduce the overhead of dwarf2 location tracking. + Addresses: #618748. + + -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 + +gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low + + * GCC 4.6.0 release candidate 2. + + -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgfortran symbols files. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low + + * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. + + [ Matthias Klose ] + * Update gcc-default-ssp* patches for the release candidate. + * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary + for rebuild tests). + * Always configure --with-plugin-ld, always install liblto_plugin.so. + + [ Marcin Juszkiewicz ] + * Add conflicts with -4.5-*dev packages. Closes: #618450. + + [ Petr Salinger] + * Disable lock-2.c test on kfreebsd-*. Closes: #618988. + * Re-enable parallel builds on kfreebsd. + * Package lto_plugin for kfreebsd-* and Hurd. + + -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 + +gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low + + * Build from the GCC 4.6.0 release candidate tarball. + + [ Matthias Klose ] + * Disable Go on powerpc. Closes: #615827. + * Fix lintian errors for the -plugin-dev package. + * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. + * Disable parallel builds on kfreebsd (Petr Salinger). + * Update gmp (build) dependencies. + * Update GFDL compliant builds. Closes: #609161. + * For GFDL compliant builds, build a dummy s-tm-texi without access + to the texinfo sources. + + [ Aurelien Jarno ] + * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and + sparc64 from gcc-4.5. + + -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 + +gcc-4.6 (4.6-20110227-1) experimental; urgency=low + + [ Matthias Klose ] + * Update libquadmath symbols file. + * gcc-4.6-plugin-dev: Install gengtype. + + [ Sebastian Andrzej Siewior ] + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 + +gcc-4.6 (4.6-20110216-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 + +gcc-4.6 (4.6-20110125-1) experimental; urgency=low + + * debian/copyright: Add unicode copyright for + libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. + + -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 + +gcc-4.6 (4.6-20110123-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 + +gcc-4.6 (4.6-20110116-1) experimental; urgency=low + + * GCC snapshot, taken from the trunk. + * Update patches for the trunk. + * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary + for rebuild tests). + * Work around PR libffi/47248, force a read only eh frame section. + + -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 + +gcc-4.6 (4.6-20110105-1) experimental; urgency=low + + [ Matthias Klose ] + * Rename and update libobjc symbols files. + * Update cloog/ppl build dependencies. + * Adjust libstdc++ configure and paths for stylesheets and dtds. + * Update copyright for libquadmath, libgo, gcc/go/gofrontend. + * Enable Go for more architectures. + * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc + + [ Kees Cook ] + * Update hardening patches for GCC-4.6. LP: #696990. + + -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 + +gcc-4.6 (4.6-20101220-1) maverick; urgency=low + + * GCC snapshot, taken from the trunk. + + -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 + +gcc-4.5 (4.5.2-7) unstable; urgency=low + + * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. + - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, + PR libfortran/48066, PR target/48171, PR target/47862. + PR preprocessor/48192. + + [ Steve Langasek ] + * Make dpkg-dev versioned build-dependency conditional on whether we want + to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by architecture; + but don't enable this yet, we still need to wait for dpkg-dev. + * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), + use it as our multiarch path. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. + * OTOH, libgcj_bc *is* in $(libdir). + * the spu build is not a multiarch build; look in the correct + non-multiarch directory. + * debian/rules2: pass --libdir also for stageX builds, needed in order to + successfully build for multiarch. + * debian/rules2: $(usr_lib) for a cross-build should not include the + multiarch dir as part of the path. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. + * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of + in README.Debian, so that the individual files are architecture-neutral + and play nicely with multiarch. LP: #737846. + * Add a comment at the bottom of README.Debian with a pointer to the new + file listing the patches. + + [ Loic Minier ] + * Rework config/vxworks-dummy.h installation snippet to test + DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% + sh% sparc%) as to also install this header on other ports targetting the + relevant upstream CPUs such as armhf. Add a comment pointing at the + upstream bug. + * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches + arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals + armel. Add a comment pointing at the Debian bug and indicating that this + is only useful for older dpkg-dev versions. + * debian/rules.def: fix "armel" entry to "arm" in list of + DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. + * debian/rules2: drop commented out GCC #42509 workaround as this was fixed + upstream in 4.4+. + * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for + arm as ths is what the Debian arm, armel and armhf port use. + * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid + duplication, as a comment called out for. + * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding + whether to enable profiledbootstrap. + * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. + * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. + * Patched a couple of comments mentioning armel to also mention armhf. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. + + [ Matthias Klose ] + * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, + taken from the trunk. + * Fix PR preprocessor/48192, make conditional macros not defined for + #ifdef, proposed patch. + * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. + * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields + again on armel for Linaro builds. LP: #675347. + + -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 + +gcc-4.5 (4.5.2-6) unstable; urgency=low + + * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. + - Fix PR tree-optimization/45967, PR tree-optimization/47278, + PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, + PR c++/47488, PR libgfortran/47778, PR c++/48029. + + [ Steve Langasek ] + * Make sure our libs Pre-Depend on 'multiarch-support' when building for + multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we need to be sure we + are building against a libc-dev that supports the corresponding paths. + (the referenced version number for this needs to be bumped once this is + officially in the archive.) + + [ Matthias Klose ] + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. + * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). + * Undefine LINK_EH_SPEC before redefining it to turn off warnings on + powerpc. + * Update gmp (build) dependencies. + + [ Aurelien Jarno ] + * Add symbol files on kfreebsd-i386. + * Add symbol files on kfreebsd-amd64. + * Add symbol files on sparc64. + * Add symbol files on sh4. + + -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 + +gcc-4.5 (4.5.2-5) unstable; urgency=low + + * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. + - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, + PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, + PR tree-optimization/46723, PR target/45261, PR target/45808, + PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, + PR target/42240, PR fortran/47878, PR libfortran/47694. + * Update the Linaro support to the 4.5-2011.03-0 release. + - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, + LP: #721021, LP: #709453. + + -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 + +gcc-4.5 (4.5.2-4) unstable; urgency=low + + * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. + - Fix PR target/43653, PR fortran/47775, PR target/47840, + PR libfortran/47830. + + [ Matthias Klose ] + * Don't apply a patch twice. + * Build libgcc_s with -fno-stack-protector, when not building from the + Linaro branch. + * Backport proposed fix for PR tree-optimization/46723 from the trunk. + + [ Steve Langasek ] + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + + [ Sebastian Andrzej Siewior ] + * PR target/44364 + * Remove -many on powerpcspe (__SPE__) + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe) + + -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 + +gcc-4.5 (4.5.2-3) experimental; urgency=low + + * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44469, PR tree-optimization/47411, + PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, + PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, + PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, + PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. + * Update the Linaro support to the 4.5 2011.02-0 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 + +gcc-4.5 (4.5.2-2) experimental; urgency=low + + * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. + - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, + PR target/46685, PR target/45447, PR tree-optimization/46758, + PR tree-optimization/45552, PR tree-optimization/43023, + PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, + PR target/43309, PR fortran/46874, PR tree-optimization/47286, + PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, + PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, + PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, + PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, + PR tree-optimization/47167, PR target/47318, PR target/46655, + PR fortran/47394, PR libstdc++/47354. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2011.01-1 release. + * Don't build packages now built from the gcc-4.6 package for architectures + with a sucessful gcc-4.6 build. + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all + (LP: #691722). + + [ Marcin Juszkiewicz ] + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 + +gcc-4.5 (4.5.2-1) experimental; urgency=low + + * GCC 4.5.2 release. + + -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 + +gcc-4.5 (4.5.1-12) experimental; urgency=low + + * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. + - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, + PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, + PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, + PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, + PR ada/40777. + + [ Matthias Klose ] + * Use lib instead of lib64 as the 64bit system dir on biarch + architectures defaulting to 64bit. Closes: #603597. + * Fix powerpc and s390 builds when biarch is disabled. + * Backport PR bootstrap/44768, miscompilation of dpkg on ARM + with -O2 (Chung-Lin Tang). LP: #674146. + * Update libgcc2 symbols file. Closes: #602099. + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 + +gcc-4.5 (4.5.1-11) experimental; urgency=low + + * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. + - Fix PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Closes: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 + +gcc-4.5 (4.5.1-10) experimental; urgency=low + + * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. + - Fix PR rtl-optimization/44691, PR tree-optimization/46355, + PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, + PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, + PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, + PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, + PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, + PR tree-optimization/46167, PR target/46098, PR target/45946, + PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, + PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, + PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, + PR fortran/46007, PR c++/46024. + * Update the Linaro support to the 4.5 2010.11 release. + * Update gcc-4.5 source dependencies. Closes: #600503. + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 + +gcc-4.5 (4.5.1-9) experimental; urgency=low + + * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. + - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, + PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, + PR libffi/45677, PR middle-end/45869, PR middle-end/45569, + PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, + PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, + PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, + PR tree-optimization/45982. + + [ Matthias Klose ] + * Update the Linaro support to the 4.5 2010.10 release. + * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when + java was built from the same source package). Addresses: #599976. + * Remove the gpc packaging support. + * Fix libmudflap.so symlink. Addresses: #600161. + * Fix pch test failures with heap randomization on armel (PR pch/45979). + + [ Kees Cook ] + * Don't enable -fstack-protector with -ffreestanding. + + -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 + +gcc-4.5 (4.5.1-8) experimental; urgency=low + + * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. + - Fix PR middle-end/44763, PR java/44095, PR target/35664, + PR rtl-optimization/41085, PR rtl-optimization/45051, + PR target/45694, PR middle-end/45678, PR middle-end/45678, + PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, + PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, + PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, + PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, + * Find 32bit system libraries on sparc64, s390x. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + * Don't include info files and man pages in hppa64 and spu builds. + Closes: #597435. + * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) + (Brian M. Carlson) Closes: #507514. + + -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 + +gcc-4.5 (4.5.1-7) experimental; urgency=low + + * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. + - Fix PR target/40959, PR middle-end/45567, PR debug/45660, + PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, + PR target/42313, PR target/44651. + * Add support to build from the Linaro 4.5 2010.09 release. + * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. + + -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 + +gcc-4.5 (4.5.1-6) experimental; urgency=low + + * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. + - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, + PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, + PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, + PR fortran/45019, PR libstdc++/45398. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Marcin Juszkiewicz ] + * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. + * Build the gcc-4.5-plugin-dev for stage1 cross builds. + * Fix priorities and sections for some cross packages. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. + + -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 + +gcc-4.5 (4.5.1-5) experimental; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 + +gcc-4.5 (4.5.1-4) experimental; urgency=low + + * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. + - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, + PR middle-end/45423, PR c/45079, PR tree-optimization/45393, + PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. + + [ Matthias Klose ] + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mipsel and sparc64 too. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Al Viro ] + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 + +gcc-4.5 (4.5.1-3) experimental; urgency=low + + * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. + - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, + PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, + PR tree-optimization/45260, PR c++/45315. + + [ Matthias Klose ] + * Don't run the libstdc++ testsuite on armel on the buildds. + * Integrate and extend bi/tri-arch cross builds patches. + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + + [ Al Viro ] + * Bi/tri-arch cross builds patches. + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + + -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 + +gcc-4.5 (4.5.1-2) experimental; urgency=low + + * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. + - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, + PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, + PR target/44805, PR middle-end/45034, PR tree-optimization/45109, + PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, + PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, + PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), + PR libstdc++/45283, PR target/45296. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Configure with --enable-checking+release. LP: #612822. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + * Apply proposed patch for PR middle-end/45292. + * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 + +gcc-4.5 (4.5.1-1) experimental; urgency=low + + * GCC-4.5.1 release. + * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. + - Fix PR tree-optimization/45052, PR target/43698. + * Apply proposed fixes for PR c++/45112, PR c/45079. + * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package + on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + * Stop building java packages from the gcc-4.5 source package. + + -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 + +gcc-4.5 (4.5.0-10) experimental; urgency=low + + * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. + - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. + * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). + * Update libstdc++6 symbols files. + + -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 + +gcc-4.5 (4.5.0-9) experimental; urgency=low + + * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post + GCC-4.5.1 release candidate 1). + - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, + PR tree-optimization/44977, PR c++/44996, PR fortran/44929, + PR fortran/30668, PR fortran/31346, PR fortran/34260, + PR fortran/40011. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files to the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + + -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 + +gcc-4.5 (4.5.0-8) experimental; urgency=low + + * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. + - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, + PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, + PR tree-optimization/43801, PR target/44575, PR debug/44104, + PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, + PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, + PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, + PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, + PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, + PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, + PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, + PR target/43888, PR tree-optimization/44284, PR middle-end/44828, + PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, + PR fortran/44847. + + [ Marcin Juszkiewicz ] + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584819. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 + +gcc-4.5 (4.5.0-7) experimental; urgency=low + + * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. + - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, + PR target/43740, PR libstdc++/44630 (closes: #577458), + PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, + PR fortran/44556, PR c/44555. + - Update libstdc++'s pretty printer for python2.6. Closes: #585202. + + [ Matthias Klose ] + * Fix libstdc++ symbols files for powerpc and sparc. + * Add maintainer scripts for cross packages. + + [ Samuel Thibault ] + * Update hurd patch for 4.5, fixing build failure. Closes: #584454, + #584819. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + + -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 + +gcc-4.5 (4.5.0-6) experimental; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: + PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, + PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, + PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, + PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, + PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, + PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, + PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, + PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. + * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Fix PR bootstrap/43847, --enable-plugin for cross builds. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Update libgcc and libstdc++ symbols files. + + [ Aurelien Jarno ] + + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 + +gcc-4.5 (4.5.0-5) experimental; urgency=low + + * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: + PR target/44338, PR middle-end/44337, PR tree-optimization/44182, + PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Fix passing the expanded -iplugindir option. + * Disable broken profiled bootstrap on alpha. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 + +gcc-4.5 (4.5.0-4) experimental; urgency=low + + * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: + PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, + PR lto/44196, PR target/43733, PR target/44245, PR target/43869, + PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, + PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, + PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, + PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, + PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, + PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Fix setting biarch_cpu macro. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. + + -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 + +gcc-4.5 (4.5.0-3) experimental; urgency=low + + * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: + PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, + PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, + PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, + PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, + PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, + PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, + PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, + PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, + PR debug/44028, PR rtl-optimization/44012, PR target/44046, + PR documentation/44016, PR fortran/44036, PR fortran/40728, + PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, + PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, + PR fortran/43591, PR fortran/44135, PR libstdc++/43259. + + [ Matthias Klose ] + * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. + * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. + * Backport two libjava fixes from the trunk to run josm with gcj. + * Ubuntu only: + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Update configury to be able to target i686 instead of i486 on i386. + + [ Aurelien Jarno] + * Don't link with --hash-style=both on mips/mipsel as GNU hash is not + compatible with the MIPS ABI. + * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit + mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). + + -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 + +gcc-4.5 (4.5.0-2) experimental; urgency=low + + * Update to SVN 20100419 from the gcc-4_5-branch. + - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, + PR fortran/31538, PR fortran/30073, PR target/43662, + PR tree-optimization/43572, PR tree-optimization/43771. + * Install the linker plugin. + * Search the linker plugin as a readable, not an executable file. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + * Sequel to PR40521, fix -g to generate .eh_frame on ARM. + * On ARM, let gcj pass --no-merge-exidx-entries to the linker. + * Build-depend/depend on binutils snapshot. + * Update NEWS.html and NEWS.gcc. + + -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 + +gcc-4.5 (4.5.0-1) experimental; urgency=low + + * GCC 4.5.0 release. + * Always apply biarch patches. + * Build the lto-linker plugin again. Closes: #575448. + * Run the libstdc++v3 testsuite on armel again. + * Fix --enable-libstdcxx-time documentation, show configure result. + * On linux targets always pass --no-add-needed to the linker. + * Update the patch to search for plugins in a default plugin directory. + * Fix java installations in snapshot builds. + * Configure --with-plugin-ld=ld.gold. + * Linker selection: ld is used by default, to use the gold linker, + pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr + is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld + for ld.bfd or /usr/lib/gold-ld for ld.gold. + * Don't apply the gold-and-ld patch for now. + * Stop building the documentation for dfsg compliant builds. Closes: #571759. + + -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 + +gcc-4.5 (4.5-20100404-1) experimental; urgency=low + + * Update to SVN 20100404 from the trunk. + * Fix build failures building cross compilers configure --with-ld. + * lib32gcc1: Set priority to `extra'. + * Apply proposed patch to search for plugins in a default plugin directory. + * In snapshot builds, use for javac/ecj1 the jvm provided by the package. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + + -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 + +gcc-4.5 (4.5-20100321-1) experimental; urgency=low + + * Update to SVN 20100321 from the trunk. + * gcj-4.5-jre-headless: Stop providing java-virtual-machine. + * gcj-4.5-plugin-dev: Don't suggest mudflap packages. + * Apply proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 + +gcc-4.5 (4.5-20100227-1) experimental; urgency=low + + * Update to SVN 20100227 from the trunk. + * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when + defaulting to thumb mode (Timeouts on the Ubuntu buildd). + + -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 + +gcc-4.5 (4.5-20100222-1) experimental; urgency=low + + * Update to SVN 20100222 from the trunk. + - Install additional header files needed by plugins. Closes: #562881. + * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. + * Update libstdc++6 symbols files. + + -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 + +gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low + + * Update to SVN 20100216 from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + * Don't run the libstdc++-v3 testsuite in thumb mode on armel + to work around buildd timeout (see PR target/42509). + + -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 + +gcc-4.5 (4.5-20100204-1) experimental; urgency=low + + * Update to SVN 20100204 from the trunk. + + -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 + +gcc-4.5 (4.5-20100202-1) experimental; urgency=low + + * Update to SVN 20100202 from the trunk. + - gcc-stack_chk_fail-check.diff: Remove, applied upstream. + * Update libstdc++6 symbol files. + * Build gnat in snapshot builds on arm. + * Configure with --enable-checking=yes for snapshot builds, and for + 4.5 builds before the release. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + * When building the hppa64 cross compiler, add $(builddir)/gcc to + LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. + * On sh4-linux, use sh as java architecture name instead of sh4. + * On armel, build gnat-4.5 using gcc-snapshot. + * Revert the bump of the libgcc soversion on hppa (6 -> 4). + + -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 + +gcc-4.5 (4.5-20100107-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100107 from the trunk. + * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). + * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. + * Build-depend again on autogen. + * Work around PR lto/41569 (installation bug when configured with + --enabled-gold). + * On armel run the testsuite both in arm and thumb mode, when the + distribution is supporthing tumb processors. + * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but + applying libcpp-arm-workaround.diff. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 + +gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low + + * Update to SVN 20100106 from the trunk. + * gcj-4.5-jdk: Include /usr/lib/jvm-exports. + * Rename libgcc symbols file for hppa. + * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap + failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). + * Base the source build-dependency on the package version instead of the + gcc version. + + -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 + +gcc-4.5 (4.5-20100103-1) experimental; urgency=low + + * Update to SVN 20100103 from the trunk. + + [ Samuel Thibault ] + * Update hurd patch for 4.5. Closes: #562802. + + [ Aurelien Jarno ] + * Remove patches/kbsd-gnu-ada.diff (merged upstream). + + [ Matthias Klose ] + * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. + * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Bump libgcc soversion on hppa (4 -> 6). + * Default to v9a (ultrasparc) on sparc*-linux. + + -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 + +gcc-4.5 (4.5-20091226-1) experimental; urgency=low + + * Update to SVN 20091226 from the trunk. + * Fix powerpc spu installation. + * Enable multiarch for sh4. + * Fix libffi multilib test runs. + * Configure the hppa -> hppa64 cross compiler --with-system-zlib. + * gcc-4.5-hppa64: Don't ship info dir file. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + + -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 + +gcc-4.5 (4.5-20091223-1) experimental; urgency=low + + * Update to SVN 20091223 from the trunk. + + [ Matthias Klose ] + * Update hardening patches for 4.5. + * Don't call install-info directly, depend on dpkg | install-info instead. + * Add conflicts with packages built from GCC 4.4 sources. + * On ARM, pass --hash-style=both to ld. + * Update libgfortran3 symbols file. + * Update libstdc++6 symbols file. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 + +gcc-4.5 (4.5-20091220-1) experimental; urgency=low + + * Update to SVN 20091220 from the trunk. + - Remove patches applied upstream: arm-boehm-gc-locks.diff, + arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, + gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, + gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, + gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, + libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, + pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, + s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. + - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, + libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, + libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, + rename-info-files.diff, s390-biarch.diff. + * Stop building the protoize package, removed from the GCC 4.5 sources. + * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. + * libstdc++6-4.5-dbg: Install the python files for use with gdb. + * Build java packages from the gcc-4.5 source package. + + -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow one to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 diff --git a/compat b/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/compat @@ -0,0 +1 @@ +9 diff --git a/control b/control new file mode 100644 index 0000000..161cbc1 --- /dev/null +++ b/control @@ -0,0 +1,2565 @@ +Source: gcc-9 +Section: devel +Priority: optional +Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 4.4.0 +Build-Depends: debhelper (>= 9.20141010), dpkg-dev (>= 1.17.14), g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32] , + libc6.1-dev (>= 2.13-5) [alpha ia64] | libc0.3-dev (>= 2.13-5) [hurd-i386] | libc0.1-dev (>= 2.13-5) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-5), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + m4, libtool, autoconf, + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + zlib1g-dev, systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], + binutils:native (>= 2.33.1), binutils-hppa64-linux-gnu:native (>= 2.33.1) [hppa amd64 i386 x32], + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb:native [!riscv64], nvptx-tools [amd64 ppc64el], + texinfo (>= 4.3), locales-all, sharutils, + procps, gnat-9:native [!m32r !sh3 !sh3eb !sh4eb !m68k], g++-9:native, netbase, libpth-dev, python3:any, + libisl-dev (>= 0.20), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], + dejagnu [!m68k] , coreutils (>= 2.26) | realpath (>= 1.9.12), chrpath, lsb-release, quilt, + pkg-config, libgc-dev, + g++-9-alpha-linux-gnu [alpha] , gobjc-9-alpha-linux-gnu [alpha] , gfortran-9-alpha-linux-gnu [alpha] , gdc-9-alpha-linux-gnu [alpha] , gccgo-9-alpha-linux-gnu [alpha] , gnat-9-alpha-linux-gnu [alpha] , gm2-9-alpha-linux-gnu [alpha] , g++-9-x86-64-linux-gnu [amd64] , gobjc-9-x86-64-linux-gnu [amd64] , gfortran-9-x86-64-linux-gnu [amd64] , gdc-9-x86-64-linux-gnu [amd64] , gccgo-9-x86-64-linux-gnu [amd64] , gnat-9-x86-64-linux-gnu [amd64] , gm2-9-x86-64-linux-gnu [amd64] , g++-9-arm-linux-gnueabi [armel] , gobjc-9-arm-linux-gnueabi [armel] , gfortran-9-arm-linux-gnueabi [armel] , gdc-9-arm-linux-gnueabi [armel] , gccgo-9-arm-linux-gnueabi [armel] , gnat-9-arm-linux-gnueabi [armel] , gm2-9-arm-linux-gnueabi [armel] , g++-9-arm-linux-gnueabihf [armhf] , gobjc-9-arm-linux-gnueabihf [armhf] , gfortran-9-arm-linux-gnueabihf [armhf] , gdc-9-arm-linux-gnueabihf [armhf] , gccgo-9-arm-linux-gnueabihf [armhf] , gnat-9-arm-linux-gnueabihf [armhf] , gm2-9-arm-linux-gnueabihf [armhf] , g++-9-aarch64-linux-gnu [arm64] , gobjc-9-aarch64-linux-gnu [arm64] , gfortran-9-aarch64-linux-gnu [arm64] , gdc-9-aarch64-linux-gnu [arm64] , gccgo-9-aarch64-linux-gnu [arm64] , gnat-9-aarch64-linux-gnu [arm64] , gm2-9-aarch64-linux-gnu [arm64] , g++-9-i686-linux-gnu [i386] , gobjc-9-i686-linux-gnu [i386] , gfortran-9-i686-linux-gnu [i386] , gdc-9-i686-linux-gnu [i386] , gccgo-9-i686-linux-gnu [i386] , gnat-9-i686-linux-gnu [i386] , gm2-9-i686-linux-gnu [i386] , g++-9-mipsel-linux-gnu [mipsel] , gobjc-9-mipsel-linux-gnu [mipsel] , gfortran-9-mipsel-linux-gnu [mipsel] , gdc-9-mipsel-linux-gnu [mipsel] , gccgo-9-mipsel-linux-gnu [mipsel] , gnat-9-mipsel-linux-gnu [mipsel] , gm2-9-mipsel-linux-gnu [mipsel] , g++-9-mips64-linux-gnuabi64 [mips64] , gobjc-9-mips64-linux-gnuabi64 [mips64] , gfortran-9-mips64-linux-gnuabi64 [mips64] , gdc-9-mips64-linux-gnuabi64 [mips64] , gccgo-9-mips64-linux-gnuabi64 [mips64] , gnat-9-mips64-linux-gnuabi64 [mips64] , gm2-9-mips64-linux-gnuabi64 [mips64] , g++-9-mips64el-linux-gnuabi64 [mips64el] , gobjc-9-mips64el-linux-gnuabi64 [mips64el] , gfortran-9-mips64el-linux-gnuabi64 [mips64el] , gdc-9-mips64el-linux-gnuabi64 [mips64el] , gccgo-9-mips64el-linux-gnuabi64 [mips64el] , gnat-9-mips64el-linux-gnuabi64 [mips64el] , gm2-9-mips64el-linux-gnuabi64 [mips64el] , g++-9-mips64-linux-gnuabin32 [mipsn32] , gobjc-9-mips64-linux-gnuabin32 [mipsn32] , gfortran-9-mips64-linux-gnuabin32 [mipsn32] , gdc-9-mips64-linux-gnuabin32 [mipsn32] , gccgo-9-mips64-linux-gnuabin32 [mipsn32] , gnat-9-mips64-linux-gnuabin32 [mipsn32] , gm2-9-mips64-linux-gnuabin32 [mipsn32] , g++-9-powerpc-linux-gnu [powerpc] , gobjc-9-powerpc-linux-gnu [powerpc] , gfortran-9-powerpc-linux-gnu [powerpc] , gdc-9-powerpc-linux-gnu [powerpc] , gccgo-9-powerpc-linux-gnu [powerpc] , gnat-9-powerpc-linux-gnu [powerpc] , g++-9-powerpc64-linux-gnu [ppc64] , gobjc-9-powerpc64-linux-gnu [ppc64] , gfortran-9-powerpc64-linux-gnu [ppc64] , gdc-9-powerpc64-linux-gnu [ppc64] , gccgo-9-powerpc64-linux-gnu [ppc64] , gnat-9-powerpc64-linux-gnu [ppc64] , g++-9-powerpc64le-linux-gnu [ppc64el] , gobjc-9-powerpc64le-linux-gnu [ppc64el] , gfortran-9-powerpc64le-linux-gnu [ppc64el] , gdc-9-powerpc64le-linux-gnu [ppc64el] , gccgo-9-powerpc64le-linux-gnu [ppc64el] , gnat-9-powerpc64le-linux-gnu [ppc64el] , gm2-9-powerpc64le-linux-gnu [ppc64el] , g++-9-m68k-linux-gnu [m68k] , gobjc-9-m68k-linux-gnu [m68k] , gfortran-9-m68k-linux-gnu [m68k] , gdc-9-m68k-linux-gnu [m68k] , gm2-9-m68k-linux-gnu [m68k] , g++-9-riscv64-linux-gnu [riscv64] , gobjc-9-riscv64-linux-gnu [riscv64] , gfortran-9-riscv64-linux-gnu [riscv64] , gdc-9-riscv64-linux-gnu [riscv64] , gccgo-9-riscv64-linux-gnu [riscv64] , gnat-9-riscv64-linux-gnu [riscv64] , gm2-9-riscv64-linux-gnu [riscv64] , g++-9-sh4-linux-gnu [sh4] , gobjc-9-sh4-linux-gnu [sh4] , gfortran-9-sh4-linux-gnu [sh4] , gnat-9-sh4-linux-gnu [sh4] , g++-9-sparc64-linux-gnu [sparc64] , gobjc-9-sparc64-linux-gnu [sparc64] , gfortran-9-sparc64-linux-gnu [sparc64] , gdc-9-sparc64-linux-gnu [sparc64] , gccgo-9-sparc64-linux-gnu [sparc64] , gnat-9-sparc64-linux-gnu [sparc64] , gm2-9-sparc64-linux-gnu [sparc64] , g++-9-s390x-linux-gnu [s390x] , gobjc-9-s390x-linux-gnu [s390x] , gfortran-9-s390x-linux-gnu [s390x] , gdc-9-s390x-linux-gnu [s390x] , gccgo-9-s390x-linux-gnu [s390x] , gnat-9-s390x-linux-gnu [s390x] , gm2-9-s390x-linux-gnu [s390x] , g++-9-x86-64-linux-gnux32 [x32] , gobjc-9-x86-64-linux-gnux32 [x32] , gfortran-9-x86-64-linux-gnux32 [x32] , gdc-9-x86-64-linux-gnux32 [x32] , gccgo-9-x86-64-linux-gnux32 [x32] , gnat-9-x86-64-linux-gnux32 [x32] , gm2-9-x86-64-linux-gnux32 [x32] , g++-9-mips64el-linux-gnuabin32 [mipsn32el] , gobjc-9-mips64el-linux-gnuabin32 [mipsn32el] , gfortran-9-mips64el-linux-gnuabin32 [mipsn32el] , gdc-9-mips64el-linux-gnuabin32 [mipsn32el] , gccgo-9-mips64el-linux-gnuabin32 [mipsn32el] , gnat-9-mips64el-linux-gnuabin32 [mipsn32el] , gm2-9-mips64el-linux-gnuabin32 [mipsn32el] , g++-9-mipsisa32r6-linux-gnu [mipsr6] , gobjc-9-mipsisa32r6-linux-gnu [mipsr6] , gfortran-9-mipsisa32r6-linux-gnu [mipsr6] , gdc-9-mipsisa32r6-linux-gnu [mipsr6] , gccgo-9-mipsisa32r6-linux-gnu [mipsr6] , gnat-9-mipsisa32r6-linux-gnu [mipsr6] , gm2-9-mipsisa32r6-linux-gnu [mipsr6] , g++-9-mipsisa32r6el-linux-gnu [mipsr6el] , gobjc-9-mipsisa32r6el-linux-gnu [mipsr6el] , gfortran-9-mipsisa32r6el-linux-gnu [mipsr6el] , gdc-9-mipsisa32r6el-linux-gnu [mipsr6el] , gccgo-9-mipsisa32r6el-linux-gnu [mipsr6el] , gnat-9-mipsisa32r6el-linux-gnu [mipsr6el] , gm2-9-mipsisa32r6el-linux-gnu [mipsr6el] , g++-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gobjc-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gfortran-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gdc-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gccgo-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gnat-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , gm2-9-mipsisa64r6-linux-gnuabi64 [mips64r6] , g++-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gobjc-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gfortran-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gdc-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gccgo-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gnat-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , gm2-9-mipsisa64r6el-linux-gnuabi64 [mips64r6el] , g++-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gobjc-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gfortran-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gdc-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gccgo-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gnat-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , gm2-9-mipsisa64r6-linux-gnuabin32 [mipsn32r6] , g++-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gobjc-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gfortran-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gdc-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gccgo-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gnat-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , gm2-9-mipsisa64r6el-linux-gnuabin32 [mipsn32r6el] , +Build-Depends-Indep: doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base, xsltproc, libxml2-utils, docbook-xsl-ns +Homepage: http://gcc.gnu.org/ +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git +XS-Testsuite: autopkgtest + +Package: gcc-9-base +Architecture: any +Multi-Arch: same +Section: libs +Priority: required +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). + +Package: libgcc1 +X-DH-Build-For-Type: target +Architecture: any +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: libgcc1-armel [armel], libgcc1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Description: GCC support library + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libgcc1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc1 (= ${gcc:EpochVersion}), ${misc:Depends} +Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf] +Multi-Arch: same +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: libgcc2 +X-DH-Build-For-Type: target +Architecture: m68k +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Description: GCC support library + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libgcc2-dbg +X-DH-Build-For-Type: target +Architecture: m68k +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc2 (= ${gcc:EpochVersion}), ${misc:Depends} +Multi-Arch: same +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: libgcc-9-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libgcc4 +X-DH-Build-For-Type: target +Architecture: hppa +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libgcc4-dbg +X-DH-Build-For-Type: target +Architecture: hppa +Multi-Arch: same +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc4 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: lib64gcc1 +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Conflicts: libgcc1 (<= 1:3.3-0pre9) +Description: GCC support library (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: lib64gcc1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc1 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: lib64gcc-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: lib32gcc1 +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GCC support library (32 bit Version) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: lib32gcc1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: lib32gcc-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libn32gcc1 +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Conflicts: libgcc1 (<= 1:3.3-0pre9) +Description: GCC support library (n32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libn32gcc1-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: libn32gcc-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: libx32gcc1 +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} +Description: GCC support library (x32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + +Package: libx32gcc1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends} +Description: GCC support library (debug symbols) + Debug symbols for the GCC support library. + +Package: libx32gcc-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. + +Package: gcc-9 +Architecture: any +Section: devel +Priority: optional +Depends: cpp-9 (= ${gcc:Version}), gcc-9-base (= ${gcc:Version}), + ${dep:libcc1}, + binutils (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp-9 (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc-9-doc (>= ${gcc:SoftVersion}), + gcc-9-locales (>= ${gcc:SoftVersion}), + libgcc1-dbg (>= ${libgcc:Version}), + libgomp1-dbg (>= ${gcc:Version}), + libitm1-dbg (>= ${gcc:Version}), + libatomic1-dbg (>= ${gcc:Version}), + libasan5-dbg (>= ${gcc:Version}), + liblsan0-dbg (>= ${gcc:Version}), + libtsan0-dbg (>= ${gcc:Version}), + libubsan1-dbg (>= ${gcc:Version}), + libquadmath0-dbg (>= ${gcc:Version}) +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (multilib support) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gcc-9-test-results +Architecture: any +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. + +Package: gcc-9-plugin-dev +Architecture: any +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.0), ${shlibs:Depends}, ${misc:Depends} +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. + +Package: gcc-9-hppa64-linux-gnu +Architecture: hppa amd64 i386 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: cpp-9 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-9-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: gcc-9-locales +Architecture: all +Section: devel +Priority: optional +Depends: gcc-9-base (>= ${gcc:SoftVersion}), cpp-9 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-9 (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. + +Package: g++-9 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), libstdc++-9-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-9-doc (>= ${gcc:SoftVersion}), libstdc++6-9-dbg (>= ${gcc:Version}) +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), g++-9 (= ${gcc:Version}), gcc-9-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib support) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgomp1-armel [armel], libgomp1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libgomp1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgomp1 (= ${gcc:Version}), ${misc:Depends} +Provides: libgomp1-dbg-armel [armel], libgomp1-dbg-armhf [armhf] +Multi-Arch: same +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp1-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +Package: libx32gomp1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libx32gomp1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gomp1 (= ${gcc:Version}), ${misc:Depends} +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +Package: libitm1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libitm1-armel [armel], libitm1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libitm1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libitm1 (= ${gcc:Version}), ${misc:Depends} +Provides: libitm1-dbg-armel [armel], libitm1-dbg-armhf [armhf] +Multi-Arch: same +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32itm1 (= ${gcc:Version}), ${misc:Depends} +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm1 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64itm1 (= ${gcc:Version}), ${misc:Depends} +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +Package: libx32itm1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +Package: libx32itm1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32itm1 (= ${gcc:Version}), ${misc:Depends} +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +Package: libatomic1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libatomic1-armel [armel], libatomic1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libatomic1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libatomic1 (= ${gcc:Version}), ${misc:Depends} +Provides: libatomic1-dbg-armel [armel], libatomic1-dbg-armhf [armhf] +Multi-Arch: same +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32atomic1 (= ${gcc:Version}), ${misc:Depends} +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic1 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64atomic1 (= ${gcc:Version}), ${misc:Depends} +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic1 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic1-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32atomic1 (= ${gcc:Version}), ${misc:Depends} +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libx32atomic1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libx32atomic1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32atomic1 (= ${gcc:Version}), ${misc:Depends} +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libasan5 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libasan5-armel [armel], libasan5-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan5-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libasan5 (= ${gcc:Version}), ${misc:Depends} +Provides: libasan5-dbg-armel [armel], libasan5-dbg-armhf [armhf] +Multi-Arch: same +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan5 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan5-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32asan5 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan5 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan5-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64asan5 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan5 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan5-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32asan5 (= ${gcc:Version}), ${misc:Depends} +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: liblsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: liblsan0-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), liblsan0 (= ${gcc:Version}), ${misc:Depends} +Multi-Arch: same +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: lib32lsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: lib32lsan0-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32lsan0 (= ${gcc:Version}), ${misc:Depends} +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +Package: libx32lsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: libx32lsan0-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32lsan0 (= ${gcc:Version}), ${misc:Depends} +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: libtsan0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libtsan0-armel [armel], libtsan0-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libtsan0-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libtsan0 (= ${gcc:Version}), ${misc:Depends} +Provides: libtsan0-dbg-armel [armel], libtsan0-dbg-armhf [armhf] +Multi-Arch: same +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libubsan1 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libubsan1-armel [armel], libubsan1-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libubsan1-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libubsan1 (= ${gcc:Version}), ${misc:Depends} +Provides: libubsan1-dbg-armel [armel], libubsan1-dbg-armhf [armhf] +Multi-Arch: same +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32ubsan1 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan1 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan1-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64ubsan1 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +Package: libx32ubsan1 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libx32ubsan1-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32ubsan1 (= ${gcc:Version}), ${misc:Depends} +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libquadmath0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libquadmath0-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libquadmath0 (= ${gcc:Version}), ${misc:Depends} +Multi-Arch: same +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib32quadmath0 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib32quadmath0-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32quadmath0 (= ${gcc:Version}), ${misc:Depends} +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib64quadmath0 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib64quadmath0-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64quadmath0 (= ${gcc:Version}), ${misc:Depends} +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. + +Package: libx32quadmath0 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libx32quadmath0-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32quadmath0 (= ${gcc:Version}), ${misc:Depends} +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: libcc1-0 +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GCC cc1 plugin for GDB + libcc1 is a plugin for GDB. + +Package: libgccjit0 +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev, binutils, ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit0-dbg +Section: debug +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgccjit0 (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC just-in-time compilation (debug information) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-9-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit-9-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgccjit0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Suggests: libgccjit-9-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: gobjc++-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gobjc-9 (= ${gcc:Version}), g++-9 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-9-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-9-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc++-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gobjc++-9 (= ${gcc:Version}), g++-9-multilib (= ${gcc:Version}), gobjc-9-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: gobjc-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-9-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-9-doc (>= ${gcc:SoftVersion}), libobjc4-dbg (>= ${gcc:Version}) +Provides: objc-compiler +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gobjc-9 (= ${gcc:Version}), gcc-9-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C compiler (multilib support) + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libobjc-9-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc-9-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc-9-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc-9-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libx32objc-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc-9-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libobjc4 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libobjc4-armel [armel], libobjc4-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +Package: libobjc4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libobjc4-dbg-armel [armel], libobjc4-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libobjc4 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc4 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64objc4 (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc4 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32objc4 (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc4 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32objc4 (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libx32objc4 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libx32objc4-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32objc4 (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. + +Package: gfortran-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), libgfortran-9-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler, ${fortran:mod-version} +Suggests: ${gfortran:multilib}, gfortran-9-doc, + libgfortran5-dbg (>= ${gcc:Version}), + libcoarrays-dev +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gfortran-9 (= ${gcc:Version}), gcc-9-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran compiler (multilib support) + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgfortran-9-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev (= ${gcc:Version}), libgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc-9-dev (= ${gcc:Version}), lib64gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc-9-dev (= ${gcc:Version}), lib32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc-9-dev (= ${gcc:Version}), libn32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libx32gfortran-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc-9-dev (= ${gcc:Version}), libx32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libgfortran5 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgfortran5-armel [armel], libgfortran5-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran5-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libgfortran5-dbg-armel [armel], libgfortran5-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgfortran5 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran5 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran5-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gfortran5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran5 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran5-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gfortran5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran5 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran5-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gfortran5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran5 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran5-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gfortran5 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: gccgo-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), libgo-9-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: go-compiler +Suggests: ${go:multilib}, gccgo-9-doc, libgo14-dbg (>= ${gcc:Version}) +Conflicts: ${golang:Conflicts} +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +Package: gccgo-9-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 s390x sparc sparc64 x32 +Section: devel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gccgo-9 (= ${gcc:Version}), gcc-9-multilib (= ${gcc:Version}), ${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +Description: GNU Go compiler (multilib support) + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgo-9-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev (= ${gcc:Version}), libgo14 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9 (<< 9-20190319-1~) +Replaces: gccgo-9 (<< 9-20190319-1~) +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc-9-dev (= ${gcc:Version}), lib64go14 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc-9-dev (= ${gcc:Version}), lib32go14 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc-9-dev (= ${gcc:Version}), libn32go14 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libx32go-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc-9-dev (= ${gcc:Version}), libx32go14 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libgo14 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libgo14-armel [armel], libgo14-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgo3, libgo8 +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: libgo14-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libgo14-dbg-armel [armel], libgo14-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgo14 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib64go14 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64go3, lib64go8 +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go14-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64go14 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: lib32go14 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32go3, lib32go8 +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go14-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32go14 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libn32go14 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libn32go3, libn32go8 +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go14-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32go14 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libx32go14 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32go3, libx32go8 +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go14-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32go14 (= ${gcc:Version}), ${misc:Depends} +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. + +Package: libstdc++6 +X-DH-Build-For-Type: target +Architecture: any +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} +Provides: libstdc++6-armel [armel], libstdc++6-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +Conflicts: scim (<< 1.4.2-1) +Replaces: libstdc++6-9-dbg (<< 4.9.0-3) +Description: GNU Standard C++ Library v3 + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib32stdc++6 +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: GNU Standard C++ Library v3 (32 bit Version) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + +Package: lib64stdc++6 +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libn32stdc++6 +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (n32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libx32stdc++6 +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libs +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Standard C++ Library v3 (x32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libstdc++-9-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev (= ${gcc:Version}), + libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends} +Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, + libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, + libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev +Suggests: libstdc++-9-doc +Provides: libstdc++-dev +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libstdc++-9-pic +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (shared library subset kit) + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. + +Package: libstdc++6-9-dbg +X-DH-Build-For-Type: target +Architecture: any +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), + libgcc1-dbg (>= ${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: libstdc++6-9-dbg-armel [armel], libstdc++6-9-dbg-armhf [armhf] +Multi-Arch: same +Recommends: libstdc++-9-dev (= ${gcc:Version}) +Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, + libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, + libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg, + libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg, + libstdc++6-4.9-dbg, libstdc++6-5-dbg, libstdc++6-6-dbg, + libstdc++6-7-dbg, libstdc++6-8-dbg +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib32stdc++-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gcc-9-dev (= ${gcc:Version}), + lib32stdc++6 (>= ${gcc:Version}), libstdc++-9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib32stdc++6-9-dbg +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, + lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, + lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, + lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg, + lib32stdc++6-5-dbg, lib32stdc++6-6-dbg, lib32stdc++6-7-dbg, + lib32stdc++6-8-dbg, +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib64stdc++-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gcc-9-dev (= ${gcc:Version}), + lib64stdc++6 (>= ${gcc:Version}), libstdc++-9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: lib64stdc++6-9-dbg +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, + lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, + lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, + lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg, + lib64stdc++6-5-dbg, lib64stdc++6-6-dbg, lib64stdc++6-7-dbg, + lib64stdc++6-8-dbg, +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libn32stdc++-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gcc-9-dev (= ${gcc:Version}), + libn32stdc++6 (>= ${gcc:Version}), libstdc++-9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libn32stdc++6-9-dbg +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, + libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, + libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, + libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg, + libn32stdc++6-5-dbg, libn32stdc++6-6-dbg, libn32stdc++6-7-dbg, + libn32stdc++6-8-dbg, +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libx32stdc++-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gcc-9-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), ${misc:Depends} +Description: GNU Standard C++ Library v3 (development files) + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. + +Package: libx32stdc++6-9-dbg +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: debug +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), + libstdc++-9-dev (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, + libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg, + libx32stdc++6-5-dbg, libx32stdc++6-6-dbg, libx32stdc++6-7-dbg, + libx32stdc++6-8-dbg, +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libstdc++-9-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-9-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. + +Package: gnat-9 +Architecture: any +Priority: optional +Pre-Depends: ${misc:Pre-Depends} +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat-9-doc, ada-reference-manual-2012, gnat-9-sjlj +Breaks: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +Replaces: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +# Takes over symlink from gnat (<< 4.6.1): /usr/bin/gnatgcc. +# Takes over file from dh-ada-library (<< 6.0): debian_packaging.mk. +# g-base 4.6.4-2, 4.9-20140330-1 contain debian_packaging.mk by mistake. +# Newer versions of gnat and dh-ada-library will not provide these files. +Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, + gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3, gnat-4.4, gnat-4.6, gnat-4.7, gnat-4.8, + gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, +# These other packages will continue to provide /usr/bin/gnatmake and +# other files. +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +Package: libgnat-9 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: libgnat-9-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgnat-9 (= ${gnat:Version}), ${misc:Depends} +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. + +Package: libgnatvsn9-dev +X-DH-Build-For-Type: target +Section: libdevel +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gnat-9 (= ${gnat:Version}), + libgnatvsn9 (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< 9), + libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, + libgnatvsn4.5-dev, libgnatvsn4.6-dev, libgnatvsn4.9-dev, + libgnatvsn5-dev, libgnatvsn6-dev, libgnatvsn7-dev, +Description: GNU Ada compiler selected components (development files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the development files and static library. + +Package: libgnatvsn9 +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Section: libs +Depends: gcc-9-base (= ${gcc:Version}), libgnat-9 (= ${gnat:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Ada compiler selected components (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the runtime shared library. + +Package: libgnatvsn9-dbg +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Section: debug +Depends: gcc-9-base (= ${gcc:Version}), libgnatvsn9 (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +Description: GNU Ada compiler selected components (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols. + +Package: gdc-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (>= ${gcc:SoftVersion}), g++-9 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: gdc, d-compiler, d-v2-compiler +Replaces: gdc (<< 4.4.6-5) +Description: GNU D compiler (version 2) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +Package: gdc-9-multilib +Architecture: any +Priority: optional +Depends: gcc-9-base (>= ${gcc:SoftVersion}), gdc-9 (= ${gcc:Version}), gcc-9-multilib (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +Description: GNU D compiler (version 2, multilib support) + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). + +Package: libgphobos-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 arm64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 hppa mips mips64 mipsel mips64el mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el riscv64 s390x +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgphobos76 (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos-9-dev +X-DH-Build-For-Type: target +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gphobos76 (>= ${gdc:Version}), + lib64gcc-9-dev (= ${gcc:Version}), lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gphobos76 (>= ${gdc:Version}), + lib32gcc-9-dev (= ${gcc:Version}), lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos-9-dev +X-DH-Build-For-Type: target +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gphobos76 (>= ${gdc:Version}), + libn32gcc-9-dev (= ${gcc:Version}), libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el], + ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos-9-dev +X-DH-Build-For-Type: target +Architecture: amd64 i386 +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gphobos76 (>= ${gdc:Version}), + libx32gcc-9-dev (= ${gcc:Version}), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos76 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 arm64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 hppa mips mips64 mipsel mips64el mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el riscv64 s390x +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68 +Breaks: dub (<< 1.16.0-1~) +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos76-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 arm64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 hppa mips mips64 mipsel mips64el mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el riscv64 s390x +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgphobos76 (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos76 +X-DH-Build-For-Type: target +Section: libs +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos76-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib64gphobos76 (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos76 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos76-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), lib32gphobos76 (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos76 +X-DH-Build-For-Type: target +Section: libs +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos76-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libn32gphobos76 (= ${gdc:Version}), ${misc:Depends} +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos76 +X-DH-Build-For-Type: target +Section: libs +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68 +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos76-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: amd64 i386 +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libx32gphobos76 (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: gm2-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (>= ${gcc:SoftVersion}), g++-9 (>= ${gcc:SoftVersion}), libgm2-9-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: gm2, m2-compiler +Description: GNU Modula-2 compiler + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +Package: libgm2-9-dev +X-DH-Build-For-Type: target +Architecture: any +Multi-Arch: same +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgm2-0 (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +Package: libgm2-0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libgm2-0-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgm2-0 (= ${gm2:Version}), ${misc:Depends} +Replaces: libgm268-dbg +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: gccbrig-9 +Architecture: any +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), ${dep:libcdev}, + hsail-tools, + ${shlibs:Depends}, libhsail-rt-9-dev (= ${gcc:Version}), ${misc:Depends} +Suggests: ${gccbrig:multilib}, + libhsail-rt0-dbg (>= ${gcc:Version}) +Provides: brig-compiler +Description: GNU BRIG (HSA IL) frontend + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + +Package: libhsail-rt-9-dev +X-DH-Build-For-Type: target +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libgcc-9-dev (= ${gcc:Version}), libhsail-rt0 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Multi-Arch: same +Description: HSAIL runtime library (development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhsail-rt0 +X-DH-Build-For-Type: target +Section: libs +Architecture: any +Provides: libhsail-rt0-armel [armel], libhsail-rt0-armhf [armhf] +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: HSAIL runtime library + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhsail-rt0-dbg +X-DH-Build-For-Type: target +Section: debug +Architecture: any +Provides: libhsail-rt0-dbg-armel [armel], libhsail-rt0-dbg-armhf [armhf] +Multi-Arch: same +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), libhsail-rt0 (= ${gcc:Version}), libgcc1-dbg (>= ${libgcc:Version}), ${misc:Depends} +Description: HSAIL runtime library (debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. + +Package: gcc-9-offload-nvptx +Architecture: amd64 ppc64el +Priority: optional +Depends: gcc-9-base (= ${gcc:Version}), gcc-9 (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx1 (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +Package: libgomp-plugin-nvptx1 +Architecture: amd64 ppc64el +Multi-Arch: same +Section: libs +Depends: gcc-9-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. + +Package: libgomp-plugin-hsa1 +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: gcc-9-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP v4.5 plugin for offloading to HSA + This package contains libgomp plugin for offloading to HSA. + +Package: gcc-9-source +Multi-Arch: foreign +Architecture: all +Priority: optional +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, m4, libtool, autoconf, + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). diff --git a/control.m4 b/control.m4 new file mode 100644 index 0000000..e34a1b2 --- /dev/null +++ b/control.m4 @@ -0,0 +1,5822 @@ +divert(-1) + +define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 +')m4exit(1)')') +define(`errexit',`errprint(`error: undefined macro `$1' +')m4exit(1)') + +dnl The following macros must be defined, when called: +dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) +dnl ifdef(`PV', , errexit(`PV')) +dnl ifdef(`ARCH', , errexit(`ARCH')) + +dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) + +define(`PN', `$1') +ifdef(`PRI', `', ` + define(`PRI', `$1') +') +define(`MAINTAINER', `Debian GCC Maintainers ') + +define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') +define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') +define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all')) +define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') +ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',` +define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))') +')') +define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') + +define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} +')) +define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target +') + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: PRI(optional) +ifelse(DIST,`Ubuntu',`dnl +ifelse(regexp(SRCNAME, `gnat\|gdc-'),0,`dnl +Maintainer: Ubuntu MOTU Developers +', `dnl +Maintainer: Ubuntu Core developers +')dnl SRCNAME +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Uploaders: Ludovic Brenta +', regexp(SRCNAME, `gdc'),0,`dnl +Uploaders: Iain Buclaw , Matthias Klose +', `dnl +Uploaders: Matthias Klose +')dnl SRCNAME +Standards-Version: 4.4.0 +ifdef(`TARGET',`dnl cross +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + dwz, LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP + SOURCE_BUILD_DEP CROSS_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, + zlib1g-dev, gawk, lzma, xz-utils, patchutils, + pkg-config, libgc-dev, + zlib1g-dev, SDT_BUILD_DEP + bison (>= 1:2.3), flex, coreutils (>= 2.26) | realpath (>= 1.9.12), lsb-release, quilt +',`dnl native +Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP GCC_MULTILIB_BUILD_DEP + LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP + kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], + AUTO_BUILD_DEP BASE_BUILD_DEP + dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], + gawk, lzma, xz-utils, patchutils, + zlib1g-dev, SDT_BUILD_DEP + BINUTILS_BUILD_DEP, + gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, + gdb`'NT [!riscv64], OFFLOAD_BUILD_DEP + texinfo (>= 4.3), LOCALES, sharutils, + procps, FORTRAN_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP + ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP PHOBOS_BUILD_DEP + CHECK_BUILD_DEP coreutils (>= 2.26) | realpath (>= 1.9.12), chrpath, lsb-release, quilt, + pkg-config, libgc-dev, + TARGET_TOOL_BUILD_DEP +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP +')dnl +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Homepage: http://gcc.gnu.org/ +', regexp(SRCNAME, `gdc'),0,`dnl +Homepage: http://gdcproject.org/ +', `dnl +Homepage: http://gcc.gnu.org/ +')dnl SRCNAME +Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc +Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git +XS-Testsuite: autopkgtest + +ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl +Package: gcc-snapshot`'TS +Architecture: any +Section: devel +Priority: optional +Depends: binutils`'TS (>= ${binutils:Version}), ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, ${snap:depends}, ${shlibs:Depends}, python3, ${misc:Depends} +Recommends: ${snap:recommends} +Suggests: ${dep:gold} +Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev') +BUILT_USING`'dnl +Description: SNAPSHOT of the GNU Compiler Collection + This package contains a recent development SNAPSHOT of all files + contained in the GNU Compiler Collection (GCC). + . + The source code for this package has been exported from SVN trunk. + . + DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! + . + This package will NEVER hit the testing distribution. It is used for + tracking gcc bugs submitted to the Debian BTS in recent development + versions of gcc. +',`dnl gcc-X.Y + +dnl default base package dependencies +define(`BASEDEP', `gcc`'PV`'TS-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'PV`'TS-base (>= ${gcc:SoftVersion})') + +ifdef(`TARGET',` +define(`BASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH,`all',`-cross')-base`'GCC_PORTS_BUILD (= ${gcc:Version})') +define(`SOFTBASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH, `all',`-cross')-base`'GCC_PORTS_BUILD (>= ${gcc:SoftVersion})') +',`dnl +define(`BASELDEP', `BASEDEP') +define(`SOFTBASELDEP', `SOFTBASEDEP') +') + +ifelse(index(SRCNAME, `gnat'), 0, ` +define(`BASEDEP', `gnat`'PV-base (= ${gnat:Version})') +define(`SOFTBASEDEP', `gnat`'PV-base (>= ${gnat:SoftVersion})') +') + +ifenabled(`gccbase',` +Package: gcc`'PV`'TS-base +Architecture: any +Multi-Arch: same +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`optional',`PRI(required)') +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: ${base:Breaks} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gccbase + +ifenabled(`gcclbase',` +Package: gcc`'PV-cross-base`'GCC_PORTS_BUILD +Architecture: all +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`optional',`PRI(required)') +Depends: ${misc:Depends} +BUILT_USING`'dnl +Description: GCC, the GNU Compiler Collection (library base package) + This empty package contains changelog and copyright files common to + all libraries contained in the GNU Compiler Collection (GCC). +ifdef(`BASE_ONLY', `dnl + . + This version of GCC is not yet available for this architecture. + Please use the compilers from the gcc-snapshot package for testing. +')`'dnl +')`'dnl gcclbase + +ifenabled(`gnatbase',` +Package: gnat`'PV-base`'TS +Architecture: any +# "all" causes build instabilities for "any" dependencies (see #748388). +Section: libs +Priority: PRI(optional) +Depends: ${misc:Depends} +Breaks: gcc-4.6 (<< 4.6.1-8~) +BUILT_USING`'dnl +Description: GNU Ada compiler (common files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package contains files common to all GNAT related packages. +')`'dnl gnatbase + +ifenabled(`libgcc',` +Package: libgcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`libgcc1-armel [armel], libgcc1-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf] +')dnl +ifdef(`MULTIARCH',`Multi-Arch: same +')dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc2-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libgcc + +ifenabled(`cdev',` +Package: libgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, + ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, + ${dep:libtsan}, ${dep:libubsan}, ${dep:libvtv}, + ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC support library (development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl libgcc + +Package: libgcc4`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libgcc4-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`lib64gcc',` +Package: lib64gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9) +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (64bit) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64gcc + +ifenabled(`cdev',` +Package: lib64gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (64bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`lib32gcc',` +Package: lib32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library (32 bit Version) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32gcc1 + +ifenabled(`cdev',` +Package: lib32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (32 bit development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libneongcc',` +Package: libgcc1-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library [neon optimized] + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongcc1 + +ifenabled(`libhfgcc',` +Package: libhfgcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfgcc1-TARGET-dcv1 +',`Conflicts: libgcc1-armhf [biarchhf_archs] +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (hard float ABI) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libhfgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,hf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libhfgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (hard float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl armml +')`'dnl cdev + +ifenabled(`libsfgcc',` +Package: libsfgcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfgcc1-TARGET-dcv1 +',`Conflicts: libgcc1-armel [biarchsf_archs] +')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (soft float ABI) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libsfgcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,sf,=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfgcc + +ifenabled(`cdev',` +ifenabled(`armml',` +Package: libsfgcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (soft float ABI development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl armml +')`'dnl cdev + +ifenabled(`libn32gcc',` +Package: libn32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9) +ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32gcc + +ifenabled(`cdev',` +Package: libn32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (n32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl cdev + +ifenabled(`libx32gcc',` +Package: libx32gcc1`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) + Shared version of the support library, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or + special needs for some languages. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libx32gcc1-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') + Debug symbols for the GCC support library. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32gcc + +ifenabled(`cdev',` +ifenabled(`x32dev',` +Package: libx32gcc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Recommends: ${dep:libcdev} +Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, + ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, + ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, + ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, + ${dep:libvtvbiarch}, + ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC support library (x32 development files) + This package contains the headers and static library files necessary for + building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. +')`'dnl x32dev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') + ifenabled(`gccxbase',` BASEDEP,') + ${dep:libcc1}, + binutils`'TS (>= ${binutils:Version}), + ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Replaces: cpp`'PV`'TS (<< 7.1.1-8) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), + gcc`'PV-locales (>= ${gcc:SoftVersion}), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), + libdbgdep(gomp`'GOMP_SO-dbg,), + libdbgdep(itm`'ITM_SO-dbg,), + libdbgdep(atomic`'ATOMIC_SO-dbg,), + libdbgdep(asan`'ASAN_SO-dbg,), + libdbgdep(lsan`'LSAN_SO-dbg,), + libdbgdep(tsan`'TSAN_SO-dbg,), + libdbgdep(ubsan`'UBSAN_SO-dbg,), +ifenabled(`libvtv',`',` + libdbgdep(vtv`'VTV_SO-dbg,), +')`'dnl + libdbgdep(quadmath`'QMATH_SO-dbg,) +Provides: c-compiler`'TS +ifdef(`TARGET',`Conflicts: gcc-multilib +')`'dnl +BUILT_USING`'dnl +Description: GNU C compiler`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. +ifdef(`TARGET', `dnl + . + This package contains C cross-compiler for TARGET architecture. +')`'dnl + +ifenabled(`multilib',` +Package: gcc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`testresults',` +Package: gcc`'PV-test-results +Architecture: any +Section: devel +Priority: optional +Depends: BASEDEP, ${misc:Depends} +Replaces: g++-5 (<< 5.2.1-28) +BUILT_USING`'dnl +Description: Test results for the GCC test suite + This package contains the test results for running the GCC test suite + for a post build analysis. +')`'dnl testresults + +ifenabled(`plugindev',` +Package: gcc`'PV-plugin-dev`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP MPC_BUILD_DEP ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Files for GNU GCC plugin development. + This package contains (header) files for GNU GCC plugin development. It + is only used for the development of GCC plugins, but not needed to run + plugins. +')`'dnl plugindev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV-hppa64-linux-gnu +Architecture: ifdef(`TARGET',`any',hppa amd64 i386 x32) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), + binutils-hppa64-linux-gnu | binutils-hppa64, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. +')`'dnl cdev + +ifenabled(`cdev',` +Package: cpp`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: ifdef(`TARGET',`devel',`interpreters') +Priority: optional +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)') +BUILT_USING`'dnl +Description: GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. +ifdef(`TARGET', `dnl + . + This package contains preprocessor configured for TARGET architecture. +')`'dnl + +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: cpp`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info `format'. +')`'dnl gfdldoc +')`'dnl native + +ifdef(`TARGET', `', ` +Package: gcc`'PV-locales +Architecture: all +Section: devel +Priority: PRI(optional) +Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc`'PV (>= ${gcc:SoftVersion}) +Description: GCC, the GNU compiler collection (native language support files) + Native language support for GCC. Lets GCC speak your language, + if translations are available. + . + Please do NOT submit bug reports in other languages than "C". + Always reset your language settings to use the "C" locales. +')`'dnl native +')`'dnl cdev + +ifenabled(`c++',` +ifenabled(`c++dev',` +Package: g++`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev') +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) +BUILT_USING`'dnl +Description: GNU C++ compiler`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. +ifdef(`TARGET', `dnl + . + This package contains C++ cross-compiler for TARGET architecture. +')`'dnl + +ifenabled(`multilib',` +Package: g++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +BUILT_USING`'dnl +Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl c++dev +')`'dnl c++ + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (32bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: lib64ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (64bit) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libn32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchn32_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (n32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libx32ssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchx32_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +BUILT_USING`'dnl +Description: GCC stack smashing protection library (x32) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libhfssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchhf_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (hard float ABI) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. + +Package: libsfssp`'SSP_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: biarchsf_archs +Section: libs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC stack smashing protection library (soft float ABI) + GCC can now emit code for protecting applications from stack-smashing attacks. + The protection is realized by buffer overflow detection and reordering of + stack variables to avoid pointer corruption. +')`'dnl +')`'dnl native + +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-armel [armel], libgomp'GOMP_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-dbg-armel [armel], libgomp'GOMP_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (64bit debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (n32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + +ifenabled(`libx32gomp',` +Package: libx32gomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libx32gomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (x32 debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libx32gomp + +ifenabled(`libhfgomp',` +Package: libhfgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libhfgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (hard float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libhfgomp + +ifenabled(`libsfgomp',` +Package: libsfgomp`'GOMP_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + +Package: libsfgomp`'GOMP_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(gomp`'GOMP_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library (soft float ABI debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers +')`'dnl libsfgomp + +ifenabled(`libneongomp',` +Package: libgomp`'GOMP_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP (GOMP) support library [neon optimized] + GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers + in the GNU Compiler Collection. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongomp +')`'dnl libgomp + +ifenabled(`libitm',` +Package: libitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-armel [armel], libitm'ITM_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-dbg-armel [armel], libitm'ITM_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (32 bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: lib64itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (64bit debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +#Package: libn32itm`'ITM_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GNU Transactional Memory Library (n32 debug symbols) +# GNU Transactional Memory Library (libitm) provides transaction support for +# accesses to the memory of a process, enabling easy-to-use synchronization of +# accesses to shared memory by several threads. + +ifenabled(`libx32itm',` +Package: libx32itm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. + +Package: libx32itm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (x32 debug symbols) + This manual documents the usage and internals of libitm. It provides + transaction support for accesses to the memory of a process, enabling + easy-to-use synchronization of accesses to shared memory by several threads. +')`'dnl libx32itm + +ifenabled(`libhfitm',` +Package: libhfitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libhfitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (hard float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libhfitm + +ifenabled(`libsfitm',` +Package: libsfitm`'ITM_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + +Package: libsfitm`'ITM_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(itm`'ITM_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library (soft float ABI debug symbols) + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. +')`'dnl libsfitm + +ifenabled(`libneonitm',` +Package: libitm`'ITM_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Transactional Memory Library [neon optimized] + GNU Transactional Memory Library (libitm) provides transaction support for + accesses to the memory of a process, enabling easy-to-use synchronization of + accesses to shared memory by several threads. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonitm +')`'dnl libitm + +ifenabled(`libatomic',` +Package: libatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-armel [armel], libatomic'ATOMIC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-dbg-armel [armel], libatomic'ATOMIC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (32 bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: lib64atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (64bit debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libn32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (n32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +ifenabled(`libx32atomic',` +Package: libx32atomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libx32atomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (x32 debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libx32atomic + +ifenabled(`libhfatomic',` +Package: libhfatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libhfatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (hard float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libhfatomic + +ifenabled(`libsfatomic',` +Package: libsfatomic`'ATOMIC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + +Package: libsfatomic`'ATOMIC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions (soft float ABI debug symbols) + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. +')`'dnl libsfatomic + +ifenabled(`libneonatomic',` +Package: libatomic`'ATOMIC_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: support library providing __atomic built-in functions [neon optimized] + library providing __atomic built-in functions. When an atomic call cannot + be turned into lock-free instructions, GCC will make calls into this library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonatomic +')`'dnl libatomic + +ifenabled(`libasan',` +Package: libasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-armel [armel], libasan'ASAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-dbg-armel [armel], libasan'ASAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: lib64asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +#Package: libn32asan`'ASAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) +# AddressSanitizer (ASan) is a fast memory error detector. It finds +# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +ifenabled(`libx32asan',` +Package: libx32asan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libx32asan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libx32asan + +ifenabled(`libhfasan',` +Package: libhfasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libhfasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (hard float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libhfasan + +ifenabled(`libsfasan',` +Package: libsfasan`'ASAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + +Package: libsfasan`'ASAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(asan`'ASAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector (soft float ABI debug symbols) + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. +')`'dnl libsfasan + +ifenabled(`libneonasan',` +Package: libasan`'ASAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: AddressSanitizer -- a fast memory error detector [neon optimized] + AddressSanitizer (ASan) is a fast memory error detector. It finds + use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonasan +')`'dnl libasan + +ifenabled(`liblsan',` +Package: liblsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (runtime) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: liblsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +ifenabled(`lib32lsan',` +Package: lib32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32bit) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: lib32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl lib32lsan + +ifenabled(`lib64lsan',` +#Package: lib64lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: lib64lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl lib64lsan + +ifenabled(`libn32lsan',` +#Package: libn32lsan`'LSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. + +#Package: libn32lsan`'LSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) +# LeakSanitizer (Lsan) is a memory leak detector which is integrated +# into AddressSanitizer. +')`'dnl libn32lsan + +ifenabled(`libx32lsan',` +Package: libx32lsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). + +Package: libx32lsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer (empty package). +')`'dnl libx32lsan + +ifenabled(`libhflsan',` +Package: libhflsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libhflsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (hard float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libhflsan + +ifenabled(`libsflsan',` +Package: libsflsan`'LSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + +Package: libsflsan`'LSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(lsan`'LSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector (soft float ABI debug symbols) + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. +')`'dnl libsflsan + +ifenabled(`libneonlsan',` +Package: liblsan`'LSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: LeakSanitizer -- a memory leak detector [neon optimized] + LeakSanitizer (Lsan) is a memory leak detector which is integrated + into AddressSanitizer. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonlsan +')`'dnl liblsan + +ifenabled(`libtsan',` +Package: libtsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-armel [armel], libtsan'TSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libtsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-dbg-armel [armel], libtsan'TSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +ifenabled(`lib32tsan',` +Package: lib32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib32tsan + +ifenabled(`lib64tsan',` +Package: lib64tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: lib64tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl lib64tsan + +ifenabled(`libn32tsan',` +Package: libn32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libn32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libn32tsan + +ifenabled(`libx32tsan',` +Package: libx32tsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libx32tsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libx32tsan + +ifenabled(`libhftsan',` +Package: libhftsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libhftsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI debug symbols) +')`'dnl libhftsan + +ifenabled(`libsftsan',` +Package: libsftsan`'TSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + +Package: libsftsan`'TSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(tsan`'TSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI debug symbols) + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. +')`'dnl libsftsan + +ifenabled(`libneontsan',` +Package: libtsan`'TSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: ThreadSanitizer -- a Valgrind-based detector of data races [neon optimized] + ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. + The Linux and Mac versions are based on Valgrind. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneontsan +')`'dnl libtsan + +ifenabled(`libubsan',` +Package: libubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-armel [armel], libubsan'UBSAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (runtime) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-dbg-armel [armel], libubsan'UBSAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +ifenabled(`lib32ubsan',` +Package: lib32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib32ubsan + +ifenabled(`lib64ubsan',` +Package: lib64ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: lib64ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl lib64ubsan + +ifenabled(`libn32ubsan',` +#Package: libn32ubsan`'UBSAN_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. + +#Package: libn32ubsan`'UBSAN_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) +# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. +# Various computations will be instrumented to detect undefined behavior +# at runtime. Available for C and C++. +')`'dnl libn32ubsan + +ifenabled(`libx32ubsan',` +Package: libx32ubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libx32ubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libx32ubsan + +ifenabled(`libhfubsan',` +Package: libhfubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libhfubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (hard float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libhfubsan + +ifenabled(`libsfubsan',` +Package: libsfubsan`'UBSAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + +Package: libsfubsan`'UBSAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer (soft float ABI debug symbols) + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. +')`'dnl libsfubsan + +ifenabled(`libneonubsan',` +Package: libubsan`'UBSAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: UBSan -- undefined behaviour sanitizer [neon optimized] + UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. + Various computations will be instrumented to detect undefined behavior + at runtime. Available for C and C++. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonubsan +')`'dnl libubsan + +ifenabled(`libvtv',` +Package: libvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (runtime) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GNU vtable verification library (debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +ifenabled(`lib32vtv',` +Package: lib32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GNU vtable verification library (32bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (32 bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib32vtv + +ifenabled(`lib64vtv',` +Package: lib64vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: lib64vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (64bit debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl lib64vtv + +ifenabled(`libn32vtv',` +Package: libn32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libn32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (n32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libn32vtv + +ifenabled(`libx32vtv',` +Package: libx32vtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libx32vtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (x32 debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libx32vtv + +ifenabled(`libhfvtv',` +Package: libhfvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libhfvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU vtable verification library (hard float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libhfvtv + +ifenabled(`libsfvtv',` +Package: libsfvtv`'VTV_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + +Package: libsfvtv`'VTV_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(vtv`'VTV_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library (soft float ABI debug symbols) + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. +')`'dnl libsfvtv + +ifenabled(`libneonvtv',` +Package: libvtv`'VTV_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU vtable verification library [neon optimized] + Vtable verification is a new security hardening feature for GCC that + is designed to detect and handle (during program execution) when a + vtable pointer that is about to be used for a virtual function call is + not a valid vtable pointer for that call. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonvtv +')`'dnl libvtv + +ifenabled(`libbacktrace',` +Package: libbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-armel [armel], libbacktrace'BTRACE_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} +ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-dbg-armel [armel], libbacktrace'BTRACE_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: stack backtrace library (debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: stack backtrace library (32bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (32 bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: lib64backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (64bit debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libn32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (n32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +ifenabled(`libx32backtrace',` +Package: libx32backtrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libx32backtrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (x32 debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libx32backtrace + +ifenabled(`libhfbacktrace',` +Package: libhfbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libhfbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,hf,=), ${misc:Depends} +wifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: stack backtrace library (hard float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libhfbacktrace + +ifenabled(`libsfbacktrace',` +Package: libsfbacktrace`'BTRACE_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + +Package: libsfbacktrace`'BTRACE_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library (soft float ABI debug symbols) + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. +')`'dnl libsfbacktrace + +ifenabled(`libneonbacktrace',` +Package: libbacktrace`'BTRACE_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: stack backtrace library [neon optimized] + libbacktrace uses the GCC unwind interface to collect a stack trace, + and parses DWARF debug info to get file/line/function information. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonbacktrace +')`'dnl libbacktrace + + +ifenabled(`libqmath',` +Package: libquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (32 bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +Package: lib64quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: lib64quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (64bit debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. + +#Package: libn32quadmath`'QMATH_SO`'LS +#Section: ifdef(`TARGET',`devel',`libs') +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Priority: optional +#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. The library is used to provide on such +# targets the REAL(16) type in the GNU Fortran compiler. + +#Package: libn32quadmath`'QMATH_SO-dbg`'LS +#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +#Section: debug +#Priority: optional +#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} +#BUILT_USING`'dnl +#Description: GCC Quad-Precision Math Library (n32 debug symbols) +# A library, which provides quad-precision mathematical functions on targets +# supporting the __float128 datatype. + +ifenabled(`libx32qmath',` +Package: libx32quadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libx32quadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (x32 debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libx32qmath + +ifenabled(`libhfqmath',` +Package: libhfquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libhfquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,hf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libhfqmath + +ifenabled(`libsfqmath',` +Package: libsfquadmath`'QMATH_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (soft float ABI) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. The library is used to provide on such + targets the REAL(16) type in the GNU Fortran compiler. + +Package: libsfquadmath`'QMATH_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(quadmath`'QMATH_SO,sf,=), ${misc:Depends} +BUILT_USING`'dnl +Description: GCC Quad-Precision Math Library (hard float ABI debug symbols) + A library, which provides quad-precision mathematical functions on targets + supporting the __float128 datatype. +')`'dnl libsfqmath +')`'dnl libqmath + +ifenabled(`libcc1',` +Package: libcc1-`'CC1_SO +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC cc1 plugin for GDB + libcc1 is a plugin for GDB. +')`'dnl libcc1 + +ifenabled(`libjit',` +Package: libgccjit`'GCCJIT_SO +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, libgcc`'PV-dev, binutils, ${shlibs:Depends}, ${misc:Depends} +Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) +BUILT_USING`'dnl +Description: GCC just-in-time compilation (shared library) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'GCCJIT_SO-dbg +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC just-in-time compilation (debug information) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl libjit + +ifenabled(`jit',` +Package: libgccjit`'PV-doc +Section: doc +Architecture: all +Priority: optional +Depends: BASEDEP, ${misc:Depends} +Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, +Description: GCC just-in-time compilation (documentation) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. + +Package: libgccjit`'PV-dev +Section: ifdef(`TARGET',`devel',`libdevel') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASEDEP, libgccjit`'GCCJIT_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Suggests: libgccjit`'PV-dbg +Description: GCC just-in-time compilation (development files) + libgccjit provides an embeddable shared library with an API for adding + compilation to existing programs using GCC. +')`'dnl jit + +ifenabled(`objpp',` +ifenabled(`objppdev',` +Package: gobjc++`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'TS +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. +')`'dnl obcppdev + +ifenabled(`multilib',` +Package: gobjc++`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C++ compiler (multilib support) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +Package: gobjc`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) +Provides: objc-compiler`'TS +ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl') +BUILT_USING`'dnl +Description: GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gobjc`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Objective-C compiler, which compiles Objective-C on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib64objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: lib32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +Package: libn32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. + +ifenabled(`x32dev',` +Package: libx32objc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl libx32objc + +ifenabled(`armml',` +Package: libhfobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(objc`'OBJC_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfobjc`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(objc`'OBJC_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float development files) + This package contains the headers and static library files needed to build + GNU ObjC applications. +')`'dnl armml +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-armel [armel], libobjc'OBJC_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. + +Package: libobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (n32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libn32objc + +ifenabled(`libx32objc',` +Package: libx32objc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libx32objc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (x32 debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libx32objc + +ifenabled(`libhfobjc',` +Package: libhfobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libhfobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (hard float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libhfobjc + +ifenabled(`libsfobjc',` +Package: libsfobjc`'OBJC_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libsfobjc`'OBJC_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(objc`'OBJC_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications (soft float ABI debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libsfobjc + +ifenabled(`libneonobjc',` +Package: libobjc`'OBJC_SO-neon`'LS +TARGET_PACKAGE`'dnl +Section: libs +Architecture: NEON_ARCHS +Priority: PRI(optional) +Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Objective-C applications [NEON version] + Library needed for GNU ObjC applications linked against the shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneonobjc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',` +Package: gfortran`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`',`Provides: fortran95-compiler, ${fortran:mod-version} +')dnl +Suggests: ${gfortran:multilib}, gfortran`'PV-doc, + libdbgdep(gfortran`'FORTRAN_SO-dbg,), + libcoarrays-dev +BUILT_USING`'dnl +Description: GNU Fortran compiler + This is the GNU Fortran compiler, which compiles + Fortran on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gfortran`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran on platforms + supported by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gfortran`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran compiler in info `format'. +')`'dnl gfdldoc + +Package: libgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib64gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: lib32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +Package: libn32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. + +ifenabled(`x32dev',` +Package: libx32gfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl libx32gfortran + +ifenabled(`armml',` +Package: libhfgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',hf), libdep(gfortran`'FORTRAN_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfgfortran`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev`',sf), libdep(gfortran`'FORTRAN_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI development files) + This package contains the headers and static library files needed to build + GNU Fortran applications. +')`'dnl armml +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-armel [armel], libgfortran'FORTRAN_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib64gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (64bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: lib32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (32 bit debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libn32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (n32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libn32gfortran + +ifenabled(`libx32gfortran',` +Package: libx32gfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libx32gfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (x32 debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libx32gfortran + +ifenabled(`libhfgfortran',` +Package: libhfgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libhfgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,hf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libhfgfortran + +ifenabled(`libsfgfortran',` +Package: libsfgfortran`'FORTRAN_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (soft float ABI) + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libsfgfortran`'FORTRAN_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,sf,=), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libsfgfortran + +ifenabled(`libneongfortran',` +Package: libgfortran`'FORTRAN_SO-neon`'LS +TARGET_PACKAGE`'dnl +Section: libs +Architecture: NEON_ARCHS +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Priority: optional +Depends: BASELDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Fortran applications [NEON version] + Library needed for GNU Fortran applications linked against the + shared library. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl libneongfortran +')`'dnl fortran + +ifenabled(`ggo',` +ifenabled(`godev',` +Package: gccgo`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`',`Provides: go-compiler +')dnl +Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,) +Conflicts: ${golang:Conflicts} +BUILT_USING`'dnl +Description: GNU Go compiler + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +ifenabled(`multilib',` +Package: gccgo`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libgobiarchdbg} +BUILT_USING`'dnl +Description: GNU Go compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Go compiler, which compiles Go on platforms supported + by the gcc compiler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`gfdldoc',` +Package: gccgo`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +BUILT_USING`'dnl +Description: Documentation for the GNU Go compiler (gccgo) + Documentation for the GNU Go compiler in info `format'. +')`'dnl gfdldoc + +Package: libgo`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(go`'GO_SO,), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9 (<< 9-20190319-1~) +Replaces: gccgo-9 (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib64go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(go`'GO_SO,64), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: lib32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(go`'GO_SO,32), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +Package: libn32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(go`'GO_SO,n32), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. + +ifenabled(`x32dev',` +Package: libx32go`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(go`'GO_SO,x32), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 development files) + This package contains the headers and static library files needed to build + GNU Go applications. +')`'dnl libx32go + +ifenabled(`armml',` +Package: libhfgo`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(go`'GO_SO,hf), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (hard float ABI development files) + This package contains the headers and static library files needed to build + GNU Go applications. +')`'dnl armml + +ifenabled(`armml',` +Package: libsfgo`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(go`'GO_SO,sf), ${shlibs:Depends}, ${misc:Depends} +Breaks: gccgo-9-multilib (<< 9-20190319-1~) +Replaces: gccgo-9-multilib (<< 9-20190319-1~) +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (soft float development files) + This package contains the headers and static library files needed to build + GNU Go applications. +')`'dnl armml +')`'dnl godev + +ifenabled(`libggo',` +Package: libgo`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-armel [armel], libgo'GO_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgo3`'LS, libgo8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications + Library needed for GNU Go applications linked against the + shared library. + +Package: libgo`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libgo'GO_SO`-dbg-armel [armel], libgo'GO_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libgo + +ifenabled(`lib64ggo',` +Package: lib64go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64go3`'LS, lib64go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib64go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (64bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib64go + +ifenabled(`lib32ggo',` +Package: lib32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Replaces: lib32go3`'LS, lib32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32bit) + Library needed for GNU Go applications linked against the + shared library. + +Package: lib32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (32 bit debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl lib32go + +ifenabled(`libn32ggo',` +Package: libn32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libn32go3`'LS, libn32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libn32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (n32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libn32go + +ifenabled(`libx32ggo',` +Package: libx32go`'GO_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32go3`'LS, libx32go8`'LS +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32) + Library needed for GNU Go applications linked against the + shared library. + +Package: libx32go`'GO_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} +BUILT_USING`'dnl +Description: Runtime library for GNU Go applications (x32 debug symbols) + Library needed for GNU Go applications linked against the + shared library. This currently is an empty package, because the + library is completely unstripped. +')`'dnl libx32go +')`'dnl ggo + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`libstdc++'CXX_SO`-armel [armel], libstdc++'CXX_SO`-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Breaks: ${multiarch:breaks} +')`'dnl +Conflicts: scim (<< 1.4.2-1) +Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3) +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libcxx + +ifenabled(`lib32cxx',` +Package: lib32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,32), ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (32 bit Version) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib32cxx + +ifenabled(`lib64cxx',` +Package: lib64stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,64), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64cxx + +ifenabled(`libn32cxx',` +Package: libn32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,n32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (n32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libn32cxx + +ifenabled(`libx32cxx',` +Package: libx32stdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,x32), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (x32) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32cxx + +ifenabled(`libhfcxx',` +Package: libhfstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,hf), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (hard float ABI) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfcxx + +ifenabled(`libsfcxx',` +Package: libsfstdc++CXX_SO`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: optional +Depends: BASELDEP, libdep(gcc1,sf), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (soft float ABI) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfcxx + +ifenabled(`libneoncxx',` +Package: libstdc++CXX_SO-neon`'LS +TARGET_PACKAGE`'dnl +Architecture: NEON_ARCHS +Section: libs +Priority: optional +Depends: BASELDEP, libc6-neon`'LS, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 [NEON version] + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + This set of libraries is optimized to use a NEON coprocessor, and will + be selected instead when running under systems which have one. +')`'dnl + +ifenabled(`c++dev',` +Package: libstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,,=), + libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends} +ifdef(`TARGET',`',`dnl native +Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, + libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, + libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev +Suggests: libstdc++`'PV-doc +')`'dnl native +Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++`'PV-pic`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdevdep(stdc++`'PV-dev,), ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1 +',`')`'dnl +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET',` (TARGET)', `') + This is used to develop subsets of the libstdc++ shared libraries for + use on custom installation floppies and in embedded systems. + . + Unless you are making one of those, you will not need this package. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,), + libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`libstdc++'CXX_SO`'PV`-dbg-armel [armel], libstdc++'CXX_SO`'PV`-dbg-armhf [armhf]') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Recommends: libdevdep(stdc++`'PV-dev,) +Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, + libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, + libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS, + libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS, + libstdc++6-4.9-dbg`'LS, libstdc++6-5-dbg`'LS, libstdc++6-6-dbg`'LS, + libstdc++6-7-dbg`'LS, libstdc++6-8-dbg`'LS +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), + libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, + lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, + lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, + lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS, + lib32stdc++6-5-dbg`'LS, lib32stdc++6-6-dbg`'LS, lib32stdc++6-7-dbg`'LS, + lib32stdc++6-8-dbg`'LS, +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), + libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: lib64stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,64), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, + lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, + lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, + lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS, + lib64stdc++6-5-dbg`'LS, lib64stdc++6-6-dbg`'LS, lib64stdc++6-7-dbg`'LS, + lib64stdc++6-8-dbg`'LS, +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), + libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libn32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,n32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, + libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, + libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, + libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS, + libn32stdc++6-5-dbg`'LS, libn32stdc++6-6-dbg`'LS, libn32stdc++6-7-dbg`'LS, + libn32stdc++6-8-dbg`'LS, +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +ifenabled(`x32dev',` +Package: libx32stdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl x32dev + +ifenabled(`libx32dbgcxx',` +Package: libx32stdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,x32), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, + libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS, + libx32stdc++6-5-dbg`'LS, libx32stdc++6-6-dbg`'LS, libx32stdc++6-7-dbg`'LS, + libx32stdc++6-8-dbg`'LS, +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libx32dbgcxx + +ifenabled(`libhfdbgcxx',` +Package: libhfstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), + libdep(stdc++CXX_SO,hf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libhfstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,hf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libhfstdc++6-dbg`'LS, libhfstdc++6-4.3-dbg`'LS, libhfstdc++6-4.4-dbg`'LS, libhfstdc++6-4.5-dbg`'LS, libhfstdc++6-4.6-dbg`'LS, libhfstdc++6-4.7-dbg`'LS, libhfstdc++6-4.8-dbg`'LS, libhfstdc++6-4.9-dbg`'LS, libhfstdc++6-5-dbg`'LS, libhfstdc++6-6-dbg`'LS, libhfstdc++6-7-dbg`'LS, libstdc++'CXX_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libhfdbgcxx + +ifenabled(`libsfdbgcxx',` +Package: libsfstdc++`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), + libdep(stdc++CXX_SO,sf), libdevdep(stdc++`'PV-dev,), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the headers and static library files necessary for + building C++ programs which use libstdc++. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl + +Package: libsfstdc++CXX_SO`'PV-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: debug +Priority: optional +Depends: BASELDEP, libdep(stdc++CXX_SO,sf), + libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +ifdef(`TARGET',`dnl',`Conflicts: libsfstdc++6-dbg`'LS, libsfstdc++6-4.3-dbg`'LS, libsfstdc++6-4.4-dbg`'LS, libsfstdc++6-4.5-dbg`'LS, libsfstdc++6-4.6-dbg`'LS, libsfstdc++6-4.7-dbg`'LS, libsfstdc++6-4.8-dbg`'LS, libsfstdc++6-4.9-dbg`'LS, libsfstdc++6-5-dbg`'LS, libhfstdc++6-6-dbg`'LS, libhfstdc++6-7-dbg`'LS, libstdc++'CXX_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') + This package contains the shared library of libstdc++ compiled with + debugging symbols. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl libsfdbgcxx + +ifdef(`TARGET', `', ` +Package: libstdc++`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, + libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, + libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, + libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, + libstdc++-7-doc, libstdc++-8-doc, +Description: GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +')`'dnl native +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`ada',` +Package: gnat`'-GNAT_V`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gcc`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj +Breaks: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +Replaces: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2), + gnat-4.9-base (= 4.9-20140330-1) +# Takes over symlink from gnat (<< 4.6.1): /usr/bin/gnatgcc. +# Takes over file from dh-ada-library (<< 6.0): debian_packaging.mk. +# g-base 4.6.4-2, 4.9-20140330-1 contain debian_packaging.mk by mistake. +# Newer versions of gnat and dh-ada-library will not provide these files. +Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, + gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3, gnat-4.4, gnat-4.6, gnat-4.7, gnat-4.8, + gnat-4.9, gnat-5`'TS, gnat-6`'TS, gnat-7`'TS, gnat-8`'TS, +# These other packages will continue to provide /usr/bin/gnatmake and +# other files. +BUILT_USING`'dnl +Description: GNU Ada compiler + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides the compiler, tools and runtime library that handles + exceptions using the default zero-cost mechanism. + +ifenabled(`adasjlj',` +Package: gnat`'-GNAT_V-sjlj`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler (setjump/longjump runtime library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + This package provides an alternative runtime library that handles + exceptions using the setjump/longjump mechanism (as a static library + only). You can install it to supplement the normal compiler. +')`'dnl adasjlj + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library. + +Package: libgnat`'-GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the debugging symbols. + +ifdef(`TARGET',`',` +Package: libgnatvsn`'GNAT_V-dev`'LS +TARGET_PACKAGE`'dnl +Section: libdevel +Architecture: any +Priority: optional +Depends: BASELDEP, gnat`'PV`'TS (= ${gnat:Version}), + libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< `'GNAT_V), + libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, + libgnatvsn4.5-dev, libgnatvsn4.6-dev, libgnatvsn4.9-dev, + libgnatvsn5-dev`'LS, libgnatvsn6-dev`'LS, libgnatvsn7-dev`'LS, +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (development files) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the development files and static library. + +Package: libgnatvsn`'GNAT_V`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: PRI(optional) +Section: libs +Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the runtime shared library. + +Package: libgnatvsn`'GNAT_V-dbg`'LS +TARGET_PACKAGE`'dnl +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +')`'dnl +Priority: optional +Section: debug +Depends: BASELDEP, libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} +Suggests: gnat +BUILT_USING`'dnl +Description: GNU Ada compiler selected components (debugging symbols) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnatvsn library exports selected GNAT components for use in other + packages, most notably ASIS tools. It is licensed under the GNAT-Modified + GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols. +')`'dnl native +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: runtime for applications compiled with GNAT (64 bits shared library) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the runtime shared library for 64 bits architectures. +')`'dnl libgnat + +ifenabled(`gfdldoc',` +Package: gnat`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Suggests: gnat`'PV +Conflicts: gnat-4.1-doc, gnat-4.2-doc, + gnat-4.3-doc, gnat-4.4-doc, + gnat-4.6-doc, gnat-4.9-doc, + gnat-5-doc, gnat-6-doc, gnat-7-doc, gnat-8-doc, +BUILT_USING`'dnl +Description: GNU Ada compiler (documentation) + GNAT is a compiler for the Ada programming language. It produces optimized + code on platforms supported by the GNU Compiler Collection (GCC). + . + The libgnat library provides runtime components needed by most + applications produced with GNAT. + . + This package contains the documentation in info `format'. +')`'dnl gfdldoc +')`'dnl ada + +ifenabled(`d ',` +Package: gdc`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`',`Provides: gdc, d-compiler, d-v2-compiler +')dnl +Replaces: gdc (<< 4.4.6-5) +BUILT_USING`'dnl +Description: GNU D compiler (version 2)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This compiler supports D language version 2. + +ifenabled(`multilib',` +Package: gdc`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: SOFTBASEDEP, gdc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU D compiler (version 2, multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU D compiler, which compiles D on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`libdevphobos',` +Package: libgphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Priority: optional +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,64), ifdef(`TARGET',`',`lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (64bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (32bit development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libdevn32phobos',` +Package: libn32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el],') + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (n32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libn32phobos + +ifenabled(`libdevx32phobos',` +Package: libx32gphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (x32 development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libx32phobos + +ifenabled(`armml',` +Package: libhfgphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libhfgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (hard float ABI development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libsfgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), + libdevdep(gcc`'PV-dev,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (soft float ABI development files) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl armml +')`'dnl libdevphobos + +ifenabled(`libphobos',` +Package: libgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libgphobos68`'LS +Breaks: dub (<< 1.16.0-1~) +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib64gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib64gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: lib32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: lib32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +ifenabled(`libn32phobos',` +Package: libn32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libn32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libn32phobos + +ifenabled(`libx32phobos',` +Package: libx32gphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libx32gphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libx32gphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libx32gphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl libx32phobos + +ifenabled(`armml',` +Package: libhfgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libhfgphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libhfgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libhfgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libhfgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos`'PHOBOS_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: libsfgphobos68`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (runtime library) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ + +Package: libsfgphobos`'PHOBOS_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libsfgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} +Replaces: libsfgphobos68-dbg`'LS +BUILT_USING`'dnl +Description: Phobos D standard library (debug symbols) + This is the Phobos standard library that comes with the D2 compiler. + . + For more information check http://www.dlang.org/phobos/ +')`'dnl armml +')`'dnl libphobos +')`'dnl d + +ifenabled(`m2 ',` +Package: gm2`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), libidevdep(gm2`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`',`Provides: gm2, m2-compiler +')dnl +BUILT_USING`'dnl +Description: GNU Modula-2 compiler`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms + supported by gcc. It uses the gcc backend to generate optimised code. + +ifenabled(`multigm2lib',` +Package: gm2`'PV-multilib`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: SOFTBASEDEP, gm2`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgm2biarchdev}${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms supported by gcc. + It uses the gcc backend to generate optimised code. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multigm2lib + +ifenabled(`libdevgm2',` +Package: libgm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libdevel +Priority: optional +Depends: BASELDEP, libgm2`'-GM2_V`'LS (>= ${gm2:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library + This is the Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`multigm2lib',` +Package: lib64gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (64bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (32bit development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libdevn32gm2',` +Package: libn32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (n32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libn32gm2 + +ifenabled(`libdevx32gm2',` +Package: libx32gm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (x32 development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libx32gm2 + +ifenabled(`armml',` +Package: libhfgm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libhfgm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (hard float ABI development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libsfgm2`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libsfgm2`'-GM2_V`'LS (>= ${gm2:Version}), + libdevdep(gcc`'PV-dev,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (soft float ABI development files) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl armml +')`'dnl multigm2lib +')`'dnl libdevgm2 + +ifenabled(`libgm2',` +Package: libgm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libgm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: libgm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`multigm2lib',` +Package: lib64gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib64gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib64gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib64gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +Replaces: lib32gm268`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: lib32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +Replaces: lib32gm268-dbg`'LS +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +ifenabled(`libn32gm2',` +Package: libn32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libn32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libn32gm2 + +ifenabled(`libx32gm2',` +Package: libx32gm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libx32gm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl libx32gm2 + +ifenabled(`armml',` +Package: libhfgm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libhfgm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libhfgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libsfgm2`'-GM2_V`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (runtime library) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. + +Package: libsfgm2`'-GM2_V-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libsfgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: GNU Modula-2 standard library (debug symbols) + This is the GNU Modula-2 standard library that comes with the gm2 compiler. +')`'dnl armml +')`'dnl multigm2lib +')`'dnl libgm2 +')`'dnl m2 + +ifenabled(`brig',` +ifenabled(`brigdev',` +Package: gccbrig`'PV`'TS +Architecture: any +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, + hsail-tools, + ${shlibs:Depends}, libidevdep(hsail-rt`'PV-dev,,=), ${misc:Depends} +Suggests: ${gccbrig:multilib}, + libdbgdep(hsail-rt`'HSAIL_SO-dbg,) +Provides: brig-compiler`'TS +BUILT_USING`'dnl +Description: GNU BRIG (HSA IL) frontend + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + +ifenabled(`multiXXXlib',` +Package: gccbrig`'PV-multilib`'TS +Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Section: devel +Priority: optional +Depends: BASEDEP, gccbrig`'PV`'TS (= ${gcc:Version}), + gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libhsailrtbiarchdev}, + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GNU BRIG (HSA IL) frontend (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') + This is the GNU BRIG (HSA IL) frontend. + The consumed format is a binary representation. The textual HSAIL + can be compiled to it with a separate assembler. + . + This is a dependency package, depending on development packages + for the non-default multilib architecture(s). +')`'dnl multilib + +Package: libhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(hsail-rt`'HSAIL_SO,), + ${shlibs:Depends}, ${misc:Depends} +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +BUILT_USING`'dnl +Description: HSAIL runtime library (development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +ifenabled(`lib64hsail',` +Package: lib64hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(hsail-rt`'HSAIL_SO,64), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64bit development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib64hsail + +ifenabled(`lib32hsail',` +Package: lib32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(hsail-rt`'HSAIL_SO,32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (32bit development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib32hsail + +ifenabled(`libn32hsail',` +Package: libn32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(hsail-rt`'HSAIL_SO,n32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32 development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libn32hsail + +ifenabled(`x32dev',` +ifenabled(`libx32hsail',` +Package: libx32hsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(hsail-rt`'HSAIL_SO,x32), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32 development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libx32hsail +')`'dnl x32dev + +ifenabled(`armml',` +ifenabled(`libhfhsail',` +Package: libhfhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(hsail-rt`'HSAIL_SO,hf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhfhsail +')`'dnl armml + +ifenabled(`armml',` +ifenabled(`libsfhsail',` +Package: libsfhsail-rt`'PV-dev`'LS +TARGET_PACKAGE`'dnl +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Section: libdevel +Priority: optional +Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(hsail-rt`'HSAIL_SO,sf), ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float development files) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libsfhsail +')`'dnl armml +')`'dnl hsailrtdev + +ifenabled(`libhsail',` +Package: libhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libhsail-rt'HSAIL_SO`-armel [armel], libhsail-rt'HSAIL_SO`-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +ifelse(HSAIL_SO,`2',`Breaks: ${multiarch:breaks} +',`')')`'dnl +Priority: optional +Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') +ifdef(`TARGET',`',`Provides: libhsail-rt'HSAIL_SO`-dbg-armel [armel], libhsail-rt'HSAIL_SO`-dbg-armhf [armhf] +')`'dnl +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,,=), libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhsail + +ifenabled(`lib64hsail',` +Package: lib64hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64bit) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: lib64hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (64 bit debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib64hsail + +ifenabled(`lib32hsail',` +Package: lib32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +BUILT_USING`'dnl +Description: HSAIL runtime library (32bit) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: lib32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (32 bit debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl lib32hsail + +ifenabled(`libn32hsail',` +Package: libn32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libn32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (n32 debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libn32hsail + +ifenabled(`libx32hsail',` +Package: libx32hsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libx32hsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} +BUILT_USING`'dnl +Description: HSAIL runtime library (x32 debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libx32hsail + +ifenabled(`libhfhsail',` +Package: libhfhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libhfhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-dbg-armhf [biarchhf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (hard float ABI debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libhfhsailrt + +ifenabled(`libsfhsail',` +Package: libsfhsail-rt`'HSAIL_SO`'LS +TARGET_PACKAGE`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float ABI) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. + +Package: libsfhsail-rt`'HSAIL_SO-dbg`'LS +TARGET_PACKAGE`'dnl +Section: debug +Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs') +Priority: optional +Depends: BASELDEP, libdep(hsail-rt`'HSAIL_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`dnl',`Conflicts: libhsail-rt'HSAIL_SO`-dbg-armel [biarchsf_archs]') +BUILT_USING`'dnl +Description: HSAIL runtime library (soft float ABI debug symbols) + This library implements the agent-side runtime functionality required + to run HSA finalized programs produced by the BRIG frontend. + . + The library contains both the code required to run kernels on the agent + and also functions implementing more complex HSAIL instructions. +')`'dnl libsfhsailrt +')`'dnl brig + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +#Package: gcc`'PV-soft-float +#Architecture: arm armel armhf +#Priority: PRI(optional) +#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float +#BUILT_USING`'dnl +#Description: GCC soft-floating-point gcc libraries (ARM) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl commonlibs +')`'dnl + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +ifenabled(`gfdldoc',` +Package: gcc`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Conflicts: gcc-docs (<< 2.95.2) +Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) +Description: Documentation for the GNU compilers (gcc, gobjc, g++) + Documentation for the GNU compilers in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifenabled(`olnvptx',` +Package: gcc`'PV-offload-nvptx +Architecture: amd64 ppc64el +ifdef(`TARGET',`Multi-Arch: foreign +')dnl +Priority: optional +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, + nvptx-tools, libgomp-plugin-nvptx`'GOMP_SO (>= ${gcc:Version}), + ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC offloading compiler to NVPTX + The package provides offloading support for NVidia PTX. OpenMP and OpenACC + programs linked with -fopenmp will by default add PTX code into the binaries, + which can be offloaded to NVidia PTX capable devices if available. + +ifenabled(`libgompnvptx',` +Package: libgomp-plugin-nvptx`'GOMP_SO +Architecture: amd64 ppc64el +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +Suggests: libcuda1 +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to NVPTX + This package contains libgomp plugin for offloading to NVidia + PTX. The plugin needs libcuda.so.1 shared library that has to be + installed separately. +')`'dnl libgompnvptx +')`'dnl olnvptx + +ifenabled(`olhsa',` +ifenabled(`libgomphsa',` +Package: libgomp-plugin-hsa`'GOMP_SO +Architecture: amd64 +Multi-Arch: same +Section: libs +Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} +BUILT_USING`'dnl +Description: GCC OpenMP v4.5 plugin for offloading to HSA + This package contains libgomp plugin for offloading to HSA. +')`'dnl libgompnvptx +')`'dnl olnvptx + +ifdef(`TARGET',`',`dnl +ifenabled(`libnof',` +#Package: gcc`'PV-nof +#Architecture: powerpc +#Priority: PRI(optional) +#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} +#Conflicts: gcc-3.2-nof +#BUILT_USING`'dnl +#Description: GCC no-floating-point gcc libraries (powerpc) +# These are versions of basic static libraries such as libgcc.a compiled +# with the -msoft-float option, for CPUs without a floating-point unit. +')`'dnl libnof +')`'dnl + +ifenabled(`source',` +Package: gcc`'PV-source +Multi-Arch: foreign +Architecture: all +Priority: PRI(optional) +Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, AUTO_BUILD_DEP + ${misc:Depends} +Description: Source of the GNU Compiler Collection + This package contains the sources and patches which are needed to + build the GNU Compiler Collection (GCC). +')`'dnl source +dnl +')`'dnl gcc-X.Y +dnl last line in file diff --git a/copyright b/copyright new file mode 100644 index 0000000..cdf178a --- /dev/null +++ b/copyright @@ -0,0 +1,1697 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + git://git.savannah.gnu.org/gm2.git (for Modula-2) + +The current gcc-9 source package is taken from the SVN gcc-9-branch. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-9 libgnat-9 gnat-9-doc +BRIG gccbrig-9 libhsail-rt0 +C gcc-9 gcc-9-doc +C++ g++-9 libstdc++6 libstdc++6-9-doc +D gdc-9 +Fortran 95 gfortran-9 libgfortran3 gfortran-9-doc +Go gccgo-9 libgo0 +Objective C gobjc-9 libobjc2 +Objective C++ gobjc++-9 +Modula-2 gm2-9 libgm2 + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-9-dbg libstdc++6-9-pic +D libphobos-9-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-9-base Base files common to all compilers +gcc-9-soft-float Software floating point (ARM only) +gcc-9-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn9 GNAT version library + +C: +cpp-9, cpp-9-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, +1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 +Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgomp + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-9 Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2014 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2003 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/*.[hc]: + + Copyright (C) 2010 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + Written by Tobias Burnus + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +ldexpq.c: + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +isinfq.c: + * Written by J.T. Conklin . + * Change for long double by Jakub Jelinek + * Public domain. + +llroundq.c, lroundq.c, tgammaq.c: + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +remaining files: + + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-9 GNU D Compiler +libphobos-9-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +The libhsail-rt library is licensed under the following terms: + + Copyright (C) 2015-2017 Free Software Foundation, Inc. + Contributed by Pekka Jaaskelainen + for General Processor Tech. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + +libhsail-rt/rt/fp16.c is licensed under the following terms: + + Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by CodeSourcery. + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/gm2: +Copyright (C) 2007-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/gm2/**/*.texi: +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2012, 2013 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/gm2/gm2-coroutines: +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/ulm-lib-gm2: +Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +This file was originally part of the University of Ulm library + +Ulm's Modula-2 Library +Copyright (C) 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, +1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +by University of Ulm, SAI, D-89069 Ulm, Germany + +gcc/gm2/ulm-lib-gm2/std/M2RTS.mod: +gcc/gm2/ulm-lib-gm2/std/Storage.mod: +gcc/gm2/ulm-lib-gm2/std/RTExceptions.mod: + +Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +./gm2-libs/cbuiltin.def: +./gm2-libs/MathLib0.def: +./gm2-libs/SYSTEM.def: +./gm2-libs/sckt.def: +./gm2-libs/Indexing.def: +./gm2-libs/Builtins.mod: +./gm2-libs/SFIO.mod: +./gm2-libs/MathLib0.mod: +./gm2-libs/gdbif.mod: +./gm2-libs/M2EXCEPTION.mod: +./gm2-libs/SFIO.def: +./gm2-libs/StringConvert.mod: +./gm2-libs/StringConvert.def: +./gm2-libs/config-host.in: +./gm2-libs/Indexing.mod: +./gm2-libs/errno.def: + +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +./gm2-libs/M2EXCEPTION.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +gcc/gm2/gm2-libiberty/: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +gcc/gm2/gm2-libs-iso/: +This has a mix of licenses, both LGPL-2.1 and GPL-3.0, plus the apparently +unmodified definition modules from ISO/IEC. + +gcc/gm2/gm2-libs-iso/*.def: + +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +gcc/gm2/gm2-libs-iso/*.def: + +Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + +gcc/gm2/gm2-libs-iso/*.def: +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs-iso/*.mod: + +Copyright (C) 2012 Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +gcc/gm2/gm2-libs-iso/*.mod: + +Copyright (C) 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs-min/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-3.0 + +gcc/gm2/gm2-libs-pim/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/gm2/gm2-libs-ch/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/gm2/examples: +Copyright (C) 2005-2015 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/gm2/images: +GPL-3+ + +gcc/gm2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +gcc/gm2/mc-boot/: +Copyright (C) 2001-2018 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +libgm2/libpim/: +Copyright (C) 2005-2014 Free Software Foundation, Inc. +Mix of LGPL-2.1, LGPL-3 and GPL-3. + +libgm2/liblog/: +Copyright (C) 2005-2018 Free Software Foundation, Inc. +Mix of LGPL-2.1 and LGPL-3. + +libgm2/libpth/: +Copyright: (C) 1999-2006 Ralf S. Engelschall +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libgm2/libulm/: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +libgm2/libcor/: +Copyright (C) 2005-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +libgm2/libmin/: +Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +libgm2/p2c/: +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +newlib-X.Y.Z/: + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-1999, 2000, 2001 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/copyright.in b/copyright.in new file mode 100644 index 0000000..5cef575 --- /dev/null +++ b/copyright.in @@ -0,0 +1,1697 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, +Objective-C++, and Modula-2 compilers, documentation, and support +libraries. In addition, Debian provides the gm2 compiler, either in +the same source package, or built from a separate same source package. +Packaging is done by the Debian GCC Maintainers +, with sources obtained from: + + ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) + svn://gcc.gnu.org/svn/gcc/ (for prereleases) + ftp://sourceware.org/pub/newlib/ (for newlib) + git://git.savannah.gnu.org/gm2.git (for Modula-2) + +The current gcc-@BV@ source package is taken from the SVN @SVN_BRANCH@. + +Changes: See changelog.Debian.gz + +Debian splits the GNU Compiler Collection into packages for each language, +library, and documentation as follows: + +Language Compiler package Library package Documentation +--------------------------------------------------------------------------- +Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc +BRIG gccbrig-@BV@ libhsail-rt0 +C gcc-@BV@ gcc-@BV@-doc +C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc +D gdc-@BV@ +Fortran 95 gfortran-@BV@ libgfortran3 gfortran-@BV@-doc +Go gccgo-@BV@ libgo0 +Objective C gobjc-@BV@ libobjc2 +Objective C++ gobjc++-@BV@ +Modula-2 gm2-@BV@ libgm2 + +For some language run-time libraries, Debian provides source files, +development files, debugging symbols and libraries containing position- +independent code in separate packages: + +Language Sources Development Debugging Position-Independent +------------------------------------------------------------------------------ +C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic +D libphobos-@BV@-dev + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-@BV@-base Base files common to all compilers +gcc-@BV@-soft-float Software floating point (ARM only) +gcc-@BV@-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn@BV@ GNAT version library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libssp0-dev, libssp0 GCC stack smashing protection library +libquadmath0 Math routines for the __float128 type +fixincludes Fix non-ANSI header files + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library +libitm1-dev, libitm1 GNU Transactional Memory Library + +Biarch support: On some 64-bit platforms which can also run 32-bit code, +Debian provides additional packages containing 32-bit versions of some +libraries. These packages have names beginning with 'lib32' instead of +'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which +can also run 64-bit code, Debian provides additional packages with names +beginning with 'lib64' instead of 'lib'. These packages contain 64-bit +versions of the libraries. (At this time, not all platforms and not all +libraries support biarch.) The license terms for these lib32 or lib64 +packages are identical to the ones for the lib packages. + + +COPYRIGHT STATEMENTS AND LICENSING TERMS + + +GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, +1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 +Free Software Foundation, Inc. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +Files that have exception clauses are licensed under the terms of the +GNU General Public License; either version 3, or (at your option) any +later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 3 of this +license in `/usr/share/common-licenses/GPL-3'. + +The following runtime libraries are licensed under the terms of the +GNU General Public License (v3 or later) with version 3.1 of the GCC +Runtime Library Exception (included in this file): + + - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, + gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, + gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, + gcc/tsystem.h, gcc/typeclass.h). + - libatomic + - libdecnumber + - libgomp + - libitm + - libssp + - libstdc++-v3 + - libobjc + - libgfortran + - The libgnat-@BV@ Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + - libvtv + +The libbacktrace library is licensed under the following terms: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + (1) Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + (2) Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + (3) The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are +licensed under the following terms: + +Copyright (c) 2009-2014 by the LLVM contributors. + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +The libffi library is licensed under the following terms: + + libffi - Copyright (c) 1996-2003 Red Hat, Inc. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + ``Software''), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + +The documentation is licensed under the GNU Free Documentation License (v1.2). +On Debian GNU/Linux systems, the complete text of this license is in +`/usr/share/common-licenses/GFDL-1.2'. + + +GCC RUNTIME LIBRARY EXCEPTION + +Version 3.1, 31 March 2009 + +Copyright (C) 2009 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +This GCC Runtime Library Exception ("Exception") is an additional +permission under section 7 of the GNU General Public License, version +3 ("GPLv3"). It applies to a given file (the "Runtime Library") that +bears a notice placed by the copyright holder of the file stating that +the file is governed by GPLv3 along with this Exception. + +When you use GCC to compile a program, GCC may combine portions of +certain GCC header files and runtime libraries with the compiled +program. The purpose of this Exception is to allow compilation of +non-GPL (including proprietary) programs to use, in this way, the +header files and runtime libraries covered by this Exception. + +0. Definitions. + +A file is an "Independent Module" if it either requires the Runtime +Library for execution after a Compilation Process, or makes use of an +interface provided by the Runtime Library, but is not otherwise based +on the Runtime Library. + +"GCC" means a version of the GNU Compiler Collection, with or without +modifications, governed by version 3 (or a specified later version) of +the GNU General Public License (GPL) with the option of using any +subsequent versions published by the FSF. + +"GPL-compatible Software" is software whose conditions of propagation, +modification and use would permit combination with GCC in accord with +the license of GCC. + +"Target Code" refers to output from any compiler for a real or virtual +target processor architecture, in executable form or suitable for +input to an assembler, loader, linker and/or execution +phase. Notwithstanding that, Target Code does not include data in any +format that is used as a compiler intermediate representation, or used +for producing a compiler intermediate representation. + +The "Compilation Process" transforms code entirely represented in +non-intermediate languages designed for human-written code, and/or in +Java Virtual Machine byte code, into Target Code. Thus, for example, +use of source code generators and preprocessors need not be considered +part of the Compilation Process, since the Compilation Process can be +understood as starting with the output of the generators or +preprocessors. + +A Compilation Process is "Eligible" if it is done using GCC, alone or +with other GPL-compatible software, or if it is done without using any +work based on GCC. For example, using non-GPL-compatible Software to +optimize any GCC intermediate representations would not qualify as an +Eligible Compilation Process. + +1. Grant of Additional Permission. + +You have permission to propagate a work of Target Code formed by +combining the Runtime Library with Independent Modules, even if such +propagation would otherwise violate the terms of GPLv3, provided that +all Target Code was generated by Eligible Compilation Processes. You +may then convey such a combination under terms of your choice, +consistent with the licensing of the Independent Modules. + +2. No Weakening of GCC Copyleft. + +The availability of this Exception does not imply any general +presumption that third-party software is unaffected by the copyleft +requirements of the license of GCC. + + +libquadmath/*.[hc]: + + Copyright (C) 2010 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + Written by Tobias Burnus + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +libquadmath/math: + +atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: + Copyright 2001 by Stephen L. Moshier + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: + Changes for 128-bit __float128 are + Copyright (C) 2001 Stephen L. Moshier + and are incorporated herein by permission of the author. The author + reserves the right to distribute this material elsewhere under different + copying permissions. These modifications are distributed here under + the following terms: + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +ldexpq.c: + * Conversion to long double by Ulrich Drepper, + * Cygnus Support, drepper@cygnus.com. + +cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, +sinq_kernel.c, truncq.c: + Copyright (C) 1997, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +isinfq.c: + * Written by J.T. Conklin . + * Change for long double by Jakub Jelinek + * Public domain. + +llroundq.c, lroundq.c, tgammaq.c: + Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997 and + Jakub Jelinek , 1999. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +log10q.c: + Cephes Math Library Release 2.2: January, 1991 + Copyright 1984, 1991 by Stephen L. Moshier + Adapted for glibc November, 2001 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + +remaining files: + + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + + +gcc/go/gofrontend, libgo: + +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +D: +gdc-@BV@ GNU D Compiler +libphobos-@BV@-dev D standard runtime library + +The D source package is made up of the following components. + +The D front-end for GCC: + - d/* + +Copyright (C) 2004-2007 David Friedman +Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', version 2 of this +license in `/usr/share/common-licenses/GPL-2'. + + +The DMD Compiler implementation of the D programming language: + - d/dmd/* + +Copyright (c) 1999-2010 by Digital Mars +All Rights Reserved +written by Walter Bright +http://www.digitalmars.com +License for redistribution is by either the Artistic License or +the GNU General Public License (v1). + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL', the Artistic +license in `/usr/share/common-licenses/Artistic'. + + +The Zlib data compression library: + - d/phobos/etc/c/zlib/* + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +The Phobos standard runtime library: + - d/phobos/* + +Unless otherwise marked within the file, each file in the source +is under the following licenses: + +Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com +Written by Walter Bright + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, in both source and binary form, subject to the following +restrictions: + + o The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + o Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + o This notice may not be removed or altered from any source + distribution. + +By plainly marking modifications, something along the lines of adding to each +file that has been changed a "Modified by Foo Bar" line +underneath the "Written by" line would be adequate. + +The libhsail-rt library is licensed under the following terms: + + Copyright (C) 2015-2017 Free Software Foundation, Inc. + Contributed by Pekka Jaaskelainen + for General Processor Tech. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + +libhsail-rt/rt/fp16.c is licensed under the following terms: + + Copyright (C) 2008-2017 Free Software Foundation, Inc. + Contributed by CodeSourcery. + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3, or (at your option) any + later version. + + This file is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . + +gcc/gm2: +Copyright (C) 2007-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +gcc/gm2/**/*.texi: +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2012, 2013 Free Software Foundation, Inc. + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + +gcc/gm2/gm2-coroutines: +Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/ulm-lib-gm2: +Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +This file was originally part of the University of Ulm library + +Ulm's Modula-2 Library +Copyright (C) 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, +1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +by University of Ulm, SAI, D-89069 Ulm, Germany + +gcc/gm2/ulm-lib-gm2/std/M2RTS.mod: +gcc/gm2/ulm-lib-gm2/std/Storage.mod: +gcc/gm2/ulm-lib-gm2/std/RTExceptions.mod: + +Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +./gm2-libs/cbuiltin.def: +./gm2-libs/MathLib0.def: +./gm2-libs/SYSTEM.def: +./gm2-libs/sckt.def: +./gm2-libs/Indexing.def: +./gm2-libs/Builtins.mod: +./gm2-libs/SFIO.mod: +./gm2-libs/MathLib0.mod: +./gm2-libs/gdbif.mod: +./gm2-libs/M2EXCEPTION.mod: +./gm2-libs/SFIO.def: +./gm2-libs/StringConvert.mod: +./gm2-libs/StringConvert.def: +./gm2-libs/config-host.in: +./gm2-libs/Indexing.mod: +./gm2-libs/errno.def: + +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +./gm2-libs/M2EXCEPTION.def: +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +gcc/gm2/gm2-libiberty/: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +gcc/gm2/gm2-libs-iso/: +This has a mix of licenses, both LGPL-2.1 and GPL-3.0, plus the apparently +unmodified definition modules from ISO/IEC. + +gcc/gm2/gm2-libs-iso/*.def: + +Library module defined by the International Standard +Information technology - programming languages +BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. + +Copyright ISO/IEC (International Organization for Standardization +and International Electrotechnical Commission) 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + +gcc/gm2/gm2-libs-iso/*.def: + +Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + +gcc/gm2/gm2-libs-iso/*.def: +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs-iso/*.mod: + +Copyright (C) 2012 Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +gcc/gm2/gm2-libs-iso/*.mod: + +Copyright (C) 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +gcc/gm2/gm2-libs-min/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-3.0 + +gcc/gm2/gm2-libs-pim/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/gm2/gm2-libs-ch/*: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +mix of GPL-3.0 and LGPL-2.1/3 + +gcc/gm2/examples: +Copyright (C) 2005-2015 Free Software Foundation, Inc. +Mix of LGPL-2.1 and GPL-3.0. + +gcc/gm2/images: +GPL-3+ + +gcc/gm2/el/gm2-mode.el: +;; Everyone is granted permission to copy, modify and redistribute +;; GNU Emacs, but only under the conditions described in the +;; GNU Emacs General Public License. A copy of this license is +;; supposed to have been given to you along with GNU Emacs so you +;; can know your rights and responsibilities. It should be in a +;; file named COPYING. Among other things, the copyright notice +;; and this notice must be preserved on all copies. + +gcc/gm2/mc-boot/: +Copyright (C) 2001-2018 Free Software Foundation, Inc. +Contributed by Gaius Mulley . +Mix of GPL-3 and LGPL-2.1. + +gcc/testsuite/gm2/: +Copyright (C) 2001-2019 Free Software Foundation, Inc. +Mix of GPL-2+ and GPL-3+ + +libgm2: + +libgm2/libiso/: +Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +libgm2/libpim/: +Copyright (C) 2005-2014 Free Software Foundation, Inc. +Mix of LGPL-2.1, LGPL-3 and GPL-3. + +libgm2/liblog/: +Copyright (C) 2005-2018 Free Software Foundation, Inc. +Mix of LGPL-2.1 and LGPL-3. + +libgm2/libpth/: +Copyright: (C) 1999-2006 Ralf S. Engelschall +License: LGPL-2.1+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + +libgm2/libulm/: +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +libgm2/libcor/: +Copyright (C) 2005-2019 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +libgm2/libmin/: +Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +libgm2/p2c/: +Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Free Software Foundation, Inc. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +newlib-X.Y.Z/: + +Upstream Authors: +newlib@sources.redhat.com +Jeff Johnston +Tom Fitzsimmons + +The newlib subdirectory is a collection of software from several sources. +Each file may have its own copyright/license that is embedded in the source +file. + +This list documents those licenses which are more restrictive than +a BSD-like license or require the copyright notice +to be duplicated in documentation and/or other materials associated with +the distribution. Certain licenses documented here only apply to +specific targets. Certain clauses only apply if you are building the +code as part of your binary. + +Note that this list may omit certain licenses that +only pertain to the copying/modifying of the individual source code. +If you are distributing the source code, then you do not need to +worry about these omitted licenses, so long as you do not modify the +copyright information already in place. + +Parts of this work are licensed under the terms of the GNU General +Public License. On Debian systems, the complete text of this license +can be found in /usr/share/common-licenses/GPL. + +Parts of this work are licensed under the terms of the GNU Library +General Public License. On Debian systems, the complete text of this +license be found in /usr/share/common-licenses/LGPL. + +(1) University of California, Berkeley + +[1a] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +and other materials related to such distribution and use +acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1b] + +Copyright (c) 1990 The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that the above copyright notice and this paragraph are +duplicated in all such forms and that any documentation, +advertising materials, and other materials related to such +distribution and use acknowledge that the software was developed +by the University of California, Berkeley. The name of the +University may not be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +[1c] + +Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1d] + +Copyright (c) 1988, 1990, 1993 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1e] + +Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 +The Regents of the University of California. All rights reserved. +(c) UNIX System Laboratories, Inc. +All or some portions of this file are derived from material licensed +to the University of California by American Telephone and Telegraph +Co. or Unix System Laboratories, Inc. and are reproduced herein with +the permission of UNIX System Laboratories, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: + This product includes software developed by the University of + California, Berkeley and its contributors. +4. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +[1f] + +Copyright (c) 1987, 1988, 2000 Regents of the University of California. +All rights reserved. + +Redistribution and use in source and binary forms are permitted +provided that: (1) source distributions retain this entire copyright +notice and comment, and (2) distributions including binaries display +the following acknowledgement: ``This product includes software +developed by the University of California, Berkeley and its contributors'' +in the documentation or other materials provided with the distribution +and in all advertising materials mentioning features or use of this +software. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +------------------------------------------------------------- + Please note that in some of the above alternate licenses, there is a + statement regarding that acknowledgement must be made in any + advertising materials for products using the code. This restriction + no longer applies due to the following license change: + + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + + In some cases the defunct clause has been removed in modified newlib code and + in some cases, the clause has been left as-is. +------------------------------------------------------------- + +(2) Cygwin (cygwin targets only) + +Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. + +(3) David M. Gay at AT&T + +The author of this software is David M. Gay. + +Copyright (c) 1991 by AT&T. + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(4) Advanced Micro Devices + +Copyright 1989, 1990 Advanced Micro Devices, Inc. + +This software is the property of Advanced Micro Devices, Inc (AMD) which +specifically grants the user the right to modify, use and distribute this +software provided this notice is not removed or altered. All other rights +are reserved by AMD. + +AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS +SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL +DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR +USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the 29K Technical Support Center at +800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or +0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. + +Advanced Micro Devices, Inc. +29K Support Products +Mail Stop 573 +5900 E. Ben White Blvd. +Austin, TX 78741 +800-292-9263 + +(5) C.W. Sandmann + +Copyright (C) 1993 C.W. Sandmann + +This file may be freely distributed as long as the author's name remains. + +(6) Eric Backus + +(C) Copyright 1992 Eric Backus + +This software may be used freely so long as this copyright notice is +left intact. There is no warrantee on this software. + +(7) Sun Microsystems + +Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + +Developed at SunPro, a Sun Microsystems, Inc. business. +Permission to use, copy, modify, and distribute this +software is freely granted, provided that this notice +is preserved. + +(8) Hewlett Packard + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(9) Hans-Peter Nilsson + +Copyright (C) 2001 Hans-Peter Nilsson + +Permission to use, copy, modify, and distribute this software is +freely granted, provided that the above copyright notice, this notice +and the following disclaimer are preserved with no changes. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. + +(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) + +Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) + +The authors hereby grant permission to use, copy, modify, distribute, +and license this software and its documentation for any purpose, provided +that existing copyright notices are retained in all copies and that this +notice is included verbatim in any distributions. No written agreement, +license, or royalty fee is required for any of the authorized uses. +Modifications to this software may be copyrighted by their authors +and need not follow the licensing terms described here, provided that +the new terms are clearly indicated on the first page of each file where +they apply. + +(11) Christopher G. Demetriou + +Copyright (c) 2001 Christopher G. Demetriou +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(12) SuperH, Inc. + +Copyright 2002 SuperH, Inc. All rights reserved + +This software is the property of SuperH, Inc (SuperH) which specifically +grants the user the right to modify, use and distribute this software +provided this notice is not removed or altered. All other rights are +reserved by SuperH. + +SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO +THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, +INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM +THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. + +So that all may benefit from your experience, please report any problems +or suggestions about this software to the SuperH Support Center via +e-mail at softwaresupport@superh.com . + +SuperH, Inc. +405 River Oaks Parkway +San Jose +CA 95134 +USA + +(13) Royal Institute of Technology + +Copyright (c) 1999 Kungliga Tekniska Hgskolan +(Royal Institute of Technology, Stockholm, Sweden). +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of KTH nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(14) Alexey Zelkin + +Copyright (c) 2000, 2001 Alexey Zelkin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(15) Andrey A. Chernov + +Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(16) FreeBSD + +Copyright (c) 1997-2002 FreeBSD Project. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(17) S. L. Moshier + +Author: S. L. Moshier. + +Copyright (c) 1984,2000 S.L. Moshier + +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. + +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION +OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS +SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + +(18) Citrus Project + +Copyright (c)1999 Citrus Project, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(19) Todd C. Miller + +Copyright (c) 1998 Todd C. Miller +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(20) DJ Delorie (i386) + +Copyright (C) 1991 DJ Delorie +All rights reserved. + +Redistribution and use in source and binary forms is permitted +provided that the above copyright notice and following paragraph are +duplicated in all such forms. + +This file is distributed WITHOUT ANY WARRANTY; without even the implied +warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +(21) Free Software Foundation LGPL License (*-linux* targets only) + + Copyright (C) 1990-1999, 2000, 2001 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Mark Kettenis , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + 02110-1301 USA + +(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) + +Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Library General Public License for more details. + +(23) Intel (i960) + +Copyright (c) 1993 Intel Corporation + +Intel hereby grants you permission to copy, modify, and distribute this +software and its documentation. Intel grants this permission provided +that the above copyright notice appears in all copies and that both the +copyright notice and this permission notice appear in supporting +documentation. In addition, Intel grants this permission provided that +you prominently mark as "not part of the original" any modifications +made to this software or documentation, and that the name of Intel +Corporation not be used in advertising or publicity pertaining to +distribution of the software or the documentation without specific, +written prior permission. + +Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR +IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY +OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or +representations regarding the use of, or the results of the use of, +the software and documentation in terms of correctness, accuracy, +reliability, currentness, or otherwise; and you rely on the software, +documentation and results solely at your own risk. + +IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, +LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES +OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM +PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. + +(24) Hewlett-Packard (hppa targets only) + +(c) Copyright 1986 HEWLETT-PACKARD COMPANY + +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: + permission to use, copy, modify, and distribute this file +for any purpose is hereby granted without fee, provided that +the above copyright notice and this notice appears in all +copies, and that the name of Hewlett-Packard Company not be +used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Hewlett-Packard Company makes no representations about the +suitability of this software for any purpose. + +(25) Henry Spencer (only *-linux targets) + +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. +This software is not subject to any license of the American Telephone +and Telegraph Company or of the Regents of the University of California. + +Permission is granted to anyone to use this software for any purpose on +any computer system, and to alter it and redistribute it, subject +to the following restrictions: + +1. The author is not responsible for the consequences of use of this + software, no matter how awful, even if they arise from flaws in it. + +2. The origin of this software must not be misrepresented, either by + explicit claim or by omission. Since few users ever read sources, + credits must appear in the documentation. + +3. Altered versions must be plainly marked as such, and must not be + misrepresented as being the original software. Since few users + ever read sources, credits must appear in the documentation. + +4. This notice may not be removed or altered. + +(26) Mike Barcroft + +Copyright (c) 2001 Mike Barcroft +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(27) Konstantin Chuguev (--enable-newlib-iconv) + +Copyright (c) 1999, 2000 + Konstantin Chuguev. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + + iconv (Charset Conversion Library) v2.0 + +(27) Artem Bityuckiy (--enable-newlib-iconv) + +Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. +Rights transferred to Franklin Electronic Publishers. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +(28) Red Hat Incorporated + +Unless otherwise stated in each remaining newlib file, the remaining +files in the newlib subdirectory default to the following copyright. +It should be noted that Red Hat Incorporated now owns copyrights +belonging to Cygnus Solutions and Cygnus Support. + +Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cpp-BV-CRB.preinst.in b/cpp-BV-CRB.preinst.in new file mode 100644 index 0000000..408889b --- /dev/null +++ b/cpp-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/cpp-BV-doc.doc-base.cpp b/cpp-BV-doc.doc-base.cpp new file mode 100644 index 0000000..d64e86f --- /dev/null +++ b/cpp-BV-doc.doc-base.cpp @@ -0,0 +1,16 @@ +Document: cpp-@BV@ +Title: The GNU C preprocessor +Author: Various +Abstract: The C preprocessor is a "macro processor" that is used automatically + by the C compiler to transform your program before actual compilation. + It is called a macro processor because it allows you to define "macros", + which are brief abbreviations for longer constructs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cpp.html +Files: /usr/share/doc/gcc-@BV@-base/cpp.html + +Format: info +Index: /usr/share/info/cpp-@BV@.info.gz +Files: /usr/share/info/cpp-@BV@* diff --git a/cpp-BV-doc.doc-base.cppint b/cpp-BV-doc.doc-base.cppint new file mode 100644 index 0000000..151d319 --- /dev/null +++ b/cpp-BV-doc.doc-base.cppint @@ -0,0 +1,17 @@ +Document: cppinternals-@BV@ +Title: The GNU C preprocessor (internals) +Author: Various +Abstract: This brief manual documents the internals of cpplib, and + explains some of the tricky issues. It is intended that, along with + the comments in the source code, a reasonably competent C programmer + should be able to figure out what the code is doing, and why things + have been implemented the way they have. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html +Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html + +Format: info +Index: /usr/share/info/cppinternals-@BV@.info.gz +Files: /usr/share/info/cppinternals-@BV@* diff --git a/dh_doclink b/dh_doclink new file mode 100755 index 0000000..8372658 --- /dev/null +++ b/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg diff --git a/dh_rmemptydirs b/dh_rmemptydirs new file mode 100755 index 0000000..4a010c7 --- /dev/null +++ b/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 diff --git a/dummy-man.1 b/dummy-man.1 new file mode 100644 index 0000000..966d935 --- /dev/null +++ b/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. diff --git a/dummy.texi b/dummy.texi new file mode 100644 index 0000000..127ccaa --- /dev/null +++ b/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) diff --git a/g++-BV-CRB.preinst.in b/g++-BV-CRB.preinst.in new file mode 100644 index 0000000..b69c8f8 --- /dev/null +++ b/g++-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gcc-BV-CRB.preinst.in b/gcc-BV-CRB.preinst.in new file mode 100644 index 0000000..ca34796 --- /dev/null +++ b/gcc-BV-CRB.preinst.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ + update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gcc-BV-doc.doc-base.gcc b/gcc-BV-doc.doc-base.gcc new file mode 100644 index 0000000..106e18d --- /dev/null +++ b/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* diff --git a/gcc-BV-doc.doc-base.gccint b/gcc-BV-doc.doc-base.gccint new file mode 100644 index 0000000..85f4af1 --- /dev/null +++ b/gcc-BV-doc.doc-base.gccint @@ -0,0 +1,17 @@ +Document: gccint-@BV@ +Title: Internals of the GNU C and C++ compiler +Author: Various +Abstract: This manual documents the internals of the GNU compilers, + including how to port them to new targets and some information about + how to write front ends for new languages. It corresponds to GCC + version @BV@.x. The use of the GNU compilers is documented in a + separate manual. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccint.html +Files: /usr/share/doc/gcc-@BV@-base/gccint.html + +Format: info +Index: /usr/share/info/gccint-@BV@.info.gz +Files: /usr/share/info/gccint-@BV@* diff --git a/gcc-BV-doc.doc-base.gomp b/gcc-BV-doc.doc-base.gomp new file mode 100644 index 0000000..69ccede --- /dev/null +++ b/gcc-BV-doc.doc-base.gomp @@ -0,0 +1,15 @@ +Document: gcc-@BV@-gomp +Title: The GNU OpenMP Implementation (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libgomp, the GNU implementation + of the OpenMP Application Programming Interface (API) for multi-platform + shared-memory parallel programming in C/C++ and Fortran. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libgomp.html +Files: /usr/share/doc/gcc-@BV@-base/libgomp.html + +Format: info +Index: /usr/share/info/libgomp-@BV@.info.gz +Files: /usr/share/info/libgomp-@BV@* diff --git a/gcc-BV-doc.doc-base.itm b/gcc-BV-doc.doc-base.itm new file mode 100644 index 0000000..130a70f --- /dev/null +++ b/gcc-BV-doc.doc-base.itm @@ -0,0 +1,16 @@ +Document: gcc-@BV@-itm +Title: The GNU Transactional Memory Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage and internals of libitm, + the GNU Transactional Memory Library. It provides transaction support + for accesses to a process' memory, enabling easy-to-use synchronization + of accesses to shared memory by several threads. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libitm.html +Files: /usr/share/doc/gcc-@BV@-base/libitm.html + +Format: info +Index: /usr/share/info/libitm-@BV@.info.gz +Files: /usr/share/info/libitm-@BV@* diff --git a/gcc-BV-doc.doc-base.qmath b/gcc-BV-doc.doc-base.qmath new file mode 100644 index 0000000..bdc2d4c --- /dev/null +++ b/gcc-BV-doc.doc-base.qmath @@ -0,0 +1,14 @@ +Document: gcc-@BV@-qmath +Title: The GCC Quad-Precision Math Library (for GCC @BV@) +Author: Various +Abstract: This manual documents the usage of libquadmath, the GCC + Quad-Precision Math Library Application Programming Interface (API). +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html +Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html + +Format: info +Index: /usr/share/info/libquadmath-@BV@.info.gz +Files: /usr/share/info/libquadmath-@BV@* diff --git a/gcc-BV-hppa64-linux-gnu.overrides b/gcc-BV-hppa64-linux-gnu.overrides new file mode 100644 index 0000000..9f7ebd0 --- /dev/null +++ b/gcc-BV-hppa64-linux-gnu.overrides @@ -0,0 +1,3 @@ +gcc-@BV@-hppa64-linux-gnu binary: binary-from-other-architecture +gcc-@BV@-hppa64-linux-gnu binary: binary-without-manpage +gcc-@BV@-hppa64-linux-gnu binary: hardening-no-pie diff --git a/gcc-BV-multilib.overrides b/gcc-BV-multilib.overrides new file mode 100644 index 0000000..545ca0e --- /dev/null +++ b/gcc-BV-multilib.overrides @@ -0,0 +1 @@ +gcc-@BV@-multilib binary: binary-from-other-architecture diff --git a/gcc-BV-source.overrides b/gcc-BV-source.overrides new file mode 100644 index 0000000..46e8559 --- /dev/null +++ b/gcc-BV-source.overrides @@ -0,0 +1,5 @@ +gcc-@BV@-source: changelog-file-not-compressed + +# these are patches taken over unmodified from 4.3 +gcc-@BV@-source: script-not-executable +gcc-@BV@-source: shell-script-fails-syntax-check diff --git a/gcc-XX-BV.1 b/gcc-XX-BV.1 new file mode 100644 index 0000000..4268c41 --- /dev/null +++ b/gcc-XX-BV.1 @@ -0,0 +1,17 @@ +.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" +.SH NAME +gcc-@TOOL@ \- a wrapper around @TOOL@ adding the --plugin option + +.SH SYNOPSIS +gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcc-@TOOL@\fR is a wrapper around @TOOL@(1) adding the appropriate +\fB\-\-plugin\fR option for the GCC @BV@ compiler. + +.SH OPTIONS +See @TOOL@(1) for a list of options that @TOOL@ understands. + +.SH "SEE ALSO" +.BR @TOOL@(1) diff --git a/gcc-dummy.texi b/gcc-dummy.texi new file mode 100644 index 0000000..b84b670 --- /dev/null +++ b/gcc-dummy.texi @@ -0,0 +1,41 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header + +@settitle The GNU Compiler Collection (GCC) + +@c Create a separate index for command line options. +@defcodeindex op +@c Merge the standard indexes into a single one. +@syncodeindex fn cp +@syncodeindex vr cp +@syncodeindex ky cp +@syncodeindex pg cp +@syncodeindex tp cp + +@paragraphindent 1 + +@c %**end of header + +@copying +The current documentation is licensed under the same terms as the Debian packaging. +@end copying +@ifnottex +@dircategory Programming +@direntry +* @name@: (@name@). The GNU Compiler Collection (@name@). +@end direntry +@sp 1 +@end ifnottex + +@summarycontents +@contents +@page + +@node Top +@top Introduction +@cindex introduction +The official GNU compilers' documentation is released under the terms +of the GNU Free Documentation License with cover texts. This has been +considered non free by the Debian Project. Thus you will find it in the +non-free section of the Debian archive. +@bye diff --git a/gcc-snapshot.overrides b/gcc-snapshot.overrides new file mode 100644 index 0000000..fad2373 --- /dev/null +++ b/gcc-snapshot.overrides @@ -0,0 +1,10 @@ +gcc-snapshot binary: bad-permissions-for-ali-file + +# keep patched ltdl copy +gcc-snapshot binary: embedded-library + +gcc-snapshot binary: binary-from-other-architecture +gcc-snapshot binary: extra-license-file +gcc-snapshot binary: jar-not-in-usr-share +gcc-snapshot binary: triplet-dir-and-architecture-mismatch +gcc-snapshot binary: unstripped-binary-or-object diff --git a/gcc-snapshot.prerm b/gcc-snapshot.prerm new file mode 100644 index 0000000..b273b17 --- /dev/null +++ b/gcc-snapshot.prerm @@ -0,0 +1,6 @@ +#! /bin/sh -e + +find /usr/lib/gcc-snapshot/share/python -name '*.py[co]' | xargs -r rm -f +find /usr/lib/gcc-snapshot/share/python -name __pycache__ -type d | xargs -r rm -rf + +#DEBHELPER# diff --git a/gcc.css b/gcc.css new file mode 100644 index 0000000..35321f1 --- /dev/null +++ b/gcc.css @@ -0,0 +1,106 @@ +/* CSS for the GCC web site. + + Gerald Pfeifer + */ + +body { background-color: white; color: black; } + +a:link { color: #0066bb; text-decoration: none; } +a:visited { color: #003399; text-decoration: none; } +a:hover { color: darkorange; text-decoration: none; } + +h1 { color: darkslategray; text-align:center; } +h2 { color: darkslategray; } + +.highlight{ color: darkslategray; font-weight:bold; } +.smaller { font-size: 80%; } + +.no-margin-top { margin-top:0; } +.twocolumns { column-counts:2; -moz-column-count:2; } +.imgleft { margin: 5px 20px; float: left; } + +td.news { width: 50%; padding-right: 8px; } +td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } +td.news dl { margin-top:0; } +td.news dt { color:darkslategrey; font-weight:bold; margin-top:0.3em; } +td.news dd { margin-left:3ex; margin-top:0.1em; margin-bottom:0.1em; } +td.news .date { color:darkslategrey; font-size:90%; margin-left:0.1ex; } + +td.status { width: 50%; padding-left: 12px; border-left: #3366cc thin solid; } +td.status h2 { font-size: 1.2em; margin-top:0; margin-bottom: 1%; } +td.status dl { margin-top:0; } +td.status .version { font-weight:bold; } +td.status .regress { font-size: 80%; } +td.status dd { margin-left:3ex; } + +table.nav { + padding-left: 32px; + border-spacing: 0pt; +} + +table.navitem { + border-spacing: 0pt; +} + +table.navitem tr:nth-child(1) { + border-color: #3366cc; + border-style: solid; + border-width: thin; + color: #f2f2f9; + background-color: #0066dd; + font-weight: bold; +} +table.navitem tr:nth-child(2) { + padding-top: 3px; + padding-left: 8px; + padding-bottom: 3px; + background-color: #f2f2f9; + font-size: smaller; +} + +div.copyright { + font-size: smaller; + background: #f2f2f9; + border: 2px solid #3366cc; + border-style: solid; + border-width: thin; + padding: 4px; +} +div.copyright p:nth-child(3) { margin-bottom: 0; } + +.boldcyan { font-weight:bold; color:cyan; } +.boldlime { font-weight:bold; color:lime; } +.boldmagenta { font-weight:bold; color:magenta; } +.boldred { font-weight:bold; color:red; } +.boldblue { font-weight:bold; color:blue; } +.green { color:green; } + +/* Quote an e-mail. The first
has the sender, the second the quote. */ +blockquote.mail div:nth-child(2) { border-left: solid blue; padding-left: 4pt; } + +/* C++ status tables. */ +table.cxxstatus th, table.cxxstatus td { border: 1px solid gray; } +table.cxxstatus td:nth-child(3) { text-align:center; } +table.cxxstatus tr.separator { background: #f2f2f9; } + +.supported { background-color: lightgreen; } +.unsupported { background-color: lightsalmon; } + +/* Online documentation. */ + +pre.smallexample { + font-size: medium; + background: #f2f2f9; + padding: 4px; +} + +/* Classpath versus libgcj merge status page. */ + +.classpath-only { background-color: #FFFFAA; } +.libgcj-only { background-color: #FFFFAA; } +.VM-specific { background-color: #CCCCFF; } +.GCJ-specific { background-color: #CCCCFF; } +.needsmerge { background-color: #FF9090; } +.merged { background-color: #22FF22; } +.merged-expected-diff { background-color: #22FF22; } +.merged-unexpected-diff { background-color: #FF4444; } diff --git a/gccgo-BV-doc.doc-base b/gccgo-BV-doc.doc-base new file mode 100644 index 0000000..86ce258 --- /dev/null +++ b/gccgo-BV-doc.doc-base @@ -0,0 +1,17 @@ +Document: gccgo-@BV@ +Title: The GNU Go compiler (version @BV@) +Author: Various +Abstract: This manual describes how to use gccgo, the GNU compiler for + the Go programming language. This manual is specifically about + gccgo. For more information about the Go programming + language in general, including language specifications and standard + package documentation, see http://golang.org/. +Section: Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gccgo.html +Files: /usr/share/doc/gcc-@BV@-base/gccgo.html + +Format: info +Index: /usr/share/info/gccgo-@BV@.info.gz +Files: /usr/share/info/gccgo-@BV@* diff --git a/gen-libstdc-breaks.sh b/gen-libstdc-breaks.sh new file mode 100755 index 0000000..de35a4a --- /dev/null +++ b/gen-libstdc-breaks.sh @@ -0,0 +1,178 @@ +#! /bin/sh + +# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org + +vendor=Debian +if dpkg-vendor --derives-from Ubuntu; then + vendor=Ubuntu +fi + +if [ "$vendor" = Debian ]; then + : + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.54.0 +libboost-date-time1.55.0 +libcpprest2.4 +printer-driver-brlaser +c++-annotations +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +digikam-private-libs +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.7 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +schroot +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +else + pkgs=$(echo ' +antlr +libaqsis1 +libassimp3 +blockattack +boo +libboost-date-time1.55.0 +libcpprest2.2 +printer-driver-brlaser +c++-annotations +chromium-browser +clustalx +libdavix0 +libdballe6 +dff +libdiet-sed2.8 +libdiet-client2.8 +libdiet-admin2.8 +libkgeomap2 +libmediawiki1 +libkvkontakte1 +emscripten +ergo +fceux +flush +libfreefem++ +freeorion +fslview +fwbuilder +libgazebo5 +libgetfem4++ +libgmsh2 +gnote +gnudatalanguage +python-healpy +innoextract +libinsighttoolkit4.6 +libdap17 +libdapclient6 +libdapserver7 +libkolabxml1 +libpqxx-4.0 +libreoffice-core +librime1 +libwibble-dev +lightspark +libmarisa0 +mira-assembler +mongodb +mongodb-server +ncbi-blast+ +libogre-1.8.0 +libogre-1.9.0 +openscad +libopenwalnut1 +passepartout +pdf2djvu +photoprint +plastimatch +plee-the-bear +povray +powertop +psi4 +python3-taglib +realtimebattle +ruby-passenger +libapache2-mod-passenger +sqlitebrowser +tecnoballz +wesnoth-1.12-core +widelands +libwreport2 +xflr5 +libxmltooling6') +fi + +fn=debian/libstdc++-breaks.$vendor +rm -f $fn +echo $pkgs +for p in $pkgs; do + #echo $p + if ! apt-cache show --no-all-versions $p >/dev/null; then + echo "not found: $p" + fi + v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}') + case "$p" in + libboost-date-time*) + echo "$p," >> $fn + ;; + *) + echo "$p (<= $v)," >> $fn + esac +done diff --git a/gfortran-BV-CRB.preinst.in b/gfortran-BV-CRB.preinst.in new file mode 100644 index 0000000..f6e7cfd --- /dev/null +++ b/gfortran-BV-CRB.preinst.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 diff --git a/gfortran-BV-doc.doc-base b/gfortran-BV-doc.doc-base new file mode 100644 index 0000000..485d458 --- /dev/null +++ b/gfortran-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: gfortran-@BV@ +Title: The GNU Fortran Compiler +Author: Various +Abstract: This manual documents how to run, install and port `gfortran', + as well as its new features and incompatibilities, and how to report bugs. +Section: Programming/Fortran + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html + +Format: info +Index: /usr/share/info/gfortran-@BV@.info.gz +Files: /usr/share/info/gfortran-@BV@* diff --git a/gnat-BV-doc.doc-base.rm b/gnat-BV-doc.doc-base.rm new file mode 100644 index 0000000..7957275 --- /dev/null +++ b/gnat-BV-doc.doc-base.rm @@ -0,0 +1,16 @@ +Document: gnat-rm-@BV@ +Title: GNAT (GNU Ada) Reference Manual +Author: Various +Abstract: This manual contains useful information in writing programs + using the GNAT compiler. It includes information on implementation + dependent characteristics of GNAT, including all the information + required by Annex M of the standard. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* diff --git a/gnat-BV-doc.doc-base.style b/gnat-BV-doc.doc-base.style new file mode 100644 index 0000000..db6dfc8 --- /dev/null +++ b/gnat-BV-doc.doc-base.style @@ -0,0 +1,16 @@ +Document: gnat-style-@BV@ +Title: GNAT Coding Style +Author: Various +Abstract: Most of GNAT is written in Ada using a consistent style to + ensure readability of the code. This document has been written to + help maintain this consistent style, while having a large group of + developers work on the compiler. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html + +Format: info +Index: /usr/share/info/gnat-style-@BV@.info.gz +Files: /usr/share/info/gnat-style-@BV@* diff --git a/gnat-BV-doc.doc-base.ug b/gnat-BV-doc.doc-base.ug new file mode 100644 index 0000000..00dedf1 --- /dev/null +++ b/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat-ugn-@BV@ +Title: GNAT User's Guide for Unix Platforms +Author: Various +Abstract: This guide describes the use of GNAT, a compiler and + software development toolset for the full Ada 95 programming language. + It describes the features of the compiler and tools, and details how + to use them to build Ada 95 applications. +Section: Programming/Ada + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html + +Format: info +Index: /usr/share/info/gnat_ugn-@BV@.info.gz +Files: /usr/share/info/gnat_ugn-@BV@* diff --git a/gnat.1 b/gnat.1 new file mode 100644 index 0000000..33a42c7 --- /dev/null +++ b/gnat.1 @@ -0,0 +1,43 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" Copyright (C) 2011 Nicolas Boulenguez +.\" +.\" This is free software; you can redistribute it and/or modify it under +.\" the terms of the GNU General Public License as published by the Free +.\" Software Foundation; either version 2, or (at your option) any later +.\" version. +.\" +.\" This is distributed in the hope that it will be useful, but WITHOUT +.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +.\" for more details. +.\" +.\" You should have received a copy of the GNU General Public License with +.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the +.\" dpkg source package as the file COPYING. If not, write to the Free +.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +.\" +.\" +.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" +.SH NAME +gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.8 +and +.B info gnat-rm-4.8 +for the sections related to the reference manual. +If those sections cannot be found, you will have to install the +gnat-4.4-doc package as well (since these manuals contain invariant parts, +the package is located in the non-free part of the Debian archive). +You may also browse +.B http://gcc.gnu.org/onlinedocs +which provides the GCC online documentation. +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. diff --git a/lib32asan5.overrides b/lib32asan5.overrides new file mode 100644 index 0000000..c0da839 --- /dev/null +++ b/lib32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib32asan5 binary: binary-or-shlib-defines-rpath diff --git a/lib32asan5.symbols b/lib32asan5.symbols new file mode 100644 index 0000000..5e1b2ce --- /dev/null +++ b/lib32asan5.symbols @@ -0,0 +1,7 @@ +libasan.so.5 lib32asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" + (arch=s390x)__interceptor___tls_get_addr_internal@Base 7 + (arch=s390x)__interceptor___tls_get_offset@Base 7 + (arch=s390x)__tls_get_addr_internal@Base 7 + (arch=s390x)__tls_get_offset@Base 7 diff --git a/lib32gccLC.postinst b/lib32gccLC.postinst new file mode 100644 index 0000000..0163e03 --- /dev/null +++ b/lib32gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib32gphobos68.lintian-overrides b/lib32gphobos68.lintian-overrides new file mode 100644 index 0000000..5003249 --- /dev/null +++ b/lib32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib32z1-dev +lib32gphobos68 binary: embedded-library diff --git a/lib32stdc++6.symbols.amd64 b/lib32stdc++6.symbols.amd64 new file mode 100644 index 0000000..bf31899 --- /dev/null +++ b/lib32stdc++6.symbols.amd64 @@ -0,0 +1,14 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 diff --git a/lib32stdc++6.symbols.kfreebsd-amd64 b/lib32stdc++6.symbols.kfreebsd-amd64 new file mode 100644 index 0000000..50f10af --- /dev/null +++ b/lib32stdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,7 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/lib32stdc++6.symbols.ppc64 b/lib32stdc++6.symbols.ppc64 new file mode 100644 index 0000000..61fc768 --- /dev/null +++ b/lib32stdc++6.symbols.ppc64 @@ -0,0 +1,9 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/lib32stdc++6.symbols.s390x b/lib32stdc++6.symbols.s390x new file mode 100644 index 0000000..bcb77f6 --- /dev/null +++ b/lib32stdc++6.symbols.s390x @@ -0,0 +1,558 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.f128" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 diff --git a/lib32stdc++6.symbols.sparc64 b/lib32stdc++6.symbols.sparc64 new file mode 100644 index 0000000..61fc768 --- /dev/null +++ b/lib32stdc++6.symbols.sparc64 @@ -0,0 +1,9 @@ +libstdc++.so.6 lib32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/lib32stdc++CXX.postinst b/lib32stdc++CXX.postinst new file mode 100644 index 0000000..0ebbeb0 --- /dev/null +++ b/lib32stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib32stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64asan5.overrides b/lib64asan5.overrides new file mode 100644 index 0000000..36c2486 --- /dev/null +++ b/lib64asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +lib64asan5 binary: binary-or-shlib-defines-rpath diff --git a/lib64asan5.symbols b/lib64asan5.symbols new file mode 100644 index 0000000..5037f64 --- /dev/null +++ b/lib64asan5.symbols @@ -0,0 +1,3 @@ +libasan.so.5 lib64asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.64" diff --git a/lib64gccLC.postinst b/lib64gccLC.postinst new file mode 100644 index 0000000..f671fd6 --- /dev/null +++ b/lib64gccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64gcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/lib64gphobos68.lintian-overrides b/lib64gphobos68.lintian-overrides new file mode 100644 index 0000000..2b71d9d --- /dev/null +++ b/lib64gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no usable zconf.h header in lib64z1-dev +lib64gphobos68 binary: embedded-library diff --git a/lib64stdc++6.symbols.i386 b/lib64stdc++6.symbols.i386 new file mode 100644 index 0000000..4b60b1e --- /dev/null +++ b/lib64stdc++6.symbols.i386 @@ -0,0 +1,40 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# acosl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# asinl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# atan2l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# atanl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ceill@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# coshl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# cosl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# expl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# floorl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# fmodl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# frexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# hypotl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# log10l@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# logl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# modfl@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# powl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sinl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# sqrtl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanhl@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# tanl@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 diff --git a/lib64stdc++6.symbols.powerpc b/lib64stdc++6.symbols.powerpc new file mode 100644 index 0000000..6dd040b --- /dev/null +++ b/lib64stdc++6.symbols.powerpc @@ -0,0 +1,11 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.f128" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/lib64stdc++6.symbols.s390 b/lib64stdc++6.symbols.s390 new file mode 100644 index 0000000..1a5a960 --- /dev/null +++ b/lib64stdc++6.symbols.s390 @@ -0,0 +1,12 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/lib64stdc++6.symbols.sparc b/lib64stdc++6.symbols.sparc new file mode 100644 index 0000000..f00b05a --- /dev/null +++ b/lib64stdc++6.symbols.sparc @@ -0,0 +1,11 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/lib64stdc++CXX.postinst b/lib64stdc++CXX.postinst new file mode 100644 index 0000000..1c8e979 --- /dev/null +++ b/lib64stdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/lib64stdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/libasan.symbols.16 b/libasan.symbols.16 new file mode 100644 index 0000000..c6ae6da --- /dev/null +++ b/libasan.symbols.16 @@ -0,0 +1,38 @@ + __sanitizer_syscall_post_impl_chown16@Base 5 + __sanitizer_syscall_post_impl_fchown16@Base 5 + __sanitizer_syscall_post_impl_getegid16@Base 5 + __sanitizer_syscall_post_impl_geteuid16@Base 5 + __sanitizer_syscall_post_impl_getgid16@Base 5 + __sanitizer_syscall_post_impl_getgroups16@Base 5 + __sanitizer_syscall_post_impl_getresgid16@Base 5 + __sanitizer_syscall_post_impl_getresuid16@Base 5 + __sanitizer_syscall_post_impl_getuid16@Base 5 + __sanitizer_syscall_post_impl_lchown16@Base 5 + __sanitizer_syscall_post_impl_setfsgid16@Base 5 + __sanitizer_syscall_post_impl_setfsuid16@Base 5 + __sanitizer_syscall_post_impl_setgid16@Base 5 + __sanitizer_syscall_post_impl_setgroups16@Base 5 + __sanitizer_syscall_post_impl_setregid16@Base 5 + __sanitizer_syscall_post_impl_setresgid16@Base 5 + __sanitizer_syscall_post_impl_setresuid16@Base 5 + __sanitizer_syscall_post_impl_setreuid16@Base 5 + __sanitizer_syscall_post_impl_setuid16@Base 5 + __sanitizer_syscall_pre_impl_chown16@Base 5 + __sanitizer_syscall_pre_impl_fchown16@Base 5 + __sanitizer_syscall_pre_impl_getegid16@Base 5 + __sanitizer_syscall_pre_impl_geteuid16@Base 5 + __sanitizer_syscall_pre_impl_getgid16@Base 5 + __sanitizer_syscall_pre_impl_getgroups16@Base 5 + __sanitizer_syscall_pre_impl_getresgid16@Base 5 + __sanitizer_syscall_pre_impl_getresuid16@Base 5 + __sanitizer_syscall_pre_impl_getuid16@Base 5 + __sanitizer_syscall_pre_impl_lchown16@Base 5 + __sanitizer_syscall_pre_impl_setfsgid16@Base 5 + __sanitizer_syscall_pre_impl_setfsuid16@Base 5 + __sanitizer_syscall_pre_impl_setgid16@Base 5 + __sanitizer_syscall_pre_impl_setgroups16@Base 5 + __sanitizer_syscall_pre_impl_setregid16@Base 5 + __sanitizer_syscall_pre_impl_setresgid16@Base 5 + __sanitizer_syscall_pre_impl_setresuid16@Base 5 + __sanitizer_syscall_pre_impl_setreuid16@Base 5 + __sanitizer_syscall_pre_impl_setuid16@Base 5 diff --git a/libasan.symbols.32 b/libasan.symbols.32 new file mode 100644 index 0000000..6ba6027 --- /dev/null +++ b/libasan.symbols.32 @@ -0,0 +1,26 @@ + (arch=!ppc64 !sparc64)__interceptor_ptrace@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdaPvj@Base 5 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdaPvjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdlPvj@Base 5 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZdlPvjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_Znaj@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajRKSt9nothrow_t@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnajSt11align_val_tRKSt9nothrow_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_Znwj@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjRKSt9nothrow_t@Base 4.8 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjSt11align_val_t@Base 7 + (arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)_ZnwjSt11align_val_tRKSt9nothrow_t@Base 7 + (arch=s390x)_ZdaPvm@Base 7.3 + (arch=s390x)_ZdaPvmSt11align_val_t@Base 7.3 + (arch=s390x)_ZdlPvm@Base 7.3 + (arch=s390x)_ZdlPvmSt11align_val_t@Base 7.3 + (arch=s390x)_Znam@Base 7.3 + (arch=s390x)_ZnamRKSt9nothrow_t@Base 7.3 + (arch=s390x)_ZnamSt11align_val_t@Base 7.3 + (arch=s390x)_ZnamSt11align_val_tRKSt9nothrow_t@Base 7.3 + (arch=s390x)_Znwm@Base 7.3 + (arch=s390x)_ZnwmRKSt9nothrow_t@Base 7.3 + (arch=s390x)_ZnwmSt11align_val_t@Base 7.3 + (arch=s390x)_ZnwmSt11align_val_tRKSt9nothrow_t@Base 7.3 + (arch=!ppc64 !sparc64)ptrace@Base 7 diff --git a/libasan.symbols.64 b/libasan.symbols.64 new file mode 100644 index 0000000..708f653 --- /dev/null +++ b/libasan.symbols.64 @@ -0,0 +1,14 @@ + __interceptor_shmctl@Base 4.9 + _ZdaPvm@Base 5 + _ZdaPvmSt11align_val_t@Base 7 + _ZdlPvm@Base 5 + _ZdlPvmSt11align_val_t@Base 7 + _Znam@Base 4.8 + _ZnamRKSt9nothrow_t@Base 4.8 + _ZnamSt11align_val_t@Base 7 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 7 + _Znwm@Base 4.8 + _ZnwmRKSt9nothrow_t@Base 4.8 + _ZnwmSt11align_val_t@Base 7 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 7 + shmctl@Base 4.9 diff --git a/libasan.symbols.common b/libasan.symbols.common new file mode 100644 index 0000000..a62612e --- /dev/null +++ b/libasan.symbols.common @@ -0,0 +1,1773 @@ + OnPrint@Base 8 + _Unwind_RaiseException@Base 9 + _ZdaPv@Base 4.8 + _ZdaPvRKSt9nothrow_t@Base 4.8 + _ZdaPvSt11align_val_t@Base 7 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 7 + _ZdlPv@Base 4.8 + _ZdlPvRKSt9nothrow_t@Base 4.8 + _ZdlPvSt11align_val_t@Base 7 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 7 + __asan_addr_is_in_fake_stack@Base 5 + __asan_address_is_poisoned@Base 4.8 + __asan_after_dynamic_init@Base 4.8 + __asan_alloca_poison@Base 6.2 + __asan_allocas_unpoison@Base 6.2 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_before_dynamic_init@Base 4.8 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_default_options@Base 8 + __asan_default_suppressions@Base 8 + __asan_describe_address@Base 4.8 + __asan_exp_load16@Base 6.2 + __asan_exp_load1@Base 6.2 + __asan_exp_load2@Base 6.2 + __asan_exp_load4@Base 6.2 + __asan_exp_load8@Base 6.2 + __asan_exp_loadN@Base 6.2 + __asan_exp_store16@Base 6.2 + __asan_exp_store1@Base 6.2 + __asan_exp_store2@Base 6.2 + __asan_exp_store4@Base 6.2 + __asan_exp_store8@Base 6.2 + __asan_exp_storeN@Base 6.2 + __asan_get_alloc_stack@Base 5 + __asan_get_current_fake_stack@Base 5 + __asan_get_free_stack@Base 5 + __asan_get_report_access_size@Base 5 + __asan_get_report_access_type@Base 5 + __asan_get_report_address@Base 5 + __asan_get_report_bp@Base 5 + __asan_get_report_description@Base 5 + __asan_get_report_pc@Base 5 + __asan_get_report_sp@Base 5 + __asan_get_shadow_mapping@Base 5 + __asan_handle_no_return@Base 4.8 + __asan_init@Base 6.2 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __asan_load16@Base 5 + __asan_load16_noabort@Base 6.2 + __asan_load1@Base 5 + __asan_load1_noabort@Base 6.2 + __asan_load2@Base 5 + __asan_load2_noabort@Base 6.2 + __asan_load4@Base 5 + __asan_load4_noabort@Base 6.2 + __asan_load8@Base 5 + __asan_load8_noabort@Base 6.2 + __asan_loadN@Base 5 + __asan_loadN_noabort@Base 6.2 + __asan_load_cxx_array_cookie@Base 5 + __asan_locate_address@Base 5 + __asan_memcpy@Base 5 + __asan_memmove@Base 5 + __asan_memset@Base 5 + __asan_on_error@Base 8 + __asan_option_detect_stack_use_after_return@Base 4.9 + __asan_poison_cxx_array_cookie@Base 5 + __asan_poison_intra_object_redzone@Base 5 + __asan_poison_memory_region@Base 4.8 + __asan_poison_stack_memory@Base 4.8 + __asan_print_accumulated_stats@Base 4.8 + __asan_region_is_poisoned@Base 4.8 + __asan_register_elf_globals@Base 8 + __asan_register_globals@Base 4.8 + __asan_register_image_globals@Base 7 + __asan_report_error@Base 4.8 + __asan_report_exp_load16@Base 6.2 + __asan_report_exp_load1@Base 6.2 + __asan_report_exp_load2@Base 6.2 + __asan_report_exp_load4@Base 6.2 + __asan_report_exp_load8@Base 6.2 + __asan_report_exp_load_n@Base 6.2 + __asan_report_exp_store16@Base 6.2 + __asan_report_exp_store1@Base 6.2 + __asan_report_exp_store2@Base 6.2 + __asan_report_exp_store4@Base 6.2 + __asan_report_exp_store8@Base 6.2 + __asan_report_exp_store_n@Base 6.2 + __asan_report_load16@Base 4.8 + __asan_report_load16_noabort@Base 6.2 + __asan_report_load1@Base 4.8 + __asan_report_load1_noabort@Base 6.2 + __asan_report_load2@Base 4.8 + __asan_report_load2_noabort@Base 6.2 + __asan_report_load4@Base 4.8 + __asan_report_load4_noabort@Base 6.2 + __asan_report_load8@Base 4.8 + __asan_report_load8_noabort@Base 6.2 + __asan_report_load_n@Base 4.8 + __asan_report_load_n_noabort@Base 6.2 + __asan_report_present@Base 5 + __asan_report_store16@Base 4.8 + __asan_report_store16_noabort@Base 6.2 + __asan_report_store1@Base 4.8 + __asan_report_store1_noabort@Base 6.2 + __asan_report_store2@Base 4.8 + __asan_report_store2_noabort@Base 6.2 + __asan_report_store4@Base 4.8 + __asan_report_store4_noabort@Base 6.2 + __asan_report_store8@Base 4.8 + __asan_report_store8_noabort@Base 6.2 + __asan_report_store_n@Base 4.8 + __asan_report_store_n_noabort@Base 6.2 + __asan_rt_version@Base 5 + __asan_set_death_callback@Base 4.8 + __asan_set_error_report_callback@Base 4.8 + __asan_set_shadow_00@Base 7 + __asan_set_shadow_f1@Base 7 + __asan_set_shadow_f2@Base 7 + __asan_set_shadow_f3@Base 7 + __asan_set_shadow_f5@Base 7 + __asan_set_shadow_f8@Base 7 + __asan_shadow_memory_dynamic_address@Base 7 + __asan_stack_free_0@Base 4.9 + __asan_stack_free_10@Base 4.9 + __asan_stack_free_1@Base 4.9 + __asan_stack_free_2@Base 4.9 + __asan_stack_free_3@Base 4.9 + __asan_stack_free_4@Base 4.9 + __asan_stack_free_5@Base 4.9 + __asan_stack_free_6@Base 4.9 + __asan_stack_free_7@Base 4.9 + __asan_stack_free_8@Base 4.9 + __asan_stack_free_9@Base 4.9 + __asan_stack_malloc_0@Base 4.9 + __asan_stack_malloc_10@Base 4.9 + __asan_stack_malloc_1@Base 4.9 + __asan_stack_malloc_2@Base 4.9 + __asan_stack_malloc_3@Base 4.9 + __asan_stack_malloc_4@Base 4.9 + __asan_stack_malloc_5@Base 4.9 + __asan_stack_malloc_6@Base 4.9 + __asan_stack_malloc_7@Base 4.9 + __asan_stack_malloc_8@Base 4.9 + __asan_stack_malloc_9@Base 4.9 + __asan_store16@Base 5 + __asan_store16_noabort@Base 6.2 + __asan_store1@Base 5 + __asan_store1_noabort@Base 6.2 + __asan_store2@Base 5 + __asan_store2_noabort@Base 6.2 + __asan_store4@Base 5 + __asan_store4_noabort@Base 6.2 + __asan_store8@Base 5 + __asan_store8_noabort@Base 6.2 + __asan_storeN@Base 5 + __asan_storeN_noabort@Base 6.2 + __asan_test_only_reported_buggy_pointer@Base 5 + __asan_unpoison_intra_object_redzone@Base 5 + __asan_unpoison_memory_region@Base 4.8 + __asan_unpoison_stack_memory@Base 4.8 + __asan_unregister_elf_globals@Base 8 + __asan_unregister_globals@Base 4.8 + __asan_unregister_image_globals@Base 7 + __asan_version_mismatch_check_v8@Base 7 + __cxa_atexit@Base 4.9 + __cxa_rethrow_primary_exception@Base 9 + __cxa_throw@Base 4.8 + __fprintf_chk@Base 9 + __getdelim@Base 5 + __interceptor__Unwind_RaiseException@Base 9 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___cxa_rethrow_primary_exception@Base 9 + __interceptor___cxa_throw@Base 4.8 + __interceptor___fprintf_chk@Base 9 + __interceptor___getdelim@Base 5 + __interceptor___isoc99_fprintf@Base 5 + __interceptor___isoc99_fscanf@Base 4.8 + __interceptor___isoc99_printf@Base 5 + __interceptor___isoc99_scanf@Base 4.8 + __interceptor___isoc99_snprintf@Base 5 + __interceptor___isoc99_sprintf@Base 5 + __interceptor___isoc99_sscanf@Base 4.8 + __interceptor___isoc99_vfprintf@Base 5 + __interceptor___isoc99_vfscanf@Base 4.8 + __interceptor___isoc99_vprintf@Base 5 + __interceptor___isoc99_vscanf@Base 4.8 + __interceptor___isoc99_vsnprintf@Base 5 + __interceptor___isoc99_vsprintf@Base 5 + __interceptor___isoc99_vsscanf@Base 4.8 + __interceptor___libc_memalign@Base 4.8 + __interceptor___longjmp_chk@Base 8 + __interceptor___lxstat64@Base 7 + __interceptor___lxstat@Base 7 + __interceptor___overflow@Base 5 + __interceptor___pthread_mutex_lock@Base 9 + __interceptor___pthread_mutex_unlock@Base 9 + __interceptor___snprintf_chk@Base 9 + __interceptor___sprintf_chk@Base 9 + __interceptor___strdup@Base 7 + __interceptor___strndup@Base 8 + __interceptor___strxfrm_l@Base 9 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __interceptor___vsnprintf_chk@Base 9 + __interceptor___vsprintf_chk@Base 9 + __interceptor___wcsxfrm_l@Base 9 + __interceptor___woverflow@Base 5 + __interceptor___wuflow@Base 5 + __interceptor___wunderflow@Base 5 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor___xstat64@Base 7 + __interceptor___xstat@Base 7 + __interceptor__exit@Base 4.9 + __interceptor__longjmp@Base 4.8 + __interceptor__obstack_begin@Base 5 + __interceptor__obstack_begin_1@Base 5 + __interceptor__obstack_newchunk@Base 5 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_aligned_alloc@Base 5 + __interceptor_asctime@Base 4.8 + __interceptor_asctime_r@Base 4.8 + __interceptor_asprintf@Base 5 + __interceptor_atoi@Base 4.8 + __interceptor_atol@Base 4.8 + __interceptor_atoll@Base 4.8 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_calloc@Base 4.8 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_capget@Base 5 + __interceptor_capset@Base 5 + __interceptor_cfree@Base 4.8 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_confstr@Base 4.9 + __interceptor_ctermid@Base 7 + __interceptor_ctime@Base 4.8 + __interceptor_ctime_r@Base 4.8 + __interceptor_dlclose@Base 5 + __interceptor_dlopen@Base 5 + __interceptor_drand48_r@Base 4.9 + __interceptor_endgrent@Base 5 + __interceptor_endpwent@Base 5 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_eventfd_read@Base 7 + __interceptor_eventfd_write@Base 7 + __interceptor_fclose@Base 5 + __interceptor_fdopen@Base 5 + __interceptor_fflush@Base 5 + __interceptor_fgetgrent@Base 5 + __interceptor_fgetgrent_r@Base 5 + __interceptor_fgetpwent@Base 5 + __interceptor_fgetpwent_r@Base 5 + __interceptor_fgets@Base 9 + __interceptor_fgetxattr@Base 5 + __interceptor_flistxattr@Base 5 + __interceptor_fmemopen@Base 5 + __interceptor_fopen64@Base 5 + __interceptor_fopen@Base 5 + __interceptor_fopencookie@Base 6.2 +#MISSING: 9# __interceptor_fork@Base 5 + __interceptor_fprintf@Base 5 + __interceptor_fputs@Base 9 + __interceptor_fread@Base 8 + __interceptor_free@Base 4.8 + __interceptor_freopen64@Base 5 + __interceptor_freopen@Base 5 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.8 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_ftime@Base 5 + __interceptor_fwrite@Base 8 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getgrent@Base 5 + __interceptor_getgrent_r@Base 5 + __interceptor_getgrgid@Base 4.9 + __interceptor_getgrgid_r@Base 4.9 + __interceptor_getgrnam@Base 4.9 + __interceptor_getgrnam_r@Base 4.9 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getifaddrs@Base 5 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getloadavg@Base 8 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getnameinfo@Base 4.9 + __interceptor_getpass@Base 5 + __interceptor_getpeername@Base 4.9 + __interceptor_getpwent@Base 5 + __interceptor_getpwent_r@Base 5 + __interceptor_getpwnam@Base 4.9 + __interceptor_getpwnam_r@Base 4.9 + __interceptor_getpwuid@Base 4.9 + __interceptor_getpwuid_r@Base 4.9 + __interceptor_getresgid@Base 5 + __interceptor_getresuid@Base 5 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_getutent@Base 8 + __interceptor_getutid@Base 8 + __interceptor_getutline@Base 8 + __interceptor_getutxent@Base 8 + __interceptor_getutxid@Base 8 + __interceptor_getutxline@Base 8 + __interceptor_getxattr@Base 5 + __interceptor_glob64@Base 4.9 + __interceptor_glob@Base 4.9 + __interceptor_gmtime@Base 4.8 + __interceptor_gmtime_r@Base 4.8 + __interceptor_iconv@Base 4.9 + __interceptor_if_indextoname@Base 5 + __interceptor_if_nametoindex@Base 5 + __interceptor_index@Base 4.8 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_lgetxattr@Base 5 + __interceptor_listxattr@Base 5 + __interceptor_llistxattr@Base 5 + __interceptor_localtime@Base 4.8 + __interceptor_localtime_r@Base 4.8 + __interceptor_longjmp@Base 4.8 + __interceptor_lrand48_r@Base 4.9 + __interceptor_mallinfo@Base 4.8 + __interceptor_malloc@Base 4.8 + __interceptor_malloc_stats@Base 4.8 + __interceptor_malloc_usable_size@Base 4.8 + __interceptor_mallopt@Base 4.8 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.8 + __interceptor_memchr@Base 5 + __interceptor_memcmp@Base 4.8 + __interceptor_memcpy@Base 4.8 + __interceptor_memmem@Base 7 + __interceptor_memmove@Base 4.8 + __interceptor_memrchr@Base 5 + __interceptor_memset@Base 4.8 + __interceptor_mincore@Base 6.2 + __interceptor_mktime@Base 5 + __interceptor_mlock@Base 4.8 + __interceptor_mlockall@Base 4.8 + __interceptor_mmap64@Base 9 + __interceptor_mmap@Base 9 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_mprotect@Base 9 + __interceptor_munlock@Base 4.8 + __interceptor_munlockall@Base 4.8 + __interceptor_name_to_handle_at@Base 9 + __interceptor_open_by_handle_at@Base 9 + __interceptor_open_memstream@Base 5 + __interceptor_open_wmemstream@Base 5 + __interceptor_opendir@Base 6.2 + __interceptor_poll@Base 4.9 + __interceptor_posix_memalign@Base 4.8 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.8 + __interceptor_pread64@Base 4.8 + __interceptor_pread@Base 4.8 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_printf@Base 5 + __interceptor_process_vm_readv@Base 6.2 + __interceptor_process_vm_writev@Base 6.2 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_barrierattr_getpshared@Base 5 + __interceptor_pthread_condattr_getclock@Base 5 + __interceptor_pthread_condattr_getpshared@Base 5 + __interceptor_pthread_create@Base 4.8 + __interceptor_pthread_getname_np@Base 9 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_join@Base 6.2 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_mutexattr_getprioceiling@Base 5 + __interceptor_pthread_mutexattr_getprotocol@Base 5 + __interceptor_pthread_mutexattr_getpshared@Base 5 + __interceptor_pthread_mutexattr_getrobust@Base 5 + __interceptor_pthread_mutexattr_getrobust_np@Base 5 + __interceptor_pthread_mutexattr_gettype@Base 5 + __interceptor_pthread_rwlockattr_getkind_np@Base 5 + __interceptor_pthread_rwlockattr_getpshared@Base 5 + __interceptor_pthread_setcancelstate@Base 6.2 + __interceptor_pthread_setcanceltype@Base 6.2 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pvalloc@Base 4.8 + __interceptor_puts@Base 9 + __interceptor_pwrite64@Base 4.8 + __interceptor_pwrite@Base 4.8 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_rand_r@Base 5 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.8 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readlink@Base 9 + __interceptor_readlinkat@Base 9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.8 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 7 + __interceptor_recvfrom@Base 7 + __interceptor_recvmmsg@Base 9 + __interceptor_recvmsg@Base 4.9 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.8 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_sched_getparam@Base 6.2 + __interceptor_sem_destroy@Base 6.2 + __interceptor_sem_getvalue@Base 6.2 + __interceptor_sem_init@Base 6.2 + __interceptor_sem_post@Base 6.2 + __interceptor_sem_timedwait@Base 6.2 + __interceptor_sem_trywait@Base 6.2 + __interceptor_sem_wait@Base 6.2 + __interceptor_send@Base 7 + __interceptor_sendmmsg@Base 9 + __interceptor_sendmsg@Base 7 + __interceptor_sendto@Base 7 + __interceptor_setgrent@Base 5 + __interceptor_setitimer@Base 4.9 + __interceptor_setlocale@Base 4.9 + __interceptor_setpwent@Base 5 + __interceptor_sigaction@Base 4.8 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.8 + __interceptor_signal@Base 4.8 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_snprintf@Base 5 + __interceptor_sprintf@Base 5 + __interceptor_sscanf@Base 4.8 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.8 + __interceptor_strcasestr@Base 6.2 + __interceptor_strcat@Base 4.8 + __interceptor_strchr@Base 4.8 + __interceptor_strchrnul@Base 7 + __interceptor_strcmp@Base 4.8 + __interceptor_strcpy@Base 4.8 + __interceptor_strcspn@Base 6.2 + __interceptor_strdup@Base 4.8 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.8 + __interceptor_strncasecmp@Base 4.8 + __interceptor_strncat@Base 4.8 + __interceptor_strncmp@Base 4.8 + __interceptor_strncpy@Base 4.8 + __interceptor_strndup@Base 8 + __interceptor_strnlen@Base 4.8 + __interceptor_strpbrk@Base 6.2 + __interceptor_strptime@Base 4.9 + __interceptor_strrchr@Base 7 + __interceptor_strspn@Base 6.2 + __interceptor_strstr@Base 6.2 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtok@Base 8 + __interceptor_strtol@Base 4.8 + __interceptor_strtoll@Base 4.8 + __interceptor_strtoumax@Base 4.9 + __interceptor_strxfrm@Base 9 + __interceptor_strxfrm_l@Base 9 + __interceptor_swapcontext@Base 4.8 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_timerfd_gettime@Base 5 + __interceptor_timerfd_settime@Base 5 + __interceptor_times@Base 4.9 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + __interceptor_tsearch@Base 5 + __interceptor_ttyname_r@Base 7 + __interceptor_valloc@Base 4.8 + __interceptor_vasprintf@Base 5 + __interceptor_vfprintf@Base 5 + __interceptor_vfscanf@Base 4.8 + __interceptor_vprintf@Base 5 + __interceptor_vscanf@Base 4.8 + __interceptor_vsnprintf@Base 5 + __interceptor_vsprintf@Base 5 + __interceptor_vsscanf@Base 4.8 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcrtomb@Base 6.2 + __interceptor_wcscat@Base 8 + __interceptor_wcslen@Base 4.9 + __interceptor_wcsncat@Base 8 + __interceptor_wcsnlen@Base 8 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wcsxfrm@Base 9 + __interceptor_wcsxfrm_l@Base 9 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.8 + __interceptor_writev@Base 4.9 + __interceptor_xdr_bool@Base 5 + __interceptor_xdr_bytes@Base 5 + __interceptor_xdr_char@Base 5 + __interceptor_xdr_double@Base 5 + __interceptor_xdr_enum@Base 5 + __interceptor_xdr_float@Base 5 + __interceptor_xdr_hyper@Base 5 + __interceptor_xdr_int16_t@Base 5 + __interceptor_xdr_int32_t@Base 5 + __interceptor_xdr_int64_t@Base 5 + __interceptor_xdr_int8_t@Base 5 + __interceptor_xdr_int@Base 5 + __interceptor_xdr_long@Base 5 + __interceptor_xdr_longlong_t@Base 5 + __interceptor_xdr_quad_t@Base 5 + __interceptor_xdr_short@Base 5 + __interceptor_xdr_string@Base 5 + __interceptor_xdr_u_char@Base 5 + __interceptor_xdr_u_hyper@Base 5 + __interceptor_xdr_u_int@Base 5 + __interceptor_xdr_u_long@Base 5 + __interceptor_xdr_u_longlong_t@Base 5 + __interceptor_xdr_u_quad_t@Base 5 + __interceptor_xdr_u_short@Base 5 + __interceptor_xdr_uint16_t@Base 5 + __interceptor_xdr_uint32_t@Base 5 + __interceptor_xdr_uint64_t@Base 5 + __interceptor_xdr_uint8_t@Base 5 + __interceptor_xdrmem_create@Base 5 + __interceptor_xdrstdio_create@Base 5 + __isoc99_fprintf@Base 5 + __isoc99_fscanf@Base 4.8 + __isoc99_printf@Base 5 + __isoc99_scanf@Base 4.8 + __isoc99_snprintf@Base 5 + __isoc99_sprintf@Base 5 + __isoc99_sscanf@Base 4.8 + __isoc99_vfprintf@Base 5 + __isoc99_vfscanf@Base 4.8 + __isoc99_vprintf@Base 5 + __isoc99_vscanf@Base 4.8 + __isoc99_vsnprintf@Base 5 + __isoc99_vsprintf@Base 5 + __isoc99_vsscanf@Base 4.8 + __libc_memalign@Base 4.8 + __longjmp_chk@Base 8 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_do_recoverable_leak_check@Base 6.2 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __lsan_register_root_region@Base 5 + __lsan_unregister_root_region@Base 5 + __lxstat64@Base 7 + __lxstat@Base 7 + __overflow@Base 5 + __pthread_mutex_lock@Base 9 + __pthread_mutex_unlock@Base 9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_annotate_contiguous_container@Base 4.9 + __sanitizer_contiguous_container_find_bad_address@Base 6.2 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6.2 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6.2 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_finish_switch_fiber@Base 7 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_print_memory_profile@Base 8 + __sanitizer_print_stack_trace@Base 4.9 + __sanitizer_ptr_cmp@Base 5 + __sanitizer_ptr_sub@Base 5 + __sanitizer_purge_allocator@Base 9 + __sanitizer_report_error_summary@Base 4.8 + __sanitizer_sandbox_on_notify@Base 4.8 + __sanitizer_set_death_callback@Base 6.2 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.8 + __sanitizer_start_switch_fiber@Base 7 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigaction@Base 7 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_sigaction@Base 7 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 7 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_sigaction@Base 7 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 + __sanitizer_verify_contiguous_container@Base 5 + __sanitizer_weak_hook_memcmp@Base 8 + __sanitizer_weak_hook_memmem@Base 8 + __sanitizer_weak_hook_strcasecmp@Base 8 + __sanitizer_weak_hook_strcasestr@Base 8 + __sanitizer_weak_hook_strcmp@Base 8 + __sanitizer_weak_hook_strncasecmp@Base 8 + __sanitizer_weak_hook_strncmp@Base 8 + __sanitizer_weak_hook_strstr@Base 8 + __snprintf_chk@Base 9 + __sprintf_chk@Base 9 + __strdup@Base 7 + __strndup@Base 8 + __strxfrm_l@Base 9 + __uflow@Base 5 + __underflow@Base 5 + __vsnprintf_chk@Base 9 + __vsprintf_chk@Base 9 + __wcsxfrm_l@Base 9 + __woverflow@Base 5 + __wuflow@Base 5 + __wunderflow@Base 5 + __xpg_strerror_r@Base 4.9 + __xstat64@Base 7 + __xstat@Base 7 + _exit@Base 4.9 + _longjmp@Base 4.8 + _obstack_begin@Base 5 + _obstack_begin_1@Base 5 + _obstack_newchunk@Base 5 + accept4@Base 4.9 + accept@Base 4.9 + aligned_alloc@Base 5 + asctime@Base 4.8 + asctime_r@Base 4.8 + asprintf@Base 5 + atoi@Base 4.8 + atol@Base 4.8 + atoll@Base 4.8 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + calloc@Base 4.8 + canonicalize_file_name@Base 4.9 + capget@Base 5 + capset@Base 5 + cfree@Base 4.8 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + confstr@Base 4.9 + ctermid@Base 7 + ctime@Base 4.8 + ctime_r@Base 4.8 + dlclose@Base 5 + dlopen@Base 5 + drand48_r@Base 4.9 + endgrent@Base 5 + endpwent@Base 5 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + eventfd_read@Base 7 + eventfd_write@Base 7 + fclose@Base 5 + fdopen@Base 5 + fflush@Base 5 + fgetgrent@Base 5 + fgetgrent_r@Base 5 + fgetpwent@Base 5 + fgetpwent_r@Base 5 + fgets@Base 9 + fgetxattr@Base 5 + flistxattr@Base 5 + fmemopen@Base 5 + fopen64@Base 5 + fopen@Base 5 + fopencookie@Base 6.2 +#MISSING: 9# fork@Base 5 + fprintf@Base 5 + fputs@Base 9 + fread@Base 8 + free@Base 4.8 + freopen64@Base 5 + freopen@Base 5 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.8 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + ftime@Base 5 + fwrite@Base 8 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getgrent@Base 5 + getgrent_r@Base 5 + getgrgid@Base 4.9 + getgrgid_r@Base 4.9 + getgrnam@Base 4.9 + getgrnam_r@Base 4.9 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getifaddrs@Base 5 + getitimer@Base 4.9 + getline@Base 4.9 + getloadavg@Base 8 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getnameinfo@Base 4.9 + getpass@Base 5 + getpeername@Base 4.9 + getpwent@Base 5 + getpwent_r@Base 5 + getpwnam@Base 4.9 + getpwnam_r@Base 4.9 + getpwuid@Base 4.9 + getpwuid_r@Base 4.9 + getresgid@Base 5 + getresuid@Base 5 + getsockname@Base 4.9 + getsockopt@Base 4.9 + getutent@Base 8 + getutid@Base 8 + getutline@Base 8 + getutxent@Base 8 + getutxid@Base 8 + getutxline@Base 8 + getxattr@Base 5 + glob64@Base 4.9 + glob@Base 4.9 + gmtime@Base 4.8 + gmtime_r@Base 4.8 + iconv@Base 4.9 + if_indextoname@Base 5 + if_nametoindex@Base 5 + index@Base 4.8 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + ioctl@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + lgetxattr@Base 5 + listxattr@Base 5 + llistxattr@Base 5 + localtime@Base 4.8 + localtime_r@Base 4.8 + longjmp@Base 4.8 + lrand48_r@Base 4.9 + mallinfo@Base 4.8 + malloc@Base 4.8 + malloc_stats@Base 4.8 + malloc_usable_size@Base 4.8 + mallopt@Base 4.8 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.8 + memchr@Base 5 + memcmp@Base 4.8 + memcpy@Base 4.8 + memmem@Base 7 + memmove@Base 4.8 + memrchr@Base 5 + memset@Base 4.8 + mincore@Base 6.2 + mktime@Base 5 + mlock@Base 4.8 + mlockall@Base 4.8 + mmap64@Base 9 + mmap@Base 9 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + mprobe@Base 8 + mprotect@Base 9 + munlock@Base 4.8 + munlockall@Base 4.8 + name_to_handle_at@Base 9 + open_by_handle_at@Base 9 + open_memstream@Base 5 + open_wmemstream@Base 5 + opendir@Base 6.2 + poll@Base 4.9 + posix_memalign@Base 4.8 + ppoll@Base 4.9 + prctl@Base 4.8 + pread64@Base 4.8 + pread@Base 4.8 + preadv64@Base 4.9 + preadv@Base 4.9 + printf@Base 5 + process_vm_readv@Base 6.2 + process_vm_writev@Base 6.2 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_barrierattr_getpshared@Base 5 + pthread_condattr_getclock@Base 5 + pthread_condattr_getpshared@Base 5 + pthread_create@Base 4.8 + pthread_getname_np@Base 9 + pthread_getschedparam@Base 4.9 + pthread_join@Base 6.2 + pthread_mutex_lock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_mutexattr_getprioceiling@Base 5 + pthread_mutexattr_getprotocol@Base 5 + pthread_mutexattr_getpshared@Base 5 + pthread_mutexattr_getrobust@Base 5 + pthread_mutexattr_getrobust_np@Base 5 + pthread_mutexattr_gettype@Base 5 + pthread_rwlockattr_getkind_np@Base 5 + pthread_rwlockattr_getpshared@Base 5 + pthread_setcancelstate@Base 6.2 + pthread_setcanceltype@Base 6.2 + pthread_setname_np@Base 4.9 + pvalloc@Base 4.8 + puts@Base 9 + pwrite64@Base 4.8 + pwrite@Base 4.8 + pwritev64@Base 4.9 + pwritev@Base 4.9 + rand_r@Base 5 + random_r@Base 4.9 + read@Base 4.8 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readlink@Base 9 + readlinkat@Base 9 + readv@Base 4.9 + realloc@Base 4.8 + realpath@Base 4.9 + recv@Base 7 + recvfrom@Base 7 + recvmmsg@Base 9 + recvmsg@Base 4.9 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.8 + sched_getaffinity@Base 4.9 + sched_getparam@Base 6.2 + sem_destroy@Base 6.2 + sem_getvalue@Base 6.2 + sem_init@Base 6.2 + sem_post@Base 6.2 + sem_timedwait@Base 6.2 + sem_trywait@Base 6.2 + sem_wait@Base 6.2 + send@Base 7 + sendmmsg@Base 9 + sendmsg@Base 7 + sendto@Base 7 + setgrent@Base 5 + setitimer@Base 4.9 + setlocale@Base 4.9 + setpwent@Base 5 + sigaction@Base 4.8 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.8 + signal@Base 4.8 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + snprintf@Base 5 + sprintf@Base 5 + sscanf@Base 4.8 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.8 + strcasestr@Base 6.2 + strcat@Base 4.8 + strchr@Base 4.8 + strchrnul@Base 7 + strcmp@Base 4.8 + strcpy@Base 4.8 + strcspn@Base 6.2 + strdup@Base 4.8 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.8 + strncasecmp@Base 4.8 + strncat@Base 4.8 + strncmp@Base 4.8 + strncpy@Base 4.8 + strndup@Base 8 + strnlen@Base 4.8 + strpbrk@Base 6.2 + strptime@Base 4.9 + strrchr@Base 7 + strspn@Base 6.2 + strstr@Base 6.2 + strtoimax@Base 4.9 + strtok@Base 8 + strtol@Base 4.8 + strtoll@Base 4.8 + strtoumax@Base 4.9 + strxfrm@Base 9 + strxfrm_l@Base 9 + swapcontext@Base 4.8 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + timerfd_gettime@Base 5 + timerfd_settime@Base 5 + times@Base 4.9 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + tsearch@Base 5 + ttyname_r@Base 7 + valloc@Base 4.8 + vasprintf@Base 5 + vfprintf@Base 5 + vfscanf@Base 4.8 + vprintf@Base 5 + vscanf@Base 4.8 + vsnprintf@Base 5 + vsprintf@Base 5 + vsscanf@Base 4.8 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcrtomb@Base 6.2 + wcscat@Base 8 + wcslen@Base 4.9 + wcsncat@Base 8 + wcsnlen@Base 8 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wcsxfrm@Base 9 + wcsxfrm_l@Base 9 + wordexp@Base 4.9 + write@Base 4.8 + writev@Base 4.9 + xdr_bool@Base 5 + xdr_bytes@Base 5 + xdr_char@Base 5 + xdr_double@Base 5 + xdr_enum@Base 5 + xdr_float@Base 5 + xdr_hyper@Base 5 + xdr_int16_t@Base 5 + xdr_int32_t@Base 5 + xdr_int64_t@Base 5 + xdr_int8_t@Base 5 + xdr_int@Base 5 + xdr_long@Base 5 + xdr_longlong_t@Base 5 + xdr_quad_t@Base 5 + xdr_short@Base 5 + xdr_string@Base 5 + xdr_u_char@Base 5 + xdr_u_hyper@Base 5 + xdr_u_int@Base 5 + xdr_u_long@Base 5 + xdr_u_longlong_t@Base 5 + xdr_u_quad_t@Base 5 + xdr_u_short@Base 5 + xdr_uint16_t@Base 5 + xdr_uint32_t@Base 5 + xdr_uint64_t@Base 5 + xdr_uint8_t@Base 5 + xdrmem_create@Base 5 + xdrstdio_create@Base 5 diff --git a/libasan5.symbols b/libasan5.symbols new file mode 100644 index 0000000..d4d580e --- /dev/null +++ b/libasan5.symbols @@ -0,0 +1,28 @@ +libasan.so.5 libasan5 #MINVER# +#include "libasan.symbols.common" +(arch=!arm64 !alpha !amd64 !ia64 !mips64el !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)#include "libasan.symbols.32" +(arch=arm64 alpha amd64 ia64 mips64el ppc64 ppc64el s390x sparc64 kfreebsd-amd64)#include "libasan.symbols.64" +(arch=armel armhf sparc64 x32)#include "libasan.symbols.16" +# these are missing on some archs ... + (arch=!s390x)__interceptor___tls_get_addr@Base 5 + (arch=!powerpc !ppc64 !ppc64el !s390x)__tls_get_addr@Base 5 + (arch=powerpc ppc64 ppc64el)__tls_get_addr_opt@Base 7 + (arch=s390x)__interceptor___tls_get_addr_internal@Base 8 + (arch=s390x)__interceptor___tls_get_offset@Base 8 + (arch=s390x)__tls_get_addr_internal@Base 8 + (arch=s390x)__tls_get_offset@Base 8 + (arch=!powerpc !sparc !sparc64)__interceptor_ptrace@Base 4.9 + (arch=!powerpc !sparc !sparc64)ptrace@Base 4.9 + (arch=base-any-any-amd64 any-mips any-mipsel x32)internal_sigreturn@Base 7 + (arch=armel armhf)__interceptor___aeabi_memclr4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memclr8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memclr@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memcpy@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memmove@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset4@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset8@Base 5 + (arch=armel armhf)__interceptor___aeabi_memset@Base 5 diff --git a/libatomic.symbols b/libatomic.symbols new file mode 100644 index 0000000..f50770d --- /dev/null +++ b/libatomic.symbols @@ -0,0 +1,4 @@ +libatomic.so.1 #PACKAGE# #MINVER# + (symver)LIBATOMIC_1.0 4.8 + (symver)LIBATOMIC_1.1 4.9 + (symver)LIBATOMIC_1.2 6 diff --git a/libcc1-0.symbols b/libcc1-0.symbols new file mode 100644 index 0000000..d6ec38b --- /dev/null +++ b/libcc1-0.symbols @@ -0,0 +1,66 @@ +libcc1.so.0 libcc1-0 #MINVER# + (optional=abi_c++98)_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@Base 5 + (optional=abi_c++98)_ZNSt6vectorISsSaISsEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSsS1_EERKSs@Base 5 + (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEEvDpOT_@Base 6 + (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_emplace_back_auxIJRKS5_EEEvDpOT_@Base 6 + (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE19_M_emplace_back_auxIJS5_EEEvDpOT_@Base 6 + (optional=abi_c++17)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 8 + (optional=abi_c++17)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 8 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@Base 8 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@Base 8 + _xexit_cleanup@Base 5 + concat@Base 5 + concat_copy2@Base 5 + concat_copy@Base 5 + concat_length@Base 5 + gcc_c_fe_context@Base 5 + gcc_cp_fe_context@Base 7 + htab_clear_slot@Base 5 + htab_collisions@Base 5 + htab_create@Base 5 + htab_create_alloc@Base 5 + htab_create_alloc_ex@Base 5 + htab_create_typed_alloc@Base 5 + htab_delete@Base 5 + htab_elements@Base 5 + htab_empty@Base 5 + htab_eq_pointer@Base 5 + htab_find@Base 5 + htab_find_slot@Base 5 + htab_find_slot_with_hash@Base 5 + htab_find_with_hash@Base 5 + htab_hash_pointer@Base 5 + htab_hash_string@Base 5 + htab_remove_elt@Base 5 + htab_remove_elt_with_hash@Base 5 + htab_set_functions_ex@Base 5 + htab_size@Base 5 + htab_traverse@Base 5 + htab_traverse_noresize@Base 5 + htab_try_create@Base 5 + iterative_hash@Base 5 + libiberty_concat_ptr@Base 5 + reconcat@Base 5 + xcalloc@Base 5 + xexit@Base 5 + xmalloc@Base 5 + xmalloc_failed@Base 5 + xmalloc_set_program_name@Base 5 + xre_comp@Base 5 + xre_compile_fastmap@Base 5 + xre_compile_pattern@Base 5 + xre_exec@Base 5 + xre_match@Base 5 + xre_match_2@Base 5 + xre_max_failures@Base 5 + xre_search@Base 5 + xre_search_2@Base 5 + xre_set_registers@Base 5 + xre_set_syntax@Base 5 + xre_syntax_options@Base 5 + xrealloc@Base 5 + xregcomp@Base 5 + xregerror@Base 5 + xregexec@Base 5 + xregfree@Base 5 + xstrdup@Base 7 diff --git a/libgcc.symbols b/libgcc.symbols new file mode 100644 index 0000000..39475b3 --- /dev/null +++ b/libgcc.symbols @@ -0,0 +1,26 @@ +libgcc_s.so.1 #PACKAGE# #MINVER# + (symver)GCC_3.0 1:3.0 + (symver)GCC_3.3 1:3.3 + (symver)GCC_3.3.1 1:3.3.1 +# __gcc_personality_sj0, __gcc_personality_v0 +#(symver|optional)GCC_3.3.2 1:3.3.2 + (symver|arch=armel armhf mips mipsel mipsn32 mips64 mips64el powerpc powerpcspe sh4)GCC_3.3.4 1:3.3.4 + (symver)GCC_3.4 1:3.4 + (symver)GCC_3.4.2 1:3.4.2 +#(symver|arch-bits=32)GCC_3.4.4 1:3.4.4 + (symver|arch=!armel !armhf !any-i386 !mips !mipsel !powerpc !powerpcspe !s390 !sh4 !sparc)GCC_3.4.4 1:3.4.4 + (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 1:3.5 + (symver)GCC_4.0.0 1:4.0 + (symver|arch=powerpc s390 s390x)GCC_4.1.0 1:4.1 + (symver)GCC_4.2.0 1:4.2 + (symver)GCC_4.3.0 1:4.3 + (symver|arch=any-i386 mips mipsel mipsn32 mips64 mips64el riscv64)GCC_4.4.0 1:4.4 + (symver|arch=arm64 any-i386 mipsn32 mips64 mips64el riscv64)GCC_4.5.0 1:4.5 +#(symver|optional)GCC_4.6.0 1:4.6 + (symver)GCC_4.7.0 1:4.7 + (symver|arch=any-amd64 any-i386 x32)GCC_4.8.0 1:4.8 + (symver|arch=!any-amd64 !x32 !sparc64 !s390x)GLIBC_2.0 1:4.2 + (symver|arch=s390x sh4 sparc64)GLIBC_2.2 1:4.2 + (symver|arch=sparc)GCC_LDBL_3.0@GCC_LDBL_3.0 1:3.0 + (symver|arch=alpha sparc)GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.0 + (symver)GCC_7.0.0 1:7 diff --git a/libgcc.symbols.aeabi b/libgcc.symbols.aeabi new file mode 100644 index 0000000..64e9af3 --- /dev/null +++ b/libgcc.symbols.aeabi @@ -0,0 +1,69 @@ + __aeabi_cdcmpeq@GCC_3.5 1:3.5 + __aeabi_cdcmple@GCC_3.5 1:3.5 + __aeabi_cdrcmple@GCC_3.5 1:3.5 + __aeabi_cfcmpeq@GCC_3.5 1:3.5 + __aeabi_cfcmple@GCC_3.5 1:3.5 + __aeabi_cfrcmple@GCC_3.5 1:3.5 + __aeabi_d2f@GCC_3.5 1:3.5 + __aeabi_d2iz@GCC_3.5 1:3.5 + __aeabi_d2lz@GCC_3.5 1:3.5 + __aeabi_d2uiz@GCC_3.5 1:3.5 + __aeabi_d2ulz@GCC_3.5 1:3.5 + __aeabi_dadd@GCC_3.5 1:3.5 + __aeabi_dcmpeq@GCC_3.5 1:3.5 + __aeabi_dcmpge@GCC_3.5 1:3.5 + __aeabi_dcmpgt@GCC_3.5 1:3.5 + __aeabi_dcmple@GCC_3.5 1:3.5 + __aeabi_dcmplt@GCC_3.5 1:3.5 + __aeabi_dcmpun@GCC_3.5 1:3.5 + __aeabi_ddiv@GCC_3.5 1:3.5 + __aeabi_dmul@GCC_3.5 1:3.5 + __aeabi_dneg@GCC_3.5 1:3.5 + __aeabi_drsub@GCC_3.5 1:3.5 + __aeabi_dsub@GCC_3.5 1:3.5 + __aeabi_f2d@GCC_3.5 1:3.5 + __aeabi_f2iz@GCC_3.5 1:3.5 + __aeabi_f2lz@GCC_3.5 1:3.5 + __aeabi_f2uiz@GCC_3.5 1:3.5 + __aeabi_f2ulz@GCC_3.5 1:3.5 + __aeabi_fadd@GCC_3.5 1:3.5 + __aeabi_fcmpeq@GCC_3.5 1:3.5 + __aeabi_fcmpge@GCC_3.5 1:3.5 + __aeabi_fcmpgt@GCC_3.5 1:3.5 + __aeabi_fcmple@GCC_3.5 1:3.5 + __aeabi_fcmplt@GCC_3.5 1:3.5 + __aeabi_fcmpun@GCC_3.5 1:3.5 + __aeabi_fdiv@GCC_3.5 1:3.5 + __aeabi_fmul@GCC_3.5 1:3.5 + __aeabi_fneg@GCC_3.5 1:3.5 + __aeabi_frsub@GCC_3.5 1:3.5 + __aeabi_fsub@GCC_3.5 1:3.5 + __aeabi_i2d@GCC_3.5 1:3.5 + __aeabi_i2f@GCC_3.5 1:3.5 + __aeabi_idiv@GCC_3.5 1:3.5 + __aeabi_idiv0@GCC_3.5 1:4.5.0 + __aeabi_idivmod@GCC_3.5 1:3.5 + __aeabi_l2d@GCC_3.5 1:3.5 + __aeabi_l2f@GCC_3.5 1:3.5 + __aeabi_lasr@GCC_3.5 1:3.5 + __aeabi_lcmp@GCC_3.5 1:3.5 + __aeabi_ldivmod@GCC_3.5 1:3.5 + __aeabi_ldiv0@GCC_3.5 1:4.5.0 + __aeabi_llsl@GCC_3.5 1:3.5 + __aeabi_llsr@GCC_3.5 1:3.5 + __aeabi_lmul@GCC_3.5 1:3.5 + __aeabi_ui2d@GCC_3.5 1:3.5 + __aeabi_ui2f@GCC_3.5 1:3.5 + __aeabi_uidiv@GCC_3.5 1:3.5 + __aeabi_uidivmod@GCC_3.5 1:3.5 + __aeabi_ul2d@GCC_3.5 1:3.5 + __aeabi_ul2f@GCC_3.5 1:3.5 + __aeabi_ulcmp@GCC_3.5 1:3.5 + __aeabi_uldivmod@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr0@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr1@GCC_3.5 1:3.5 + __aeabi_unwind_cpp_pr2@GCC_3.5 1:3.5 + __aeabi_uread4@GCC_3.5 1:3.5 + __aeabi_uread8@GCC_3.5 1:3.5 + __aeabi_uwrite4@GCC_3.5 1:3.5 + __aeabi_uwrite8@GCC_3.5 1:3.5 diff --git a/libgcc2.symbols.m68k b/libgcc2.symbols.m68k new file mode 100644 index 0000000..a49f0b3 --- /dev/null +++ b/libgcc2.symbols.m68k @@ -0,0 +1,162 @@ +libgcc_s.so.2 libgcc2 #MINVER# + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + GCC_3.3.4@GCC_3.3.4 4.4.5 + GCC_3.3@GCC_3.3 4.2.1 + GCC_3.4.2@GCC_3.4.2 4.2.1 + GCC_3.4@GCC_3.4 4.2.1 + GCC_4.0.0@GCC_4.0.0 4.2.1 + GCC_4.2.0@GCC_4.2.0 4.2.1 + GCC_4.3.0@GCC_4.3.0 4.3.0 + GCC_4.5.0@GCC_4.5.0 4.5 + GCC_4.7.0@GCC_4.7.0 4.7 + GLIBC_2.0@GLIBC_2.0 4.2.1 + _Unwind_Backtrace@GCC_3.3 4.2.1 + _Unwind_DeleteException@GCC_3.0 4.2.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 + _Unwind_Find_FDE@GCC_3.0 4.2.1 + _Unwind_ForcedUnwind@GCC_3.0 4.2.1 + _Unwind_GetCFA@GCC_3.3 4.2.1 + _Unwind_GetDataRelBase@GCC_3.0 4.2.1 + _Unwind_GetGR@GCC_3.0 4.2.1 + _Unwind_GetIP@GCC_3.0 4.2.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 + _Unwind_GetRegionStart@GCC_3.0 4.2.1 + _Unwind_GetTextRelBase@GCC_3.0 4.2.1 + _Unwind_RaiseException@GCC_3.0 4.2.1 + _Unwind_Resume@GCC_3.0 4.2.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 + _Unwind_SetGR@GCC_3.0 4.2.1 + _Unwind_SetIP@GCC_3.0 4.2.1 + __absvdi2@GCC_3.0 4.2.1 + __absvsi2@GCC_3.0 4.2.1 + __adddf3@GCC_3.0 4.4.5 + __addsf3@GCC_3.0 4.4.5 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __addxf3@GCC_3.0 4.4.5 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 4.3.0 + __bswapsi2@GCC_4.3.0 4.3.0 + __clear_cache@GCC_3.0 4.2.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.2.1 + __clzsi2@GCC_3.4 4.2.1 + __cmpdi2@GCC_3.0 4.2.1 + __ctzdi2@GCC_3.4 4.2.1 + __ctzsi2@GCC_3.4 4.2.1 + __deregister_frame@GLIBC_2.0 4.2.1 + __deregister_frame_info@GLIBC_2.0 4.2.1 + __deregister_frame_info_bases@GCC_3.0 4.2.1 + __divdc3@GCC_4.0.0 4.2.1 + __divdf3@GCC_3.0 4.4.5 + __divdi3@GLIBC_2.0 4.2.1 + __divsc3@GCC_4.0.0 4.2.1 + __divsf3@GCC_3.0 4.4.5 + __divsi3@GCC_3.0 4.4.5 + __divxc3@GCC_4.0.0 4.2.1 + __divxf3@GCC_3.0 4.4.5 + __emutls_get_address@GCC_4.3.0 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __eqdf2@GCC_3.0 4.4.5 + __eqsf2@GCC_3.0 4.4.5 + __eqxf2@GCC_3.0 4.4.5 + __extenddfxf2@GCC_3.0 4.4.5 + __extendsfdf2@GCC_3.0 4.4.5 + __extendsfxf2@GCC_3.0 4.4.5 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __fixdfdi@GCC_3.0 4.2.1 + __fixdfsi@GCC_3.0 4.4.5 + __fixsfdi@GCC_3.0 4.2.1 + __fixsfsi@GCC_3.0 4.4.5 + __fixunsdfdi@GCC_3.0 4.2.1 + __fixunsdfsi@GCC_3.0 4.2.1 + __fixunssfdi@GCC_3.0 4.2.1 + __fixunssfsi@GCC_3.0 4.2.1 + __fixunsxfdi@GCC_3.0 4.2.1 + __fixunsxfsi@GCC_3.0 4.2.1 + __fixxfdi@GCC_3.0 4.2.1 + __fixxfsi@GCC_3.0 4.4.5 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatsidf@GCC_3.0 4.4.5 + __floatsisf@GCC_3.0 4.4.5 + __floatsixf@GCC_3.0 4.4.5 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __floatunsidf@GCC_4.2.0 4.4.5 + __floatunsisf@GCC_4.2.0 4.4.5 + __floatunsixf@GCC_4.2.0 4.4.5 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __gedf2@GCC_3.0 4.4.5 + __gesf2@GCC_3.0 4.4.5 + __gexf2@GCC_3.0 4.4.5 + __gtdf2@GCC_3.0 4.4.5 + __gtsf2@GCC_3.0 4.4.5 + __gtxf2@GCC_3.0 4.4.5 + __ledf2@GCC_3.0 4.4.5 + __lesf2@GCC_3.0 4.4.5 + __lexf2@GCC_3.0 4.4.5 + __lshrdi3@GCC_3.0 4.2.1 + __ltdf2@GCC_3.0 4.4.5 + __ltsf2@GCC_3.0 4.4.5 + __ltxf2@GCC_3.0 4.4.5 + __moddi3@GLIBC_2.0 4.2.1 + __modsi3@GCC_3.0 4.4.5 + __muldc3@GCC_4.0.0 4.2.1 + __muldf3@GCC_3.0 4.4.5 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulsf3@GCC_3.0 4.4.5 + __mulsi3@GCC_3.0 4.4.5 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __mulxf3@GCC_3.0 4.4.5 + __nedf2@GCC_3.0 4.4.5 + __negdf2@GCC_3.0 4.4.5 + __negdi2@GCC_3.0 4.2.1 + __negsf2@GCC_3.0 4.4.5 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __negxf2@GCC_3.0 4.4.5 + __nesf2@GCC_3.0 4.4.5 + __nexf2@GCC_3.0 4.4.5 + __paritydi2@GCC_3.4 4.2.1 + __paritysi2@GCC_3.4 4.2.1 + __popcountdi2@GCC_3.4 4.2.1 + __popcountsi2@GCC_3.4 4.2.1 + __powidf2@GCC_4.0.0 4.2.1 + __powisf2@GCC_4.0.0 4.2.1 + __powixf2@GCC_4.0.0 4.2.1 + __register_frame@GLIBC_2.0 4.2.1 + __register_frame_info@GLIBC_2.0 4.2.1 + __register_frame_info_bases@GCC_3.0 4.2.1 + __register_frame_info_table@GLIBC_2.0 4.2.1 + __register_frame_info_table_bases@GCC_3.0 4.2.1 + __register_frame_table@GLIBC_2.0 4.2.1 + __subdf3@GCC_3.0 4.4.5 + __subsf3@GCC_3.0 4.4.5 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __subxf3@GCC_3.0 4.4.5 + __truncdfsf2@GCC_3.0 4.4.5 + __truncxfdf2@GCC_3.0 4.4.5 + __truncxfsf2@GCC_3.0 4.4.5 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __udivsi3@GCC_3.0 4.4.5 + __umoddi3@GLIBC_2.0 4.2.1 + __umodsi3@GCC_3.0 4.4.5 + __unorddf2@GCC_3.3.4 4.4.5 + __unordsf2@GCC_3.3.4 4.4.5 + __unordxf2@GCC_4.5.0 4.7 diff --git a/libgcc4.symbols.hppa b/libgcc4.symbols.hppa new file mode 100644 index 0000000..0f6863d --- /dev/null +++ b/libgcc4.symbols.hppa @@ -0,0 +1,96 @@ +libgcc_s.so.4 libgcc4 #MINVER# + GCC_3.0@GCC_3.0 4.1.1 + GCC_3.3.1@GCC_3.3.1 4.1.1 + GCC_3.3@GCC_3.3 4.1.1 + GCC_3.4.2@GCC_3.4.2 4.1.1 + GCC_3.4@GCC_3.4 4.1.1 + GCC_4.0.0@GCC_4.0.0 4.1.1 + GCC_4.2.0@GCC_4.2.0 4.1.1 + GCC_4.3.0@GCC_4.3.0 4.3 + GCC_4.7.0@GCC_4.7.0 1:4.7 + GLIBC_2.0@GLIBC_2.0 4.1.1 + _Unwind_Backtrace@GCC_3.3 4.1.1 + _Unwind_DeleteException@GCC_3.0 4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 + _Unwind_Find_FDE@GCC_3.0 4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 4.1.1 + _Unwind_GetCFA@GCC_3.3 4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 4.1.1 + _Unwind_GetGR@GCC_3.0 4.1.1 + _Unwind_GetIP@GCC_3.0 4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 + _Unwind_GetRegionStart@GCC_3.0 4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 4.1.1 + _Unwind_RaiseException@GCC_3.0 4.1.1 + _Unwind_Resume@GCC_3.0 4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 + _Unwind_SetGR@GCC_3.0 4.1.1 + _Unwind_SetIP@GCC_3.0 4.1.1 + __absvdi2@GCC_3.0 4.1.1 + __absvsi2@GCC_3.0 4.1.1 + __addvdi3@GCC_3.0 4.1.1 + __addvsi3@GCC_3.0 4.1.1 + __ashldi3@GCC_3.0 4.1.1 + __ashrdi3@GCC_3.0 4.1.1 + __bswapdi2@GCC_4.3.0 4.3 + __bswapsi2@GCC_4.3.0 4.3 + __clear_cache@GCC_3.0 4.1.1 + __clrsbdi2@GCC_4.7.0 4.7 + __clrsbsi2@GCC_4.7.0 4.7 + __clzdi2@GCC_3.4 4.1.1 + __clzsi2@GCC_3.4 4.1.1 + __cmpdi2@GCC_3.0 4.1.1 + __ctzdi2@GCC_3.4 4.1.1 + __ctzsi2@GCC_3.4 4.1.1 + __deregister_frame@GLIBC_2.0 4.1.1 + __deregister_frame_info@GLIBC_2.0 4.1.1 + __deregister_frame_info_bases@GCC_3.0 4.1.1 + __divdc3@GCC_4.0.0 4.1.1 + __divdi3@GLIBC_2.0 4.1.1 + __divsc3@GCC_4.0.0 4.1.1 + __emutls_get_address@GCC_4.3.0 4.3 + __emutls_register_common@GCC_4.3.0 4.3 + __enable_execute_stack@GCC_3.4.2 4.1.1 + __ffsdi2@GCC_3.0 4.1.1 + __ffssi2@GCC_4.3.0 4.3 + __fixdfdi@GCC_3.0 4.1.1 + __fixsfdi@GCC_3.0 4.1.1 + __fixunsdfdi@GCC_3.0 4.1.1 + __fixunsdfsi@GCC_3.0 4.1.1 + __fixunssfdi@GCC_3.0 4.1.1 + __fixunssfsi@GCC_3.0 4.1.1 + __floatdidf@GCC_3.0 4.1.1 + __floatdisf@GCC_3.0 4.1.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.1.1 + __gcc_personality_v0@GCC_3.3.1 4.1.1 + __lshrdi3@GCC_3.0 4.1.1 + __moddi3@GLIBC_2.0 4.1.1 + __muldc3@GCC_4.0.0 4.1.1 + __muldi3@GCC_3.0 4.1.1 + __mulsc3@GCC_4.0.0 4.1.1 + __mulvdi3@GCC_3.0 4.1.1 + __mulvsi3@GCC_3.0 4.1.1 + __negdi2@GCC_3.0 4.1.1 + __negvdi2@GCC_3.0 4.1.1 + __negvsi2@GCC_3.0 4.1.1 + __paritydi2@GCC_3.4 4.1.1 + __paritysi2@GCC_3.4 4.1.1 + __popcountdi2@GCC_3.4 4.1.1 + __popcountsi2@GCC_3.4 4.1.1 + __powidf2@GCC_4.0.0 4.1.1 + __powisf2@GCC_4.0.0 4.1.1 + __register_frame@GLIBC_2.0 4.1.1 + __register_frame_info@GLIBC_2.0 4.1.1 + __register_frame_info_bases@GCC_3.0 4.1.1 + __register_frame_info_table@GLIBC_2.0 4.1.1 + __register_frame_info_table_bases@GCC_3.0 4.1.1 + __register_frame_table@GLIBC_2.0 4.1.1 + __subvdi3@GCC_3.0 4.1.1 + __subvsi3@GCC_3.0 4.1.1 + __ucmpdi2@GCC_3.0 4.1.1 + __udivdi3@GLIBC_2.0 4.1.1 + __udivmoddi4@GCC_3.0 4.1.1 + __umoddi3@GLIBC_2.0 4.1.1 diff --git a/libgccLC.postinst b/libgccLC.postinst new file mode 100644 index 0000000..36abb94 --- /dev/null +++ b/libgccLC.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcc@LC@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi +esac + +#DEBHELPER# diff --git a/libgccjit0.symbols b/libgccjit0.symbols new file mode 100644 index 0000000..8236c68 --- /dev/null +++ b/libgccjit0.symbols @@ -0,0 +1,13 @@ +libgccjit.so.0 #PACKAGE# #MINVER# + (symver)LIBGCCJIT_ABI_0 5.1 + (symver)LIBGCCJIT_ABI_1 5.1 + (symver)LIBGCCJIT_ABI_2 5.1 + (symver)LIBGCCJIT_ABI_3 5.1 + (symver)LIBGCCJIT_ABI_4 6 + (symver)LIBGCCJIT_ABI_5 6 + (symver)LIBGCCJIT_ABI_6 7 + (symver)LIBGCCJIT_ABI_7 8 + (symver)LIBGCCJIT_ABI_8 8 + (symver)LIBGCCJIT_ABI_9 8 + (symver)LIBGCCJIT_ABI_10 8 + (symver)LIBGCCJIT_ABI_11 8 diff --git a/libgfortran.symbols b/libgfortran.symbols new file mode 100644 index 0000000..86ce6a4 --- /dev/null +++ b/libgfortran.symbols @@ -0,0 +1,6 @@ +libgfortran.so.5 #PACKAGE# #MINVER# + (symver)GFORTRAN_8 8 + (symver)GFORTRAN_9 9 + (symver)GFORTRAN_9.2 9.1 + (symver)GFORTRAN_C99_8 8 + (symver)GFORTRAN_F2C_8 8 diff --git a/libgm2.symbols b/libgm2.symbols new file mode 100644 index 0000000..11b8506 --- /dev/null +++ b/libgm2.symbols @@ -0,0 +1,6 @@ +libgm2.so.0 #PACKAGE# #MINVER# +libcor.so.0 #PACKAGE# #MINVER# +libiso.so.0 #PACKAGE# #MINVER# +liblog.so.0 #PACKAGE# #MINVER# +libmin.so.0 #PACKAGE# #MINVER# +libulm.so.0 #PACKAGE# #MINVER# diff --git a/libgomp.symbols b/libgomp.symbols new file mode 100644 index 0000000..c222224 --- /dev/null +++ b/libgomp.symbols @@ -0,0 +1,23 @@ +libgomp.so.1 #PACKAGE# #MINVER# + (symver)GOACC_2.0 5 + (symver)GOACC_2.0.1 6 + (symver)GOMP_1.0 4.2.1 + (symver)GOMP_2.0 4.4 + (symver)GOMP_3.0 4.7 + (symver)GOMP_4.0 4.9 + (symver)GOMP_4.0.1 5 + (symver)GOMP_4.5 6 + (symver)GOMP_5.0 9 + (symver)GOMP_PLUGIN_1.0 5 + (symver)GOMP_PLUGIN_1.1 6 + (symver)GOMP_PLUGIN_1.2 9 + (symver)OACC_2.0 5 + (symver)OACC_2.0.1 8 + (symver)OACC_2.5 9 + (symver)OMP_1.0 4.2.1 + (symver)OMP_2.0 4.2.1 + (symver)OMP_3.0 4.4 + (symver)OMP_3.1 4.7 + (symver)OMP_4.0 4.9 + (symver)OMP_4.5 6 + (symver)OMP_5.0 9 diff --git a/libhsail-rt.symbols b/libhsail-rt.symbols new file mode 100644 index 0000000..634fe59 --- /dev/null +++ b/libhsail-rt.symbols @@ -0,0 +1,154 @@ +libhsail-rt.so.0 #PACKAGE# #MINVER# + __hsail_addqueuewriteindex@Base 7 + __hsail_alloca@Base 7 + __hsail_alloca_pop_frame@Base 7 + __hsail_alloca_push_frame@Base 7 + __hsail_arrivefbar@Base 7 + __hsail_atomic_max_s32@Base 7 + __hsail_atomic_max_s64@Base 7 + __hsail_atomic_max_u32@Base 7 + __hsail_atomic_max_u64@Base 7 + __hsail_atomic_min_s32@Base 7 + __hsail_atomic_min_s64@Base 7 + __hsail_atomic_min_u32@Base 7 + __hsail_atomic_min_u64@Base 7 + __hsail_atomic_wrapdec_u32@Base 7 + __hsail_atomic_wrapdec_u64@Base 7 + __hsail_atomic_wrapinc_u32@Base 7 + __hsail_atomic_wrapinc_u64@Base 7 + __hsail_barrier@Base 7 + __hsail_bitalign@Base 7 + __hsail_bitextract_s32@Base 7 + __hsail_bitextract_s64@Base 7 + __hsail_bitextract_u32@Base 7 + __hsail_bitextract_u64@Base 7 + __hsail_bitinsert_u32@Base 7 + __hsail_bitinsert_u64@Base 7 + __hsail_bitmask_u32@Base 7 + __hsail_bitmask_u64@Base 7 + __hsail_bitrev_u32@Base 7 + __hsail_bitrev_u64@Base 7 + __hsail_bitselect_u32@Base 7 + __hsail_bitselect_u64@Base 7 + __hsail_borrow_u32@Base 7 + __hsail_borrow_u64@Base 7 + __hsail_bytealign@Base 7 + __hsail_carry_u32@Base 7 + __hsail_carry_u64@Base 7 + __hsail_casqueuewriteindex@Base 7 + __hsail_class_f32@Base 7 + __hsail_class_f32_f16@Base 7 + __hsail_class_f64@Base 8 + __hsail_clock@Base 7 + __hsail_cuid@Base 7 + __hsail_currentworkgroupsize@Base 7 + __hsail_currentworkitemflatid@Base 7 + __hsail_cvt_zeroi_sat_s16_f32@Base 7 + __hsail_cvt_zeroi_sat_s16_f64@Base 7 + __hsail_cvt_zeroi_sat_s32_f32@Base 7 + __hsail_cvt_zeroi_sat_s32_f64@Base 7 + __hsail_cvt_zeroi_sat_s64_f32@Base 7 + __hsail_cvt_zeroi_sat_s64_f64@Base 7 + __hsail_cvt_zeroi_sat_s8_f32@Base 7 + __hsail_cvt_zeroi_sat_s8_f64@Base 7 + __hsail_cvt_zeroi_sat_u16_f32@Base 7 + __hsail_cvt_zeroi_sat_u16_f64@Base 7 + __hsail_cvt_zeroi_sat_u32_f32@Base 7 + __hsail_cvt_zeroi_sat_u32_f64@Base 7 + __hsail_cvt_zeroi_sat_u64_f32@Base 7 + __hsail_cvt_zeroi_sat_u64_f64@Base 7 + __hsail_cvt_zeroi_sat_u8_f32@Base 7 + __hsail_cvt_zeroi_sat_u8_f64@Base 7 + __hsail_debugtrap@Base 7 + __hsail_dim@Base 7 + __hsail_f16_to_f32@Base 7 + __hsail_f32_to_f16@Base 7 + __hsail_firstbit_s32@Base 7 + __hsail_firstbit_s64@Base 7 + __hsail_firstbit_u32@Base 7 + __hsail_firstbit_u64@Base 7 + __hsail_fract_f32@Base 7 + __hsail_fract_f64@Base 7 + __hsail_ftz_f32@Base 7 + __hsail_ftz_f32_f16@Base 7 + __hsail_ftz_f64@Base 7 + __hsail_gridgroups@Base 7 + __hsail_gridsize@Base 7 + __hsail_groupbaseptr@Base 7 + __hsail_initfbar@Base 7 + __hsail_joinfbar@Base 7 + __hsail_kernargbaseptr_u32@Base 7 + __hsail_kernargbaseptr_u64@Base 7 + __hsail_lastbit_u32@Base 7 + __hsail_lastbit_u64@Base 7 + __hsail_launch_kernel@Base 7 + __hsail_launch_wg_function@Base 7 + __hsail_ldqueuereadindex@Base 7 + __hsail_ldqueuewriteindex@Base 7 + __hsail_leavefbar@Base 7 + __hsail_lerp@Base 7 + __hsail_max_f32@Base 7 + __hsail_max_f64@Base 7 + __hsail_maxcuid@Base 7 + __hsail_min_f32@Base 7 + __hsail_min_f64@Base 7 + __hsail_packcvt@Base 7 + __hsail_packetcompletionsig_sig32@Base 7 + __hsail_packetcompletionsig_sig64@Base 7 + __hsail_packetid@Base 7 + __hsail_releasefbar@Base 7 + __hsail_rem_s32@Base 7 + __hsail_rem_s64@Base 7 + __hsail_sad_u16x2@Base 7 + __hsail_sad_u32@Base 7 + __hsail_sad_u8x4@Base 7 + __hsail_sadhi_u16x2_u8x4@Base 7 + __hsail_sat_add_s16@Base 7 + __hsail_sat_add_s32@Base 7 + __hsail_sat_add_s64@Base 7 + __hsail_sat_add_s8@Base 7 + __hsail_sat_add_u16@Base 7 + __hsail_sat_add_u32@Base 7 + __hsail_sat_add_u64@Base 7 + __hsail_sat_add_u8@Base 7 + __hsail_sat_mul_s16@Base 7 + __hsail_sat_mul_s32@Base 7 + __hsail_sat_mul_s64@Base 7 + __hsail_sat_mul_s8@Base 7 + __hsail_sat_mul_u16@Base 7 + __hsail_sat_mul_u32@Base 7 + __hsail_sat_mul_u64@Base 7 + __hsail_sat_mul_u8@Base 7 + __hsail_sat_sub_s16@Base 7 + __hsail_sat_sub_s32@Base 7 + __hsail_sat_sub_s64@Base 7 + __hsail_sat_sub_s8@Base 7 + __hsail_sat_sub_u16@Base 7 + __hsail_sat_sub_u32@Base 7 + __hsail_sat_sub_u64@Base 7 + __hsail_sat_sub_u8@Base 7 + __hsail_segmentp_global@Base 7 + __hsail_segmentp_group@Base 7 + __hsail_segmentp_private@Base 7 + __hsail_setworkitemid@Base 7 + __hsail_stqueuereadindex@Base 7 + __hsail_stqueuewriteindex@Base 7 + __hsail_unpackcvt@Base 7 + __hsail_waitfbar@Base 7 + __hsail_workgroupid@Base 7 + __hsail_workgroupsize@Base 7 + __hsail_workitemabsid@Base 7 + __hsail_workitemabsid_u64@Base 7 + __hsail_workitemflatabsid_u32@Base 7 + __hsail_workitemflatabsid_u64@Base 7 + __hsail_workitemflatid@Base 7 + __hsail_workitemid@Base 7 + fiber_barrier_init@Base 7 + fiber_barrier_reach@Base 7 + fiber_exit@Base 7 + fiber_init@Base 7 + fiber_int_args_to_ptr@Base 7 + fiber_join@Base 7 + fiber_yield@Base 7 + main_context@Base 7 + phsa_fatal_error@Base 7 diff --git a/libitm.symbols b/libitm.symbols new file mode 100644 index 0000000..c97c8bc --- /dev/null +++ b/libitm.symbols @@ -0,0 +1,3 @@ +libitm.so.1 #PACKAGE# #MINVER# + (symver)LIBITM_1.0 4.7 + (symver)LIBITM_1.1 6 diff --git a/liblsan0.symbols b/liblsan0.symbols new file mode 100644 index 0000000..f318d9a --- /dev/null +++ b/liblsan0.symbols @@ -0,0 +1,157 @@ +liblsan.so.0 liblsan0 #MINVER# + OnPrint@Base 8 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 8 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdaPvm@Base 8 + _ZdaPvmSt11align_val_t@Base 8 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 8 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 8 + _ZdlPvm@Base 8 + _ZdlPvmSt11align_val_t@Base 8 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 8 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 8 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 8 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 8 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor__exit@Base 8 + __interceptor_aligned_alloc@Base 5 + __interceptor_calloc@Base 4.9 + __interceptor_cfree@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_mallinfo@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mallopt@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_posix_memalign@Base 4.9 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pvalloc@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_sigaction@Base 8 + __interceptor_signal@Base 8 + __interceptor_valloc@Base 4.9 + __libc_memalign@Base 4.9 + __lsan_disable@Base 4.9 + __lsan_do_leak_check@Base 4.9 + __lsan_do_recoverable_leak_check@Base 6 + __lsan_enable@Base 4.9 + __lsan_ignore_object@Base 4.9 + __lsan_init@Base 8 + __lsan_register_root_region@Base 5 + __lsan_unregister_root_region@Base 5 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_get_allocated_size@Base 5 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_get_ownership@Base 5 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + _exit@Base 8 + aligned_alloc@Base 5 + calloc@Base 4.9 + cfree@Base 4.9 + free@Base 4.9 + (arch=base-any-any-amd64 any-mips any-mipsel)internal_sigreturn@Base 7 + mallinfo@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mallopt@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + mprobe@Base 8 + posix_memalign@Base 4.9 + pthread_create@Base 4.9 + pthread_join@Base 4.9 + pvalloc@Base 4.9 + realloc@Base 4.9 + sigaction@Base 8 + signal@Base 8 + valloc@Base 4.9 diff --git a/libobjc.symbols b/libobjc.symbols new file mode 100644 index 0000000..5b1ed43 --- /dev/null +++ b/libobjc.symbols @@ -0,0 +1,9 @@ +libobjc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 +libobjc_gc.so.4 #PACKAGE# #MINVER# +#include "libobjc.symbols.common" +(optional)#include "libobjc.symbols.gc" + __gnu_objc_personality_v0@Base 4.2.1 + (arch=armel armhf)__objc_exception_class@Base 4.3.0 diff --git a/libobjc.symbols.common b/libobjc.symbols.common new file mode 100644 index 0000000..6eb80b2 --- /dev/null +++ b/libobjc.symbols.common @@ -0,0 +1,205 @@ + __objc_accessors_init@Base 4.6 + __objc_add_class_to_hash@Base 4.2.1 + __objc_class_links_resolved@Base 4.2.1 + __objc_class_name_NXConstantString@Base 4.2.1 + __objc_class_name_Object@Base 4.2.1 + __objc_class_name_Protocol@Base 4.2.1 + __objc_dangling_categories@Base 4.2.1 + __objc_exec_class@Base 4.2.1 + __objc_force_linking@Base 4.2.1 + __objc_generate_gc_type_description@Base 4.2.1 + __objc_get_forward_imp@Base 4.2.1 + __objc_init_class@Base 4.6 + __objc_init_class_tables@Base 4.2.1 + __objc_init_dispatch_tables@Base 4.2.1 + __objc_init_selector_tables@Base 4.2.1 + __objc_init_thread_system@Base 4.2.1 + __objc_install_premature_dtable@Base 4.2.1 + __objc_is_multi_threaded@Base 4.2.1 + __objc_linking@Base 4.2.1 + __objc_msg_forward@Base 4.2.1 + __objc_msg_forward2@Base 4.3 + __objc_print_dtable_stats@Base 4.2.1 + __objc_protocols_add_protocol@Base 4.6 + __objc_protocols_init@Base 4.6 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_description_list@Base 4.6 + __objc_register_selectors_from_list@Base 4.2.1 + __objc_register_selectors_from_module@Base 4.6 + __objc_resolve_class_links@Base 4.2.1 + __objc_responds_to@Base 4.2.1 + __objc_runtime_mutex@Base 4.2.1 + __objc_runtime_threads_alive@Base 4.2.1 + __objc_selector_max_index@Base 4.2.1 + __objc_sparse2_id@Base 4.2.1 + __objc_sync_init@Base 4.6 + __objc_thread_exit_status@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_classes_with_methods@Base 4.6 + __objc_update_dispatch_table_for_class@Base 4.2.1 + _objc_abort@Base 4.6 + _objc_became_multi_threaded@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.6 + class_addIvar@Base 4.6 + class_addMethod@Base 4.6 + class_addProtocol@Base 4.6 + class_add_method_list@Base 4.2.1 + class_conformsToProtocol@Base 4.6 + class_copyIvarList@Base 4.6 + class_copyMethodList@Base 4.6 + class_copyPropertyList@Base 4.6 + class_copyProtocolList@Base 4.6 + class_createInstance@Base 4.6 + class_getClassMethod@Base 4.6 + class_getClassVariable@Base 4.6 + class_getInstanceMethod@Base 4.6 + class_getInstanceSize@Base 4.6 + class_getInstanceVariable@Base 4.6 + class_getIvarLayout@Base 4.6 + class_getMethodImplementation@Base 4.6 + class_getName@Base 4.6 + class_getProperty@Base 4.6 + class_getSuperclass@Base 4.6 + class_getVersion@Base 4.6 + class_getWeakIvarLayout@Base 4.6 + class_isMetaClass@Base 4.6 + class_ivar_set_gcinvisible@Base 4.2.1 + class_replaceMethod@Base 4.6 + class_respondsToSelector@Base 4.6 + class_setIvarLayout@Base 4.6 + class_setVersion@Base 4.6 + class_setWeakIvarLayout@Base 4.6 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + ivar_getName@Base 4.6 + ivar_getOffset@Base 4.6 + ivar_getTypeEncoding@Base 4.6 + method_copyArgumentType@Base 4.6 + method_copyReturnType@Base 4.6 + method_exchangeImplementations@Base 4.6 + method_getArgumentType@Base 4.6 + method_getDescription@Base 4.6 + method_getImplementation@Base 4.6 + method_getName@Base 4.6 + method_getNumberOfArguments@Base 4.6 + method_getReturnType@Base 4.6 + method_getTypeEncoding@Base 4.6 + method_get_imp@Base 4.6 + method_setImplementation@Base 4.6 + narrays@Base 4.2.1 + nbuckets@Base 4.2.1 + nil_method@Base 4.2.1 + nindices@Base 4.2.1 + objc_aligned_size@Base 4.2.1 + objc_alignof_type@Base 4.2.1 + objc_allocateClassPair@Base 4.6 + objc_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_condition_allocate@Base 4.2.1 + objc_condition_broadcast@Base 4.2.1 + objc_condition_deallocate@Base 4.2.1 + objc_condition_signal@Base 4.2.1 + objc_condition_wait@Base 4.2.1 + objc_copyProtocolList@Base 4.6 + objc_copyStruct@Base 4.6 + objc_disposeClassPair@Base 4.6 + objc_enumerationMutation@Base 4.6 + objc_exception_throw@Base 4.2.1 + objc_free@Base 4.2.1 + objc_getClass@Base 4.6 + objc_getClassList@Base 4.6 + objc_getMetaClass@Base 4.6 + objc_getProperty@Base 4.6 + objc_getPropertyStruct@Base 4.6 + objc_getProtocol@Base 4.6 + objc_getRequiredClass@Base 4.6 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_hash_add@Base 4.2.1 + objc_hash_delete@Base 4.2.1 + objc_hash_is_key_in_hash@Base 4.2.1 + objc_hash_new@Base 4.2.1 + objc_hash_next@Base 4.2.1 + objc_hash_remove@Base 4.2.1 + objc_hash_value_for_key@Base 4.2.1 + objc_layout_finish_structure@Base 4.2.1 + objc_layout_structure@Base 4.2.1 + objc_layout_structure_get_info@Base 4.2.1 + objc_layout_structure_next_member@Base 4.2.1 + objc_lookUpClass@Base 4.6 + objc_lookup_class@Base 4.2.1 + objc_malloc@Base 4.2.1 + objc_msg_lookup@Base 4.2.1 + objc_msg_lookup_super@Base 4.2.1 + objc_mutex_allocate@Base 4.2.1 + objc_mutex_deallocate@Base 4.2.1 + objc_mutex_lock@Base 4.2.1 + objc_mutex_trylock@Base 4.2.1 + objc_mutex_unlock@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_registerClassPair@Base 4.6 + objc_setEnumerationMutationHandler@Base 4.6 + objc_setExceptionMatcher@Base 4.6 + objc_setGetUnknownClassHandler@Base 4.6 + objc_setProperty@Base 4.6 + objc_setPropertyStruct@Base 4.6 + objc_setUncaughtExceptionHandler@Base 4.6 + objc_set_thread_callback@Base 4.2.1 + objc_sizeof_type@Base 4.2.1 + objc_skip_argspec@Base 4.2.1 + objc_skip_offset@Base 4.2.1 + objc_skip_type_qualifiers@Base 4.2.1 + objc_skip_typespec@Base 4.2.1 + objc_sync_enter@Base 4.6 + objc_sync_exit@Base 4.6 + objc_thread_add@Base 4.2.1 + objc_thread_detach@Base 4.2.1 + objc_thread_exit@Base 4.2.1 + objc_thread_get_data@Base 4.2.1 + objc_thread_get_priority@Base 4.2.1 + objc_thread_id@Base 4.2.1 + objc_thread_remove@Base 4.2.1 + objc_thread_set_data@Base 4.2.1 + objc_thread_set_priority@Base 4.2.1 + objc_thread_yield@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + object_getClassName@Base 4.6 + object_getIndexedIvars@Base 4.6 + object_getInstanceVariable@Base 4.6 + object_getIvar@Base 4.6 + object_setClass@Base 4.6 + object_setInstanceVariable@Base 4.6 + object_setIvar@Base 4.6 + property_getAttributes@Base 4.6 + property_getName@Base 4.6 + protocol_conformsToProtocol@Base 4.6 + protocol_copyMethodDescriptionList@Base 4.6 + protocol_copyPropertyList@Base 4.6 + protocol_copyProtocolList@Base 4.6 + protocol_getMethodDescription@Base 4.6 + protocol_getName@Base 4.6 + protocol_getProperty@Base 4.6 + protocol_isEqual@Base 4.6 + sarray_at_put@Base 4.2.1 + sarray_at_put_safe@Base 4.2.1 + sarray_free@Base 4.2.1 + sarray_lazy_copy@Base 4.2.1 + sarray_new@Base 4.2.1 + sarray_realloc@Base 4.2.1 + sarray_remove_garbage@Base 4.2.1 + search_for_method_in_list@Base 4.2.1 + sel_copyTypedSelectorList@Base 4.6 + sel_getName@Base 4.6 + sel_getTypeEncoding@Base 4.6 + sel_getTypedSelector@Base 4.6 + sel_getUid@Base 4.6 + sel_get_any_uid@Base 4.2.1 + sel_isEqual@Base 4.6 + sel_is_mapped@Base 4.2.1 + sel_registerName@Base 4.6 + sel_registerTypedName@Base 4.6 diff --git a/libobjc.symbols.gc b/libobjc.symbols.gc new file mode 100644 index 0000000..87681af --- /dev/null +++ b/libobjc.symbols.gc @@ -0,0 +1,522 @@ + async_set_pht_entry_from_index@Base 4.2.1 + free_list_index_of@Base 4.2.1 + suspend_self@Base 4.2.1 + GC_abort@Base 6 + GC_acquire_mark_lock@Base 6 + GC_add_ext_descriptor@Base 6 + GC_add_leaked@Base 6 + GC_add_map_entry@Base 6 + GC_add_roots@Base 6 + GC_add_roots_inner@Base 6 + GC_add_smashed@Base 6 + GC_add_to_black_list_normal@Base 6 + GC_add_to_black_list_stack@Base 6 + GC_add_to_fl@Base 6 + GC_add_to_heap@Base 6 + GC_adj_words_allocd@Base 6 + GC_all_bottom_indices@Base 6 + GC_all_bottom_indices_end@Base 6 + GC_all_interior_pointers@Base 6 + GC_alloc_large@Base 6 + GC_alloc_large_and_clear@Base 6 + GC_alloc_reclaim_list@Base 6 + GC_allocate_ml@Base 6 + GC_allochblk@Base 6 + GC_allochblk_nth@Base 6 + GC_allocobj@Base 6 + GC_aobjfreelist_ptr@Base 6 + GC_apply_to_all_blocks@Base 6 + GC_apply_to_maps@Base 6 + GC_approx_sp@Base 6 + GC_arobjfreelist@Base 6 + GC_array_kind@Base 6 + GC_array_mark_proc@Base 6 + GC_array_mark_proc_index@Base 6 + GC_arrays@Base 6 + GC_auobjfreelist_ptr@Base 6 + GC_avail_descr@Base 6 + GC_base@Base 6 + GC_begin_syscall@Base 6 + GC_bl_init@Base 6 + GC_black_list_spacing@Base 6 + GC_block_count@Base 6 + GC_block_empty@Base 6 + GC_block_nearly_full1@Base 6 + GC_block_nearly_full3@Base 6 + GC_block_nearly_full@Base 6 + GC_block_was_dirty@Base 6 + GC_bm_table@Base 6 + GC_brief_async_signal_safe_sleep@Base 6 + GC_build_fl1@Base 6 + GC_build_fl2@Base 6 + GC_build_fl4@Base 6 + GC_build_fl@Base 6 + GC_build_fl_clear2@Base 6 + GC_build_fl_clear3@Base 6 + GC_build_fl_clear4@Base 6 + GC_call_with_alloc_lock@Base 6 + GC_calloc_explicitly_typed@Base 6 + GC_change_stubborn@Base 6 + GC_check_annotated_obj@Base 6 + GC_check_heap@Base 6 + GC_check_heap_block@Base 6 + GC_check_heap_proc@Base 6 + GC_clear_a_few_frames@Base 6 + GC_clear_bl@Base 6 + GC_clear_fl_links@Base 6 + GC_clear_fl_marks@Base 6 + GC_clear_hdr_marks@Base 6 + GC_clear_mark_bit@Base 6 + GC_clear_marks@Base 6 + GC_clear_roots@Base 6 + GC_clear_stack@Base 6 + GC_clear_stack_inner@Base 6 + GC_collect_a_little@Base 6 + GC_collect_a_little_inner@Base 6 + GC_collect_or_expand@Base 6 + GC_collecting@Base 6 + GC_collection_in_progress@Base 6 + GC_cond_register_dynamic_libraries@Base 6 + GC_continue_reclaim@Base 6 + GC_copy_bl@Base 6 + GC_copyright@Base 6 + GC_current_warn_proc@Base 6 + GC_data_start@Base 6 + GC_debug_change_stubborn@Base 6 + GC_debug_end_stubborn_change@Base 6 + GC_debug_free@Base 6 + GC_debug_free_inner@Base 6 + GC_debug_gcj_fast_malloc@Base 6 + GC_debug_gcj_malloc@Base 6 + GC_debug_header_size@Base 6 + GC_debug_invoke_finalizer@Base 6 + GC_debug_malloc@Base 6 + GC_debug_malloc_atomic@Base 6 + GC_debug_malloc_atomic_ignore_off_page@Base 6 + GC_debug_malloc_atomic_uncollectable@Base 6 + GC_debug_malloc_ignore_off_page@Base 6 + GC_debug_malloc_replacement@Base 6 + GC_debug_malloc_stubborn@Base 6 + GC_debug_malloc_uncollectable@Base 6 + GC_debug_print_heap_obj_proc@Base 6 + GC_debug_realloc@Base 6 + GC_debug_realloc_replacement@Base 6 + GC_debug_register_displacement@Base 6 + GC_debug_register_finalizer@Base 6 + GC_debug_register_finalizer_ignore_self@Base 6 + GC_debug_register_finalizer_no_order@Base 6 + GC_debug_register_finalizer_unreachable@Base 6 + GC_debugging_started@Base 6 + GC_default_is_valid_displacement_print_proc@Base 6 + GC_default_is_visible_print_proc@Base 6 + GC_default_oom_fn@Base 6 + GC_default_print_heap_obj_proc@Base 6 + GC_default_push_other_roots@Base 6 + GC_default_same_obj_print_proc@Base 6 + GC_default_warn_proc@Base 6 + GC_deficit@Base 6 + GC_delete_gc_thread@Base 6 + GC_delete_thread@Base 6 + GC_descr_obj_size@Base 6 + GC_destroy_thread_local@Base 6 + GC_dirty_init@Base 6 + GC_dirty_maintained@Base 6 + GC_disable@Base 6 + GC_disable_signals@Base 6 + GC_dl_entries@Base 6 + GC_dlopen@Base 6 + GC_do_nothing@Base 6 + GC_dont_expand@Base 6 + GC_dont_gc@Base 6 + GC_dont_precollect@Base 6 + GC_double_descr@Base 6 + GC_dump@Base 6 + GC_dump_finalization@Base 6 + GC_dump_regions@Base 6 + GC_dump_regularly@Base 6 + GC_ed_size@Base 6 + GC_enable@Base 6 + GC_enable_incremental@Base 6 + GC_enable_signals@Base 6 + GC_end_blocking@Base 6 + GC_end_stubborn_change@Base 6 + GC_end_syscall@Base 6 + GC_enqueue_all_finalizers@Base 6 + GC_eobjfreelist@Base 6 + GC_err_printf@Base 6 + GC_err_puts@Base 6 + GC_err_write@Base 6 + GC_excl_table_entries@Base 6 + GC_exclude_static_roots@Base 6 + GC_exit_check@Base 6 + GC_expand_hp@Base 6 + GC_expand_hp_inner@Base 6 + GC_explicit_kind@Base 6 + GC_explicit_typing_initialized@Base 6 + GC_ext_descriptors@Base 6 + GC_extend_size_map@Base 6 + GC_fail_count@Base 6 + GC_fault_handler@Base 6 + GC_finalization_failures@Base 6 + GC_finalize@Base 6 + GC_finalize_all@Base 6 + GC_finalize_now@Base 6 + GC_finalize_on_demand@Base 6 + GC_finalizer_notifier@Base 6 + GC_find_header@Base 6 + GC_find_leak@Base 6 + GC_find_limit@Base 6 + GC_find_start@Base 6 + GC_finish_collection@Base 6 + GC_fl_builder_count@Base 6 + GC_fo_entries@Base 6 + GC_free@Base 6 + GC_free_block_ending_at@Base 6 + GC_free_bytes@Base 6 + GC_free_inner@Base 6 + GC_free_space_divisor@Base 6 + GC_freehblk@Base 6 + GC_freehblk_ptr@Base 6 + GC_full_freq@Base 6 + GC_gc_no@Base 6 + GC_gcj_debug_kind@Base 6 + GC_gcj_fast_malloc@Base 6 + GC_gcj_kind@Base 6 + GC_gcj_malloc@Base 6 + GC_gcj_malloc_ignore_off_page@Base 6 + GC_gcj_malloc_initialized@Base 6 + GC_gcjdebugobjfreelist@Base 6 + GC_gcjobjfreelist@Base 6 + GC_gcollect@Base 6 + GC_general_register_disappearing_link@Base 6 + GC_generic_lock@Base 6 + GC_generic_malloc@Base 6 + GC_generic_malloc_ignore_off_page@Base 6 + GC_generic_malloc_inner@Base 6 + GC_generic_malloc_inner_ignore_off_page@Base 6 + GC_generic_malloc_many@Base 6 + GC_generic_malloc_words_small@Base 6 + GC_generic_malloc_words_small_inner@Base 6 + GC_generic_or_special_malloc@Base 6 + GC_generic_push_regs@Base 6 + GC_get_bytes_since_gc@Base 6 + GC_get_first_part@Base 6 + GC_get_free_bytes@Base 6 + GC_get_heap_size@Base 6 + GC_get_nprocs@Base 6 + GC_get_stack_base@Base 6 + GC_get_thread_stack_base@Base 6 + GC_get_total_bytes@Base 6 + GC_greatest_plausible_heap_addr@Base 6 + GC_grow_table@Base 6 + GC_has_other_debug_info@Base 6 + GC_have_errors@Base 6 + GC_hblk_fl_from_blocks@Base 6 + GC_hblkfreelist@Base 6 + GC_hdr_cache_hits@Base 6 + GC_hdr_cache_misses@Base 6 + GC_high_water@Base 6 + GC_ignore_self_finalize_mark_proc@Base 6 + GC_in_thread_creation@Base 6 + GC_incomplete_normal_bl@Base 6 + GC_incomplete_stack_bl@Base 6 + GC_incr_mem_freed@Base 6 + GC_incr_words_allocd@Base 6 + GC_incremental@Base 6 + GC_incremental_protection_needs@Base 6 + GC_init@Base 6 + GC_init_explicit_typing@Base 6 + GC_init_gcj_malloc@Base 6 + GC_init_headers@Base 6 + GC_init_inner@Base 6 + GC_init_linux_data_start@Base 6 + GC_init_parallel@Base 6 + GC_init_size_map@Base 6 + GC_init_thread_local@Base 6 + GC_initiate_gc@Base 6 + GC_install_counts@Base 6 + GC_install_header@Base 6 + GC_invalid_header@Base 6 + GC_invalid_map@Base 6 + GC_invalidate_map@Base 6 + GC_invalidate_mark_state@Base 6 + GC_invoke_finalizers@Base 6 + GC_is_black_listed@Base 6 + GC_is_fresh@Base 6 + GC_is_full_gc@Base 6 + GC_is_initialized@Base 6 + GC_is_marked@Base 6 + GC_is_static_root@Base 6 + GC_is_thread_suspended@Base 6 + GC_is_valid_displacement@Base 6 + GC_is_valid_displacement_print_proc@Base 6 + GC_is_visible@Base 6 + GC_is_visible_print_proc@Base 6 + GC_java_finalization@Base 6 + GC_jmp_buf@Base 6 + GC_key_create@Base 6 + GC_large_alloc_warn_interval@Base 6 + GC_large_alloc_warn_suppressed@Base 6 + GC_leaked@Base 6 + GC_least_plausible_heap_addr@Base 6 + GC_linux_stack_base@Base 6 + GC_local_gcj_malloc@Base 6 + GC_local_malloc@Base 6 + GC_local_malloc_atomic@Base 6 + GC_lock@Base 6 + GC_lock_holder@Base 6 + GC_lookup_thread@Base 6 + GC_make_array_descriptor@Base 6 + GC_make_closure@Base 6 + GC_make_descriptor@Base 6 + GC_make_sequence_descriptor@Base 6 + GC_malloc@Base 6 + GC_malloc_atomic@Base 6 + GC_malloc_atomic_ignore_off_page@Base 6 + GC_malloc_atomic_uncollectable@Base 6 + GC_malloc_explicitly_typed@Base 6 + GC_malloc_explicitly_typed_ignore_off_page@Base 6 + GC_malloc_ignore_off_page@Base 6 + GC_malloc_many@Base 6 + GC_malloc_stubborn@Base 6 + GC_malloc_uncollectable@Base 6 + GC_mark_and_push@Base 6 + GC_mark_and_push_stack@Base 6 + GC_mark_from@Base 6 + GC_mark_init@Base 6 + GC_mark_some@Base 6 + GC_mark_stack@Base 6 + GC_mark_stack_empty@Base 6 + GC_mark_stack_limit@Base 6 + GC_mark_stack_size@Base 6 + GC_mark_stack_too_small@Base 6 + GC_mark_stack_top@Base 6 + GC_mark_state@Base 6 + GC_mark_thread_local_free_lists@Base 6 + GC_max@Base 6 + GC_max_retries@Base 6 + GC_maybe_gc@Base 6 + GC_mem_found@Base 6 + GC_memalign@Base 6 + GC_min@Base 6 + GC_min_sp@Base 6 + GC_n_attempts@Base 6 + GC_n_heap_sects@Base 6 + GC_n_kinds@Base 6 + GC_n_leaked@Base 6 + GC_n_mark_procs@Base 6 + GC_n_rescuing_pages@Base 6 + GC_n_set_marks@Base 6 + GC_n_smashed@Base 6 + GC_need_full_gc@Base 6 + GC_never_stop_func@Base 6 + GC_new_free_list@Base 6 + GC_new_free_list_inner@Base 6 + GC_new_hblk@Base 6 + GC_new_kind@Base 6 + GC_new_kind_inner@Base 6 + GC_new_proc@Base 6 + GC_new_proc_inner@Base 6 + GC_new_thread@Base 6 + GC_next_exclusion@Base 6 + GC_next_used_block@Base 6 + GC_no_dls@Base 6 + GC_non_gc_bytes@Base 6 + GC_noop1@Base 6 + GC_noop@Base 6 + GC_normal_finalize_mark_proc@Base 6 + GC_notify_all_builder@Base 6 + GC_notify_full_gc@Base 6 + GC_notify_or_invoke_finalizers@Base 6 + GC_nprocs@Base 6 + GC_null_finalize_mark_proc@Base 6 + GC_number_stack_black_listed@Base 6 + GC_obj_kinds@Base 6 + GC_objects_are_marked@Base 6 + GC_objfreelist_ptr@Base 6 + GC_old_bus_handler@Base 6 + GC_old_normal_bl@Base 6 + GC_old_segv_handler@Base 6 + GC_old_stack_bl@Base 6 + GC_on_stack@Base 6 + GC_oom_fn@Base 6 + GC_page_size@Base 6 + GC_page_was_dirty@Base 6 + GC_page_was_ever_dirty@Base 6 + GC_parallel@Base 6 + GC_pause@Base 6 + GC_post_incr@Base 6 + GC_pre_incr@Base 6 + GC_prev_block@Base 6 + GC_print_address_map@Base 6 + GC_print_all_errors@Base 6 + GC_print_all_smashed@Base 6 + GC_print_all_smashed_proc@Base 6 + GC_print_back_height@Base 6 + GC_print_block_descr@Base 6 + GC_print_block_list@Base 6 + GC_print_finalization_stats@Base 6 + GC_print_hblkfreelist@Base 6 + GC_print_heap_obj@Base 6 + GC_print_heap_sects@Base 6 + GC_print_obj@Base 6 + GC_print_smashed_obj@Base 6 + GC_print_source_ptr@Base 6 + GC_print_static_roots@Base 6 + GC_print_stats@Base 6 + GC_print_type@Base 6 + GC_printf@Base 6 + GC_project2@Base 6 + GC_promote_black_lists@Base 6 + GC_protect_heap@Base 6 + GC_pthread_create@Base 6 + GC_pthread_detach@Base 6 + GC_pthread_join@Base 6 + GC_pthread_sigmask@Base 6 + GC_push_all@Base 6 + GC_push_all_eager@Base 6 + GC_push_all_stack@Base 6 + GC_push_all_stacks@Base 6 + GC_push_complex_descriptor@Base 6 + GC_push_conditional@Base 6 + GC_push_conditional_with_exclusions@Base 6 + GC_push_current_stack@Base 6 + GC_push_finalizer_structures@Base 6 + GC_push_gc_structures@Base 6 + GC_push_marked1@Base 6 + GC_push_marked2@Base 6 + GC_push_marked4@Base 6 + GC_push_marked@Base 6 + GC_push_next_marked@Base 6 + GC_push_next_marked_dirty@Base 6 + GC_push_next_marked_uncollectable@Base 6 + GC_push_one@Base 6 + GC_push_other_roots@Base 6 + GC_push_roots@Base 6 + GC_push_selected@Base 6 + GC_push_stubborn_structures@Base 6 + GC_push_thread_structures@Base 6 + GC_quiet@Base 6 + GC_read_dirty@Base 6 + GC_realloc@Base 6 + GC_reclaim1@Base 6 + GC_reclaim_all@Base 6 + GC_reclaim_block@Base 6 + GC_reclaim_check@Base 6 + GC_reclaim_clear2@Base 6 + GC_reclaim_clear4@Base 6 + GC_reclaim_clear@Base 6 + GC_reclaim_generic@Base 6 + GC_reclaim_small_nonempty_block@Base 6 + GC_reclaim_uninit2@Base 6 + GC_reclaim_uninit4@Base 6 + GC_reclaim_uninit@Base 6 + GC_register_data_segments@Base 6 + GC_register_describe_type_fn@Base 6 + GC_register_disappearing_link@Base 6 + GC_register_displacement@Base 6 + GC_register_displacement_inner@Base 6 + GC_register_dynamic_libraries@Base 6 + GC_register_dynamic_libraries_dl_iterate_phdr@Base 6 + GC_register_finalizer@Base 6 + GC_register_finalizer_ignore_self@Base 6 + GC_register_finalizer_inner@Base 6 + GC_register_finalizer_no_order@Base 6 + GC_register_finalizer_unreachable@Base 6 + GC_register_has_static_roots_callback@Base 6 + GC_register_main_static_data@Base 6 + GC_register_my_thread@Base 6 + GC_release_mark_lock@Base 6 + GC_remove_allowed_signals@Base 6 + GC_remove_counts@Base 6 + GC_remove_from_fl@Base 6 + GC_remove_header@Base 6 + GC_remove_protection@Base 6 + GC_remove_roots@Base 6 + GC_remove_roots_inner@Base 6 + GC_remove_specific@Base 6 + GC_remove_tmp_roots@Base 6 + GC_repeat_read@Base 6 + GC_reset_fault_handler@Base 6 + GC_restart_handler@Base 6 + GC_resume_thread@Base 6 + GC_retry_signals@Base 6 + GC_root_size@Base 6 + GC_roots_present@Base 6 + GC_same_obj@Base 6 + GC_same_obj_print_proc@Base 6 + GC_scratch_alloc@Base 6 + GC_set_and_save_fault_handler@Base 6 + GC_set_fl_marks@Base 6 + GC_set_free_space_divisor@Base 6 + GC_set_hdr_marks@Base 6 + GC_set_mark_bit@Base 6 + GC_set_max_heap_size@Base 6 + GC_set_warn_proc@Base 6 + GC_setpagesize@Base 6 + GC_setspecific@Base 6 + GC_setup_temporary_fault_handler@Base 6 + GC_should_collect@Base 6 + GC_should_invoke_finalizers@Base 6 + GC_signal_mark_stack_overflow@Base 6 + GC_size@Base 6 + GC_sleep@Base 6 + GC_slow_getspecific@Base 6 + GC_smashed@Base 6 + GC_spin_count@Base 6 + GC_split_block@Base 6 + GC_stack_last_cleared@Base 6 + GC_stackbottom@Base 6 + GC_start_blocking@Base 6 + GC_start_call_back@Base 6 + GC_start_debugging@Base 6 + GC_start_reclaim@Base 6 + GC_start_routine@Base 6 + GC_start_time@Base 6 + GC_start_world@Base 6 + GC_stderr@Base 6 + GC_stdout@Base 6 + GC_stop_count@Base 6 + GC_stop_init@Base 6 + GC_stop_world@Base 6 + GC_stopped_mark@Base 6 + GC_stopping_pid@Base 6 + GC_stopping_thread@Base 6 + GC_store_debug_info@Base 6 + GC_suspend_ack_sem@Base 6 + GC_suspend_all@Base 6 + GC_suspend_handler@Base 6 + GC_suspend_handler_inner@Base 6 + GC_suspend_thread@Base 6 + GC_thr_init@Base 6 + GC_thr_initialized@Base 6 + GC_thread_exit_proc@Base 6 + GC_thread_key@Base 6 + GC_threads@Base 6 + GC_time_limit@Base 6 + GC_timeout_stop_func@Base 6 + GC_total_stack_black_listed@Base 6 + GC_try_to_collect@Base 6 + GC_try_to_collect_inner@Base 6 + GC_typed_mark_proc@Base 6 + GC_typed_mark_proc_index@Base 6 + GC_unix_get_mem@Base 6 + GC_unlocked_count@Base 6 + GC_unpromote_black_lists@Base 6 + GC_unprotect_range@Base 6 + GC_unreachable_finalize_mark_proc@Base 6 + GC_unregister_disappearing_link@Base 6 + GC_unregister_my_thread@Base 6 + GC_uobjfreelist_ptr@Base 6 + GC_use_entire_heap@Base 6 + GC_used_heap_size_after_full@Base 6 + GC_version@Base 6 + GC_wait_builder@Base 6 + GC_wait_for_gc_completion@Base 6 + GC_wait_for_reclaim@Base 6 + GC_with_callee_saves_pushed@Base 6 + GC_words_allocd_at_reset@Base 6 + GC_world_is_stopped@Base 6 + GC_world_stopped@Base 6 + GC_write@Base 6 + GC_write_fault_handler@Base 6 diff --git a/libquadmath.symbols b/libquadmath.symbols new file mode 100644 index 0000000..cd8ce65 --- /dev/null +++ b/libquadmath.symbols @@ -0,0 +1,4 @@ +libquadmath.so.0 #PACKAGE# #MINVER# + (symver)QUADMATH_1.0 4.6 + (symver)QUADMATH_1.1 6 + (symver)QUADMATH_1.2 9 diff --git a/libstdc++-BV-doc.doc-base b/libstdc++-BV-doc.doc-base new file mode 100644 index 0000000..c5fd048 --- /dev/null +++ b/libstdc++-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++-@BV@-doc +Title: The GNU Standard C++ Library v3 (gcc-@BV@) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Programming/C++ + +Format: html +Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html +Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* diff --git a/libstdc++-BV-doc.overrides b/libstdc++-BV-doc.overrides new file mode 100644 index 0000000..1ff4cbb --- /dev/null +++ b/libstdc++-BV-doc.overrides @@ -0,0 +1,11 @@ +libstdc++-@BV@-doc binary: hyphen-used-as-minus-sign +libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry + +# 3xx used by intent to avoid conficts +libstdc++-@BV@-doc binary: manpage-section-mismatch + +# some very long identifiers +libstdc++-@BV@-doc binary: manpage-has-errors-from-man * can't break line + +# doxygen accepts formulas in man pages ... +libstdc++-@BV@-doc binary: manpage-has-errors-from-man * a space character is not allowed in an escape name diff --git a/libstdc++6.symbols.128bit b/libstdc++6.symbols.128bit new file mode 100644 index 0000000..5f9736d --- /dev/null +++ b/libstdc++6.symbols.128bit @@ -0,0 +1,46 @@ + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.7 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.7 diff --git a/libstdc++6.symbols.32bit b/libstdc++6.symbols.32bit new file mode 100644 index 0000000..98e1cc4 --- /dev/null +++ b/libstdc++6.symbols.32bit @@ -0,0 +1,636 @@ +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.32bit.cxx11" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jRKS1_@GLIBCXX_3.4.24 7 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jRKS1_@GLIBCXX_3.4.24 7 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEjj@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EjcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10filesystem11resize_fileERKNS_4pathEy@GLIBCXX_3.4.26 9 + _ZNSt10filesystem11resize_fileERKNS_4pathEyRSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEy@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEyRSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1ERKSsj@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2ERKSsj@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1ERKSsj@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2ERKSsj@GLIBCXX_3.4.26 9 + (arch=!powerpc !powerpcspe !ppc64 !sparc)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsj@GLIBCXX_3.4.21 5 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + (arch=!armel !kfreebsd-amd64 !kfreebsd-i386)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIxSt5ratioILx1ELx1EEEENS2_IxS3_ILx1ELx1000000000EEEE@GLIBCXX_3.4.21 5 + _ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEjj@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource11do_allocateEjj@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvjj@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource7releaseEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceD1Ev@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceD2Ev@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resource11do_allocateEjj@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvjj@GLIBCXX_3.4.26 9 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvjj@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZdaPvj@CXXABI_1.3.9 5 + _ZdaPvjSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvjSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvj@CXXABI_1.3.9 5 + _ZdlPvjSt11align_val_t@CXXABI_1.3.11 7 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnajSt11align_val_t@CXXABI_1.3.11 7 + _ZnajSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnwjSt11align_val_t@CXXABI_1.3.11 7 + _ZnwjSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.32bit.cxx11 b/libstdc++6.symbols.32bit.cxx11 new file mode 100644 index 0000000..6318173 --- /dev/null +++ b/libstdc++6.symbols.32bit.cxx11 @@ -0,0 +1,333 @@ + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_jc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_jc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcjc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_j@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_jw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_jw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwjw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_x@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_x@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17__verify_groupingPKcjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 diff --git a/libstdc++6.symbols.32bit.hurd b/libstdc++6.symbols.32bit.hurd new file mode 100644 index 0000000..24952b1 --- /dev/null +++ b/libstdc++6.symbols.32bit.hurd @@ -0,0 +1,536 @@ +#include "libstdc++6.symbols.common" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEj@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEjjPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcjj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsj@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcj@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEjj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEjPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEjj@GLIBCXX_3.4 4.1.1 + _ZNKSsixEj@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8valarrayIjE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEj@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructEjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs2atEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEj@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEj@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEjjc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEj@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEjc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcj@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjPKcj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjRKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEjjjc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEj@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcjc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEjjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjj@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsjjRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EjcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEj@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEj@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvjEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_j@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcj@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayIjEixEj@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_3.4 4.1.1 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcjRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znaj@GLIBCXX_3.4 4.1.1 + _ZnajRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwj@GLIBCXX_3.4 4.1.1 + _ZnwjRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC1EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 + _ZNSt12__basic_fileIcEC2EP15__pthread_mutex@GLIBCXX_3.4 4.3.0 diff --git a/libstdc++6.symbols.64bit b/libstdc++6.symbols.64bit new file mode 100644 index 0000000..0fbb208 --- /dev/null +++ b/libstdc++6.symbols.64bit @@ -0,0 +1,648 @@ +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.64bit.cxx11" + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm@GLIBCXX_3.4.18 4.8 + _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm@GLIBCXX_3.4.18 4.8 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mRKS1_@GLIBCXX_3.4.23 7 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mRKS1_@GLIBCXX_3.4.23 7 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEli@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcl@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPclc@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPcl@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.6.0 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmRKSaIcE@GLIBCXX_3.4.23 7 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10filesystem11resize_fileERKNS_4pathEm@GLIBCXX_3.4.26 9 + _ZNSt10filesystem11resize_fileERKNS_4pathEmRSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEm@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEmRSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10istrstreamC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPcl@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt12strstreambuf6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_l@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1El@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKal@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhl@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPalS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPclS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhlS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2El@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1ERKSsm@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2ERKSsm@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1ERKSsm@GLIBCXX_3.4.26 9 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2ERKSsm@GLIBCXX_3.4.26 9 + (arch=!alpha !powerpc !ppc64 !ppc64el !s390 !s390x)_ZNSt14numeric_limitsIeE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl@GLIBCXX_3.4.16 4.6.0 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l@GLIBCXX_3.4.16 4.6.0 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2ERKSsm@GLIBCXX_3.4.21 5 + + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsm@GLIBCXX_3.4.21 5 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + (arch=!kfreebsd-amd64)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIlSt5ratioILl1ELl1EEEENS2_IlS3_ILl1ELl1000000000EEEE@GLIBCXX_3.4.21 5 + _ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEmm@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource11do_allocateEmm@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvmm@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resource7releaseEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceD1Ev@GLIBCXX_3.4.26 9 + _ZNSt3pmr26synchronized_pool_resourceD2Ev@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resource11do_allocateEmm@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvmm@GLIBCXX_3.4.26 9 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.8 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZTIPKn@CXXABI_1.3.5 4.6 + _ZTIPKo@CXXABI_1.3.5 4.6 + _ZTIPn@CXXABI_1.3.5 4.6 + _ZTIPo@CXXABI_1.3.5 4.6 + _ZTIn@CXXABI_1.3.5 4.6 + _ZTIo@CXXABI_1.3.5 4.6 + _ZTSPKn@CXXABI_1.3.9 5 + _ZTSPKo@CXXABI_1.3.9 5 + _ZTSPn@CXXABI_1.3.9 5 + _ZTSPo@CXXABI_1.3.9 5 + _ZTSn@CXXABI_1.3.9 5 + _ZTSo@CXXABI_1.3.9 5 + _ZThn16_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn16_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n24_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZdaPvm@CXXABI_1.3.9 5 + _ZdaPvmSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvm@CXXABI_1.3.9 5 + _ZdlPvmSt11align_val_t@CXXABI_1.3.11 7 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnamSt11align_val_t@CXXABI_1.3.11 7 + _ZnamSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZnwmSt11align_val_t@CXXABI_1.3.11 7 + _ZnwmSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.64bit.cxx11 b/libstdc++6.symbols.64bit.cxx11 new file mode 100644 index 0000000..ed924cd --- /dev/null +++ b/libstdc++6.symbols.64bit.cxx11 @@ -0,0 +1,333 @@ + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_mc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_mc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_m@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_mw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_mw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwmw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mRKS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_l@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_l@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17__verify_groupingPKcmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 diff --git a/libstdc++6.symbols.alpha b/libstdc++6.symbols.alpha new file mode 100644 index 0000000..a561f24 --- /dev/null +++ b/libstdc++6.symbols.alpha @@ -0,0 +1,56 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 diff --git a/libstdc++6.symbols.amd64 b/libstdc++6.symbols.amd64 new file mode 100644 index 0000000..cf922d1 --- /dev/null +++ b/libstdc++6.symbols.amd64 @@ -0,0 +1,16 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvmS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 diff --git a/libstdc++6.symbols.arm b/libstdc++6.symbols.arm new file mode 100644 index 0000000..6369a31 --- /dev/null +++ b/libstdc++6.symbols.arm @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_sj0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.arm64 b/libstdc++6.symbols.arm64 new file mode 100644 index 0000000..bb8a739 --- /dev/null +++ b/libstdc++6.symbols.arm64 @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.armel b/libstdc++6.symbols.armel new file mode 100644 index 0000000..6b9ea38 --- /dev/null +++ b/libstdc++6.symbols.armel @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 diff --git a/libstdc++6.symbols.armhf b/libstdc++6.symbols.armhf new file mode 100644 index 0000000..86d4b52 --- /dev/null +++ b/libstdc++6.symbols.armhf @@ -0,0 +1,20 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" + CXXABI_ARM_1.3.3@CXXABI_ARM_1.3.3 4.4.0 + _ZNKSt9type_info6beforeERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt9type_infoeqERKS_@GLIBCXX_3.4 4.3.0 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + __cxa_begin_cleanup@CXXABI_1.3 4.3.0 + __cxa_end_cleanup@CXXABI_1.3 4.3.0 + __cxa_type_match@CXXABI_1.3 4.3.0 + _ZTIPKo@CXXABI_1.3.5 7 + _ZTIPo@CXXABI_1.3.5 7 + _ZTIo@CXXABI_1.3.5 7 + _ZTSPKo@CXXABI_1.3.9 7 + _ZTSPo@CXXABI_1.3.9 7 + _ZTSo@CXXABI_1.3.9 7 diff --git a/libstdc++6.symbols.common b/libstdc++6.symbols.common new file mode 100644 index 0000000..841a516 --- /dev/null +++ b/libstdc++6.symbols.common @@ -0,0 +1,3858 @@ + CXXABI_1.3.1@CXXABI_1.3.1 4.1.1 + CXXABI_1.3.2@CXXABI_1.3.2 4.3 + CXXABI_1.3.3@CXXABI_1.3.3 4.4.0 + CXXABI_1.3.4@CXXABI_1.3.4 4.5 + CXXABI_1.3.5@CXXABI_1.3.5 4.6 + CXXABI_1.3.6@CXXABI_1.3.6 4.7 + CXXABI_1.3.7@CXXABI_1.3.7 4.8 + CXXABI_1.3.8@CXXABI_1.3.8 4.9 + CXXABI_1.3.9@CXXABI_1.3.9 5 + CXXABI_1.3.10@CXXABI_1.3.10 6 + CXXABI_1.3.11@CXXABI_1.3.11 7 + CXXABI_1.3.12@CXXABI_1.3.12 9 + CXXABI_1.3@CXXABI_1.3 4.1.1 + CXXABI_TM_1@CXXABI_TM_1 4.7 + GLIBCXX_3.4.10@GLIBCXX_3.4.10 4.3 + GLIBCXX_3.4.11@GLIBCXX_3.4.11 4.4.0 + GLIBCXX_3.4.12@GLIBCXX_3.4.12 4.4.0 + GLIBCXX_3.4.13@GLIBCXX_3.4.13 4.4.2 + GLIBCXX_3.4.14@GLIBCXX_3.4.14 4.5 + GLIBCXX_3.4.15@GLIBCXX_3.4.15 4.6 + GLIBCXX_3.4.16@GLIBCXX_3.4.16 4.6.0 + GLIBCXX_3.4.17@GLIBCXX_3.4.17 4.7 + GLIBCXX_3.4.18@GLIBCXX_3.4.18 4.8 + GLIBCXX_3.4.19@GLIBCXX_3.4.19 4.8 + GLIBCXX_3.4.1@GLIBCXX_3.4.1 4.1.1 + GLIBCXX_3.4.20@GLIBCXX_3.4.20 4.9 + GLIBCXX_3.4.21@GLIBCXX_3.4.21 5 + GLIBCXX_3.4.22@GLIBCXX_3.4.22 6 + GLIBCXX_3.4.23@GLIBCXX_3.4.23 7 + GLIBCXX_3.4.24@GLIBCXX_3.4.24 7 + GLIBCXX_3.4.25@GLIBCXX_3.4.25 8 + GLIBCXX_3.4.26@GLIBCXX_3.4.26 9 + GLIBCXX_3.4.27@GLIBCXX_3.4.27 9.1 + GLIBCXX_3.4.28@GLIBCXX_3.4.28 9.2.1 + GLIBCXX_3.4.2@GLIBCXX_3.4.2 4.1.1 + GLIBCXX_3.4.3@GLIBCXX_3.4.3 4.1.1 + GLIBCXX_3.4.4@GLIBCXX_3.4.4 4.1.1 + GLIBCXX_3.4.5@GLIBCXX_3.4.5 4.1.1 + GLIBCXX_3.4.6@GLIBCXX_3.4.6 4.1.1 + GLIBCXX_3.4.7@GLIBCXX_3.4.7 4.1.1 + GLIBCXX_3.4.8@GLIBCXX_3.4.8 4.1.1 + GLIBCXX_3.4.9@GLIBCXX_3.4.9 4.2.1 + GLIBCXX_3.4@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.common.cxx11" +(arch=amd64 i386 x32 kfreebsd-amd64 kfreebsd-i386)#include "libstdc++6.symbols.float128" +(arch=!armel)#include "libstdc++6.symbols.not-armel" + (arch=!armel !hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)_ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj@GLIBCXX_3.4.21 5 + _ZGTtNKSt11logic_error4whatEv@GLIBCXX_3.4.22 6 + _ZGTtNKSt13bad_exception4whatEv@CXXABI_1.3.10 6 + _ZGTtNKSt13bad_exceptionD1Ev@CXXABI_1.3.10 6 + _ZGTtNKSt13runtime_error4whatEv@GLIBCXX_3.4.22 6 + _ZGTtNKSt9exception4whatEv@CXXABI_1.3.10 6 + _ZGTtNKSt9exceptionD1Ev@CXXABI_1.3.10 6 + _ZGTtNSt11logic_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt11logic_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt11logic_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt11logic_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt11logic_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt11range_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt11range_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt11range_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt11range_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt11range_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12domain_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12domain_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12domain_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12domain_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12domain_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12length_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12length_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12length_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12length_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12length_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12out_of_rangeC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12out_of_rangeC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt12out_of_rangeD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12out_of_rangeD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt12out_of_rangeD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt13runtime_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt13runtime_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt13runtime_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt13runtime_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt13runtime_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt14overflow_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt14overflow_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt14overflow_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt14overflow_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt14overflow_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt15underflow_errorC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt15underflow_errorC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt15underflow_errorD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt15underflow_errorD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt15underflow_errorD2Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt16invalid_argumentC1EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt16invalid_argumentC2EPKc@GLIBCXX_3.4.22 6 + (optional=abi_c++11)_ZGTtNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.22 6 + _ZGTtNSt16invalid_argumentD0Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt16invalid_argumentD1Ev@GLIBCXX_3.4.22 6 + _ZGTtNSt16invalid_argumentD2Ev@GLIBCXX_3.4.22 6 + _ZGVNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv116__enum_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__array_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv117__pbase_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv119__pointer_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__function_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv120__si_class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv121__vmi_class_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv123__fundamental_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev@CXXABI_1.3 4.1.1 + _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev@CXXABI_1.3 4.1.1 + _ZN10__gnu_norm15_List_node_base4hookEPS0_@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv@GLIBCXX_3.4.9 4.2.1 + _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@GLIBCXX_3.4 4.1.1 + _ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.26 9 + _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@GLIBCXX_3.4.17 4.7 + _ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_@GLIBCXX_3.4.17 4.7 + _ZN14__gnu_parallel9_Settings3getEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN14__gnu_parallel9_Settings3setERS0_@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZN9__gnu_cxx27__verbose_terminate_handlerEv@CXXABI_1.3 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv@GLIBCXX_3.4.6 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9__freeresEv@CXXABI_1.3.10 6 + _ZN9__gnu_cxx9free_list8_M_clearEv@GLIBCXX_3.4.4 4.1.1 + _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__function_type_info15__is_function_pEv@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj@CXXABI_1.3 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv@GLIBCXX_3.4.10 4.3 + _ZNK11__gnu_debug16_Error_formatter8_M_errorEv@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv@GLIBCXX_3.4 4.1.1 + _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6 + _ZNKSbIwSt11char_traitsIwESaIwEE4cendEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6 + _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@GLIBCXX_3.4.26 9 + _ZNKSi6gcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSi6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSo6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs11_M_disjunctEPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs13get_allocatorEv@GLIBCXX_3.4 4.1.1 + _ZNKSs3endEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4_Rep12_M_is_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4_Rep12_M_is_sharedEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4backEv@GLIBCXX_3.4.15 4.6 + _ZNKSs4cendEv@GLIBCXX_3.4.14 4.5 + _ZNKSs4dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4rendEv@GLIBCXX_3.4 4.1.1 + _ZNKSs4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5beginEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5c_strEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5crendEv@GLIBCXX_3.4.14 4.5 + _ZNKSs5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSs5frontEv@GLIBCXX_3.4.15 4.6 + _ZNKSs6_M_repEv@GLIBCXX_3.4 4.1.1 + _ZNKSs6cbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSs6lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSs6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7_M_dataEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7_M_iendEv@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareERKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7crbeginEv@GLIBCXX_3.4.14 4.5 + _ZNKSs8capacityEv@GLIBCXX_3.4 4.1.1 + _ZNKSs8max_sizeEv@GLIBCXX_3.4 4.1.1 + _ZNKSs9_M_ibeginEv@GLIBCXX_3.4 4.1.1 + _ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@GLIBCXX_3.4.26 9 + _ZNKSt10bad_typeid4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt10error_code23default_error_conditionEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt10filesystem16filesystem_error4whatEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem16filesystem_error5path1Ev@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem16filesystem_error5path2Ev@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem18directory_iteratordeEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem28recursive_directory_iterator17recursion_pendingEv@GLIBCXX_3.4.26 9.1 + _ZNKSt10filesystem28recursive_directory_iterator5depthEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem28recursive_directory_iterator7optionsEv@GLIBCXX_3.4.26 9.1 + _ZNKSt10filesystem28recursive_directory_iteratordeEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path11parent_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path12has_filenameEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path13has_root_nameEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path13has_root_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path13relative_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path14root_directoryEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path15has_parent_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path16lexically_normalEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path17_M_find_extensionEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path17has_relative_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path18has_root_directoryEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path18lexically_relativeERKS0_@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path19lexically_proximateERKS0_@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path5_List13_Impl_deleterclEPNS1_5_ImplE@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path5_List3endEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path5_List5beginEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path7compareERKS0_@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path7compareESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path9root_nameEv@GLIBCXX_3.4.26 9 + _ZNKSt10filesystem4path9root_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1116filesystem_error4whatEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1116filesystem_error5path1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1116filesystem_error5path2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1118directory_iteratordeEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1128recursive_directory_iterator17recursion_pendingEv@GLIBCXX_3.4.26 9.1 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1128recursive_directory_iterator5depthEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1128recursive_directory_iterator7optionsEv@GLIBCXX_3.4.26 9.1 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx1128recursive_directory_iteratordeEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path11parent_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path12has_filenameEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path13has_root_nameEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path13has_root_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path13relative_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path14root_directoryEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path15has_parent_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path16lexically_normalEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path17_M_find_extensionEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path17has_relative_pathEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path18has_root_directoryEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path18lexically_relativeERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path19lexically_proximateERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path5_List3endEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path5_List5beginEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path7compareERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path7compareESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path9root_nameEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt10filesystem7__cxx114path9root_pathEv@GLIBCXX_3.4.26 9 + _ZNKSt10istrstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10lock_error4whatEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt10moneypunctIcLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb0EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIcLb1EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb0EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE10neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE10pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE11frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13do_neg_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13do_pos_formatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_negative_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_positive_signEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10moneypunctIwLb1EE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10ostrstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt10ostrstream6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_date_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE15_M_time_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE7_M_daysEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE8_M_am_pmEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE9_M_monthsEPPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_date_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE15_M_time_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE7_M_daysEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE8_M_am_pmEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE9_M_monthsEPPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt11logic_error4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt12__basic_fileIcE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt12bad_weak_ptr4whatEv@GLIBCXX_3.4.15 4.6 + _ZNKSt12future_error4whatEv@GLIBCXX_3.4.14 4.5 + _ZNKSt12strstreambuf6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13bad_exception4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv@GLIBCXX_3.4 4.1.1 + _ZNKSt13random_device13_M_getentropyEv@GLIBCXX_3.4.25 8 + _ZNKSt13runtime_error4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4.5 4.1.1 + _ZNKSt14error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.11 4.4.0 + _ZNKSt14error_category23default_error_conditionEi@GLIBCXX_3.4.11 4.4.0 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt16bad_array_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt17bad_function_call4whatEv@GLIBCXX_3.4.18 4.8 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19__codecvt_utf8_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19__codecvt_utf8_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4 4.1.1 + _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt20__codecvt_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20__codecvt_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt20bad_array_new_length4whatEv@CXXABI_1.3.8 4.9 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt25__codecvt_utf8_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10_M_messageEi@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10equivalentERKSt10error_codei@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition@GLIBCXX_3.4.21 5 + _ZNKSt3_V214error_category23default_error_conditionEi@GLIBCXX_3.4.21 5 + _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashIRKSsEclES2_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_@GLIBCXX_3.4.10 4.3 + _ZNKSt3tr14hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIRKSsEclES1_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISsEclESs@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashISt10error_codeEclES0_@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE10do_tolowerEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_tolowerEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEPcPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE10do_toupperEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE13_M_widen_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE14_M_narrow_initEv@GLIBCXX_3.4.11 4.4.0 + _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIcE9do_narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_tolowerEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEPwPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE10do_toupperEw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE19_M_convert_to_wmaskEt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEPKwS2_Pt@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE5do_isEtw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE8do_widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@GLIBCXX_3.4 4.1.1 + _ZNKSt5ctypeIwE9do_narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale2id5_M_idEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6locale4nameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt6localeeqERKS_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIDiDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDiDu11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDiDu11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDiDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDiDu11__mbstate_tE6do_outERS0_PKDiS4_RS4_PDuS6_RS6_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE5do_inERS0_PKcS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsc11__mbstate_tE6do_outERS0_PKDsS4_RS4_PcS6_RS6_@GLIBCXX_3.4.21 5 + _ZNKSt7codecvtIDsDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE11do_encodingEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDsS6_RS6_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIDsDu11__mbstate_tE6do_outERS0_PKDsS4_RS4_PDuS6_RS6_@GLIBCXX_3.4.26 9 + _ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10_M_compareEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12do_transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE4hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7compareEPKcS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE7do_hashEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE9transformEPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10_M_compareEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12do_transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE4hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7compareEPKwS2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE7do_hashEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE9transformEPKwS2_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy@GLIBCXX_3.4 4.1.1 + _ZNKSt8bad_cast4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt8ios_base7failure4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE18_M_convert_to_charERKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE3getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE6do_getEiiiRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIcE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE4openERKSsRKSt6localePKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE5closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE7do_openERKSsRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNKSt8messagesIwE8do_closeEi@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIcE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE11do_truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE12do_falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE13thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8groupingEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE8truenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8numpunctIwE9falsenameEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.26 9 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.26 9 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9bad_alloc4whatEv@GLIBCXX_3.4.9 4.2.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv@GLIBCXX_3.4.21 5 + _ZNKSt9basic_iosIcSt11char_traitsIcEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9basic_iosIwSt11char_traitsIwEEcvbEv@GLIBCXX_3.4.21 5 + _ZNKSt9basic_iosIwSt11char_traitsIwEEntEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9exception4whatEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream5rdbufEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9strstream6pcountEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info10__do_catchEPKS_PPvj@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info14__is_pointer_pEv@GLIBCXX_3.4 4.1.1 + _ZNKSt9type_info15__is_function_pEv@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIcEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSaIwEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSaIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS0_E@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS0_E@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS0_E@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ENS2_12__sv_wrapperERKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_RKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_RKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ENS2_12__sv_wrapperERKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@GLIBCXX_3.4.15 4.6 + _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_RKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_RKS1_@GLIBCXX_3.4.26 9 + _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_@GLIBCXX_3.4.14 4.5 + _ZNSbIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.11 4.4.0 + _ZNSbIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4 4.1.1 + _ZNSd4swapERSd@GLIBCXX_3.4.21 5 + _ZNSdC1EOSd@GLIBCXX_3.4.21 5 + _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdC2EOSd@GLIBCXX_3.4.21 5 + _ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSdD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSdaSEOSd@GLIBCXX_3.4.21 5 + _ZNSi10_M_extractIPvEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIbEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIdEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIeEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIfEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIjEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIlEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractImEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractItEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIxEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi10_M_extractIyEERSiRT_@GLIBCXX_3.4.9 4.2.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc@GLIBCXX_3.4 4.1.1 + _ZNSi3getERc@GLIBCXX_3.4 4.1.1 + _ZNSi3getEv@GLIBCXX_3.4 4.1.1 + _ZNSi4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSi4swapERSi@GLIBCXX_3.4.21 5 + _ZNSi4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSi5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSi5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSi6sentryC1ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi6sentryC2ERSib@GLIBCXX_3.4 4.1.1 + _ZNSi7putbackEc@GLIBCXX_3.4 4.1.1 + _ZNSiC1EOSi@GLIBCXX_3.4.21 5 + _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiC2EOSi@GLIBCXX_3.4.21 5 + _ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSiD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSiaSEOSi@GLIBCXX_3.4.21 5 + _ZNSirsEPFRSiS_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSirsERPv@GLIBCXX_3.4 4.1.1 + _ZNSirsERb@GLIBCXX_3.4 4.1.1 + _ZNSirsERd@GLIBCXX_3.4 4.1.1 + _ZNSirsERe@GLIBCXX_3.4 4.1.1 + _ZNSirsERf@GLIBCXX_3.4 4.1.1 + _ZNSirsERi@GLIBCXX_3.4 4.1.1 + _ZNSirsERj@GLIBCXX_3.4 4.1.1 + _ZNSirsERl@GLIBCXX_3.4 4.1.1 + _ZNSirsERm@GLIBCXX_3.4 4.1.1 + _ZNSirsERs@GLIBCXX_3.4 4.1.1 + _ZNSirsERt@GLIBCXX_3.4 4.1.1 + _ZNSirsERx@GLIBCXX_3.4 4.1.1 + _ZNSirsERy@GLIBCXX_3.4 4.1.1 + _ZNSo3putEc@GLIBCXX_3.4 4.1.1 + _ZNSo4swapERSo@GLIBCXX_3.4.21 5 + _ZNSo5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSo5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC1ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryC2ERSo@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSo6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSo9_M_insertIPKvEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIbEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIdEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIeEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIlEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertImEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIxEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSo9_M_insertIyEERSoT_@GLIBCXX_3.4.9 4.2.1 + _ZNSoC1EOSo@GLIBCXX_3.4.21 5 + _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC1ERSd@GLIBCXX_3.4.21 5 + _ZNSoC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoC2EOSo@GLIBCXX_3.4.21 5 + _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC2ERSd@GLIBCXX_3.4.21 5 + _ZNSoC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSoaSEOSo@GLIBCXX_3.4.21 5 + _ZNSolsEDn@GLIBCXX_3.4.26 9 + _ZNSolsEPFRSoS_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt8ios_baseS0_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@GLIBCXX_3.4 4.1.1 + _ZNSolsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSolsEb@GLIBCXX_3.4 4.1.1 + _ZNSolsEd@GLIBCXX_3.4 4.1.1 + _ZNSolsEe@GLIBCXX_3.4 4.1.1 + _ZNSolsEf@GLIBCXX_3.4 4.1.1 + _ZNSolsEi@GLIBCXX_3.4 4.1.1 + _ZNSolsEj@GLIBCXX_3.4 4.1.1 + _ZNSolsEl@GLIBCXX_3.4 4.1.1 + _ZNSolsEm@GLIBCXX_3.4 4.1.1 + _ZNSolsEs@GLIBCXX_3.4 4.1.1 + _ZNSolsEt@GLIBCXX_3.4 4.1.1 + _ZNSolsEx@GLIBCXX_3.4 4.1.1 + _ZNSolsEy@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC1EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_Alloc_hiderC2EPcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs12_M_leak_hardEv@GLIBCXX_3.4 4.1.1 + _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@GLIBCXX_3.4.14 4.5 + _ZNSs12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs12__sv_wrapperC1ESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNSs12__sv_wrapperC2ESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcPKcS1_@GLIBCXX_3.4 4.1.1 + _ZNSs13_S_copy_charsEPcS_S_@GLIBCXX_3.4 4.1.1 + _ZNSs13shrink_to_fitEv@GLIBCXX_3.4.14 4.5 + _ZNSs17_S_to_string_viewESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNSs3endEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_destroyERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_disposeERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refcopyEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep10_M_refdataEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_max_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep11_S_terminalE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep12_S_empty_repEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep13_M_set_leakedEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep15_M_set_sharableEv@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep20_S_empty_rep_storageE@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep7_M_grabERKSaIcES2_@GLIBCXX_3.4 4.1.1 + _ZNSs4backEv@GLIBCXX_3.4.15 4.6 + _ZNSs4dataEv@GLIBCXX_3.4.26 9 + _ZNSs4nposE@GLIBCXX_3.4 4.1.1 + _ZNSs4rendEv@GLIBCXX_3.4 4.1.1 + _ZNSs4swapERSs@GLIBCXX_3.4 4.1.1 + _ZNSs5beginEv@GLIBCXX_3.4 4.1.1 + _ZNSs5clearEv@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_@GLIBCXX_3.4 4.1.1 + _ZNSs5frontEv@GLIBCXX_3.4.15 4.6 + _ZNSs6appendEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6appendESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6assignEOSs@GLIBCXX_3.4.14 4.5 + _ZNSs6assignEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6assignESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc@GLIBCXX_3.4 4.1.1 + _ZNSs6rbeginEv@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_dataEPc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_leakEv@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSs8pop_backEv@GLIBCXX_3.4.17 4.7 + _ZNSs9push_backEc@GLIBCXX_3.4 4.1.1 + _ZNSsC1ENSs12__sv_wrapperERKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC1EOSs@GLIBCXX_3.4.14 4.5 + _ZNSsC1EOSsRKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC1EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsRKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC1ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ENSs12__sv_wrapperERKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC2EOSs@GLIBCXX_3.4.15 4.6 + _ZNSsC2EOSsRKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC2EPKcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsRKSaIcE@GLIBCXX_3.4.26 9 + _ZNSsC2ESt16initializer_listIcERKSaIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPKcEET_S2_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2IPcEET_S1_RKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSsD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSsaSEOSs@GLIBCXX_3.4.14 4.5 + _ZNSsaSEPKc@GLIBCXX_3.4 4.1.1 + _ZNSsaSERKSs@GLIBCXX_3.4 4.1.1 + _ZNSsaSESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSsaSEc@GLIBCXX_3.4 4.1.1 + _ZNSspLEPKc@GLIBCXX_3.4 4.1.1 + _ZNSspLERKSs@GLIBCXX_3.4 4.1.1 + _ZNSspLESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _ZNSspLEc@GLIBCXX_3.4 4.1.1 + _ZNSt10_Sp_lockerC1EPKv@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC1EPKvS1_@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC2EPKv@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerC2EPKvS1_@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerD1Ev@GLIBCXX_3.4.21 5 + _ZNSt10_Sp_lockerD2Ev@GLIBCXX_3.4.21 5 + _ZNSt10__num_base11_S_atoms_inE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base12_S_atoms_outE@GLIBCXX_3.4 4.1.1 + _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10bad_typeidD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alnumE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5alphaE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5blankE@GLIBCXX_3.4.21 5 + _ZNSt10ctype_base5cntrlE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5digitE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5graphE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5lowerE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5printE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5punctE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5spaceE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base5upperE@GLIBCXX_3.4 4.1.1 + _ZNSt10ctype_base6xdigitE@GLIBCXX_3.4 4.1.1 + _ZNSt10filesystem10equivalentERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem10equivalentERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem10hash_valueERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem10remove_allERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem10remove_allERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem10remove_allERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem10remove_allERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12copy_symlinkERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12copy_symlinkERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12current_pathB5cxx11ERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12current_pathB5cxx11Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12current_pathERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12current_pathERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12current_pathERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12current_pathERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12current_pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12current_pathEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12read_symlinkERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem12read_symlinkERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem14create_symlinkERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem14create_symlinkERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem14symlink_statusERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem14symlink_statusERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15hard_link_countERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15hard_link_countERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem15last_write_timeERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_directoryERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_directoryERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_directoryERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_directoryERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_hard_linkERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16create_hard_linkERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathES5_St10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathESt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC1ERKSsSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathES5_St10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathESt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorC2ERKSsSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorD0Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorD1Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16filesystem_errorD2Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16weakly_canonicalERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem16weakly_canonicalERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem18create_directoriesERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem18create_directoriesERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem18directory_iterator9incrementERSt10error_code@GLIBCXX_3.4.26 9.1 + _ZNSt10filesystem18directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem18directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem18directory_iteratorppEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem19temp_directory_pathB5cxx11ERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem19temp_directory_pathB5cxx11Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem19temp_directory_pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem19temp_directory_pathEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iterator25disable_recursion_pendingEv@GLIBCXX_3.4.26 9.1 + _ZNSt10filesystem28recursive_directory_iterator3popERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iterator3popEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iterator9incrementERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratorD1Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratorD2Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@GLIBCXX_3.4.27 9.1 + _ZNSt10filesystem28recursive_directory_iteratorppEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path14_M_split_cmptsEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path14_S_convert_locEPKcS2_RKSt6locale@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path15remove_filenameEv@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path16replace_filenameERKS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path17replace_extensionERKS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path5_ListC1ERKS1_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path5_ListC1Ev@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4pathaSERKS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4pathdVERKS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem4pathpLERKS0_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem5spaceERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem5spaceERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem5spaceERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem5spaceERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6removeERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6removeERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6removeERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6removeERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6renameERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6renameERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6statusERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem6statusERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6statusERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem6statusERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1110hash_valueERKNS0_4pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorD0Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorD1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1116filesystem_errorD2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1118directory_iterator9incrementERSt10error_code@GLIBCXX_3.4.26 9.1 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1118directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1118directory_iteratorppEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iterator25disable_recursion_pendingEv@GLIBCXX_3.4.26 9.1 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iterator9incrementERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@GLIBCXX_3.4.27 9.1 + (optional=abi_c++11)_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path15remove_filenameEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path16replace_filenameERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path17replace_extensionERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path5_ListC1ERKS2_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path5_ListC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114pathaSERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114pathdVERKS1_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem7__cxx114pathpLERKS1_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8absoluteERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8absoluteERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8absoluteERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8absoluteERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8is_emptyERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8is_emptyERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8relativeERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem8relativeERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9canonicalERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9canonicalERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9canonicalERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9canonicalERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9file_sizeERKNS_4pathE@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9file_sizeERKNS_4pathERSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathERSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9proximateERKNS_4pathES2_@GLIBCXX_3.4.26 9 + _ZNSt10filesystem9proximateERKNS_4pathES2_RSt10error_code@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_RSt10error_code@GLIBCXX_3.4.26 9 + _ZNSt10istrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPc@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base18_S_default_patternE@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base20_S_construct_patternEccc@GLIBCXX_3.4 4.1.1 + _ZNSt10money_base8_S_atomsE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt10ostrstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 4.1.1 + _ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4.5 4.1.1 + _ZNSt11logic_errorC1EOS_@GLIBCXX_3.4.26 9 + _ZNSt11logic_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKS_@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorC2EOS_@GLIBCXX_3.4.26 9 + _ZNSt11logic_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC2ERKS_@GLIBCXX_3.4.21 5 + _ZNSt11logic_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11logic_erroraSEOS_@GLIBCXX_3.4.26 9 + _ZNSt11logic_erroraSERKS_@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt11range_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorC1ENSt15regex_constants10error_typeE@GLIBCXX_3.4.20 4.9 + _ZNSt11regex_errorC2ENSt15regex_constants10error_typeE@GLIBCXX_3.4.21 5 + _ZNSt11regex_errorD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt11regex_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12__basic_fileIcE2fdEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4fileEv@GLIBCXX_3.4.1 4.1.1 + _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcED2Ev@GLIBCXX_3.4 4.1.1 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC1EOS5_@GLIBCXX_3.4.26" 9 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC1Ev@GLIBCXX_3.4.26" 9 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC2Ev@GLIBCXX_3.4.27" 9.1 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE\dEEC1EOS4_@GLIBCXX_3.4.26" 9 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE\dEEC1Ev@GLIBCXX_3.4.26" 9 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE\dEEC2Ev@GLIBCXX_3.4.27" 9.1 + (regex)"^_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE\dEEaSEOS4_@GLIBCXX_3.4.26" 9 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC1EOS6_@GLIBCXX_3.4.26" 9 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC1Ev@GLIBCXX_3.4.26" 9 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE\dEEC2Ev@GLIBCXX_3.4.27" 9.1 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE\dEEC1EOS5_@GLIBCXX_3.4.26" 9 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE\dEEC1Ev@GLIBCXX_3.4.26" 9 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE\dEEC2Ev@GLIBCXX_3.4.27" 9.1 + (regex|optional=abi_c++11)"^_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE\dEEaSEOS5_@GLIBCXX_3.4.26" 9 + _ZNSt12bad_weak_ptrD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12bad_weak_ptrD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12ctype_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12domain_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12domain_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12future_errorD0Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD1Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12future_errorD2Ev@GLIBCXX_3.4.14 4.5 + _ZNSt12length_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12length_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12length_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12out_of_rangeC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt12out_of_rangeC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt12out_of_rangeC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_1E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_2E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_3E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_4E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_5E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_6E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_7E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_8E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders2_9E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_10E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_11E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_12E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_13E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_14E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_15E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_16E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_17E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_18E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_19E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_20E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_21E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_22E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_23E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_24E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_25E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_26E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_27E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_28E@GLIBCXX_3.4.15 4.6 + _ZNSt12placeholders3_29E@GLIBCXX_3.4.15 4.6 + _ZNSt12strstreambuf3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7_M_freeEPc@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12system_errorD0Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt12system_errorD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt13bad_exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13bad_exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t@GLIBCXX_3.4.15 4.6 + _ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERy@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_@GLIBCXX_3.4.9 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1ERSt14basic_iostreamIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2ERSt14basic_iostreamIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn@GLIBCXX_3.4.26 9 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy@GLIBCXX_3.4 4.1.1 + _ZNSt13random_device14_M_init_pretr1ERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device16_M_getval_pretr1Ev@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_finiEv@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device7_M_initERKSs@GLIBCXX_3.4.18 4.8 + _ZNSt13random_device9_M_getvalEv@GLIBCXX_3.4.18 4.8 + _ZNSt13runtime_errorC1EOS_@GLIBCXX_3.4.26 9 + _ZNSt13runtime_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorC2EOS_@GLIBCXX_3.4.26 9 + _ZNSt13runtime_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_errorD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13runtime_erroraSEOS_@GLIBCXX_3.4.26 9 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.2 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14error_categoryC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14error_categoryD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt14numeric_limitsIDiE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDiE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDiE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDuE10has_denormE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE10is_boundedE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE10is_integerE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE11round_styleE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE12has_infinityE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE12max_exponentE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE12min_exponentE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE13has_quiet_NaNE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE14is_specializedE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE14max_exponent10E@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE14min_exponent10E@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE15has_denorm_lossE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE15tinyness_beforeE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE17has_signaling_NaNE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE5radixE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE5trapsE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE6digitsE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE8digits10E@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE8is_exactE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE9is_iec559E@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE9is_moduloE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDuE9is_signedE@GLIBCXX_3.4.26 9 + _ZNSt14numeric_limitsIDsE10has_denormE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_boundedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE10is_integerE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE11round_styleE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12has_infinityE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIDsE12max_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE12min_exponentE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE13has_quiet_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14is_specializedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14max_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE14min_exponent10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15has_denorm_lossE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE15tinyness_beforeE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE17has_signaling_NaNE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5radixE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE5trapsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE6digitsE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8digits10E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE8is_exactE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_iec559E@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_moduloE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIDsE9is_signedE@GLIBCXX_3.4.11 4.4.0 + _ZNSt14numeric_limitsIaE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIaE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIaE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIbE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIbE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIcE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIcE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIdE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIdE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIeE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIfE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIfE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIhE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIhE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIiE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIiE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIjE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIjE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIlE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIlE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsImE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsImE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIsE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIsE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsItE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsItE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIwE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIwE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIxE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIxE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt14numeric_limitsIyE12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt14numeric_limitsIyE9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt14overflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt14overflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base11_M_transferEPS_S0_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base4hookEPS_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base4swapERS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base6unhookEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base7_M_hookEPS_@GLIBCXX_3.4.14 4.5 + _ZNSt15_List_node_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base8transferEPS_S0_@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv@GLIBCXX_3.4.10 4.3 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt15underflow_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt15underflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16bad_array_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt16bad_array_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt16invalid_argumentC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt16invalid_argumentC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt16invalid_argumentC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17__timepunct_cacheIcE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwE12_S_timezonesE@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17bad_function_callD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17bad_function_callD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17bad_function_callD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt17moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt18condition_variable10notify_allEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable10notify_oneEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt18condition_variableD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@GLIBCXX_3.4.26 9 + _ZNSt19__codecvt_utf8_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt19__codecvt_utf8_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4 4.1.1 + _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv@GLIBCXX_3.4.5 4.1.1 + _ZNSt20__codecvt_utf16_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt20__codecvt_utf16_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt20bad_array_new_lengthD0Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD1Ev@CXXABI_1.3.8 4.9 + _ZNSt20bad_array_new_lengthD2Ev@CXXABI_1.3.8 4.9 + _ZNSt21__numeric_limits_base10has_denormE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_boundedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base10is_integerE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base11round_styleE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12has_infinityE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12max_digits10E@GLIBCXX_3.4.14 4.5.0 + _ZNSt21__numeric_limits_base12max_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base12min_exponentE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base13has_quiet_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14is_specializedE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14max_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base14min_exponent10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15has_denorm_lossE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base15tinyness_beforeE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base17has_signaling_NaNE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5radixE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base5trapsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base6digitsE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8digits10E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base8is_exactE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_iec559E@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_moduloE@GLIBCXX_3.4 4.1.1 + _ZNSt21__numeric_limits_base9is_signedE@GLIBCXX_3.4 4.1.1 + _ZNSt22condition_variable_anyC1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyC2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD1Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt22condition_variable_anyD2Ev@GLIBCXX_3.4.11 4.4.0 + _ZNSt25__codecvt_utf8_utf16_baseIDiED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDiED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDiED2Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIDsED2Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED0Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED1Ev@GLIBCXX_3.4.21 5 + _ZNSt25__codecvt_utf8_utf16_baseIwED2Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD0Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD1Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V214error_categoryD2Ev@GLIBCXX_3.4.21 5 + _ZNSt3_V215system_categoryEv@GLIBCXX_3.4.21 5 + _ZNSt3_V216generic_categoryEv@GLIBCXX_3.4.21 5 + _ZNSt3pmr19new_delete_resourceEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr20get_default_resourceEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr20null_memory_resourceEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr20set_default_resourceEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr25monotonic_buffer_resource18_M_release_buffersEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resource7releaseEv@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resourceD1Ev@GLIBCXX_3.4.26 9 + _ZNSt3pmr28unsynchronized_pool_resourceD2Ev@GLIBCXX_3.4.26 9 + _ZNSt3tr18__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt5ctypeIcE10table_sizeE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE13classic_tableEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE19_M_initialize_ctypeEv@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6__norm15_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base4hookEPS0_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base6unhookEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt6__norm15_List_node_base7reverseEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt6chrono3_V212steady_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212steady_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock3nowEv@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono3_V212system_clock9is_steadyE@GLIBCXX_3.4.19 4.8.1 + _ZNSt6chrono12system_clock12is_monotonicE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6chrono12system_clock3nowEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6locale11_M_coalesceERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale21_S_normalize_categoryEi@GLIBCXX_3.4 4.1.1 + _ZNSt6locale3allE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4noneE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale4timeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5ctypeE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet13_S_get_c_nameEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt6locale5facet15_S_get_c_localeEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5facetD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6locale6globalERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7classicEv@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7collateE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale7numericE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8messagesE@GLIBCXX_3.4 4.1.1 + _ZNSt6locale8monetaryE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPKc@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2EPNS_5_ImplE@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_PKci@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2ERKS_S1_i@GLIBCXX_3.4 4.1.1 + _ZNSt6localeC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt6localeaSERKS_@GLIBCXX_3.4 4.1.1 + _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE@GLIBCXX_3.4.21 5 + _ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@GLIBCXX_3.4.22 6 + _ZNSt6thread20hardware_concurrencyEv@GLIBCXX_3.4.17 4.7 + _ZNSt6thread4joinEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread6_StateD0Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6_StateD1Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6_StateD2Ev@GLIBCXX_3.4.22 6 + _ZNSt6thread6detachEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt7codecvtIDiDu11__mbstate_tE2idE@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDiDu11__mbstate_tED0Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDiDu11__mbstate_tED1Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDiDu11__mbstate_tED2Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDic11__mbstate_tE2idE@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED0Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED1Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDic11__mbstate_tED2Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsDu11__mbstate_tE2idE@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDsDu11__mbstate_tED0Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDsDu11__mbstate_tED1Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDsDu11__mbstate_tED2Ev@GLIBCXX_3.4.26 9 + _ZNSt7codecvtIDsc11__mbstate_tE2idE@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED0Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED1Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIDsc11__mbstate_tED2Ev@GLIBCXX_3.4.21 5 + _ZNSt7codecvtIcc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8__detail12__prime_listE@GLIBCXX_3.4.10 4.3 + _ZNSt8__detail15_List_node_base10_M_reverseEv@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base4swapERS0_S1_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.15 4.6 + _ZNSt8__detail15_List_node_base9_M_unhookEv@GLIBCXX_3.4.15 4.6 + _ZNSt8bad_castD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8bad_castD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10floatfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base10scientificE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base11adjustfieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base13_M_grow_wordsEib@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base15sync_with_stdioEb@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base17_M_call_callbacksENS_5eventE@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base20_M_dispose_callbacksEv@GLIBCXX_3.4.6 4.1.1 + _ZNSt8ios_base2inE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3appE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3ateE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3begE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3curE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3decE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3endE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3hexE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3octE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base3outE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4InitD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base4leftE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5fixedE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5rightE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base5truncE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6badbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6binaryE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6eofbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6skipwsE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base6xallocEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7_M_initEv@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7_M_moveERS_@GLIBCXX_3.4.21 5 + _ZNSt8ios_base7_M_swapERS_@GLIBCXX_3.4.21 5 + _ZNSt8ios_base7failbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7failureD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7goodbitE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7showposE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base7unitbufE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8internalE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base8showbaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9basefieldE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9boolalphaE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9showpointE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_base9uppercaseE@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8ios_baseD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base10_M_reverseEv@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base4hookEPS0_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base4swapERS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_@GLIBCXX_3.4.14 4.5 + _ZNSt9__cxx199815_List_node_base6unhookEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base7reverseEv@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.10 4.3 + _ZNSt9__cxx199815_List_node_base9_M_unhookEv@GLIBCXX_3.4.14 4.5 + _ZNSt9bad_allocD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9bad_allocD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE4moveEOS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE4moveERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEE9set_rdbufEPSt15basic_streambufIcS1_E@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE4moveEOS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE4moveERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEE9set_rdbufEPSt15basic_streambufIwS1_E@GLIBCXX_3.4.21 5 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9basic_iosIwSt11char_traitsIwEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9exceptionD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream3strEv@GLIBCXX_3.4 4.1.1 + _ZNSt9strstream6freezeEb@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2EPciSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamC2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9strstreamD2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt9type_infoD2Ev@GLIBCXX_3.4 4.1.1 + _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZNVSt9__atomic011atomic_flag5clearESt12memory_order@GLIBCXX_3.4.11 4.4.0 + _ZSt10adopt_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10defer_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt10unexpectedv@GLIBCXX_3.4 4.1.1 + _ZSt11__once_call@GLIBCXX_3.4.11 4.4.0 + _ZSt11try_to_lock@GLIBCXX_3.4.11 4.4.0 + _ZSt13get_terminatev@GLIBCXX_3.4.20 4.9 + _ZSt13set_terminatePFvvE@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_3.4 4.1.1 + _ZSt14get_unexpectedv@GLIBCXX_3.4.20 4.9 + _ZSt14set_unexpectedPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15__once_callable@GLIBCXX_3.4.11 4.4.0 + _ZSt15future_category@GLIBCXX_3.4.14 4.5 + _ZSt15future_categoryv@GLIBCXX_3.4.15 4.6 + _ZSt15get_new_handlerv@GLIBCXX_3.4.20 4.9 + _ZSt15set_new_handlerPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15system_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZNSt13runtime_errorC1EPKc@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC1ERKS_@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC2EPKc@GLIBCXX_3.4.21 5 + _ZNSt13runtime_errorC2ERKS_@GLIBCXX_3.4.21 5 + _ZNSt13runtime_erroraSERKS_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ifstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_iostreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIcSt11char_traitsIcEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4swapERS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EOS2_@GLIBCXX_3.4.21 5 + _ZNSt14basic_ofstreamIwSt11char_traitsIwEEaSEOS2_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@GLIBCXX_3.4.21 5 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@GLIBCXX_3.4.21 5 + _ZSt16__throw_bad_castv@GLIBCXX_3.4 4.1.1 + _ZSt16generic_categoryv@GLIBCXX_3.4.11 4.4.0 + _ZSt17__throw_bad_allocv@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base@GLIBCXX_3.4 4.1.1 + _ZSt18__throw_bad_typeidv@GLIBCXX_3.4 4.1.1 + _ZSt18uncaught_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_ios_failurePKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_ios_failurePKci@GLIBCXX_3.4.26 9 + _ZSt19__throw_logic_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_range_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@GLIBCXX_3.4.15 4.6 + _ZSt19uncaught_exceptionsv@GLIBCXX_3.4.22 6 + _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_@GLIBCXX_3.4 4.1.1 + _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_domain_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_future_errori@GLIBCXX_3.4.14 4.5 + _ZSt20__throw_length_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_out_of_rangePKc@GLIBCXX_3.4 4.1.1 + _ZSt20__throw_system_errori@GLIBCXX_3.4.11 4.4.0 + _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_bad_exceptionv@GLIBCXX_3.4 4.1.1 + _ZSt21__throw_runtime_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt22__throw_overflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt23__throw_underflow_errorPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_invalid_argumentPKc@GLIBCXX_3.4 4.1.1 + _ZSt24__throw_out_of_range_fmtPKcz@GLIBCXX_3.4.20 4.9 + _ZSt25__throw_bad_function_callv@GLIBCXX_3.4.14 4.5 + _ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE@GLIBCXX_3.4.21 5 + _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_@GLIBCXX_3.4 4.1.1 + _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt3cin@GLIBCXX_3.4 4.1.1 + _ZSt4cerr@GLIBCXX_3.4 4.1.1 + _ZSt4clog@GLIBCXX_3.4 4.1.1 + _ZSt4cout@GLIBCXX_3.4 4.1.1 + _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt4wcin@GLIBCXX_3.4 4.1.1 + _ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4 4.1.1 + _ZSt5wcerr@GLIBCXX_3.4 4.1.1 + _ZSt5wclog@GLIBCXX_3.4 4.1.1 + _ZSt5wcout@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_@GLIBCXX_3.4 4.1.1 + _ZSt7nothrow@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt11__timepunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt5ctypeIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7collateIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8messagesIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIcEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8numpunctIwEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9terminatev@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7collateIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8messagesIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c@GLIBCXX_3.4 4.1.1 + _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c@GLIBCXX_3.4 4.1.1 + _ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_@GLIBCXX_3.4 4.1.1 + _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra@GLIBCXX_3.4 4.1.1 + _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E@GLIBCXX_3.4 4.1.1 + _ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E@GLIBCXX_3.4 4.1.1 + _ZTIDd@CXXABI_1.3.4 4.5 + _ZTIDe@CXXABI_1.3.4 4.5 + _ZTIDf@CXXABI_1.3.4 4.5 + _ZTIDi@CXXABI_1.3.3 4.4.0 + _ZTIDn@CXXABI_1.3.5 4.6 + _ZTIDs@CXXABI_1.3.3 4.4.0 + _ZTIDu@CXXABI_1.3.12 9 + _ZTIN10__cxxabiv115__forced_unwindE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv119__foreign_exceptionE@CXXABI_1.3.2 4.3 + _ZTIN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTINSt10filesystem16filesystem_errorE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZTINSt10filesystem7__cxx1116filesystem_errorE@GLIBCXX_3.4.26 9 + _ZTINSt3_V214error_categoryE@GLIBCXX_3.4.21 5 + _ZTINSt3pmr26synchronized_pool_resourceE@GLIBCXX_3.4.26 9 + _ZTINSt3pmr28unsynchronized_pool_resourceE@GLIBCXX_3.4.26 9 + _ZTINSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTINSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTINSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTIPDd@CXXABI_1.3.4 4.5 + _ZTIPDe@CXXABI_1.3.4 4.5 + _ZTIPDf@CXXABI_1.3.4 4.5 + _ZTIPDi@CXXABI_1.3.3 4.4.0 + _ZTIPDn@CXXABI_1.3.5 4.6 + _ZTIPDs@CXXABI_1.3.3 4.4.0 + _ZTIPDu@CXXABI_1.3.12 9 + _ZTIPKDd@CXXABI_1.3.4 4.5 + _ZTIPKDe@CXXABI_1.3.4 4.5 + _ZTIPKDf@CXXABI_1.3.4 4.5 + _ZTIPKDi@CXXABI_1.3.3 4.4.0 + _ZTIPKDn@CXXABI_1.3.5 4.6 + _ZTIPKDs@CXXABI_1.3.3 4.4.0 + _ZTIPKDu@CXXABI_1.3.12 9 + _ZTIPKa@CXXABI_1.3 4.1.1 + _ZTIPKb@CXXABI_1.3 4.1.1 + _ZTIPKc@CXXABI_1.3 4.1.1 + _ZTIPKd@CXXABI_1.3 4.1.1 + _ZTIPKe@CXXABI_1.3 4.1.1 + _ZTIPKf@CXXABI_1.3 4.1.1 + _ZTIPKh@CXXABI_1.3 4.1.1 + _ZTIPKi@CXXABI_1.3 4.1.1 + _ZTIPKj@CXXABI_1.3 4.1.1 + _ZTIPKl@CXXABI_1.3 4.1.1 + _ZTIPKm@CXXABI_1.3 4.1.1 + _ZTIPKs@CXXABI_1.3 4.1.1 + _ZTIPKt@CXXABI_1.3 4.1.1 + _ZTIPKv@CXXABI_1.3 4.1.1 + _ZTIPKw@CXXABI_1.3 4.1.1 + _ZTIPKx@CXXABI_1.3 4.1.1 + _ZTIPKy@CXXABI_1.3 4.1.1 + _ZTIPa@CXXABI_1.3 4.1.1 + _ZTIPb@CXXABI_1.3 4.1.1 + _ZTIPc@CXXABI_1.3 4.1.1 + _ZTIPd@CXXABI_1.3 4.1.1 + _ZTIPe@CXXABI_1.3 4.1.1 + _ZTIPf@CXXABI_1.3 4.1.1 + _ZTIPh@CXXABI_1.3 4.1.1 + _ZTIPi@CXXABI_1.3 4.1.1 + _ZTIPj@CXXABI_1.3 4.1.1 + _ZTIPl@CXXABI_1.3 4.1.1 + _ZTIPm@CXXABI_1.3 4.1.1 + _ZTIPs@CXXABI_1.3 4.1.1 + _ZTIPt@CXXABI_1.3 4.1.1 + _ZTIPv@CXXABI_1.3 4.1.1 + _ZTIPw@CXXABI_1.3 4.1.1 + _ZTIPx@CXXABI_1.3 4.1.1 + _ZTIPy@CXXABI_1.3 4.1.1 + _ZTISd@GLIBCXX_3.4 4.1.1 + _ZTISi@GLIBCXX_3.4 4.1.1 + _ZTISo@GLIBCXX_3.4 4.1.1 + _ZTISt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTISt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTISt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTISt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt10money_base@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTISt11range_error@GLIBCXX_3.4 4.1.1 + _ZTISt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTISt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTISt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTISt12future_error@GLIBCXX_3.4.14 4.5 + _ZTISt12length_error@GLIBCXX_3.4 4.1.1 + _ZTISt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTISt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTISt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTISt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTISt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTISt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTISt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTISt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTISt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTISt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTISt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTISt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTISt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTISt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTISt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTISt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTISt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTISt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIDiDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTISt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTISt7codecvtIDsDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTISt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTISt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTISt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTISt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTISt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTISt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTISt9exception@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTISt9strstream@GLIBCXX_3.4 4.1.1 + _ZTISt9time_base@GLIBCXX_3.4 4.1.1 + _ZTISt9type_info@GLIBCXX_3.4 4.1.1 + _ZTIa@CXXABI_1.3 4.1.1 + _ZTIb@CXXABI_1.3 4.1.1 + _ZTIc@CXXABI_1.3 4.1.1 + _ZTId@CXXABI_1.3 4.1.1 + _ZTIe@CXXABI_1.3 4.1.1 + _ZTIf@CXXABI_1.3 4.1.1 + _ZTIh@CXXABI_1.3 4.1.1 + _ZTIi@CXXABI_1.3 4.1.1 + _ZTIj@CXXABI_1.3 4.1.1 + _ZTIl@CXXABI_1.3 4.1.1 + _ZTIm@CXXABI_1.3 4.1.1 + _ZTIs@CXXABI_1.3 4.1.1 + _ZTIt@CXXABI_1.3 4.1.1 + _ZTIv@CXXABI_1.3 4.1.1 + _ZTIw@CXXABI_1.3 4.1.1 + _ZTIx@CXXABI_1.3 4.1.1 + _ZTIy@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTSNSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTSNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTSPKa@CXXABI_1.3 4.1.1 + _ZTSPKb@CXXABI_1.3 4.1.1 + _ZTSPKc@CXXABI_1.3 4.1.1 + _ZTSPKd@CXXABI_1.3 4.1.1 + _ZTSPKe@CXXABI_1.3 4.1.1 + _ZTSPKf@CXXABI_1.3 4.1.1 + _ZTSPKh@CXXABI_1.3 4.1.1 + _ZTSPKi@CXXABI_1.3 4.1.1 + _ZTSPKj@CXXABI_1.3 4.1.1 + _ZTSPKl@CXXABI_1.3 4.1.1 + _ZTSPKm@CXXABI_1.3 4.1.1 + _ZTSPKs@CXXABI_1.3 4.1.1 + _ZTSPKt@CXXABI_1.3 4.1.1 + _ZTSPKv@CXXABI_1.3 4.1.1 + _ZTSPKw@CXXABI_1.3 4.1.1 + _ZTSPKx@CXXABI_1.3 4.1.1 + _ZTSPKy@CXXABI_1.3 4.1.1 + _ZTSPa@CXXABI_1.3 4.1.1 + _ZTSPb@CXXABI_1.3 4.1.1 + _ZTSPc@CXXABI_1.3 4.1.1 + _ZTSPd@CXXABI_1.3 4.1.1 + _ZTSPe@CXXABI_1.3 4.1.1 + _ZTSPf@CXXABI_1.3 4.1.1 + _ZTSPh@CXXABI_1.3 4.1.1 + _ZTSPi@CXXABI_1.3 4.1.1 + _ZTSPj@CXXABI_1.3 4.1.1 + _ZTSPl@CXXABI_1.3 4.1.1 + _ZTSPm@CXXABI_1.3 4.1.1 + _ZTSPs@CXXABI_1.3 4.1.1 + _ZTSPt@CXXABI_1.3 4.1.1 + _ZTSPv@CXXABI_1.3 4.1.1 + _ZTSPw@CXXABI_1.3 4.1.1 + _ZTSPx@CXXABI_1.3 4.1.1 + _ZTSPy@CXXABI_1.3 4.1.1 + _ZTSSd@GLIBCXX_3.4 4.1.1 + _ZTSSi@GLIBCXX_3.4 4.1.1 + _ZTSSo@GLIBCXX_3.4 4.1.1 + _ZTSSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTSSt10ctype_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt10money_base@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTSSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12codecvt_base@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTSSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTSSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTSSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTSSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTSSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt13messages_base@GLIBCXX_3.4 4.1.1 + _ZTSSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTSSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTSSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTSSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTSSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTSSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTSSt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTSSt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTSSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIDiDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTSSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTSSt7codecvtIDsDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTSSt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTSSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTSSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9exception@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTSSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTSSt9time_base@GLIBCXX_3.4 4.1.1 + _ZTSSt9type_info@GLIBCXX_3.4 4.1.1 + _ZTSa@CXXABI_1.3 4.1.1 + _ZTSb@CXXABI_1.3 4.1.1 + _ZTSc@CXXABI_1.3 4.1.1 + _ZTSd@CXXABI_1.3 4.1.1 + _ZTSe@CXXABI_1.3 4.1.1 + _ZTSf@CXXABI_1.3 4.1.1 + _ZTSh@CXXABI_1.3 4.1.1 + _ZTSi@CXXABI_1.3 4.1.1 + _ZTSj@CXXABI_1.3 4.1.1 + _ZTSl@CXXABI_1.3 4.1.1 + _ZTSm@CXXABI_1.3 4.1.1 + _ZTSs@CXXABI_1.3 4.1.1 + _ZTSt@CXXABI_1.3 4.1.1 + _ZTSv@CXXABI_1.3 4.1.1 + _ZTSw@CXXABI_1.3 4.1.1 + _ZTSx@CXXABI_1.3 4.1.1 + _ZTSy@CXXABI_1.3 4.1.1 + _ZTTSd@GLIBCXX_3.4 4.1.1 + _ZTTSi@GLIBCXX_3.4 4.1.1 + _ZTTSo@GLIBCXX_3.4 4.1.1 + _ZTTSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTTSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVN10__cxxabiv116__enum_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__array_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv117__pbase_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv119__pointer_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__function_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv120__si_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv121__vmi_class_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv123__fundamental_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN10__cxxabiv129__pointer_to_member_type_infoE@CXXABI_1.3 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVNSt10filesystem16filesystem_errorE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZTVNSt10filesystem7__cxx1116filesystem_errorE@GLIBCXX_3.4.26 9 + _ZTVNSt3_V214error_categoryE@GLIBCXX_3.4.21 5 + _ZTVNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTVNSt6thread6_StateE@GLIBCXX_3.4.22 6 + _ZTVNSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTVSd@GLIBCXX_3.4 4.1.1 + _ZTVSi@GLIBCXX_3.4 4.1.1 + _ZTVSo@GLIBCXX_3.4 4.1.1 + _ZTVSt10bad_typeid@GLIBCXX_3.4 4.1.1 + _ZTVSt10istrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt10lock_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt10moneypunctIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10moneypunctIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt10ostrstream@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt11__timepunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt11logic_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11range_error@GLIBCXX_3.4 4.1.1 + _ZTVSt11regex_error@GLIBCXX_3.4.15 4.6 + _ZTVSt12bad_weak_ptr@GLIBCXX_3.4.15 4.6 + _ZTVSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt12domain_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12future_error@GLIBCXX_3.4.14 4.5 + _ZTVSt12length_error@GLIBCXX_3.4 4.1.1 + _ZTVSt12out_of_range@GLIBCXX_3.4 4.1.1 + _ZTVSt12strstreambuf@GLIBCXX_3.4 4.1.1 + _ZTVSt12system_error@GLIBCXX_3.4.11 4.4.0 + _ZTVSt13bad_exception@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_filebufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_fstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_istreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13basic_ostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt13runtime_error@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ifstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_iostreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14basic_ofstreamIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14codecvt_bynameIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt14collate_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt14error_category@GLIBCXX_3.4.11 4.4.0 + _ZTVSt14overflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_streambufIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15messages_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt15numpunct_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt15underflow_error@GLIBCXX_3.4 4.1.1 + _ZTVSt16bad_array_length@CXXABI_1.3.8 4.9 + _ZTVSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _ZTVSt17bad_function_call@GLIBCXX_3.4.15 4.6 + _ZTVSt17moneypunct_bynameIcLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIcLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb0EE@GLIBCXX_3.4 4.1.1 + _ZTVSt17moneypunct_bynameIwLb1EE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19__codecvt_utf8_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt19__codecvt_utf8_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt19__codecvt_utf8_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt20__codecvt_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt20__codecvt_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt20__codecvt_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt20bad_array_new_length@CXXABI_1.3.8 4.9 + _ZTVSt21__ctype_abstract_baseIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt21__ctype_abstract_baseIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt25__codecvt_utf8_utf16_baseIDiE@GLIBCXX_3.4.21 5 + _ZTVSt25__codecvt_utf8_utf16_baseIDsE@GLIBCXX_3.4.21 5 + _ZTVSt25__codecvt_utf8_utf16_baseIwE@GLIBCXX_3.4.21 5 + _ZTVSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIDiDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTVSt7codecvtIDic11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTVSt7codecvtIDsDu11__mbstate_tE@GLIBCXX_3.4.26 9 + _ZTVSt7codecvtIDsc11__mbstate_tE@GLIBCXX_3.4.21 5 + _ZTVSt7codecvtIcc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7codecvtIwc11__mbstate_tE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt7collateIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8bad_cast@GLIBCXX_3.4 4.1.1 + _ZTVSt8ios_base@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8messagesIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt8numpunctIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9bad_alloc@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9basic_iosIwSt11char_traitsIwEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9exception@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE@GLIBCXX_3.4 4.1.1 + _ZTVSt9strstream@GLIBCXX_3.4 4.1.1 + _ZTVSt9type_info@GLIBCXX_3.4 4.1.1 + _ZdaPv@GLIBCXX_3.4 4.1.1 + _ZdaPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZdaPvSt11align_val_t@CXXABI_1.3.11 7 + _ZdaPvSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + _ZdlPv@GLIBCXX_3.4 4.1.1 + _ZdlPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _ZdlPvSt11align_val_t@CXXABI_1.3.11 7 + _ZdlPvSt11align_val_tRKSt9nothrow_t@CXXABI_1.3.11 7 + __atomic_flag_for_address@GLIBCXX_3.4.11 4.4.0 + __atomic_flag_wait_explicit@GLIBCXX_3.4.11 4.4.0 + __cxa_allocate_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_allocate_exception@CXXABI_1.3 4.1.1 + __cxa_bad_cast@CXXABI_1.3 4.1.1 + __cxa_bad_typeid@CXXABI_1.3 4.1.1 + __cxa_begin_catch@CXXABI_1.3 4.1.1 + __cxa_call_unexpected@CXXABI_1.3 4.1.1 + __cxa_current_exception_type@CXXABI_1.3 4.1.1 + __cxa_deleted_virtual@CXXABI_1.3.6 4.7 + __cxa_demangle@CXXABI_1.3 4.1.1 + __cxa_end_catch@CXXABI_1.3 4.1.1 + __cxa_free_dependent_exception@CXXABI_1.3.6 4.7 + __cxa_free_exception@CXXABI_1.3 4.1.1 + __cxa_get_exception_ptr@CXXABI_1.3.1 4.1.1 + __cxa_get_globals@CXXABI_1.3 4.1.1 + __cxa_get_globals_fast@CXXABI_1.3 4.1.1 + __cxa_guard_abort@CXXABI_1.3 4.1.1 + __cxa_guard_acquire@CXXABI_1.3 4.1.1 + __cxa_guard_release@CXXABI_1.3 4.1.1 + __cxa_init_primary_exception@CXXABI_1.3.11 7 + __cxa_pure_virtual@CXXABI_1.3 4.1.1 + __cxa_rethrow@CXXABI_1.3 4.1.1 + __cxa_thread_atexit@CXXABI_1.3.7 4.8 + __cxa_throw@CXXABI_1.3 4.1.1 + __cxa_throw_bad_array_length@CXXABI_1.3.8 4.9 + __cxa_throw_bad_array_new_length@CXXABI_1.3.8 4.9 + __cxa_tm_cleanup@CXXABI_TM_1 4.7 + __cxa_vec_cctor@CXXABI_1.3 4.1.1 + __cxa_vec_cleanup@CXXABI_1.3 4.1.1 + __cxa_vec_ctor@CXXABI_1.3 4.1.1 + __cxa_vec_delete2@CXXABI_1.3 4.1.1 + __cxa_vec_delete3@CXXABI_1.3 4.1.1 + __cxa_vec_delete@CXXABI_1.3 4.1.1 + __cxa_vec_dtor@CXXABI_1.3 4.1.1 + __cxa_vec_new2@CXXABI_1.3 4.1.1 + __cxa_vec_new3@CXXABI_1.3 4.1.1 + __cxa_vec_new@CXXABI_1.3 4.1.1 + __dynamic_cast@CXXABI_1.3 4.1.1 + __once_proxy@GLIBCXX_3.4.11 4.4.0 + atomic_flag_clear_explicit@GLIBCXX_3.4.11 4.4.0 + atomic_flag_test_and_set_explicit@GLIBCXX_3.4.11 4.4.0 diff --git a/libstdc++6.symbols.common.cxx11 b/libstdc++6.symbols.common.cxx11 new file mode 100644 index 0000000..0f2baf9 --- /dev/null +++ b/libstdc++6.symbols.common.cxx11 @@ -0,0 +1,920 @@ + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx117collateIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx117collateIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118messagesIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118messagesIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3_V214error_category10_M_messageB5cxx11Ei@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclES6_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEclES6_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt6locale4nameB5cxx11Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_neg_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_pos_formatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_curr_symbolEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_frac_digitsEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_negative_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_positive_signEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4cendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5crendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6cbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7crbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4cendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5crendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6cbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6lengthEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7crbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10_M_compareEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10do_compareEPKcS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12do_transformEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE4hashEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7compareEPKcS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7do_hashEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIcE9transformEPKcS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10_M_compareEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10do_compareEPKwS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12do_transformEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE4hashEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7compareEPKwS3_S3_S3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7do_hashEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx117collateIwE9transformEPKwS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE18_M_convert_to_charERKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE20_M_convert_from_charEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE3getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE5closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE6do_getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE8do_closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE18_M_convert_to_charERKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE20_M_convert_from_charEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE3getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE5closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE6do_getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE8do_closeEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE12do_falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE9falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE12do_falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_decimal_pointEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_thousands_sepEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8groupingEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8truenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE9falsenameEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt8ios_base7failureB5cxx114whatEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@GLIBCXX_3.4.28 9.2.1 + (optional=abi_c++11)_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@GLIBCXX_3.4.28 9.2.1 + (optional=abi_c++11)_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@GLIBCXX_3.4.28 9.2.1 + (optional=abi_c++11)_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@GLIBCXX_3.4.28 9.2.1 + (optional=abi_c++11)_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC2ESt17basic_string_viewIcS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4nposE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvS9_T_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_NS6_IPcS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_PcSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S9_S9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_St16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_NS6_IPKcS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S7_S7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8pop_backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ENS4_12__sv_wrapperERKS3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLESt16initializer_listIcE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwOS3_@GLIBCXX_3.4.23 7 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS5_S5_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4nposE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5clearEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EESt16initializer_listIwE@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvS9_T_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEPw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_NS6_IPwS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_PwSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S9_S9_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_St16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_NS6_IPKwS4_EESB_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwSA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_RKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S7_S7_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S8_S8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8pop_backEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ENS4_12__sv_wrapperERKS3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ENS4_12__sv_wrapperERKS3_@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEPKw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLERKS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC1ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC2ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC1ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC2ERKS4_PS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EE4intlE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@GLIBCXX_3.4.26 9 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx117collateIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118messagesIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE22_M_initialize_numpunctEP15__locale_struct@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1EPKcRKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2EPKcRKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D0Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D1Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D2Ev@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13random_device14_M_init_pretr1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt17iostream_categoryv@GLIBCXX_3.4.21 5.1.1 + (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIcLb0EEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIwLb0EEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIcEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIwEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb0EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb1EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb0EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb1EEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIcEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIwEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTINSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTSNSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb0EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb1EEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx117collateIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx117collateIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118messagesIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118messagesIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIcEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIwEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZTVNSt8ios_base7failureB5cxx11E@GLIBCXX_3.4.21 5.2 diff --git a/libstdc++6.symbols.excprop b/libstdc++6.symbols.excprop new file mode 100644 index 0000000..6d72109 --- /dev/null +++ b/libstdc++6.symbols.excprop @@ -0,0 +1,18 @@ + _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv@CXXABI_1.3.3 4.4.0 + _ZNKSt15__exception_ptr13exception_ptrntEv@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptr4swapERS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1EPv@CXXABI_1.3.11 7 + _ZNSt15__exception_ptr13exception_ptrC1ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2ERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrC2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD1Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptrD2Ev@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptr13exception_ptraSERKS0_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_@CXXABI_1.3.3 4.4.0 + _ZSt17current_exceptionv@CXXABI_1.3.3 4.4.0 + _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE@CXXABI_1.3.3 4.4.0 diff --git a/libstdc++6.symbols.float128 b/libstdc++6.symbols.float128 new file mode 100644 index 0000000..f20e67a --- /dev/null +++ b/libstdc++6.symbols.float128 @@ -0,0 +1,7 @@ + CXXABI_FLOAT128@CXXABI_FLOAT128 5 + _ZTIPKg@CXXABI_FLOAT128 5 + _ZTIPg@CXXABI_FLOAT128 5 + _ZTIg@CXXABI_FLOAT128 5 + _ZTSPKg@CXXABI_FLOAT128 5 + _ZTSPg@CXXABI_FLOAT128 5 + _ZTSg@CXXABI_FLOAT128 5 diff --git a/libstdc++6.symbols.glibcxxmath b/libstdc++6.symbols.glibcxxmath new file mode 100644 index 0000000..04b7104 --- /dev/null +++ b/libstdc++6.symbols.glibcxxmath @@ -0,0 +1,22 @@ + acosl@GLIBCXX_3.4.3 4.1.1 + asinl@GLIBCXX_3.4.3 4.1.1 + atan2l@GLIBCXX_3.4 4.1.1 + atanl@GLIBCXX_3.4.3 4.1.1 + ceill@GLIBCXX_3.4.3 4.1.1 + coshl@GLIBCXX_3.4 4.1.1 + cosl@GLIBCXX_3.4 4.1.1 + expl@GLIBCXX_3.4 4.1.1 + floorl@GLIBCXX_3.4.3 4.1.1 + fmodl@GLIBCXX_3.4.3 4.1.1 + frexpl@GLIBCXX_3.4.3 4.1.1 + hypotl@GLIBCXX_3.4 4.1.1 + ldexpl@GLIBCXX_3.4.3 4.1.1 + log10l@GLIBCXX_3.4 4.1.1 + logl@GLIBCXX_3.4 4.1.1 + modfl@GLIBCXX_3.4.3 4.1.1 + powl@GLIBCXX_3.4 4.1.1 + sinhl@GLIBCXX_3.4 4.1.1 + sinl@GLIBCXX_3.4 4.1.1 + sqrtl@GLIBCXX_3.4 4.1.1 + tanhl@GLIBCXX_3.4 4.1.1 + tanl@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.hppa b/libstdc++6.symbols.hppa new file mode 100644 index 0000000..a139283 --- /dev/null +++ b/libstdc++6.symbols.hppa @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +# removed, see PR libstdc++/39491 __signbitl@GLIBCXX_3.4 4.2.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.hurd-i386 b/libstdc++6.symbols.hurd-i386 new file mode 100644 index 0000000..f18ffca --- /dev/null +++ b/libstdc++6.symbols.hurd-i386 @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit.hurd" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.i386 b/libstdc++6.symbols.i386 new file mode 100644 index 0000000..eb26051 --- /dev/null +++ b/libstdc++6.symbols.i386 @@ -0,0 +1,14 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 diff --git a/libstdc++6.symbols.ia64 b/libstdc++6.symbols.ia64 new file mode 100644 index 0000000..5f74173 --- /dev/null +++ b/libstdc++6.symbols.ia64 @@ -0,0 +1,53 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNSt14numeric_limitsInE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsInE9is_signedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10has_denormE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_boundedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE10is_integerE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE11round_styleE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12has_infinityE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12max_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE12min_exponentE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE13has_quiet_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14is_specializedE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14max_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE14min_exponent10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15has_denorm_lossE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE15tinyness_beforeE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE17has_signaling_NaNE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5radixE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE5trapsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE6digitsE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8digits10E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE8is_exactE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_iec559E@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_moduloE@GLIBCXX_3.4.17 4.8 + _ZNSt14numeric_limitsIoE9is_signedE@GLIBCXX_3.4.17 4.8 diff --git a/libstdc++6.symbols.kfreebsd-amd64 b/libstdc++6.symbols.kfreebsd-amd64 new file mode 100644 index 0000000..6e16529 --- /dev/null +++ b/libstdc++6.symbols.kfreebsd-amd64 @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.kfreebsd-i386 b/libstdc++6.symbols.kfreebsd-i386 new file mode 100644 index 0000000..d86ebfa --- /dev/null +++ b/libstdc++6.symbols.kfreebsd-i386 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.ldbl.32bit b/libstdc++6.symbols.ldbl.32bit new file mode 100644 index 0000000..feaffd3 --- /dev/null +++ b/libstdc++6.symbols.ldbl.32bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 diff --git a/libstdc++6.symbols.ldbl.32bit.s390 b/libstdc++6.symbols.ldbl.32bit.s390 new file mode 100644 index 0000000..8432138 --- /dev/null +++ b/libstdc++6.symbols.ldbl.32bit.s390 @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 diff --git a/libstdc++6.symbols.ldbl.64bit b/libstdc++6.symbols.ldbl.64bit new file mode 100644 index 0000000..a5c3abf --- /dev/null +++ b/libstdc++6.symbols.ldbl.64bit @@ -0,0 +1,284 @@ + CXXABI_LDBL_1.3@CXXABI_LDBL_1.3 4.2.1 + GLIBCXX_LDBL_3.4.10@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + GLIBCXX_LDBL_3.4.7@GLIBCXX_LDBL_3.4.7 4.2.1 + GLIBCXX_LDBL_3.4@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt3tr14hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZNKSt4hashIgEclEg@GLIBCXX_LDBL_3.4.10 4.3.0~rc2 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSi10_M_extractIgEERSiRT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSirsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSo9_M_insertIgEERSoT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSolsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_@GLIBCXX_LDBL_3.4.7 4.2.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10has_denormE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_boundedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE10is_integerE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE11round_styleE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12has_infinityE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12max_digits10E@GLIBCXX_LDBL_3.4 4.5.0 + _ZNSt14numeric_limitsIgE12max_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE12min_exponentE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE13has_quiet_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14is_specializedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14max_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE14min_exponent10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15has_denorm_lossE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE15tinyness_beforeE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE17has_signaling_NaNE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5radixE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE5trapsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE6digitsE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8digits10E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE8is_exactE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_iec559E@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_moduloE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt14numeric_limitsIgE9is_signedE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTIPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTIPg@CXXABI_LDBL_1.3 4.2.1 + _ZTIg@CXXABI_LDBL_1.3 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTSPKg@CXXABI_LDBL_1.3 4.2.1 + _ZTSPg@CXXABI_LDBL_1.3 4.2.1 + _ZTSg@CXXABI_LDBL_1.3 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@GLIBCXX_LDBL_3.4 4.2.1 + _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@GLIBCXX_LDBL_3.4 4.2.1 diff --git a/libstdc++6.symbols.m68k b/libstdc++6.symbols.m68k new file mode 100644 index 0000000..1e18564 --- /dev/null +++ b/libstdc++6.symbols.m68k @@ -0,0 +1,6 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.mips b/libstdc++6.symbols.mips new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/libstdc++6.symbols.mips @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.mips64 b/libstdc++6.symbols.mips64 new file mode 100644 index 0000000..7aa71da --- /dev/null +++ b/libstdc++6.symbols.mips64 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.mips64el b/libstdc++6.symbols.mips64el new file mode 100644 index 0000000..fcc4963 --- /dev/null +++ b/libstdc++6.symbols.mips64el @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9.0 diff --git a/libstdc++6.symbols.mips64r6 b/libstdc++6.symbols.mips64r6 new file mode 100644 index 0000000..c499e58 --- /dev/null +++ b/libstdc++6.symbols.mips64r6 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1 diff --git a/libstdc++6.symbols.mips64r6el b/libstdc++6.symbols.mips64r6el new file mode 100644 index 0000000..83716a3 --- /dev/null +++ b/libstdc++6.symbols.mips64r6el @@ -0,0 +1,10 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9 diff --git a/libstdc++6.symbols.mipsel b/libstdc++6.symbols.mipsel new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/libstdc++6.symbols.mipsel @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.mipsr6 b/libstdc++6.symbols.mipsr6 new file mode 100644 index 0000000..33a3d58 --- /dev/null +++ b/libstdc++6.symbols.mipsr6 @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.mipsr6el b/libstdc++6.symbols.mipsr6el new file mode 100644 index 0000000..a0ed1ab --- /dev/null +++ b/libstdc++6.symbols.mipsr6el @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.money.f128 b/libstdc++6.symbols.money.f128 new file mode 100644 index 0000000..eb08feb --- /dev/null +++ b/libstdc++6.symbols.money.f128 @@ -0,0 +1,10 @@ + GLIBCXX_LDBL_3.4.21@GLIBCXX_LDBL_3.4.21 5 +# cxx11 symbols only + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@GLIBCXX_3.4.21 5.2 diff --git a/libstdc++6.symbols.money.ldbl b/libstdc++6.symbols.money.ldbl new file mode 100644 index 0000000..90ca289 --- /dev/null +++ b/libstdc++6.symbols.money.ldbl @@ -0,0 +1,9 @@ +# cxx11 symbols only + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basece@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basece@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewe@GLIBCXX_3.4.21 5.2 + (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewe@GLIBCXX_3.4.21 5.2 diff --git a/libstdc++6.symbols.not-armel b/libstdc++6.symbols.not-armel new file mode 100644 index 0000000..9d9a404 --- /dev/null +++ b/libstdc++6.symbols.not-armel @@ -0,0 +1,24 @@ + _ZNSt13__future_base11_State_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base11_State_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseC2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD0Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD1Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base12_Result_baseD2Ev@GLIBCXX_3.4.15 4.6 + _ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv@GLIBCXX_3.4.21 5 + _ZNSt13__future_base19_Async_state_commonD0Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD1Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt13__future_base19_Async_state_commonD2Ev@GLIBCXX_3.4.17 4.7.0~rc1 + _ZNSt16nested_exceptionD0Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD1Ev@CXXABI_1.3.5 4.6 + _ZNSt16nested_exceptionD2Ev@CXXABI_1.3.5 4.6 + _ZTINSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTINSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTISt16nested_exception@CXXABI_1.3.5 4.6 + _ZTSNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTVNSt13__future_base11_State_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base12_Result_baseE@GLIBCXX_3.4.15 4.6 + _ZTVNSt13__future_base19_Async_state_commonE@GLIBCXX_3.4.17 4.7.0~rc1 + _ZTVSt16nested_exception@CXXABI_1.3.5 4.6 diff --git a/libstdc++6.symbols.powerpc b/libstdc++6.symbols.powerpc new file mode 100644 index 0000000..c731a55 --- /dev/null +++ b/libstdc++6.symbols.powerpc @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.powerpcspe b/libstdc++6.symbols.powerpcspe new file mode 100644 index 0000000..653ed1a --- /dev/null +++ b/libstdc++6.symbols.powerpcspe @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.ppc64 b/libstdc++6.symbols.ppc64 new file mode 100644 index 0000000..617f232 --- /dev/null +++ b/libstdc++6.symbols.ppc64 @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.ppc64el b/libstdc++6.symbols.ppc64el new file mode 100644 index 0000000..617f232 --- /dev/null +++ b/libstdc++6.symbols.ppc64el @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.riscv64 b/libstdc++6.symbols.riscv64 new file mode 100644 index 0000000..72784d1 --- /dev/null +++ b/libstdc++6.symbols.riscv64 @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.s390 b/libstdc++6.symbols.s390 new file mode 100644 index 0000000..bc45065 --- /dev/null +++ b/libstdc++6.symbols.s390 @@ -0,0 +1,558 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.common" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm@GLIBCXX_3.4.2 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx9free_list6_M_getEm@GLIBCXX_3.4.4 4.1.1 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4.10 4.3.0~rc2 + _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE@CXXABI_1.3 4.1.1 + _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_@CXXABI_1.3 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs12find_last_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs13find_first_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs15_M_check_lengthEmmPKc@GLIBCXX_3.4.5 4.1.1 + _ZNKSs16find_last_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs16find_last_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs17find_first_not_ofEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNKSs4copyEPcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs4findEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEPKcmm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindERKSsm@GLIBCXX_3.4 4.1.1 + _ZNKSs5rfindEcm@GLIBCXX_3.4 4.1.1 + _ZNKSs6substrEmm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNKSs7compareEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_checkEmPKc@GLIBCXX_3.4 4.1.1 + _ZNKSs8_M_limitEmm@GLIBCXX_3.4 4.1.1 + _ZNKSsixEm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm@GLIBCXX_3.4 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIcE12_M_transformEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNKSt7collateIwE12_M_transformEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri@GLIBCXX_3.4 4.1.1 + _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4 4.1.1 + _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@GLIBCXX_3.4.14 4.5.0 + _ZNKSt8valarrayImE4sizeEv@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@GLIBCXX_3.4.14 4.5.0 + _ZNSbIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4.5 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_@GLIBCXX_3.4 4.1.1 + _ZNSbIwSt11char_traitsIwESaIwEEixEm@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPci@GLIBCXX_3.4 4.1.1 + _ZNSi3getEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi4readEPci@GLIBCXX_3.4 4.1.1 + _ZNSi5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSi6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSi6ignoreEii@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPci@GLIBCXX_3.4 4.1.1 + _ZNSi7getlineEPcic@GLIBCXX_3.4 4.1.1 + _ZNSi8readsomeEPci@GLIBCXX_3.4 4.1.1 + _ZNSo5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSo5writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSo8_M_writeEPKci@GLIBCXX_3.4 4.1.1 + _ZNSs10_S_compareEmm@GLIBCXX_3.4.16 4.7 + _ZNSs12_S_constructEmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs14_M_replace_auxEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs15_M_replace_safeEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs18_S_construct_aux_2EmcRKSaIcE@GLIBCXX_3.4.14 4.5.0 + _ZNSs2atEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep26_M_set_length_and_sharableEm@GLIBCXX_3.4.5 4.1.1 + _ZNSs4_Rep8_M_cloneERKSaIcEm@GLIBCXX_3.4 4.1.1 + _ZNSs4_Rep9_S_createEmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSs5eraseEmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6appendEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6assignEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs6insertEmmc@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEm@GLIBCXX_3.4 4.1.1 + _ZNSs6resizeEmc@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_copyEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7_M_moveEPcPKcm@GLIBCXX_3.4.5 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKc@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmPKcm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSs@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmRKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSs7replaceEmmmc@GLIBCXX_3.4 4.1.1 + _ZNSs7reserveEm@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4 4.1.1 + _ZNSs9_M_assignEPcmc@GLIBCXX_3.4.5 4.1.1 + _ZNSs9_M_mutateEmmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC1ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC1EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EPKcmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmm@GLIBCXX_3.4 4.1.1 + _ZNSsC2ERKSsmmRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsC2EmcRKSaIcE@GLIBCXX_3.4 4.1.1 + _ZNSsixEm@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC1EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt10istrstreamC2EPci@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm@GLIBCXX_3.4 4.1.1 + _ZNSt10moneypunctIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt11__timepunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE@GLIBCXX_3.4.18 4.8 + _ZNSt12__basic_fileIcE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_allocEm@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambuf8_M_setupEPcS0_i@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC1Ei@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPFPvmEPFvS0_E@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKai@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKci@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPKhi@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPaiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPciS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2EPhiS0_@GLIBCXX_3.4 4.1.1 + _ZNSt12strstreambufC2Ei@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi@GLIBCXX_3.4.5 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt14collate_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x@GLIBCXX_3.4.16 4.7 + _ZNSt15messages_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15messages_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15numpunct_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt16__numpunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt17__timepunct_cacheIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIcLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb0EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt18__moneypunct_cacheIwLb1EEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC1EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EP15__locale_structPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIcEC2EPKtbm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt5ctypeIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm@GLIBCXX_3.4.7 4.1.1 + _ZNSt6locale5_ImplC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2ERKS0_m@GLIBCXX_3.4 4.1.1 + _ZNSt6locale5_ImplC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIcc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7codecvtIwc11__mbstate_tEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt7collateIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2EP15__locale_structPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt8messagesIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIcEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EP15__locale_structm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm@GLIBCXX_3.4 4.1.1 + _ZNSt8numpunctIwEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2ERKS0_@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImED2Ev@GLIBCXX_3.4 4.1.1 + _ZNSt8valarrayImEixEm@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em@GLIBCXX_3.4 4.1.1 + _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@GLIBCXX_3.4 4.1.1 + _ZSt11_Hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt15_Fnv_hash_bytesPKvmm@CXXABI_1.3.5 4.6 + _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i@GLIBCXX_3.4.9 4.2.1 + _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_@GLIBCXX_3.4.6 4.1.1 + _ZSt17__verify_groupingPKcmRKSs@GLIBCXX_3.4.10 4.3 + _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb@GLIBCXX_3.4.9 4.2.1 + _ZThn8_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZThn8_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSdD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSiD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSoD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10istrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt10ostrstreamD1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD0Ev@GLIBCXX_3.4 4.1.1 + _ZTv0_n12_NSt9strstreamD1Ev@GLIBCXX_3.4 4.1.1 + _Znam@GLIBCXX_3.4 4.1.1 + _ZnamRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + _Znwm@GLIBCXX_3.4 4.1.1 + _ZnwmRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit.s390" + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 diff --git a/libstdc++6.symbols.s390x b/libstdc++6.symbols.s390x new file mode 100644 index 0000000..d1fa3ac --- /dev/null +++ b/libstdc++6.symbols.s390x @@ -0,0 +1,13 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" + _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1 +#DEPRECATED: 4.2.2-4# ldexpf@GLIBCXX_3.4.3 4.1.1 +#DEPRECATED: 4.2.2-4# powf@GLIBCXX_3.4 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.64bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.sh4 b/libstdc++6.symbols.sh4 new file mode 100644 index 0000000..70ed99b --- /dev/null +++ b/libstdc++6.symbols.sh4 @@ -0,0 +1,8 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.money.ldbl" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 diff --git a/libstdc++6.symbols.sparc b/libstdc++6.symbols.sparc new file mode 100644 index 0000000..c731a55 --- /dev/null +++ b/libstdc++6.symbols.sparc @@ -0,0 +1,9 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.excprop" + __gxx_personality_v0@CXXABI_1.3 4.1.1 +#include "libstdc++6.symbols.glibcxxmath" +#include "libstdc++6.symbols.ldbl.32bit" +#include "libstdc++6.symbols.money.f128" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 diff --git a/libstdc++6.symbols.sparc64 b/libstdc++6.symbols.sparc64 new file mode 100644 index 0000000..f9446bb --- /dev/null +++ b/libstdc++6.symbols.sparc64 @@ -0,0 +1,11 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.money.ldbl" + _ZN9__gnu_cxx12__atomic_addEPVli@GLIBCXX_3.4 4.1.1 + _ZN9__gnu_cxx18__exchange_and_addEPVli@GLIBCXX_3.4 4.1.1 +# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc. +# #include "libstdc++6.symbols.ldbl.64bit" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 diff --git a/libstdc++6.symbols.x32 b/libstdc++6.symbols.x32 new file mode 100644 index 0000000..eab6e1d --- /dev/null +++ b/libstdc++6.symbols.x32 @@ -0,0 +1,27 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 + _ZTIPKn@CXXABI_1.3.5 4.9.0 + _ZTIPKo@CXXABI_1.3.5 4.9.0 + _ZTIPn@CXXABI_1.3.5 4.9.0 + _ZTIPo@CXXABI_1.3.5 4.9.0 + _ZTIn@CXXABI_1.3.5 4.9.0 + _ZTIo@CXXABI_1.3.5 4.9.0 + _ZTSPKn@CXXABI_1.3.9 4.9.0 + _ZTSPKo@CXXABI_1.3.9 4.9.0 + _ZTSPn@CXXABI_1.3.9 4.9.0 + _ZTSPo@CXXABI_1.3.9 4.9.0 + _ZTSn@CXXABI_1.3.9 4.9.0 + _ZTSo@CXXABI_1.3.9 4.9.0 diff --git a/libstdc++CXX.postinst b/libstdc++CXX.postinst new file mode 100644 index 0000000..9a9c868 --- /dev/null +++ b/libstdc++CXX.postinst @@ -0,0 +1,18 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libstdc++@CXX@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcc-@BV@-base $docdir + fi + + if [ -n "$2" ] && [ -d /usr/share/gcc-4.9 ] && dpkg --compare-versions "$2" lt 5.1.1-10; then + find /usr/share/gcc-4.9/python -name __pycache__ -type d -print0 | xargs -r0 rm -rf + find /usr/share/gcc-4.9/python -name '*.py[co]' -type f -print0 | xargs -r0 rm -f + find /usr/share/gcc-4.9 -empty -delete 2>/dev/null || true + fi +esac + +#DEBHELPER# diff --git a/libstdc++CXX.prerm b/libstdc++CXX.prerm new file mode 100644 index 0000000..d4a6b38 --- /dev/null +++ b/libstdc++CXX.prerm @@ -0,0 +1,13 @@ +#! /bin/sh + +set -e + +case "$1" in + remove|upgrade) + files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') + rm -f $files + dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) + find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir +esac + +#DEBHELPER# diff --git a/libtsan0.symbols b/libtsan0.symbols new file mode 100644 index 0000000..827bb58 --- /dev/null +++ b/libtsan0.symbols @@ -0,0 +1,1946 @@ +libtsan.so.0 libtsan0 #MINVER# + AnnotateBenignRace@Base 4.9 + AnnotateBenignRaceSized@Base 4.9 + AnnotateCondVarSignal@Base 4.9 + AnnotateCondVarSignalAll@Base 4.9 + AnnotateCondVarWait@Base 4.9 + AnnotateEnableRaceDetection@Base 4.9 + AnnotateExpectRace@Base 4.9 + AnnotateFlushExpectedRaces@Base 4.9 + AnnotateFlushState@Base 4.9 + AnnotateHappensAfter@Base 4.9 + AnnotateHappensBefore@Base 4.9 + AnnotateIgnoreReadsBegin@Base 4.9 + AnnotateIgnoreReadsEnd@Base 4.9 + AnnotateIgnoreSyncBegin@Base 4.9 + AnnotateIgnoreSyncEnd@Base 4.9 + AnnotateIgnoreWritesBegin@Base 4.9 + AnnotateIgnoreWritesEnd@Base 4.9 + AnnotateMemoryIsInitialized@Base 4.9 + AnnotateMemoryIsUninitialized@Base 5 + AnnotateMutexIsNotPHB@Base 4.9 + AnnotateMutexIsUsedAsCondVar@Base 4.9 + AnnotateNewMemory@Base 4.9 + AnnotateNoOp@Base 4.9 + AnnotatePCQCreate@Base 4.9 + AnnotatePCQDestroy@Base 4.9 + AnnotatePCQGet@Base 4.9 + AnnotatePCQPut@Base 4.9 + AnnotatePublishMemoryRange@Base 4.9 + AnnotateRWLockAcquired@Base 4.9 + AnnotateRWLockCreate@Base 4.9 + AnnotateRWLockCreateStatic@Base 4.9 + AnnotateRWLockDestroy@Base 4.9 + AnnotateRWLockReleased@Base 4.9 + AnnotateThreadName@Base 4.9 + AnnotateTraceMemory@Base 4.9 + AnnotateUnpublishMemoryRange@Base 4.9 + OnPrint@Base 8 + RunningOnValgrind@Base 4.9 + ThreadSanitizerQuery@Base 4.9 + ValgrindSlowdown@Base 4.9 + WTFAnnotateBenignRaceSized@Base 4.9 + WTFAnnotateHappensAfter@Base 4.9 + WTFAnnotateHappensBefore@Base 4.9 + _ZN6__tsan10OnFinalizeEb@Base 4.9 + _ZN6__tsan12OnInitializeEv@Base 5 + _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 + _ZdaPv@Base 4.9 + _ZdaPvRKSt9nothrow_t@Base 4.9 + _ZdaPvSt11align_val_t@Base 9 + _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdaPvm@Base 9 + _ZdaPvmSt11align_val_t@Base 9 + _ZdlPv@Base 4.9 + _ZdlPvRKSt9nothrow_t@Base 4.9 + _ZdlPvSt11align_val_t@Base 9 + _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 9 + _ZdlPvm@Base 9 + _ZdlPvmSt11align_val_t@Base 9 + _Znam@Base 4.9 + _ZnamRKSt9nothrow_t@Base 4.9 + _ZnamSt11align_val_t@Base 9 + _ZnamSt11align_val_tRKSt9nothrow_t@Base 9 + _Znwm@Base 4.9 + _ZnwmRKSt9nothrow_t@Base 4.9 + _ZnwmSt11align_val_t@Base 9 + _ZnwmSt11align_val_tRKSt9nothrow_t@Base 9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __close@Base 4.9 + __cxa_atexit@Base 4.9 + __cxa_guard_abort@Base 4.9 + __cxa_guard_acquire@Base 4.9 + __cxa_guard_release@Base 4.9 + __fprintf_chk@Base 9 + __fxstat64@Base 4.9 + __fxstat@Base 4.9 + __getdelim@Base 5 + __interceptor___close@Base 4.9 + __interceptor___cxa_atexit@Base 4.9 + __interceptor___fprintf_chk@Base 9 + __interceptor___fxstat64@Base 4.9 + __interceptor___fxstat@Base 4.9 + __interceptor___getdelim@Base 5 + __interceptor___isoc99_fprintf@Base 5 + __interceptor___isoc99_fscanf@Base 4.9 + __interceptor___isoc99_printf@Base 5 + __interceptor___isoc99_scanf@Base 4.9 + __interceptor___isoc99_snprintf@Base 5 + __interceptor___isoc99_sprintf@Base 5 + __interceptor___isoc99_sscanf@Base 4.9 + __interceptor___isoc99_vfprintf@Base 5 + __interceptor___isoc99_vfscanf@Base 4.9 + __interceptor___isoc99_vprintf@Base 5 + __interceptor___isoc99_vscanf@Base 4.9 + __interceptor___isoc99_vsnprintf@Base 5 + __interceptor___isoc99_vsprintf@Base 5 + __interceptor___isoc99_vsscanf@Base 4.9 + __interceptor___libc_memalign@Base 4.9 + __interceptor___lxstat64@Base 4.9 + __interceptor___lxstat@Base 4.9 + __interceptor___overflow@Base 5 + __interceptor___pthread_mutex_lock@Base 9 + __interceptor___pthread_mutex_unlock@Base 9 + __interceptor___res_iclose@Base 4.9 + __interceptor___sigsetjmp@Base 4.9 + __interceptor___snprintf_chk@Base 9 + __interceptor___sprintf_chk@Base 9 + __interceptor___strndup@Base 8 + __interceptor___strxfrm_l@Base 9 + __interceptor___tls_get_addr@Base 6 + __interceptor___uflow@Base 5 + __interceptor___underflow@Base 5 + __interceptor___vsnprintf_chk@Base 9 + __interceptor___vsprintf_chk@Base 9 + __interceptor___wcsxfrm_l@Base 9 + __interceptor___woverflow@Base 5 + __interceptor___wuflow@Base 5 + __interceptor___wunderflow@Base 5 + __interceptor___xpg_strerror_r@Base 4.9 + __interceptor___xstat64@Base 4.9 + __interceptor___xstat@Base 4.9 + __interceptor__exit@Base 4.9 + __interceptor__obstack_begin@Base 5 + __interceptor__obstack_begin_1@Base 5 + __interceptor__obstack_newchunk@Base 5 + __interceptor__setjmp@Base 4.9 + __interceptor_abort@Base 4.9 + __interceptor_accept4@Base 4.9 + __interceptor_accept@Base 4.9 + __interceptor_aligned_alloc@Base 5 + __interceptor_asctime@Base 4.9 + __interceptor_asctime_r@Base 4.9 + __interceptor_asprintf@Base 5 + __interceptor_atexit@Base 4.9 + __interceptor_backtrace@Base 4.9 + __interceptor_backtrace_symbols@Base 4.9 + __interceptor_bind@Base 4.9 + __interceptor_calloc@Base 4.9 + __interceptor_canonicalize_file_name@Base 4.9 + __interceptor_capget@Base 5 + __interceptor_capset@Base 5 + __interceptor_cfree@Base 4.9 + __interceptor_clock_getres@Base 4.9 + __interceptor_clock_gettime@Base 4.9 + __interceptor_clock_settime@Base 4.9 + __interceptor_close@Base 4.9 + __interceptor_closedir@Base 6 + __interceptor_confstr@Base 4.9 + __interceptor_connect@Base 4.9 + __interceptor_creat64@Base 4.9 + __interceptor_creat@Base 4.9 + __interceptor_ctermid@Base 7 + __interceptor_ctime@Base 4.9 + __interceptor_ctime_r@Base 4.9 + __interceptor_dl_iterate_phdr@Base 6 + __interceptor_dlclose@Base 4.9 + __interceptor_dlopen@Base 4.9 + __interceptor_drand48_r@Base 4.9 + __interceptor_dup2@Base 4.9 + __interceptor_dup3@Base 4.9 + __interceptor_dup@Base 4.9 + __interceptor_endgrent@Base 5 + __interceptor_endpwent@Base 5 + __interceptor_epoll_create1@Base 4.9 + __interceptor_epoll_create@Base 4.9 + __interceptor_epoll_ctl@Base 4.9 + __interceptor_epoll_pwait@Base 7 + __interceptor_epoll_wait@Base 4.9 + __interceptor_ether_aton@Base 4.9 + __interceptor_ether_aton_r@Base 4.9 + __interceptor_ether_hostton@Base 4.9 + __interceptor_ether_line@Base 4.9 + __interceptor_ether_ntoa@Base 4.9 + __interceptor_ether_ntoa_r@Base 4.9 + __interceptor_ether_ntohost@Base 4.9 + __interceptor_eventfd@Base 4.9 + __interceptor_eventfd_read@Base 7 + __interceptor_eventfd_write@Base 7 + __interceptor_fclose@Base 4.9 + __interceptor_fdopen@Base 5 + __interceptor_fflush@Base 4.9 + __interceptor_fgets@Base 9 + __interceptor_fgetxattr@Base 5 + __interceptor_flistxattr@Base 5 + __interceptor_fmemopen@Base 5 + __interceptor_fopen64@Base 5 + __interceptor_fopen@Base 4.9 + __interceptor_fopencookie@Base 6 + __interceptor_fork@Base 4.9 + __interceptor_fprintf@Base 5 + __interceptor_fputs@Base 9 + __interceptor_fread@Base 4.9 + __interceptor_free@Base 4.9 + __interceptor_freopen64@Base 5 + __interceptor_freopen@Base 4.9 + __interceptor_frexp@Base 4.9 + __interceptor_frexpf@Base 4.9 + __interceptor_frexpl@Base 4.9 + __interceptor_fscanf@Base 4.9 + __interceptor_fstat64@Base 4.9 + __interceptor_fstat@Base 4.9 + __interceptor_fstatfs64@Base 4.9 + __interceptor_fstatfs@Base 4.9 + __interceptor_fstatvfs64@Base 4.9 + __interceptor_fstatvfs@Base 4.9 + __interceptor_ftime@Base 5 + __interceptor_fwrite@Base 4.9 + __interceptor_get_current_dir_name@Base 4.9 + __interceptor_getaddrinfo@Base 4.9 + __interceptor_getcwd@Base 4.9 + __interceptor_getdelim@Base 4.9 + __interceptor_getgroups@Base 4.9 + __interceptor_gethostbyaddr@Base 4.9 + __interceptor_gethostbyaddr_r@Base 4.9 + __interceptor_gethostbyname2@Base 4.9 + __interceptor_gethostbyname2_r@Base 4.9 + __interceptor_gethostbyname@Base 4.9 + __interceptor_gethostbyname_r@Base 4.9 + __interceptor_gethostent@Base 4.9 + __interceptor_gethostent_r@Base 4.9 + __interceptor_getifaddrs@Base 5 + __interceptor_getitimer@Base 4.9 + __interceptor_getline@Base 4.9 + __interceptor_getloadavg@Base 8 + __interceptor_getmntent@Base 4.9 + __interceptor_getmntent_r@Base 4.9 + __interceptor_getnameinfo@Base 5 + __interceptor_getpass@Base 5 + __interceptor_getpeername@Base 4.9 + __interceptor_getresgid@Base 5 + __interceptor_getresuid@Base 5 + __interceptor_getsockname@Base 4.9 + __interceptor_getsockopt@Base 4.9 + __interceptor_gettimeofday@Base 4.9 + __interceptor_getutent@Base 8 + __interceptor_getutid@Base 8 + __interceptor_getutline@Base 8 + __interceptor_getutxent@Base 8 + __interceptor_getutxid@Base 8 + __interceptor_getutxline@Base 8 + __interceptor_getxattr@Base 5 + __interceptor_glob64@Base 5 + __interceptor_glob@Base 5 + __interceptor_gmtime@Base 4.9 + __interceptor_gmtime_r@Base 4.9 + __interceptor_iconv@Base 4.9 + __interceptor_if_indextoname@Base 5 + __interceptor_if_nametoindex@Base 5 + __interceptor_inet_aton@Base 4.9 + __interceptor_inet_ntop@Base 4.9 + __interceptor_inet_pton@Base 4.9 + __interceptor_initgroups@Base 4.9 + __interceptor_inotify_init1@Base 4.9 + __interceptor_inotify_init@Base 4.9 + __interceptor_ioctl@Base 4.9 + __interceptor_kill@Base 4.9 + __interceptor_lgamma@Base 4.9 + __interceptor_lgamma_r@Base 4.9 + __interceptor_lgammaf@Base 4.9 + __interceptor_lgammaf_r@Base 4.9 + __interceptor_lgammal@Base 4.9 + __interceptor_lgammal_r@Base 4.9 + __interceptor_lgetxattr@Base 5 + __interceptor_listen@Base 4.9 + __interceptor_listxattr@Base 5 + __interceptor_llistxattr@Base 5 + __interceptor_localtime@Base 4.9 + __interceptor_localtime_r@Base 4.9 + __interceptor_longjmp@Base 4.9 + __interceptor_lrand48_r@Base 4.9 + __interceptor_malloc@Base 4.9 + __interceptor_malloc_usable_size@Base 4.9 + __interceptor_mbsnrtowcs@Base 4.9 + __interceptor_mbsrtowcs@Base 4.9 + __interceptor_mbstowcs@Base 4.9 + __interceptor_mcheck@Base 8 + __interceptor_mcheck_pedantic@Base 8 + __interceptor_memalign@Base 4.9 + __interceptor_memchr@Base 4.9 + __interceptor_memcmp@Base 4.9 + __interceptor_memcpy@Base 4.9 + __interceptor_memmem@Base 7 + __interceptor_memmove@Base 4.9 + __interceptor_memrchr@Base 4.9 + __interceptor_memset@Base 4.9 + __interceptor_mincore@Base 6 + __interceptor_mktime@Base 5 + __interceptor_mlock@Base 4.9 + __interceptor_mlockall@Base 4.9 + __interceptor_mmap64@Base 4.9 + __interceptor_mmap@Base 4.9 + __interceptor_modf@Base 4.9 + __interceptor_modff@Base 4.9 + __interceptor_modfl@Base 4.9 + __interceptor_mprobe@Base 8 + __interceptor_mprotect@Base 9 + __interceptor_munlock@Base 4.9 + __interceptor_munlockall@Base 4.9 + __interceptor_munmap@Base 4.9 + __interceptor_name_to_handle_at@Base 9 + __interceptor_nanosleep@Base 4.9 + __interceptor_on_exit@Base 4.9 + __interceptor_open64@Base 4.9 + __interceptor_open@Base 4.9 + __interceptor_open_by_handle_at@Base 9 + __interceptor_open_memstream@Base 5 + __interceptor_open_wmemstream@Base 5 + __interceptor_opendir@Base 4.9 + __interceptor_pause@Base 8 + __interceptor_pipe2@Base 4.9 + __interceptor_pipe@Base 4.9 + __interceptor_poll@Base 4.9 + __interceptor_posix_memalign@Base 4.9 + __interceptor_ppoll@Base 4.9 + __interceptor_prctl@Base 4.9 + __interceptor_pread64@Base 4.9 + __interceptor_pread@Base 4.9 + __interceptor_preadv64@Base 4.9 + __interceptor_preadv@Base 4.9 + __interceptor_printf@Base 5 + __interceptor_process_vm_readv@Base 6 + __interceptor_process_vm_writev@Base 6 + __interceptor_pthread_attr_getaffinity_np@Base 4.9 + __interceptor_pthread_attr_getdetachstate@Base 4.9 + __interceptor_pthread_attr_getguardsize@Base 4.9 + __interceptor_pthread_attr_getinheritsched@Base 4.9 + __interceptor_pthread_attr_getschedparam@Base 4.9 + __interceptor_pthread_attr_getschedpolicy@Base 4.9 + __interceptor_pthread_attr_getscope@Base 4.9 + __interceptor_pthread_attr_getstack@Base 4.9 + __interceptor_pthread_attr_getstacksize@Base 4.9 + __interceptor_pthread_barrier_destroy@Base 4.9 + __interceptor_pthread_barrier_init@Base 4.9 + __interceptor_pthread_barrier_wait@Base 4.9 + __interceptor_pthread_barrierattr_getpshared@Base 5 + __interceptor_pthread_cond_broadcast@Base 4.9 + __interceptor_pthread_cond_destroy@Base 4.9 + __interceptor_pthread_cond_init@Base 4.9 + __interceptor_pthread_cond_signal@Base 4.9 + __interceptor_pthread_cond_timedwait@Base 4.9 + __interceptor_pthread_cond_wait@Base 4.9 + __interceptor_pthread_condattr_getclock@Base 5 + __interceptor_pthread_condattr_getpshared@Base 5 + __interceptor_pthread_create@Base 4.9 + __interceptor_pthread_detach@Base 4.9 + __interceptor_pthread_getname_np@Base 9 + __interceptor_pthread_getschedparam@Base 4.9 + __interceptor_pthread_join@Base 4.9 + __interceptor_pthread_kill@Base 4.9 + __interceptor_pthread_mutex_destroy@Base 4.9 + __interceptor_pthread_mutex_init@Base 4.9 + __interceptor_pthread_mutex_lock@Base 4.9 + __interceptor_pthread_mutex_timedlock@Base 4.9 + __interceptor_pthread_mutex_trylock@Base 4.9 + __interceptor_pthread_mutex_unlock@Base 4.9 + __interceptor_pthread_mutexattr_getprioceiling@Base 5 + __interceptor_pthread_mutexattr_getprotocol@Base 5 + __interceptor_pthread_mutexattr_getpshared@Base 5 + __interceptor_pthread_mutexattr_getrobust@Base 5 + __interceptor_pthread_mutexattr_getrobust_np@Base 5 + __interceptor_pthread_mutexattr_gettype@Base 5 + __interceptor_pthread_once@Base 4.9 + __interceptor_pthread_rwlock_destroy@Base 4.9 + __interceptor_pthread_rwlock_init@Base 4.9 + __interceptor_pthread_rwlock_rdlock@Base 4.9 + __interceptor_pthread_rwlock_timedrdlock@Base 4.9 + __interceptor_pthread_rwlock_timedwrlock@Base 4.9 + __interceptor_pthread_rwlock_tryrdlock@Base 4.9 + __interceptor_pthread_rwlock_trywrlock@Base 4.9 + __interceptor_pthread_rwlock_unlock@Base 4.9 + __interceptor_pthread_rwlock_wrlock@Base 4.9 + __interceptor_pthread_rwlockattr_getkind_np@Base 5 + __interceptor_pthread_rwlockattr_getpshared@Base 5 + __interceptor_pthread_setcancelstate@Base 6 + __interceptor_pthread_setcanceltype@Base 6 + __interceptor_pthread_setname_np@Base 4.9 + __interceptor_pthread_sigmask@Base 7 + __interceptor_pthread_spin_destroy@Base 4.9 + __interceptor_pthread_spin_init@Base 4.9 + __interceptor_pthread_spin_lock@Base 4.9 + __interceptor_pthread_spin_trylock@Base 4.9 + __interceptor_pthread_spin_unlock@Base 4.9 + __interceptor_ptrace@Base 4.9 + __interceptor_puts@Base 4.9 + __interceptor_pvalloc@Base 4.9 + __interceptor_pwrite64@Base 4.9 + __interceptor_pwrite@Base 4.9 + __interceptor_pwritev64@Base 4.9 + __interceptor_pwritev@Base 4.9 + __interceptor_raise@Base 4.9 + __interceptor_rand_r@Base 5 + __interceptor_random_r@Base 4.9 + __interceptor_read@Base 4.9 + __interceptor_readdir64@Base 4.9 + __interceptor_readdir64_r@Base 4.9 + __interceptor_readdir@Base 4.9 + __interceptor_readdir_r@Base 4.9 + __interceptor_readlink@Base 9 + __interceptor_readlinkat@Base 9 + __interceptor_readv@Base 4.9 + __interceptor_realloc@Base 4.9 + __interceptor_realpath@Base 4.9 + __interceptor_recv@Base 4.9 + __interceptor_recvfrom@Base 7 + __interceptor_recvmmsg@Base 9 + __interceptor_recvmsg@Base 4.9 + __interceptor_remquo@Base 4.9 + __interceptor_remquof@Base 4.9 + __interceptor_remquol@Base 4.9 + __interceptor_rmdir@Base 4.9 + __interceptor_scandir64@Base 4.9 + __interceptor_scandir@Base 4.9 + __interceptor_scanf@Base 4.9 + __interceptor_sched_getaffinity@Base 4.9 + __interceptor_sched_getparam@Base 6 + __interceptor_sem_destroy@Base 4.9 + __interceptor_sem_getvalue@Base 4.9 + __interceptor_sem_init@Base 4.9 + __interceptor_sem_post@Base 4.9 + __interceptor_sem_timedwait@Base 4.9 + __interceptor_sem_trywait@Base 4.9 + __interceptor_sem_wait@Base 4.9 + __interceptor_send@Base 4.9 + __interceptor_sendmmsg@Base 9 + __interceptor_sendmsg@Base 4.9 + __interceptor_sendto@Base 7 + __interceptor_setgrent@Base 5 + __interceptor_setitimer@Base 4.9 + __interceptor_setjmp@Base 4.9 + __interceptor_setlocale@Base 4.9 + __interceptor_setpwent@Base 5 + __interceptor_shmctl@Base 4.9 + __interceptor_sigaction@Base 4.9 + __interceptor_sigblock@Base 7 + __interceptor_sigemptyset@Base 4.9 + __interceptor_sigfillset@Base 4.9 + __interceptor_siglongjmp@Base 4.9 + __interceptor_signal@Base 4.9 + __interceptor_signalfd@Base 4.9 + __interceptor_sigpending@Base 4.9 + __interceptor_sigprocmask@Base 4.9 + __interceptor_sigsetjmp@Base 4.9 + __interceptor_sigsetmask@Base 7 + __interceptor_sigsuspend@Base 4.9 + __interceptor_sigtimedwait@Base 4.9 + __interceptor_sigwait@Base 4.9 + __interceptor_sigwaitinfo@Base 4.9 + __interceptor_sincos@Base 4.9 + __interceptor_sincosf@Base 4.9 + __interceptor_sincosl@Base 4.9 + __interceptor_sleep@Base 4.9 + __interceptor_snprintf@Base 5 + __interceptor_socket@Base 4.9 + __interceptor_socketpair@Base 4.9 + __interceptor_sprintf@Base 5 + __interceptor_sscanf@Base 4.9 + __interceptor_statfs64@Base 4.9 + __interceptor_statfs@Base 4.9 + __interceptor_statvfs64@Base 4.9 + __interceptor_statvfs@Base 4.9 + __interceptor_strcasecmp@Base 4.9 + __interceptor_strcasestr@Base 6 + __interceptor_strchr@Base 4.9 + __interceptor_strchrnul@Base 4.9 + __interceptor_strcmp@Base 4.9 + __interceptor_strcpy@Base 4.9 + __interceptor_strcspn@Base 6 + __interceptor_strdup@Base 4.9 + __interceptor_strerror@Base 4.9 + __interceptor_strerror_r@Base 4.9 + __interceptor_strlen@Base 4.9 + __interceptor_strncasecmp@Base 4.9 + __interceptor_strncmp@Base 4.9 + __interceptor_strncpy@Base 4.9 + __interceptor_strndup@Base 8 + __interceptor_strnlen@Base 7 + __interceptor_strpbrk@Base 6 + __interceptor_strptime@Base 4.9 + __interceptor_strrchr@Base 4.9 + __interceptor_strspn@Base 6 + __interceptor_strstr@Base 4.9 + __interceptor_strtoimax@Base 4.9 + __interceptor_strtok@Base 8 + __interceptor_strtoumax@Base 4.9 + __interceptor_strxfrm@Base 9 + __interceptor_strxfrm_l@Base 9 + __interceptor_sysinfo@Base 4.9 + __interceptor_tcgetattr@Base 4.9 + __interceptor_tempnam@Base 4.9 + __interceptor_textdomain@Base 4.9 + __interceptor_time@Base 4.9 + __interceptor_timerfd_gettime@Base 5 + __interceptor_timerfd_settime@Base 5 + __interceptor_times@Base 4.9 + __interceptor_tmpfile64@Base 5 + __interceptor_tmpfile@Base 5 + __interceptor_tmpnam@Base 4.9 + __interceptor_tmpnam_r@Base 4.9 + __interceptor_tsearch@Base 5 + __interceptor_ttyname_r@Base 7 + __interceptor_unlink@Base 4.9 + __interceptor_usleep@Base 4.9 + __interceptor_valloc@Base 4.9 + __interceptor_vasprintf@Base 5 + __interceptor_vfork@Base 5 + __interceptor_vfprintf@Base 5 + __interceptor_vfscanf@Base 4.9 + __interceptor_vprintf@Base 5 + __interceptor_vscanf@Base 4.9 + __interceptor_vsnprintf@Base 5 + __interceptor_vsprintf@Base 5 + __interceptor_vsscanf@Base 4.9 + __interceptor_wait3@Base 4.9 + __interceptor_wait4@Base 4.9 + __interceptor_wait@Base 4.9 + __interceptor_waitid@Base 4.9 + __interceptor_waitpid@Base 4.9 + __interceptor_wcrtomb@Base 6 + __interceptor_wcscat@Base 8 + __interceptor_wcslen@Base 8 + __interceptor_wcsncat@Base 8 + __interceptor_wcsnlen@Base 8 + __interceptor_wcsnrtombs@Base 4.9 + __interceptor_wcsrtombs@Base 4.9 + __interceptor_wcstombs@Base 4.9 + __interceptor_wcsxfrm@Base 9 + __interceptor_wcsxfrm_l@Base 9 + __interceptor_wordexp@Base 4.9 + __interceptor_write@Base 4.9 + __interceptor_writev@Base 4.9 + __interceptor_xdr_bool@Base 5 + __interceptor_xdr_bytes@Base 5 + __interceptor_xdr_char@Base 5 + __interceptor_xdr_double@Base 5 + __interceptor_xdr_enum@Base 5 + __interceptor_xdr_float@Base 5 + __interceptor_xdr_hyper@Base 5 + __interceptor_xdr_int16_t@Base 5 + __interceptor_xdr_int32_t@Base 5 + __interceptor_xdr_int64_t@Base 5 + __interceptor_xdr_int8_t@Base 5 + __interceptor_xdr_int@Base 5 + __interceptor_xdr_long@Base 5 + __interceptor_xdr_longlong_t@Base 5 + __interceptor_xdr_quad_t@Base 5 + __interceptor_xdr_short@Base 5 + __interceptor_xdr_string@Base 5 + __interceptor_xdr_u_char@Base 5 + __interceptor_xdr_u_hyper@Base 5 + __interceptor_xdr_u_int@Base 5 + __interceptor_xdr_u_long@Base 5 + __interceptor_xdr_u_longlong_t@Base 5 + __interceptor_xdr_u_quad_t@Base 5 + __interceptor_xdr_u_short@Base 5 + __interceptor_xdr_uint16_t@Base 5 + __interceptor_xdr_uint32_t@Base 5 + __interceptor_xdr_uint64_t@Base 5 + __interceptor_xdr_uint8_t@Base 5 + __interceptor_xdrmem_create@Base 5 + __interceptor_xdrstdio_create@Base 5 + __isoc99_fprintf@Base 5 + __isoc99_fscanf@Base 4.9 + __isoc99_printf@Base 5 + __isoc99_scanf@Base 4.9 + __isoc99_snprintf@Base 5 + __isoc99_sprintf@Base 5 + __isoc99_sscanf@Base 4.9 + __isoc99_vfprintf@Base 5 + __isoc99_vfscanf@Base 4.9 + __isoc99_vprintf@Base 5 + __isoc99_vscanf@Base 4.9 + __isoc99_vsnprintf@Base 5 + __isoc99_vsprintf@Base 5 + __isoc99_vsscanf@Base 4.9 + __libc_memalign@Base 4.9 + __lxstat64@Base 4.9 + __lxstat@Base 4.9 + __overflow@Base 5 + __pthread_mutex_lock@Base 9 + __pthread_mutex_unlock@Base 9 + __res_iclose@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 +#MISSING: 8# __sanitizer_cov@Base 4.9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_dump@Base 4.9 +#MISSING: 8# __sanitizer_cov_indir_call16@Base 5 +#MISSING: 8# __sanitizer_cov_init@Base 5 +#MISSING: 8# __sanitizer_cov_module_init@Base 5 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 +#MISSING: 8# __sanitizer_cov_trace_basic_block@Base 6 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 +#MISSING: 8# __sanitizer_cov_trace_func_enter@Base 6 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 +#MISSING: 8# __sanitizer_cov_with_check@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_free_hook@Base 5 + __sanitizer_get_allocated_size@Base 5 +#MISSING: 8# __sanitizer_get_coverage_guards@Base 6 + __sanitizer_get_current_allocated_bytes@Base 5 + __sanitizer_get_estimated_allocated_size@Base 5 + __sanitizer_get_free_bytes@Base 5 + __sanitizer_get_heap_size@Base 5 + __sanitizer_get_module_and_offset_for_pc@Base 8 +#MISSING: 8# __sanitizer_get_number_of_counters@Base 6 + __sanitizer_get_ownership@Base 5 +#MISSING: 8# __sanitizer_get_total_unique_caller_callee_pairs@Base 6 +#MISSING: 8# __sanitizer_get_total_unique_coverage@Base 6 + __sanitizer_get_unmapped_bytes@Base 5 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_malloc_hook@Base 5 +#MISSING: 8# __sanitizer_maybe_open_cov_file@Base 5 + __sanitizer_print_stack_trace@Base 5 + __sanitizer_report_error_summary@Base 4.9 +#MISSING: 8# __sanitizer_reset_coverage@Base 6 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __sanitizer_syscall_post_impl_accept4@Base 4.9 + __sanitizer_syscall_post_impl_accept@Base 4.9 + __sanitizer_syscall_post_impl_access@Base 4.9 + __sanitizer_syscall_post_impl_acct@Base 4.9 + __sanitizer_syscall_post_impl_add_key@Base 4.9 + __sanitizer_syscall_post_impl_adjtimex@Base 4.9 + __sanitizer_syscall_post_impl_alarm@Base 4.9 + __sanitizer_syscall_post_impl_bdflush@Base 4.9 + __sanitizer_syscall_post_impl_bind@Base 4.9 + __sanitizer_syscall_post_impl_brk@Base 4.9 + __sanitizer_syscall_post_impl_capget@Base 4.9 + __sanitizer_syscall_post_impl_capset@Base 4.9 + __sanitizer_syscall_post_impl_chdir@Base 4.9 + __sanitizer_syscall_post_impl_chmod@Base 4.9 + __sanitizer_syscall_post_impl_chown@Base 4.9 + __sanitizer_syscall_post_impl_chroot@Base 4.9 + __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_post_impl_clock_getres@Base 4.9 + __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_clock_settime@Base 4.9 + __sanitizer_syscall_post_impl_close@Base 4.9 + __sanitizer_syscall_post_impl_connect@Base 4.9 + __sanitizer_syscall_post_impl_creat@Base 4.9 + __sanitizer_syscall_post_impl_delete_module@Base 4.9 + __sanitizer_syscall_post_impl_dup2@Base 4.9 + __sanitizer_syscall_post_impl_dup3@Base 4.9 + __sanitizer_syscall_post_impl_dup@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_post_impl_epoll_create@Base 4.9 + __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_post_impl_eventfd2@Base 4.9 + __sanitizer_syscall_post_impl_eventfd@Base 4.9 + __sanitizer_syscall_post_impl_exit@Base 4.9 + __sanitizer_syscall_post_impl_exit_group@Base 4.9 + __sanitizer_syscall_post_impl_faccessat@Base 4.9 + __sanitizer_syscall_post_impl_fchdir@Base 4.9 + __sanitizer_syscall_post_impl_fchmod@Base 4.9 + __sanitizer_syscall_post_impl_fchmodat@Base 4.9 + __sanitizer_syscall_post_impl_fchown@Base 4.9 + __sanitizer_syscall_post_impl_fchownat@Base 4.9 + __sanitizer_syscall_post_impl_fcntl64@Base 4.9 + __sanitizer_syscall_post_impl_fcntl@Base 4.9 + __sanitizer_syscall_post_impl_fdatasync@Base 4.9 + __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_flistxattr@Base 4.9 + __sanitizer_syscall_post_impl_flock@Base 4.9 + __sanitizer_syscall_post_impl_fork@Base 4.9 + __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_fstat64@Base 4.9 + __sanitizer_syscall_post_impl_fstat@Base 4.9 + __sanitizer_syscall_post_impl_fstatat64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_post_impl_fstatfs@Base 4.9 + __sanitizer_syscall_post_impl_fsync@Base 4.9 + __sanitizer_syscall_post_impl_ftruncate@Base 4.9 + __sanitizer_syscall_post_impl_futimesat@Base 4.9 + __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_getcpu@Base 4.9 + __sanitizer_syscall_post_impl_getcwd@Base 4.9 + __sanitizer_syscall_post_impl_getdents64@Base 4.9 + __sanitizer_syscall_post_impl_getdents@Base 4.9 + __sanitizer_syscall_post_impl_getegid@Base 4.9 + __sanitizer_syscall_post_impl_geteuid@Base 4.9 + __sanitizer_syscall_post_impl_getgid@Base 4.9 + __sanitizer_syscall_post_impl_getgroups@Base 4.9 + __sanitizer_syscall_post_impl_gethostname@Base 4.9 + __sanitizer_syscall_post_impl_getitimer@Base 4.9 + __sanitizer_syscall_post_impl_getpeername@Base 4.9 + __sanitizer_syscall_post_impl_getpgid@Base 4.9 + __sanitizer_syscall_post_impl_getpgrp@Base 4.9 + __sanitizer_syscall_post_impl_getpid@Base 4.9 + __sanitizer_syscall_post_impl_getppid@Base 4.9 + __sanitizer_syscall_post_impl_getpriority@Base 4.9 + __sanitizer_syscall_post_impl_getresgid@Base 4.9 + __sanitizer_syscall_post_impl_getresuid@Base 4.9 + __sanitizer_syscall_post_impl_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_getrusage@Base 4.9 + __sanitizer_syscall_post_impl_getsid@Base 4.9 + __sanitizer_syscall_post_impl_getsockname@Base 4.9 + __sanitizer_syscall_post_impl_getsockopt@Base 4.9 + __sanitizer_syscall_post_impl_gettid@Base 4.9 + __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_post_impl_getuid@Base 4.9 + __sanitizer_syscall_post_impl_getxattr@Base 4.9 + __sanitizer_syscall_post_impl_init_module@Base 4.9 + __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_post_impl_inotify_init@Base 4.9 + __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_post_impl_io_cancel@Base 4.9 + __sanitizer_syscall_post_impl_io_destroy@Base 4.9 + __sanitizer_syscall_post_impl_io_getevents@Base 4.9 + __sanitizer_syscall_post_impl_io_setup@Base 4.9 + __sanitizer_syscall_post_impl_io_submit@Base 4.9 + __sanitizer_syscall_post_impl_ioctl@Base 4.9 + __sanitizer_syscall_post_impl_ioperm@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_post_impl_ipc@Base 4.9 + __sanitizer_syscall_post_impl_kexec_load@Base 4.9 + __sanitizer_syscall_post_impl_keyctl@Base 4.9 + __sanitizer_syscall_post_impl_kill@Base 4.9 + __sanitizer_syscall_post_impl_lchown@Base 4.9 + __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_post_impl_link@Base 4.9 + __sanitizer_syscall_post_impl_linkat@Base 4.9 + __sanitizer_syscall_post_impl_listen@Base 4.9 + __sanitizer_syscall_post_impl_listxattr@Base 4.9 + __sanitizer_syscall_post_impl_llistxattr@Base 4.9 + __sanitizer_syscall_post_impl_llseek@Base 4.9 + __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_post_impl_lseek@Base 4.9 + __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_post_impl_lstat64@Base 4.9 + __sanitizer_syscall_post_impl_lstat@Base 4.9 + __sanitizer_syscall_post_impl_madvise@Base 4.9 + __sanitizer_syscall_post_impl_mbind@Base 4.9 + __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_post_impl_mincore@Base 4.9 + __sanitizer_syscall_post_impl_mkdir@Base 4.9 + __sanitizer_syscall_post_impl_mkdirat@Base 4.9 + __sanitizer_syscall_post_impl_mknod@Base 4.9 + __sanitizer_syscall_post_impl_mknodat@Base 4.9 + __sanitizer_syscall_post_impl_mlock@Base 4.9 + __sanitizer_syscall_post_impl_mlockall@Base 4.9 + __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_post_impl_mount@Base 4.9 + __sanitizer_syscall_post_impl_move_pages@Base 4.9 + __sanitizer_syscall_post_impl_mprotect@Base 4.9 + __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_post_impl_mq_notify@Base 4.9 + __sanitizer_syscall_post_impl_mq_open@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_post_impl_mremap@Base 4.9 + __sanitizer_syscall_post_impl_msgctl@Base 4.9 + __sanitizer_syscall_post_impl_msgget@Base 4.9 + __sanitizer_syscall_post_impl_msgrcv@Base 4.9 + __sanitizer_syscall_post_impl_msgsnd@Base 4.9 + __sanitizer_syscall_post_impl_msync@Base 4.9 + __sanitizer_syscall_post_impl_munlock@Base 4.9 + __sanitizer_syscall_post_impl_munlockall@Base 4.9 + __sanitizer_syscall_post_impl_munmap@Base 4.9 + __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_nanosleep@Base 4.9 + __sanitizer_syscall_post_impl_newfstat@Base 4.9 + __sanitizer_syscall_post_impl_newfstatat@Base 4.9 + __sanitizer_syscall_post_impl_newlstat@Base 4.9 + __sanitizer_syscall_post_impl_newstat@Base 4.9 + __sanitizer_syscall_post_impl_newuname@Base 4.9 + __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_post_impl_nice@Base 4.9 + __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_post_impl_old_mmap@Base 4.9 + __sanitizer_syscall_post_impl_old_readdir@Base 4.9 + __sanitizer_syscall_post_impl_old_select@Base 4.9 + __sanitizer_syscall_post_impl_oldumount@Base 4.9 + __sanitizer_syscall_post_impl_olduname@Base 4.9 + __sanitizer_syscall_post_impl_open@Base 4.9 + __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_post_impl_openat@Base 4.9 + __sanitizer_syscall_post_impl_pause@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_post_impl_personality@Base 4.9 + __sanitizer_syscall_post_impl_pipe2@Base 4.9 + __sanitizer_syscall_post_impl_pipe@Base 4.9 + __sanitizer_syscall_post_impl_pivot_root@Base 4.9 + __sanitizer_syscall_post_impl_poll@Base 4.9 + __sanitizer_syscall_post_impl_ppoll@Base 4.9 + __sanitizer_syscall_post_impl_pread64@Base 4.9 + __sanitizer_syscall_post_impl_preadv@Base 4.9 + __sanitizer_syscall_post_impl_prlimit64@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_post_impl_pselect6@Base 4.9 + __sanitizer_syscall_post_impl_ptrace@Base 4.9 + __sanitizer_syscall_post_impl_pwrite64@Base 4.9 + __sanitizer_syscall_post_impl_pwritev@Base 4.9 + __sanitizer_syscall_post_impl_quotactl@Base 4.9 + __sanitizer_syscall_post_impl_read@Base 4.9 + __sanitizer_syscall_post_impl_readlink@Base 4.9 + __sanitizer_syscall_post_impl_readlinkat@Base 4.9 + __sanitizer_syscall_post_impl_readv@Base 4.9 + __sanitizer_syscall_post_impl_reboot@Base 4.9 + __sanitizer_syscall_post_impl_recv@Base 4.9 + __sanitizer_syscall_post_impl_recvfrom@Base 4.9 + __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_post_impl_recvmsg@Base 4.9 + __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_post_impl_removexattr@Base 4.9 + __sanitizer_syscall_post_impl_rename@Base 4.9 + __sanitizer_syscall_post_impl_renameat@Base 4.9 + __sanitizer_syscall_post_impl_request_key@Base 4.9 + __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_post_impl_rmdir@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigaction@Base 7 + __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_post_impl_sched_yield@Base 4.9 + __sanitizer_syscall_post_impl_select@Base 4.9 + __sanitizer_syscall_post_impl_semctl@Base 4.9 + __sanitizer_syscall_post_impl_semget@Base 4.9 + __sanitizer_syscall_post_impl_semop@Base 4.9 + __sanitizer_syscall_post_impl_semtimedop@Base 4.9 + __sanitizer_syscall_post_impl_send@Base 4.9 + __sanitizer_syscall_post_impl_sendfile64@Base 4.9 + __sanitizer_syscall_post_impl_sendfile@Base 4.9 + __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendmsg@Base 4.9 + __sanitizer_syscall_post_impl_sendto@Base 4.9 + __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_post_impl_setdomainname@Base 4.9 + __sanitizer_syscall_post_impl_setfsgid@Base 4.9 + __sanitizer_syscall_post_impl_setfsuid@Base 4.9 + __sanitizer_syscall_post_impl_setgid@Base 4.9 + __sanitizer_syscall_post_impl_setgroups@Base 4.9 + __sanitizer_syscall_post_impl_sethostname@Base 4.9 + __sanitizer_syscall_post_impl_setitimer@Base 4.9 + __sanitizer_syscall_post_impl_setns@Base 4.9 + __sanitizer_syscall_post_impl_setpgid@Base 4.9 + __sanitizer_syscall_post_impl_setpriority@Base 4.9 + __sanitizer_syscall_post_impl_setregid@Base 4.9 + __sanitizer_syscall_post_impl_setresgid@Base 4.9 + __sanitizer_syscall_post_impl_setresuid@Base 4.9 + __sanitizer_syscall_post_impl_setreuid@Base 4.9 + __sanitizer_syscall_post_impl_setrlimit@Base 4.9 + __sanitizer_syscall_post_impl_setsid@Base 4.9 + __sanitizer_syscall_post_impl_setsockopt@Base 4.9 + __sanitizer_syscall_post_impl_settimeofday@Base 4.9 + __sanitizer_syscall_post_impl_setuid@Base 4.9 + __sanitizer_syscall_post_impl_setxattr@Base 4.9 + __sanitizer_syscall_post_impl_sgetmask@Base 4.9 + __sanitizer_syscall_post_impl_shmat@Base 4.9 + __sanitizer_syscall_post_impl_shmctl@Base 4.9 + __sanitizer_syscall_post_impl_shmdt@Base 4.9 + __sanitizer_syscall_post_impl_shmget@Base 4.9 + __sanitizer_syscall_post_impl_shutdown@Base 4.9 + __sanitizer_syscall_post_impl_sigaction@Base 7 + __sanitizer_syscall_post_impl_signal@Base 4.9 + __sanitizer_syscall_post_impl_signalfd4@Base 4.9 + __sanitizer_syscall_post_impl_signalfd@Base 4.9 + __sanitizer_syscall_post_impl_sigpending@Base 4.9 + __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_post_impl_socket@Base 4.9 + __sanitizer_syscall_post_impl_socketcall@Base 4.9 + __sanitizer_syscall_post_impl_socketpair@Base 4.9 + __sanitizer_syscall_post_impl_splice@Base 4.9 + __sanitizer_syscall_post_impl_spu_create@Base 4.9 + __sanitizer_syscall_post_impl_spu_run@Base 4.9 + __sanitizer_syscall_post_impl_ssetmask@Base 4.9 + __sanitizer_syscall_post_impl_stat64@Base 4.9 + __sanitizer_syscall_post_impl_stat@Base 4.9 + __sanitizer_syscall_post_impl_statfs64@Base 4.9 + __sanitizer_syscall_post_impl_statfs@Base 4.9 + __sanitizer_syscall_post_impl_stime@Base 4.9 + __sanitizer_syscall_post_impl_swapoff@Base 4.9 + __sanitizer_syscall_post_impl_swapon@Base 4.9 + __sanitizer_syscall_post_impl_symlink@Base 4.9 + __sanitizer_syscall_post_impl_symlinkat@Base 4.9 + __sanitizer_syscall_post_impl_sync@Base 4.9 + __sanitizer_syscall_post_impl_syncfs@Base 4.9 + __sanitizer_syscall_post_impl_sysctl@Base 4.9 + __sanitizer_syscall_post_impl_sysfs@Base 4.9 + __sanitizer_syscall_post_impl_sysinfo@Base 4.9 + __sanitizer_syscall_post_impl_syslog@Base 4.9 + __sanitizer_syscall_post_impl_tee@Base 4.9 + __sanitizer_syscall_post_impl_tgkill@Base 4.9 + __sanitizer_syscall_post_impl_time@Base 4.9 + __sanitizer_syscall_post_impl_timer_create@Base 4.9 + __sanitizer_syscall_post_impl_timer_delete@Base 4.9 + __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timer_settime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_post_impl_times@Base 4.9 + __sanitizer_syscall_post_impl_tkill@Base 4.9 + __sanitizer_syscall_post_impl_truncate@Base 4.9 + __sanitizer_syscall_post_impl_umask@Base 4.9 + __sanitizer_syscall_post_impl_umount@Base 4.9 + __sanitizer_syscall_post_impl_uname@Base 4.9 + __sanitizer_syscall_post_impl_unlink@Base 4.9 + __sanitizer_syscall_post_impl_unlinkat@Base 4.9 + __sanitizer_syscall_post_impl_unshare@Base 4.9 + __sanitizer_syscall_post_impl_uselib@Base 4.9 + __sanitizer_syscall_post_impl_ustat@Base 4.9 + __sanitizer_syscall_post_impl_utime@Base 4.9 + __sanitizer_syscall_post_impl_utimensat@Base 4.9 + __sanitizer_syscall_post_impl_utimes@Base 4.9 + __sanitizer_syscall_post_impl_vfork@Base 4.9 + __sanitizer_syscall_post_impl_vhangup@Base 4.9 + __sanitizer_syscall_post_impl_vmsplice@Base 4.9 + __sanitizer_syscall_post_impl_wait4@Base 4.9 + __sanitizer_syscall_post_impl_waitid@Base 4.9 + __sanitizer_syscall_post_impl_waitpid@Base 4.9 + __sanitizer_syscall_post_impl_write@Base 4.9 + __sanitizer_syscall_post_impl_writev@Base 4.9 + __sanitizer_syscall_pre_impl_accept4@Base 4.9 + __sanitizer_syscall_pre_impl_accept@Base 4.9 + __sanitizer_syscall_pre_impl_access@Base 4.9 + __sanitizer_syscall_pre_impl_acct@Base 4.9 + __sanitizer_syscall_pre_impl_add_key@Base 4.9 + __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 + __sanitizer_syscall_pre_impl_alarm@Base 4.9 + __sanitizer_syscall_pre_impl_bdflush@Base 4.9 + __sanitizer_syscall_pre_impl_bind@Base 4.9 + __sanitizer_syscall_pre_impl_brk@Base 4.9 + __sanitizer_syscall_pre_impl_capget@Base 4.9 + __sanitizer_syscall_pre_impl_capset@Base 4.9 + __sanitizer_syscall_pre_impl_chdir@Base 4.9 + __sanitizer_syscall_pre_impl_chmod@Base 4.9 + __sanitizer_syscall_pre_impl_chown@Base 4.9 + __sanitizer_syscall_pre_impl_chroot@Base 4.9 + __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 + __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 + __sanitizer_syscall_pre_impl_close@Base 4.9 + __sanitizer_syscall_pre_impl_connect@Base 4.9 + __sanitizer_syscall_pre_impl_creat@Base 4.9 + __sanitizer_syscall_pre_impl_delete_module@Base 4.9 + __sanitizer_syscall_pre_impl_dup2@Base 4.9 + __sanitizer_syscall_pre_impl_dup3@Base 4.9 + __sanitizer_syscall_pre_impl_dup@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 + __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 + __sanitizer_syscall_pre_impl_eventfd@Base 4.9 + __sanitizer_syscall_pre_impl_exit@Base 4.9 + __sanitizer_syscall_pre_impl_exit_group@Base 4.9 + __sanitizer_syscall_pre_impl_faccessat@Base 4.9 + __sanitizer_syscall_pre_impl_fchdir@Base 4.9 + __sanitizer_syscall_pre_impl_fchmod@Base 4.9 + __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 + __sanitizer_syscall_pre_impl_fchown@Base 4.9 + __sanitizer_syscall_pre_impl_fchownat@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 + __sanitizer_syscall_pre_impl_fcntl@Base 4.9 + __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 + __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_flock@Base 4.9 + __sanitizer_syscall_pre_impl_fork@Base 4.9 + __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_fstat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstat@Base 4.9 + __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 + __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 + __sanitizer_syscall_pre_impl_fsync@Base 4.9 + __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 + __sanitizer_syscall_pre_impl_futimesat@Base 4.9 + __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_getcpu@Base 4.9 + __sanitizer_syscall_pre_impl_getcwd@Base 4.9 + __sanitizer_syscall_pre_impl_getdents64@Base 4.9 + __sanitizer_syscall_pre_impl_getdents@Base 4.9 + __sanitizer_syscall_pre_impl_getegid@Base 4.9 + __sanitizer_syscall_pre_impl_geteuid@Base 4.9 + __sanitizer_syscall_pre_impl_getgid@Base 4.9 + __sanitizer_syscall_pre_impl_getgroups@Base 4.9 + __sanitizer_syscall_pre_impl_gethostname@Base 4.9 + __sanitizer_syscall_pre_impl_getitimer@Base 4.9 + __sanitizer_syscall_pre_impl_getpeername@Base 4.9 + __sanitizer_syscall_pre_impl_getpgid@Base 4.9 + __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 + __sanitizer_syscall_pre_impl_getpid@Base 4.9 + __sanitizer_syscall_pre_impl_getppid@Base 4.9 + __sanitizer_syscall_pre_impl_getpriority@Base 4.9 + __sanitizer_syscall_pre_impl_getresgid@Base 4.9 + __sanitizer_syscall_pre_impl_getresuid@Base 4.9 + __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_getrusage@Base 4.9 + __sanitizer_syscall_pre_impl_getsid@Base 4.9 + __sanitizer_syscall_pre_impl_getsockname@Base 4.9 + __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_gettid@Base 4.9 + __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_getuid@Base 4.9 + __sanitizer_syscall_pre_impl_getxattr@Base 4.9 + __sanitizer_syscall_pre_impl_init_module@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 + __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 + __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 + __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 + __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 + __sanitizer_syscall_pre_impl_io_setup@Base 4.9 + __sanitizer_syscall_pre_impl_io_submit@Base 4.9 + __sanitizer_syscall_pre_impl_ioctl@Base 4.9 + __sanitizer_syscall_pre_impl_ioperm@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 + __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 + __sanitizer_syscall_pre_impl_ipc@Base 4.9 + __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 + __sanitizer_syscall_pre_impl_keyctl@Base 4.9 + __sanitizer_syscall_pre_impl_kill@Base 4.9 + __sanitizer_syscall_pre_impl_lchown@Base 4.9 + __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_link@Base 4.9 + __sanitizer_syscall_pre_impl_linkat@Base 4.9 + __sanitizer_syscall_pre_impl_listen@Base 4.9 + __sanitizer_syscall_pre_impl_listxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 + __sanitizer_syscall_pre_impl_llseek@Base 4.9 + __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 + __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 + __sanitizer_syscall_pre_impl_lseek@Base 4.9 + __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 + __sanitizer_syscall_pre_impl_lstat64@Base 4.9 + __sanitizer_syscall_pre_impl_lstat@Base 4.9 + __sanitizer_syscall_pre_impl_madvise@Base 4.9 + __sanitizer_syscall_pre_impl_mbind@Base 4.9 + __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mincore@Base 4.9 + __sanitizer_syscall_pre_impl_mkdir@Base 4.9 + __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 + __sanitizer_syscall_pre_impl_mknod@Base 4.9 + __sanitizer_syscall_pre_impl_mknodat@Base 4.9 + __sanitizer_syscall_pre_impl_mlock@Base 4.9 + __sanitizer_syscall_pre_impl_mlockall@Base 4.9 + __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 + __sanitizer_syscall_pre_impl_mount@Base 4.9 + __sanitizer_syscall_pre_impl_move_pages@Base 4.9 + __sanitizer_syscall_pre_impl_mprotect@Base 4.9 + __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 + __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 + __sanitizer_syscall_pre_impl_mq_open@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 + __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 + __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_mremap@Base 4.9 + __sanitizer_syscall_pre_impl_msgctl@Base 4.9 + __sanitizer_syscall_pre_impl_msgget@Base 4.9 + __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 + __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 + __sanitizer_syscall_pre_impl_msync@Base 4.9 + __sanitizer_syscall_pre_impl_munlock@Base 4.9 + __sanitizer_syscall_pre_impl_munlockall@Base 4.9 + __sanitizer_syscall_pre_impl_munmap@Base 4.9 + __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 + __sanitizer_syscall_pre_impl_newfstat@Base 4.9 + __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 + __sanitizer_syscall_pre_impl_newlstat@Base 4.9 + __sanitizer_syscall_pre_impl_newstat@Base 4.9 + __sanitizer_syscall_pre_impl_newuname@Base 4.9 + __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_nice@Base 4.9 + __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 + __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 + __sanitizer_syscall_pre_impl_old_select@Base 4.9 + __sanitizer_syscall_pre_impl_oldumount@Base 4.9 + __sanitizer_syscall_pre_impl_olduname@Base 4.9 + __sanitizer_syscall_pre_impl_open@Base 4.9 + __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 + __sanitizer_syscall_pre_impl_openat@Base 4.9 + __sanitizer_syscall_pre_impl_pause@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 + __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 + __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 + __sanitizer_syscall_pre_impl_personality@Base 4.9 + __sanitizer_syscall_pre_impl_pipe2@Base 4.9 + __sanitizer_syscall_pre_impl_pipe@Base 4.9 + __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 + __sanitizer_syscall_pre_impl_poll@Base 4.9 + __sanitizer_syscall_pre_impl_ppoll@Base 4.9 + __sanitizer_syscall_pre_impl_pread64@Base 4.9 + __sanitizer_syscall_pre_impl_preadv@Base 4.9 + __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 + __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 + __sanitizer_syscall_pre_impl_pselect6@Base 4.9 + __sanitizer_syscall_pre_impl_ptrace@Base 4.9 + __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 + __sanitizer_syscall_pre_impl_pwritev@Base 4.9 + __sanitizer_syscall_pre_impl_quotactl@Base 4.9 + __sanitizer_syscall_pre_impl_read@Base 4.9 + __sanitizer_syscall_pre_impl_readlink@Base 4.9 + __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_readv@Base 4.9 + __sanitizer_syscall_pre_impl_reboot@Base 4.9 + __sanitizer_syscall_pre_impl_recv@Base 4.9 + __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 + __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 + __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 + __sanitizer_syscall_pre_impl_removexattr@Base 4.9 + __sanitizer_syscall_pre_impl_rename@Base 4.9 + __sanitizer_syscall_pre_impl_renameat@Base 4.9 + __sanitizer_syscall_pre_impl_request_key@Base 4.9 + __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 + __sanitizer_syscall_pre_impl_rmdir@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigaction@Base 7 + __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 + __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 + __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 + __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 + __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 + __sanitizer_syscall_pre_impl_select@Base 4.9 + __sanitizer_syscall_pre_impl_semctl@Base 4.9 + __sanitizer_syscall_pre_impl_semget@Base 4.9 + __sanitizer_syscall_pre_impl_semop@Base 4.9 + __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 + __sanitizer_syscall_pre_impl_send@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 + __sanitizer_syscall_pre_impl_sendfile@Base 4.9 + __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 + __sanitizer_syscall_pre_impl_sendto@Base 4.9 + __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 + __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 + __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 + __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 + __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 + __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 + __sanitizer_syscall_pre_impl_setgid@Base 4.9 + __sanitizer_syscall_pre_impl_setgroups@Base 4.9 + __sanitizer_syscall_pre_impl_sethostname@Base 4.9 + __sanitizer_syscall_pre_impl_setitimer@Base 4.9 + __sanitizer_syscall_pre_impl_setns@Base 4.9 + __sanitizer_syscall_pre_impl_setpgid@Base 4.9 + __sanitizer_syscall_pre_impl_setpriority@Base 4.9 + __sanitizer_syscall_pre_impl_setregid@Base 4.9 + __sanitizer_syscall_pre_impl_setresgid@Base 4.9 + __sanitizer_syscall_pre_impl_setresuid@Base 4.9 + __sanitizer_syscall_pre_impl_setreuid@Base 4.9 + __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 + __sanitizer_syscall_pre_impl_setsid@Base 4.9 + __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 + __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 + __sanitizer_syscall_pre_impl_setuid@Base 4.9 + __sanitizer_syscall_pre_impl_setxattr@Base 4.9 + __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 + __sanitizer_syscall_pre_impl_shmat@Base 4.9 + __sanitizer_syscall_pre_impl_shmctl@Base 4.9 + __sanitizer_syscall_pre_impl_shmdt@Base 4.9 + __sanitizer_syscall_pre_impl_shmget@Base 4.9 + __sanitizer_syscall_pre_impl_shutdown@Base 4.9 + __sanitizer_syscall_pre_impl_sigaction@Base 7 + __sanitizer_syscall_pre_impl_signal@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 + __sanitizer_syscall_pre_impl_signalfd@Base 4.9 + __sanitizer_syscall_pre_impl_sigpending@Base 4.9 + __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 + __sanitizer_syscall_pre_impl_socket@Base 4.9 + __sanitizer_syscall_pre_impl_socketcall@Base 4.9 + __sanitizer_syscall_pre_impl_socketpair@Base 4.9 + __sanitizer_syscall_pre_impl_splice@Base 4.9 + __sanitizer_syscall_pre_impl_spu_create@Base 4.9 + __sanitizer_syscall_pre_impl_spu_run@Base 4.9 + __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 + __sanitizer_syscall_pre_impl_stat64@Base 4.9 + __sanitizer_syscall_pre_impl_stat@Base 4.9 + __sanitizer_syscall_pre_impl_statfs64@Base 4.9 + __sanitizer_syscall_pre_impl_statfs@Base 4.9 + __sanitizer_syscall_pre_impl_stime@Base 4.9 + __sanitizer_syscall_pre_impl_swapoff@Base 4.9 + __sanitizer_syscall_pre_impl_swapon@Base 4.9 + __sanitizer_syscall_pre_impl_symlink@Base 4.9 + __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_sync@Base 4.9 + __sanitizer_syscall_pre_impl_syncfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysctl@Base 4.9 + __sanitizer_syscall_pre_impl_sysfs@Base 4.9 + __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 + __sanitizer_syscall_pre_impl_syslog@Base 4.9 + __sanitizer_syscall_pre_impl_tee@Base 4.9 + __sanitizer_syscall_pre_impl_tgkill@Base 4.9 + __sanitizer_syscall_pre_impl_time@Base 4.9 + __sanitizer_syscall_pre_impl_timer_create@Base 4.9 + __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 + __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 + __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 + __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 + __sanitizer_syscall_pre_impl_times@Base 4.9 + __sanitizer_syscall_pre_impl_tkill@Base 4.9 + __sanitizer_syscall_pre_impl_truncate@Base 4.9 + __sanitizer_syscall_pre_impl_umask@Base 4.9 + __sanitizer_syscall_pre_impl_umount@Base 4.9 + __sanitizer_syscall_pre_impl_uname@Base 4.9 + __sanitizer_syscall_pre_impl_unlink@Base 4.9 + __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 + __sanitizer_syscall_pre_impl_unshare@Base 4.9 + __sanitizer_syscall_pre_impl_uselib@Base 4.9 + __sanitizer_syscall_pre_impl_ustat@Base 4.9 + __sanitizer_syscall_pre_impl_utime@Base 4.9 + __sanitizer_syscall_pre_impl_utimensat@Base 4.9 + __sanitizer_syscall_pre_impl_utimes@Base 4.9 + __sanitizer_syscall_pre_impl_vfork@Base 4.9 + __sanitizer_syscall_pre_impl_vhangup@Base 4.9 + __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 + __sanitizer_syscall_pre_impl_wait4@Base 4.9 + __sanitizer_syscall_pre_impl_waitid@Base 4.9 + __sanitizer_syscall_pre_impl_waitpid@Base 4.9 + __sanitizer_syscall_pre_impl_write@Base 4.9 + __sanitizer_syscall_pre_impl_writev@Base 4.9 + __sanitizer_unaligned_load16@Base 4.9 + __sanitizer_unaligned_load32@Base 4.9 + __sanitizer_unaligned_load64@Base 4.9 + __sanitizer_unaligned_store16@Base 4.9 + __sanitizer_unaligned_store32@Base 4.9 + __sanitizer_unaligned_store64@Base 4.9 +#MISSING: 8# __sanitizer_update_counter_bitset_and_clear_counters@Base 6 + __sanitizer_weak_hook_memcmp@Base 8 + __sanitizer_weak_hook_memmem@Base 8 + __sanitizer_weak_hook_strcasecmp@Base 8 + __sanitizer_weak_hook_strcasestr@Base 8 + __sanitizer_weak_hook_strcmp@Base 8 + __sanitizer_weak_hook_strncasecmp@Base 8 + __sanitizer_weak_hook_strncmp@Base 8 + __sanitizer_weak_hook_strstr@Base 8 + __sigsetjmp@Base 4.9 + __snprintf_chk@Base 9 + __sprintf_chk@Base 9 + __strndup@Base 8 + __strxfrm_l@Base 9 + __tls_get_addr@Base 6 + __tsan_acquire@Base 4.9 + __tsan_atomic128_compare_exchange_strong@Base 4.9 + __tsan_atomic128_compare_exchange_val@Base 4.9 + __tsan_atomic128_compare_exchange_weak@Base 4.9 + __tsan_atomic128_exchange@Base 4.9 + __tsan_atomic128_fetch_add@Base 4.9 + __tsan_atomic128_fetch_and@Base 4.9 + __tsan_atomic128_fetch_nand@Base 4.9 + __tsan_atomic128_fetch_or@Base 4.9 + __tsan_atomic128_fetch_sub@Base 4.9 + __tsan_atomic128_fetch_xor@Base 4.9 + __tsan_atomic128_load@Base 4.9 + __tsan_atomic128_store@Base 4.9 + __tsan_atomic16_compare_exchange_strong@Base 4.9 + __tsan_atomic16_compare_exchange_val@Base 4.9 + __tsan_atomic16_compare_exchange_weak@Base 4.9 + __tsan_atomic16_exchange@Base 4.9 + __tsan_atomic16_fetch_add@Base 4.9 + __tsan_atomic16_fetch_and@Base 4.9 + __tsan_atomic16_fetch_nand@Base 4.9 + __tsan_atomic16_fetch_or@Base 4.9 + __tsan_atomic16_fetch_sub@Base 4.9 + __tsan_atomic16_fetch_xor@Base 4.9 + __tsan_atomic16_load@Base 4.9 + __tsan_atomic16_store@Base 4.9 + __tsan_atomic32_compare_exchange_strong@Base 4.9 + __tsan_atomic32_compare_exchange_val@Base 4.9 + __tsan_atomic32_compare_exchange_weak@Base 4.9 + __tsan_atomic32_exchange@Base 4.9 + __tsan_atomic32_fetch_add@Base 4.9 + __tsan_atomic32_fetch_and@Base 4.9 + __tsan_atomic32_fetch_nand@Base 4.9 + __tsan_atomic32_fetch_or@Base 4.9 + __tsan_atomic32_fetch_sub@Base 4.9 + __tsan_atomic32_fetch_xor@Base 4.9 + __tsan_atomic32_load@Base 4.9 + __tsan_atomic32_store@Base 4.9 + __tsan_atomic64_compare_exchange_strong@Base 4.9 + __tsan_atomic64_compare_exchange_val@Base 4.9 + __tsan_atomic64_compare_exchange_weak@Base 4.9 + __tsan_atomic64_exchange@Base 4.9 + __tsan_atomic64_fetch_add@Base 4.9 + __tsan_atomic64_fetch_and@Base 4.9 + __tsan_atomic64_fetch_nand@Base 4.9 + __tsan_atomic64_fetch_or@Base 4.9 + __tsan_atomic64_fetch_sub@Base 4.9 + __tsan_atomic64_fetch_xor@Base 4.9 + __tsan_atomic64_load@Base 4.9 + __tsan_atomic64_store@Base 4.9 + __tsan_atomic8_compare_exchange_strong@Base 4.9 + __tsan_atomic8_compare_exchange_val@Base 4.9 + __tsan_atomic8_compare_exchange_weak@Base 4.9 + __tsan_atomic8_exchange@Base 4.9 + __tsan_atomic8_fetch_add@Base 4.9 + __tsan_atomic8_fetch_and@Base 4.9 + __tsan_atomic8_fetch_nand@Base 4.9 + __tsan_atomic8_fetch_or@Base 4.9 + __tsan_atomic8_fetch_sub@Base 4.9 + __tsan_atomic8_fetch_xor@Base 4.9 + __tsan_atomic8_load@Base 4.9 + __tsan_atomic8_store@Base 4.9 + __tsan_atomic_signal_fence@Base 4.9 + __tsan_atomic_thread_fence@Base 4.9 + __tsan_default_options@Base 4.9 + __tsan_default_suppressions@Base 7 + __tsan_external_assign_tag@Base 8 + __tsan_external_read@Base 8 + __tsan_external_register_header@Base 8 + __tsan_external_register_tag@Base 8 + __tsan_external_write@Base 8 + __tsan_flush_memory@Base 8 + __tsan_func_entry@Base 4.9 + __tsan_func_exit@Base 4.9 + __tsan_get_alloc_stack@Base 8 + __tsan_get_current_report@Base 7 + __tsan_get_report_data@Base 7 + __tsan_get_report_loc@Base 7 + __tsan_get_report_loc_object_type@Base 8 + __tsan_get_report_mop@Base 7 + __tsan_get_report_mutex@Base 7 + __tsan_get_report_stack@Base 7 + __tsan_get_report_tag@Base 9 + __tsan_get_report_thread@Base 7 + __tsan_get_report_unique_tid@Base 7 + __tsan_ignore_thread_begin@Base 8 + __tsan_ignore_thread_end@Base 8 + __tsan_init@Base 4.9 + __tsan_java_acquire@Base 6 + __tsan_java_alloc@Base 4.9 + __tsan_java_finalize@Base 5 + __tsan_java_find@Base 8 + __tsan_java_fini@Base 4.9 + __tsan_java_free@Base 4.9 + __tsan_java_init@Base 4.9 + __tsan_java_move@Base 4.9 + __tsan_java_mutex_lock@Base 4.9 + __tsan_java_mutex_lock_rec@Base 4.9 + __tsan_java_mutex_read_lock@Base 4.9 + __tsan_java_mutex_read_unlock@Base 4.9 + __tsan_java_mutex_unlock@Base 4.9 + __tsan_java_mutex_unlock_rec@Base 4.9 + __tsan_java_release@Base 6 + __tsan_java_release_store@Base 6 + __tsan_locate_address@Base 8 + __tsan_mutex_create@Base 8 + __tsan_mutex_destroy@Base 8 + __tsan_mutex_post_divert@Base 8 + __tsan_mutex_post_lock@Base 8 + __tsan_mutex_post_signal@Base 8 + __tsan_mutex_post_unlock@Base 8 + __tsan_mutex_pre_divert@Base 8 + __tsan_mutex_pre_lock@Base 8 + __tsan_mutex_pre_signal@Base 8 + __tsan_mutex_pre_unlock@Base 8 + __tsan_on_report@Base 7 + __tsan_read16@Base 4.9 + __tsan_read16_pc@Base 6 + __tsan_read1@Base 4.9 + __tsan_read1_pc@Base 6 + __tsan_read2@Base 4.9 + __tsan_read2_pc@Base 6 + __tsan_read4@Base 4.9 + __tsan_read4_pc@Base 6 + __tsan_read8@Base 4.9 + __tsan_read8_pc@Base 6 + __tsan_read_range@Base 4.9 + __tsan_release@Base 4.9 + __tsan_symbolize_external@Base 7 + __tsan_symbolize_external_ex@Base 9 + __tsan_testonly_barrier_init@Base 7 + __tsan_testonly_barrier_wait@Base 7 + __tsan_testonly_shadow_stack_current_size@Base 8 + __tsan_unaligned_read16@Base 6 + __tsan_unaligned_read2@Base 4.9 + __tsan_unaligned_read4@Base 4.9 + __tsan_unaligned_read8@Base 4.9 + __tsan_unaligned_write16@Base 6 + __tsan_unaligned_write2@Base 4.9 + __tsan_unaligned_write4@Base 4.9 + __tsan_unaligned_write8@Base 4.9 + __tsan_vptr_read@Base 4.9 + __tsan_vptr_update@Base 4.9 + __tsan_write16@Base 4.9 + __tsan_write16_pc@Base 6 + __tsan_write1@Base 4.9 + __tsan_write1_pc@Base 6 + __tsan_write2@Base 4.9 + __tsan_write2_pc@Base 6 + __tsan_write4@Base 4.9 + __tsan_write4_pc@Base 6 + __tsan_write8@Base 4.9 + __tsan_write8_pc@Base 6 + __tsan_write_range@Base 4.9 + __uflow@Base 5 + __underflow@Base 5 + __vsnprintf_chk@Base 9 + __vsprintf_chk@Base 9 + __wcsxfrm_l@Base 9 + __woverflow@Base 5 + __wuflow@Base 5 + __wunderflow@Base 5 + __xpg_strerror_r@Base 4.9 + __xstat64@Base 4.9 + __xstat@Base 4.9 + _exit@Base 4.9 + _obstack_begin@Base 5 + _obstack_begin_1@Base 5 + _obstack_newchunk@Base 5 + _setjmp@Base 4.9 + abort@Base 4.9 + accept4@Base 4.9 + accept@Base 4.9 + aligned_alloc@Base 5 + asctime@Base 4.9 + asctime_r@Base 4.9 + asprintf@Base 5 + atexit@Base 4.9 + backtrace@Base 4.9 + backtrace_symbols@Base 4.9 + bind@Base 4.9 + calloc@Base 4.9 + canonicalize_file_name@Base 4.9 + capget@Base 5 + capset@Base 5 + cfree@Base 4.9 + clock_getres@Base 4.9 + clock_gettime@Base 4.9 + clock_settime@Base 4.9 + close@Base 4.9 + closedir@Base 6 + confstr@Base 4.9 + connect@Base 4.9 + creat64@Base 4.9 + creat@Base 4.9 + ctermid@Base 7 + ctime@Base 4.9 + ctime_r@Base 4.9 + dl_iterate_phdr@Base 6 + dlclose@Base 4.9 + dlopen@Base 4.9 + drand48_r@Base 4.9 + dup2@Base 4.9 + dup3@Base 4.9 + dup@Base 4.9 + endgrent@Base 5 + endpwent@Base 5 + epoll_create1@Base 4.9 + epoll_create@Base 4.9 + epoll_ctl@Base 4.9 + epoll_pwait@Base 7 + epoll_wait@Base 4.9 + ether_aton@Base 4.9 + ether_aton_r@Base 4.9 + ether_hostton@Base 4.9 + ether_line@Base 4.9 + ether_ntoa@Base 4.9 + ether_ntoa_r@Base 4.9 + ether_ntohost@Base 4.9 + eventfd@Base 4.9 + eventfd_read@Base 7 + eventfd_write@Base 7 + fclose@Base 4.9 + fdopen@Base 5 + fflush@Base 4.9 + fgets@Base 9 + fgetxattr@Base 5 + flistxattr@Base 5 + fmemopen@Base 5 + fopen64@Base 5 + fopen@Base 4.9 + fopencookie@Base 6 + fork@Base 4.9 + fprintf@Base 5 + fputs@Base 9 + fread@Base 4.9 + free@Base 4.9 + freopen64@Base 5 + freopen@Base 4.9 + frexp@Base 4.9 + frexpf@Base 4.9 + frexpl@Base 4.9 + fscanf@Base 4.9 + fstat64@Base 4.9 + fstat@Base 4.9 + fstatfs64@Base 4.9 + fstatfs@Base 4.9 + fstatvfs64@Base 4.9 + fstatvfs@Base 4.9 + ftime@Base 5 + fwrite@Base 4.9 + get_current_dir_name@Base 4.9 + getaddrinfo@Base 4.9 + getcwd@Base 4.9 + getdelim@Base 4.9 + getgroups@Base 4.9 + gethostbyaddr@Base 4.9 + gethostbyaddr_r@Base 4.9 + gethostbyname2@Base 4.9 + gethostbyname2_r@Base 4.9 + gethostbyname@Base 4.9 + gethostbyname_r@Base 4.9 + gethostent@Base 4.9 + gethostent_r@Base 4.9 + getifaddrs@Base 5 + getitimer@Base 4.9 + getline@Base 4.9 + getloadavg@Base 8 + getmntent@Base 4.9 + getmntent_r@Base 4.9 + getnameinfo@Base 5 + getpass@Base 5 + getpeername@Base 4.9 + getresgid@Base 5 + getresuid@Base 5 + getsockname@Base 4.9 + getsockopt@Base 4.9 + gettimeofday@Base 4.9 + getutent@Base 8 + getutid@Base 8 + getutline@Base 8 + getutxent@Base 8 + getutxid@Base 8 + getutxline@Base 8 + getxattr@Base 5 + glob64@Base 5 + glob@Base 5 + gmtime@Base 4.9 + gmtime_r@Base 4.9 + iconv@Base 4.9 + if_indextoname@Base 5 + if_nametoindex@Base 5 + inet_aton@Base 4.9 + inet_ntop@Base 4.9 + inet_pton@Base 4.9 + initgroups@Base 4.9 + inotify_init1@Base 4.9 + inotify_init@Base 4.9 + (arch=base-any-any-amd64 any-mips any-mipsel)internal_sigreturn@Base 7 + ioctl@Base 4.9 + kill@Base 4.9 + lgamma@Base 4.9 + lgamma_r@Base 4.9 + lgammaf@Base 4.9 + lgammaf_r@Base 4.9 + lgammal@Base 4.9 + lgammal_r@Base 4.9 + lgetxattr@Base 5 + listen@Base 4.9 + listxattr@Base 5 + llistxattr@Base 5 + localtime@Base 4.9 + localtime_r@Base 4.9 + longjmp@Base 4.9 + lrand48_r@Base 4.9 + malloc@Base 4.9 + malloc_usable_size@Base 4.9 + mbsnrtowcs@Base 4.9 + mbsrtowcs@Base 4.9 + mbstowcs@Base 4.9 + mcheck@Base 8 + mcheck_pedantic@Base 8 + memalign@Base 4.9 + memchr@Base 4.9 + memcmp@Base 4.9 + memcpy@Base 4.9 + memmem@Base 7 + memmove@Base 4.9 + memrchr@Base 4.9 + memset@Base 4.9 + mincore@Base 6 + mktime@Base 5 + mlock@Base 4.9 + mlockall@Base 4.9 + mmap64@Base 4.9 + mmap@Base 4.9 + modf@Base 4.9 + modff@Base 4.9 + modfl@Base 4.9 + mprobe@Base 8 + mprotect@Base 9 + munlock@Base 4.9 + munlockall@Base 4.9 + munmap@Base 4.9 + name_to_handle_at@Base 9 + nanosleep@Base 4.9 + on_exit@Base 4.9 + open64@Base 4.9 + open@Base 4.9 + open_by_handle_at@Base 9 + open_memstream@Base 5 + open_wmemstream@Base 5 + opendir@Base 4.9 + pause@Base 8 + pipe2@Base 4.9 + pipe@Base 4.9 + poll@Base 4.9 + posix_memalign@Base 4.9 + ppoll@Base 4.9 + prctl@Base 4.9 + pread64@Base 4.9 + pread@Base 4.9 + preadv64@Base 4.9 + preadv@Base 4.9 + printf@Base 5 + process_vm_readv@Base 6 + process_vm_writev@Base 6 + pthread_attr_getaffinity_np@Base 4.9 + pthread_attr_getdetachstate@Base 4.9 + pthread_attr_getguardsize@Base 4.9 + pthread_attr_getinheritsched@Base 4.9 + pthread_attr_getschedparam@Base 4.9 + pthread_attr_getschedpolicy@Base 4.9 + pthread_attr_getscope@Base 4.9 + pthread_attr_getstack@Base 4.9 + pthread_attr_getstacksize@Base 4.9 + pthread_barrier_destroy@Base 4.9 + pthread_barrier_init@Base 4.9 + pthread_barrier_wait@Base 4.9 + pthread_barrierattr_getpshared@Base 5 + pthread_cond_broadcast@Base 4.9 + pthread_cond_destroy@Base 4.9 + pthread_cond_init@Base 4.9 + pthread_cond_signal@Base 4.9 + pthread_cond_timedwait@Base 4.9 + pthread_cond_wait@Base 4.9 + pthread_condattr_getclock@Base 5 + pthread_condattr_getpshared@Base 5 + pthread_create@Base 4.9 + pthread_detach@Base 4.9 + pthread_getname_np@Base 9 + pthread_getschedparam@Base 4.9 + pthread_join@Base 4.9 + pthread_kill@Base 4.9 + pthread_mutex_destroy@Base 4.9 + pthread_mutex_init@Base 4.9 + pthread_mutex_lock@Base 4.9 + pthread_mutex_timedlock@Base 4.9 + pthread_mutex_trylock@Base 4.9 + pthread_mutex_unlock@Base 4.9 + pthread_mutexattr_getprioceiling@Base 5 + pthread_mutexattr_getprotocol@Base 5 + pthread_mutexattr_getpshared@Base 5 + pthread_mutexattr_getrobust@Base 5 + pthread_mutexattr_getrobust_np@Base 5 + pthread_mutexattr_gettype@Base 5 + pthread_once@Base 4.9 + pthread_rwlock_destroy@Base 4.9 + pthread_rwlock_init@Base 4.9 + pthread_rwlock_rdlock@Base 4.9 + pthread_rwlock_timedrdlock@Base 4.9 + pthread_rwlock_timedwrlock@Base 4.9 + pthread_rwlock_tryrdlock@Base 4.9 + pthread_rwlock_trywrlock@Base 4.9 + pthread_rwlock_unlock@Base 4.9 + pthread_rwlock_wrlock@Base 4.9 + pthread_rwlockattr_getkind_np@Base 5 + pthread_rwlockattr_getpshared@Base 5 + pthread_setcancelstate@Base 6 + pthread_setcanceltype@Base 6 + pthread_setname_np@Base 4.9 + pthread_sigmask@Base 7 + pthread_spin_destroy@Base 4.9 + pthread_spin_init@Base 4.9 + pthread_spin_lock@Base 4.9 + pthread_spin_trylock@Base 4.9 + pthread_spin_unlock@Base 4.9 + ptrace@Base 4.9 + puts@Base 4.9 + pvalloc@Base 4.9 + pwrite64@Base 4.9 + pwrite@Base 4.9 + pwritev64@Base 4.9 + pwritev@Base 4.9 + raise@Base 4.9 + rand_r@Base 5 + random_r@Base 4.9 + read@Base 4.9 + readdir64@Base 4.9 + readdir64_r@Base 4.9 + readdir@Base 4.9 + readdir_r@Base 4.9 + readlink@Base 9 + readlinkat@Base 9 + readv@Base 4.9 + realloc@Base 4.9 + realpath@Base 4.9 + recv@Base 4.9 + recvfrom@Base 7 + recvmmsg@Base 9 + recvmsg@Base 4.9 + remquo@Base 4.9 + remquof@Base 4.9 + remquol@Base 4.9 + rmdir@Base 4.9 + scandir64@Base 4.9 + scandir@Base 4.9 + scanf@Base 4.9 + sched_getaffinity@Base 4.9 + sched_getparam@Base 6 + sem_destroy@Base 4.9 + sem_getvalue@Base 4.9 + sem_init@Base 4.9 + sem_post@Base 4.9 + sem_timedwait@Base 4.9 + sem_trywait@Base 4.9 + sem_wait@Base 4.9 + send@Base 4.9 + sendmmsg@Base 9 + sendmsg@Base 4.9 + sendto@Base 7 + setgrent@Base 5 + setitimer@Base 4.9 + setjmp@Base 8 + setlocale@Base 4.9 + setpwent@Base 5 + shmctl@Base 4.9 + sigaction@Base 4.9 + sigblock@Base 7 + sigemptyset@Base 4.9 + sigfillset@Base 4.9 + siglongjmp@Base 4.9 + signal@Base 4.9 + signalfd@Base 4.9 + sigpending@Base 4.9 + sigprocmask@Base 4.9 + sigsetjmp@Base 4.9 + sigsetmask@Base 7 + sigsuspend@Base 4.9 + sigtimedwait@Base 4.9 + sigwait@Base 4.9 + sigwaitinfo@Base 4.9 + sincos@Base 4.9 + sincosf@Base 4.9 + sincosl@Base 4.9 + sleep@Base 4.9 + snprintf@Base 5 + socket@Base 4.9 + socketpair@Base 4.9 + sprintf@Base 5 + sscanf@Base 4.9 + statfs64@Base 4.9 + statfs@Base 4.9 + statvfs64@Base 4.9 + statvfs@Base 4.9 + strcasecmp@Base 4.9 + strcasestr@Base 6 + strchr@Base 4.9 + strchrnul@Base 4.9 + strcmp@Base 4.9 + strcpy@Base 4.9 + strcspn@Base 6 + strdup@Base 4.9 + strerror@Base 4.9 + strerror_r@Base 4.9 + strlen@Base 4.9 + strncasecmp@Base 4.9 + strncmp@Base 4.9 + strncpy@Base 4.9 + strndup@Base 8 + strnlen@Base 7 + strpbrk@Base 6 + strptime@Base 4.9 + strrchr@Base 4.9 + strspn@Base 6 + strstr@Base 4.9 + strtoimax@Base 4.9 + strtok@Base 8 + strtoumax@Base 4.9 + strxfrm@Base 9 + strxfrm_l@Base 9 + sysinfo@Base 4.9 + tcgetattr@Base 4.9 + tempnam@Base 4.9 + textdomain@Base 4.9 + time@Base 4.9 + timerfd_gettime@Base 5 + timerfd_settime@Base 5 + times@Base 4.9 + tmpfile64@Base 5 + tmpfile@Base 5 + tmpnam@Base 4.9 + tmpnam_r@Base 4.9 + tsearch@Base 5 + ttyname_r@Base 7 + unlink@Base 4.9 + usleep@Base 4.9 + valloc@Base 4.9 + vasprintf@Base 5 + vfork@Base 5 + vfprintf@Base 5 + vfscanf@Base 4.9 + vprintf@Base 5 + vscanf@Base 4.9 + vsnprintf@Base 5 + vsprintf@Base 5 + vsscanf@Base 4.9 + wait3@Base 4.9 + wait4@Base 4.9 + wait@Base 4.9 + waitid@Base 4.9 + waitpid@Base 4.9 + wcrtomb@Base 6 + wcscat@Base 8 + wcslen@Base 8 + wcsncat@Base 8 + wcsnlen@Base 8 + wcsnrtombs@Base 4.9 + wcsrtombs@Base 4.9 + wcstombs@Base 4.9 + wcsxfrm@Base 9 + wcsxfrm_l@Base 9 + wordexp@Base 4.9 + write@Base 4.9 + writev@Base 4.9 + xdr_bool@Base 5 + xdr_bytes@Base 5 + xdr_char@Base 5 + xdr_double@Base 5 + xdr_enum@Base 5 + xdr_float@Base 5 + xdr_hyper@Base 5 + xdr_int16_t@Base 5 + xdr_int32_t@Base 5 + xdr_int64_t@Base 5 + xdr_int8_t@Base 5 + xdr_int@Base 5 + xdr_long@Base 5 + xdr_longlong_t@Base 5 + xdr_quad_t@Base 5 + xdr_short@Base 5 + xdr_string@Base 5 + xdr_u_char@Base 5 + xdr_u_hyper@Base 5 + xdr_u_int@Base 5 + xdr_u_long@Base 5 + xdr_u_longlong_t@Base 5 + xdr_u_quad_t@Base 5 + xdr_u_short@Base 5 + xdr_uint16_t@Base 5 + xdr_uint32_t@Base 5 + xdr_uint64_t@Base 5 + xdr_uint8_t@Base 5 + xdrmem_create@Base 5 + xdrstdio_create@Base 5 diff --git a/libubsan1.symbols b/libubsan1.symbols new file mode 100644 index 0000000..b829376 --- /dev/null +++ b/libubsan1.symbols @@ -0,0 +1,129 @@ +libubsan.so.1 libubsan1 #MINVER# + OnPrint@Base 8 + _ZN7__ubsan31RegisterUndefinedBehaviorReportEPNS_23UndefinedBehaviorReportE@Base 9 + __asan_backtrace_alloc@Base 4.9 + __asan_backtrace_close@Base 4.9 + __asan_backtrace_create_state@Base 4.9 + __asan_backtrace_dwarf_add@Base 4.9 + __asan_backtrace_free@Base 4.9 + __asan_backtrace_get_view@Base 4.9 + __asan_backtrace_initialize@Base 4.9 + __asan_backtrace_open@Base 4.9 + __asan_backtrace_pcinfo@Base 4.9 + __asan_backtrace_qsort@Base 4.9 + __asan_backtrace_release_view@Base 4.9 + __asan_backtrace_syminfo@Base 4.9 + __asan_backtrace_uncompress_zdebug@Base 8 + __asan_backtrace_vector_finish@Base 4.9 + __asan_backtrace_vector_grow@Base 4.9 + __asan_backtrace_vector_release@Base 4.9 + __asan_cplus_demangle_builtin_types@Base 4.9 + __asan_cplus_demangle_fill_ctor@Base 4.9 + __asan_cplus_demangle_fill_dtor@Base 4.9 + __asan_cplus_demangle_fill_extended_operator@Base 4.9 + __asan_cplus_demangle_fill_name@Base 4.9 + __asan_cplus_demangle_init_info@Base 4.9 + __asan_cplus_demangle_mangled_name@Base 4.9 + __asan_cplus_demangle_operators@Base 4.9 + __asan_cplus_demangle_print@Base 4.9 + __asan_cplus_demangle_print_callback@Base 4.9 + __asan_cplus_demangle_type@Base 4.9 + __asan_cplus_demangle_v3@Base 4.9 + __asan_cplus_demangle_v3_callback@Base 4.9 + __asan_internal_memcmp@Base 4.9 + __asan_internal_memcpy@Base 4.9 + __asan_internal_memset@Base 4.9 + __asan_internal_strcmp@Base 4.9 + __asan_internal_strlen@Base 4.9 + __asan_internal_strncmp@Base 4.9 + __asan_internal_strnlen@Base 4.9 + __asan_is_gnu_v3_mangled_ctor@Base 4.9 + __asan_is_gnu_v3_mangled_dtor@Base 4.9 + __asan_java_demangle_v3@Base 4.9 + __asan_java_demangle_v3_callback@Base 4.9 + __sancov_default_options@Base 8 + __sancov_lowest_stack@Base 8 + __sanitizer_acquire_crash_state@Base 9 + __sanitizer_cov_8bit_counters_init@Base 8 + __sanitizer_cov_dump@Base 4.9 + __sanitizer_cov_pcs_init@Base 8 + __sanitizer_cov_reset@Base 8 + __sanitizer_cov_trace_cmp1@Base 7 + __sanitizer_cov_trace_cmp2@Base 7 + __sanitizer_cov_trace_cmp4@Base 7 + __sanitizer_cov_trace_cmp8@Base 7 + __sanitizer_cov_trace_cmp@Base 6 + __sanitizer_cov_trace_const_cmp1@Base 8 + __sanitizer_cov_trace_const_cmp2@Base 8 + __sanitizer_cov_trace_const_cmp4@Base 8 + __sanitizer_cov_trace_const_cmp8@Base 8 + __sanitizer_cov_trace_div4@Base 7 + __sanitizer_cov_trace_div8@Base 7 + __sanitizer_cov_trace_gep@Base 7 + __sanitizer_cov_trace_pc_guard@Base 7 + __sanitizer_cov_trace_pc_guard_init@Base 7 + __sanitizer_cov_trace_pc_indir@Base 7 + __sanitizer_cov_trace_switch@Base 6 + __sanitizer_dump_coverage@Base 8 + __sanitizer_dump_trace_pc_guard_coverage@Base 8 + __sanitizer_get_module_and_offset_for_pc@Base 8 + __sanitizer_install_malloc_and_free_hooks@Base 7 + __sanitizer_report_error_summary@Base 4.9 + __sanitizer_sandbox_on_notify@Base 4.9 + __sanitizer_set_death_callback@Base 6 + __sanitizer_set_report_fd@Base 7 + __sanitizer_set_report_path@Base 4.9 + __sanitizer_symbolize_global@Base 7 + __sanitizer_symbolize_pc@Base 7 + __ubsan_default_options@Base 8 + __ubsan_get_current_report_data@Base 9 + __ubsan_handle_add_overflow@Base 4.9 + __ubsan_handle_add_overflow_abort@Base 4.9 + __ubsan_handle_builtin_unreachable@Base 4.9 + __ubsan_handle_cfi_bad_icall@Base 9 + __ubsan_handle_cfi_bad_icall_abort@Base 9 + __ubsan_handle_cfi_bad_type@Base 7 + __ubsan_handle_cfi_check_fail@Base 7 + __ubsan_handle_cfi_check_fail_abort@Base 7 + __ubsan_handle_divrem_overflow@Base 4.9 + __ubsan_handle_divrem_overflow_abort@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss@Base 4.9 + __ubsan_handle_dynamic_type_cache_miss_abort@Base 4.9 + __ubsan_handle_float_cast_overflow@Base 4.9 + __ubsan_handle_float_cast_overflow_abort@Base 4.9 + __ubsan_handle_function_type_mismatch@Base 4.9 + __ubsan_handle_function_type_mismatch_abort@Base 4.9 + __ubsan_handle_implicit_conversion@Base 9 + __ubsan_handle_implicit_conversion_abort@Base 9 + __ubsan_handle_invalid_builtin@Base 8 + __ubsan_handle_invalid_builtin_abort@Base 8 + __ubsan_handle_load_invalid_value@Base 4.9 + __ubsan_handle_load_invalid_value_abort@Base 4.9 + __ubsan_handle_missing_return@Base 4.9 + __ubsan_handle_mul_overflow@Base 4.9 + __ubsan_handle_mul_overflow_abort@Base 4.9 + __ubsan_handle_negate_overflow@Base 4.9 + __ubsan_handle_negate_overflow_abort@Base 4.9 + __ubsan_handle_nonnull_arg@Base 5 + __ubsan_handle_nonnull_arg_abort@Base 5 + __ubsan_handle_nonnull_return_v1@Base 8 + __ubsan_handle_nonnull_return_v1_abort@Base 8 + __ubsan_handle_nullability_arg@Base 8 + __ubsan_handle_nullability_arg_abort@Base 8 + __ubsan_handle_nullability_return_v1@Base 8 + __ubsan_handle_nullability_return_v1_abort@Base 8 + __ubsan_handle_out_of_bounds@Base 4.9 + __ubsan_handle_out_of_bounds_abort@Base 4.9 + __ubsan_handle_pointer_overflow@Base 8 + __ubsan_handle_pointer_overflow_abort@Base 8 + __ubsan_handle_shift_out_of_bounds@Base 4.9 + __ubsan_handle_shift_out_of_bounds_abort@Base 4.9 + __ubsan_handle_sub_overflow@Base 4.9 + __ubsan_handle_sub_overflow_abort@Base 4.9 + __ubsan_handle_type_mismatch_v1@Base 8 + __ubsan_handle_type_mismatch_v1_abort@Base 8 + __ubsan_handle_vla_bound_not_positive@Base 4.9 + __ubsan_handle_vla_bound_not_positive_abort@Base 4.9 + __ubsan_on_report@Base 9 + __ubsan_vptr_type_cache@Base 4.9 + (arch=base-any-any-amd64 any-mips any-mipsel)internal_sigreturn@Base 7 diff --git a/libvtv0.symbols b/libvtv0.symbols new file mode 100644 index 0000000..908a64e --- /dev/null +++ b/libvtv0.symbols @@ -0,0 +1,68 @@ +libvtv.so.0 libvtv0 #MINVER# + _Z10__vtv_freePv@Base 4.9.0 + (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 + (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 + _Z14__VLTDumpStatsv@Base 4.9.0 + _Z14__vtv_open_logPKc@Base 4.9.0 + (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 + _Z16__vtv_add_to_logiPKcz@Base 4.9.0 + (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 + (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 + _Z17__vtv_malloc_initv@Base 4.9.0 + _Z17__vtv_really_failPKc@Base 4.9.0 + _Z17__vtv_verify_failPPvPKv@Base 4.9.0 + _Z18__vtv_malloc_statsv@Base 4.9.0 + _Z20__vtv_malloc_protectv@Base 4.9.0 + (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 + (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 + (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 + (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 + _Z22__vtv_malloc_unprotectv@Base 4.9.0 + _Z23__vtv_malloc_dump_statsv@Base 4.9.0 + _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 + (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 + (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 + _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 + _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 + _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 + _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 + (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 + (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 + (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 + __VLTChangePermission@Base 4.9.0 + __VLTprotect@Base 4.9.0 + __VLTunprotect@Base 4.9.0 + _vtable_map_vars_end@Base 4.9.0 + _vtable_map_vars_start@Base 4.9.0 + mprotect_cycles@Base 4.9.0 + num_cache_entries@Base 4.9.0 + num_calls_to_mprotect@Base 4.9.0 + num_calls_to_regpair@Base 4.9.0 + num_calls_to_regset@Base 4.9.0 + num_calls_to_verify_vtable@Base 4.9.0 + num_pages_protected@Base 4.9.0 + regpair_cycles@Base 4.9.0 + regset_cycles@Base 4.9.0 + verify_vtable_cycles@Base 4.9.0 diff --git a/libx32asan5.overrides b/libx32asan5.overrides new file mode 100644 index 0000000..fa35182 --- /dev/null +++ b/libx32asan5.overrides @@ -0,0 +1,2 @@ +# automake gets it wrong for the multilib build +libx32asan5 binary: binary-or-shlib-defines-rpath diff --git a/libx32asan5.symbols b/libx32asan5.symbols new file mode 100644 index 0000000..5fc72d6 --- /dev/null +++ b/libx32asan5.symbols @@ -0,0 +1,4 @@ +libasan.so.5 libx32asan5 #MINVER# +#include "libasan.symbols.common" +#include "libasan.symbols.32" +#include "libasan.symbols.16" diff --git a/libx32gphobos68.lintian-overrides b/libx32gphobos68.lintian-overrides new file mode 100644 index 0000000..9539864 --- /dev/null +++ b/libx32gphobos68.lintian-overrides @@ -0,0 +1,2 @@ +# no multilib zlib for x32 +libx32gphobos68 binary: embedded-library diff --git a/libx32stdc++6.symbols b/libx32stdc++6.symbols new file mode 100644 index 0000000..93a1f88 --- /dev/null +++ b/libx32stdc++6.symbols @@ -0,0 +1,27 @@ +libstdc++.so.6 libx32stdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" +#include "libstdc++6.symbols.128bit" +#include "libstdc++6.symbols.excprop" +#include "libstdc++6.symbols.money.ldbl" + __gxx_personality_v0@CXXABI_1.3 4.1.1 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 +#(optional)_Z16__VLTRegisterSetPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z17__VLTRegisterPairPPvPKvjS2_@CXXABI_1.3.8 4.9.0 +#(optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@CXXABI_1.3.8 4.9.0 +#(optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)_Z24__VLTVerifyVtablePointerPPvPKv@CXXABI_1.3.8 4.9.0 +#(optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@CXXABI_1.3.8 4.9.0 +#(optional)__VLTChangePermission@CXXABI_1.3.8 4.9.0 + _ZTIPKn@CXXABI_1.3.5 4.9.0 + _ZTIPKo@CXXABI_1.3.5 4.9.0 + _ZTIPn@CXXABI_1.3.5 4.9.0 + _ZTIPo@CXXABI_1.3.5 4.9.0 + _ZTIn@CXXABI_1.3.5 4.9.0 + _ZTIo@CXXABI_1.3.5 4.9.0 + _ZTSPKn@CXXABI_1.3.9 4.9.0 + _ZTSPKo@CXXABI_1.3.9 4.9.0 + _ZTSPn@CXXABI_1.3.9 4.9.0 + _ZTSPo@CXXABI_1.3.9 4.9.0 + _ZTSn@CXXABI_1.3.9 4.9.0 + _ZTSo@CXXABI_1.3.9 4.9.0 diff --git a/locale-gen b/locale-gen new file mode 100755 index 0000000..f07fa55 --- /dev/null +++ b/locale-gen @@ -0,0 +1,51 @@ +#!/bin/sh + +# generate locales that the libstdc++ testsuite depends on + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +[ -n "$USE_CPUS" ] || USE_CPUS=1 + +umask 022 + +echo "Generating locales..." +xargs -L 1 -P $USE_CPUS -I{} \ + sh -c ' + set {}; locale=$1; charset=$2 + case $locale in \#*) exit;; esac + [ -n "$locale" -a -n "$charset" ] || exit + echo " `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..." + if [ -f $LOCPATH/$locale ]; then + input=$locale + else + input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"` + fi + localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias + ' <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " [ ...]" + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +otherlogs="$@" + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +update() +{ + _logvar=$1 + _othervar=$2 + + # logfile may not exist yet + if [ -r $logfile ]; then + _logtail="`tail -10 $logfile | md5sum` $f" + else + _logtail="does not exist: $logfile" + fi + eval $_logvar="'$_logtail'" + + _othertails='' + for f in $otherlogs; do + if [ -r $f ]; then + _othertails="$_othertails `tail -10 $f | md5sum` $f" + else + _othertails="$_othertails does not exist: $f" + fi + done + eval $_othervar="'$_othertails'" +} + +update logtail othertails +while true; do + sleep $timeout + update newlogtail newothertails + if [ "$logtail" != "$newlogtail" ]; then + # there is still action in the primary logfile. do nothing. + logtail="$newlogtail" + elif [ "$othertails" != "$newothertails" ]; then + # there is still action in the other log files, so print the message + /bin/echo -e $message + othertails="$newothertails" + else + # nothing changed in the other log files. maybe a timeout ... + : + fi +done diff --git a/patches/ada-749574.diff b/patches/ada-749574.diff new file mode 100644 index 0000000..0e04f32 --- /dev/null +++ b/patches/ada-749574.diff @@ -0,0 +1,114 @@ +From: Ludovic Brenta +From: Nicolas Boulenguez +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81087 +Bug-Debian: http://bugs.debian.org/749574 +Description: array index out of range in gnatlink + The procedure gnatlink assumes that the Linker_Options.Table contains access + values to strings whose 'First index is always 1. This assumption is wrong + for the string returned by function Base_Name. + . + The wrong indices are not detected because gnatlink is compiled with + -gnatp, but the test result is wrong. + . + The following program normally raises Constraint_Error, prints FALSE + if compiled with -gnatp, while the expected result is TRUE. + . + procedure A is + G : constant String (3 .. 5) := "abc"; + begin + Ada.Text_IO.Put_Line (Boolean'Image (G (1 .. 2) = "ab")); + end A; + +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -238,6 +238,9 @@ procedure Gnatlink is + procedure Write_Usage; + -- Show user the program options + ++ function Starts_With (Source, Pattern : String) return Boolean; ++ pragma Inline (Starts_With); ++ + --------------- + -- Base_Name -- + --------------- +@@ -494,7 +497,7 @@ procedure Gnatlink is + Binder_Options.Table (Binder_Options.Last) := + Linker_Options.Table (Linker_Options.Last); + +- elsif Arg'Length >= 7 and then Arg (1 .. 7) = "--LINK=" then ++ elsif Starts_With (Arg, "--LINK=") then + if Arg'Length = 7 then + Exit_With_Error ("Missing argument for --LINK="); + end if; +@@ -528,7 +531,7 @@ procedure Gnatlink is + end loop; + end; + +- elsif Arg'Length >= 6 and then Arg (1 .. 6) = "--GCC=" then ++ elsif Starts_With (Arg, "--GCC=") then + if Arg'Length = 6 then + Exit_With_Error ("Missing argument for --GCC="); + end if; +@@ -1255,13 +1258,9 @@ procedure Gnatlink is + 1 .. Linker_Options.Last + loop + if Linker_Options.Table (J) /= null +- and then +- Linker_Options.Table (J)'Length +- > Run_Path_Opt'Length +- and then +- Linker_Options.Table (J) +- (1 .. Run_Path_Opt'Length) = +- Run_Path_Opt ++ and then Starts_With ++ (Linker_Options.Table (J).all, ++ Run_Path_Opt) + then + -- We have found an already + -- specified run_path_option: +@@ -1378,6 +1377,17 @@ procedure Gnatlink is + Status := fclose (Fd); + end Process_Binder_File; + ++ ---------------- ++ -- StartsWith -- ++ ---------------- ++ ++ function Starts_With (Source, Pattern : String) return Boolean is ++ Last : constant Natural := Source'First + Pattern'Length - 1; ++ begin ++ return Last <= Source'Last ++ and then Pattern = Source (Source'First .. Last); ++ end Starts_With; ++ + ----------- + -- Usage -- + ----------- +@@ -1890,8 +1900,8 @@ begin + while J <= Linker_Options.Last loop + if Linker_Options.Table (J).all = "-Xlinker" + and then J < Linker_Options.Last +- and then Linker_Options.Table (J + 1)'Length > 8 +- and then Linker_Options.Table (J + 1) (1 .. 8) = "--stack=" ++ and then Starts_With (Linker_Options.Table (J + 1).all, ++ "--stack=") + then + if Stack_Op then + Linker_Options.Table (J .. Linker_Options.Last - 2) := +@@ -1922,13 +1932,9 @@ begin + -- Here we just check for a canonical form that matches the + -- pragma Linker_Options set in the NT runtime. + +- if (Linker_Options.Table (J)'Length > 17 +- and then Linker_Options.Table (J) (1 .. 17) = +- "-Xlinker --stack=") +- or else +- (Linker_Options.Table (J)'Length > 12 +- and then Linker_Options.Table (J) (1 .. 12) = +- "-Wl,--stack=") ++ if Starts_With (Linker_Options.Table (J).all, "-Xlinker --stack=") ++ or else Starts_With (Linker_Options.Table (J).all, ++ "-Wl,--stack=") + then + if Stack_Op then + Linker_Options.Table (J .. Linker_Options.Last - 1) := diff --git a/patches/ada-armel-libatomic.diff b/patches/ada-armel-libatomic.diff new file mode 100644 index 0000000..3bf8b73 --- /dev/null +++ b/patches/ada-armel-libatomic.diff @@ -0,0 +1,35 @@ +Description: link libgnat with libatomic on armel + On other architectures, the link step does not change because we link + with --as-needed (ada-link-lib.diff). + . + Libatomic becomes an artificial dependency for Ada in Makefile.def, + so a better solution is welcome. + . + Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + . + TODO: if this caused by ada-arm.diff, merge the two patches. +Bug-Debian: https://bugs.debian.org/861734 +Author: Matthias Klose +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -2108,6 +2108,7 @@ endif + + # ARM linux, GNU eabi + ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),) ++ MISCLIB = -L../../../$(target_alias)/libatomic/.libs -latomic + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatvsn/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatvsn; \ ++ cd "$(TARGET_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libgnatvsn; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) \ ++ $$s/$$module_srcdir/configure \ ++ --srcdir=$${topdir}/$$module_srcdir \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} \ ++ || exit 1 ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatvsn maybe-all-target-libgnatvsn ++maybe-all-target-libgnatvsn: ++@if gcc-bootstrap ++all-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++TARGET-target-libgnatvsn=all ++maybe-all-target-libgnatvsn: all-target-libgnatvsn ++all-target-libgnatvsn: configure-target-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libgnatvsn)) ++@endif target-libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatvsn maybe-check-target-libgnatvsn ++maybe-check-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-check-target-libgnatvsn: check-target-libgnatvsn ++ ++# Dummy target for uncheckable module. ++check-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: install-target-libgnatvsn maybe-install-target-libgnatvsn ++maybe-install-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-target-libgnatvsn: install-target-libgnatvsn ++ ++install-target-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatvsn ++ ++.PHONY: install-strip-target-libgnatvsn maybe-install-strip-target-libgnatvsn ++maybe-install-strip-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-strip-target-libgnatvsn: install-strip-target-libgnatvsn ++ ++install-strip-target-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatvsn info-target-libgnatvsn ++maybe-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-info-target-libgnatvsn: info-target-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-dvi-target-libgnatvsn dvi-target-libgnatvsn ++maybe-dvi-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-dvi-target-libgnatvsn: dvi-target-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-pdf-target-libgnatvsn pdf-target-libgnatvsn ++maybe-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-pdf-target-libgnatvsn: pdf-target-libgnatvsn ++ ++# libgnatvsn doesn't support pdf. ++pdf-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-html-target-libgnatvsn html-target-libgnatvsn ++maybe-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-html-target-libgnatvsn: html-target-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-TAGS-target-libgnatvsn TAGS-target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-TAGS-target-libgnatvsn: TAGS-target-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-info-target-libgnatvsn install-info-target-libgnatvsn ++maybe-install-info-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-info-target-libgnatvsn: install-info-target-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-pdf-target-libgnatvsn install-pdf-target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-pdf-target-libgnatvsn: install-pdf-target-libgnatvsn ++ ++# libgnatvsn doesn't support install-pdf. ++install-pdf-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-install-html-target-libgnatvsn install-html-target-libgnatvsn ++maybe-install-html-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-install-html-target-libgnatvsn: install-html-target-libgnatvsn ++ ++# libgnatvsn doesn't support install-html. ++install-html-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn ++ ++mostlyclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing mostlyclean in $(TARGET_SUBDIR)/libada"; \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatvsn"; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ +- (cd $(TARGET_SUBDIR)/libada && \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -50740,24 +50749,24 @@ mostlyclean-target-libada: + mostlyclean) \ + || exit 1 + +-@endif target-libada ++@endif target-libgnatvsn + +-.PHONY: maybe-clean-target-libada clean-target-libada +-maybe-clean-target-libada: +-@if target-libada +-maybe-clean-target-libada: clean-target-libada ++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn ++maybe-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn + +-clean-target-libada: ++clean-target-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing clean in $(TARGET_SUBDIR)/libada"; \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatvsn"; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ +- (cd $(TARGET_SUBDIR)/libada && \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -50765,24 +50774,24 @@ clean-target-libada: + clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libgnatvsn + +-.PHONY: maybe-distclean-target-libada distclean-target-libada +-maybe-distclean-target-libada: +-@if target-libada +-maybe-distclean-target-libada: distclean-target-libada ++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn ++maybe-distclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn + +-distclean-target-libada: ++distclean-target-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing distclean in $(TARGET_SUBDIR)/libada"; \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatvsn"; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ +- (cd $(TARGET_SUBDIR)/libada && \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -50790,24 +50799,24 @@ distclean-target-libada: + distclean) \ + || exit 1 + +-@endif target-libada ++@endif target-libgnatvsn + +-.PHONY: maybe-maintainer-clean-target-libada maintainer-clean-target-libada +-maybe-maintainer-clean-target-libada: +-@if target-libada +-maybe-maintainer-clean-target-libada: maintainer-clean-target-libada ++.PHONY: maybe-maintainer-clean-target-libgnatvsn maintainer-clean-target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-maintainer-clean-target-libgnatvsn: maintainer-clean-target-libgnatvsn + +-maintainer-clean-target-libada: ++maintainer-clean-target-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0; \ ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0; \ + r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + $(NORMAL_TARGET_EXPORTS) \ +- echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libada"; \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatvsn"; \ + for flag in $(EXTRA_TARGET_FLAGS); do \ + eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ + done; \ +- (cd $(TARGET_SUBDIR)/libada && \ ++ (cd $(TARGET_SUBDIR)/libgnatvsn && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ + "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ + "RANLIB=$${RANLIB}" \ +@@ -50815,7 +50824,7 @@ maintainer-clean-target-libada: + maintainer-clean) \ + || exit 1 + +-@endif target-libada ++@endif target-libgnatvsn + + + +@@ -56754,6 +56763,7 @@ configure-target-libffi: stage_last + configure-target-zlib: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libgnatvsn: stage_last + configure-target-libgm2: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc +@@ -56790,6 +56800,7 @@ configure-target-libffi: maybe-all-gcc + configure-target-zlib: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libgnatvsn: maybe-all-gcc + configure-target-libgm2: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc +@@ -57247,6 +57258,9 @@ all-stagefeedback-fixincludes: maybe-all + all-stageautoprofile-fixincludes: maybe-all-stageautoprofile-libiberty + all-stageautofeedback-fixincludes: maybe-all-stageautofeedback-libiberty + all-gnattools: maybe-all-target-libada ++all-gnattools: maybe-all-target-libgnatvsn ++all-target-libgnatvsn: maybe-all-target-libada ++all-target-libada: maybe-all-target-libatomic + all-lto-plugin: maybe-all-libiberty + all-stage1-lto-plugin: maybe-all-stage1-libiberty + all-stage2-lto-plugin: maybe-all-stage2-libiberty +@@ -57779,6 +57793,7 @@ configure-target-libgo: maybe-configure- + all-target-libgo: maybe-all-target-libbacktrace + all-target-libgo: maybe-all-target-libffi + all-target-libgo: maybe-all-target-libatomic ++all-target-libgnatvsn: maybe-all-target-libatomic + configure-target-libphobos: maybe-configure-target-libbacktrace + configure-target-libphobos: maybe-configure-target-zlib + all-target-libphobos: maybe-all-target-libbacktrace +@@ -57825,6 +57840,7 @@ all-stagefeedback-target-libstdc++-v3: m + all-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp + all-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp + install-target-libgo: maybe-install-target-libatomic ++install-target-libgnatvsn: maybe-install-target-libatomic + install-target-libgfortran: maybe-install-target-libquadmath + install-target-libgfortran: maybe-install-target-libgcc + install-target-libphobos: maybe-install-target-libatomic +@@ -57858,6 +57874,7 @@ configure-m4: stage_last + @endif gcc-bootstrap + + @unless gcc-bootstrap ++all-target-libada: maybe-all-gcc + all-gnattools: maybe-all-target-libstdc++-v3 + configure-libcc1: maybe-configure-gcc + all-libcc1: maybe-all-gcc +@@ -57960,6 +57977,7 @@ configure-target-libffi: maybe-all-targe + configure-target-zlib: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc ++configure-target-libgnatvsn: maybe-all-target-libgcc + configure-target-libgm2: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc +@@ -58008,6 +58026,8 @@ configure-target-rda: maybe-all-target-n + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss diff --git a/patches/ada-gcc-name.diff b/patches/ada-gcc-name.diff new file mode 100644 index 0000000..9d5e044 --- /dev/null +++ b/patches/ada-gcc-name.diff @@ -0,0 +1,294 @@ +Description: always call gcc with an explicit target and version + Many problems have been caused by the fact that tools like gnatmake + call other tools like gcc without an explicit target or version. + . + In order to solve this issue for all similar tools at once, AdaCore + has created the Osint.Program_Name function. When gnatmake launches a + gcc subprocess, this function computes the name of the right gcc + executable. This patch improves the function in four ways. + . + The previous algorithm wrongly tests "End_Of_Prefix > 1", + which may happen even if a match has been found. + This part will most probably be of interest for upstream. + . + Update the gnatchop tool to use this function. + This part will most probably be of interest for upstream. + . + Check that the target and version in the gnatmake program name, if + present, match the static constants inside the gnatmake program + itself. Also, knowing the length of the only allowed prefix and suffix + slightly improves performance by avoiding loops. + This part will most probably be of interest for upstream. + . + In Debian, gcc/gcc-version/target-gcc are symbolic links to the + target-gcc-version executable. The same holds for gnatmake, but the + target and version may differ. So "target-gcc-version" is the right + answer. It helps log checkers and humans debuggers, even if gnatmake + was invoked via a shortcut intended for human typers. + This part will probably be hard to merge for upstream, as some + distributions provide no "target-gcc-version". + . + Log for bug 903694 carries regression tests for both bugs. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87777 +Bug-Debian: https://bugs.debian.org/814977 +Bug-Debian: https://bugs.debian.org/814978 +Bug-Debian: https://bugs.debian.org/856274 +Bug-Debian: https://bugs.debian.org/881938 +Bug-Debian: https://bugs.debian.org/903694 +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Svante Signell +Author: YunQiang Su + +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -137,16 +137,10 @@ package Osint is + -- path) in Name_Buffer, with the length in Name_Len. + + function Program_Name (Nam : String; Prog : String) return String_Access; +- -- In the native compilation case, Create a string containing Nam. In the +- -- cross compilation case, looks at the prefix of the current program being +- -- run and prepend it to Nam. For instance if the program being run is +- -- -gnatmake and Nam is "gcc", the returned value will be a pointer +- -- to "-gcc". In the specific case where AAMP_On_Target is set, the +- -- name "gcc" is mapped to "gnaamp", and names of the form "gnat*" are +- -- mapped to "gnaamp*". This function clobbers Name_Buffer and Name_Len. +- -- Also look at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the +- -- default name of the current program being executed, e.g. "gnatmake", +- -- "gnatlink". ++ -- On Debian, always create a string containing ++ -- Sdefault.Target_Name & '-' & Nam & '-' & Gnatvsn.Library_Version. ++ -- Fail if the program base name differs from Prog, ++ -- maybe extended with the same prefix or suffix. + + procedure Write_Program_Name; + -- Writes name of program as invoked to the current output (normally +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -2209,50 +2209,51 @@ package body Osint is + ------------------ + + function Program_Name (Nam : String; Prog : String) return String_Access is +- End_Of_Prefix : Natural := 0; +- Start_Of_Prefix : Positive := 1; +- Start_Of_Suffix : Positive; +- ++ -- Most of the work is to check that the current program name ++ -- is consistent with the two static constants below. ++ Suffix : constant String := '-' & Gnatvsn.Library_Version; ++ Prefix : Types.String_Ptr := Sdefault.Target_Name; ++ First : Integer; ++ Result : System.OS_Lib.String_Access; + begin + -- Get the name of the current program being executed +- + Find_Program_Name; + +- Start_Of_Suffix := Name_Len + 1; ++ -- If our version is present, skip it. ++ First := Name_Len - Suffix'Length + 1; ++ if 0 < First and then Name_Buffer (First .. Name_Len) = Suffix then ++ Name_Len := First - 1; ++ end if; ++ ++ -- The central part must be Prog. ++ First := Name_Len - Prog'Length + 1; ++ if First <= 0 or else Name_Buffer (First .. Name_Len) /= Prog then ++ Fail ("Osint.Program_Name: must end with " & Prog ++ & " or " & Prog & Suffix); ++ end if; ++ Name_Len := First - 1; + +- -- Find the target prefix if any, for the cross compilation case. +- -- For instance in "powerpc-elf-gcc" the target prefix is +- -- "powerpc-elf-" +- -- Ditto for suffix, e.g. in "gcc-4.1", the suffix is "-4.1" +- +- for J in reverse 1 .. Name_Len loop +- if Is_Directory_Separator (Name_Buffer (J)) +- or else Name_Buffer (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. Name_Len - Prog'Length + 1 loop +- if Name_Buffer (J .. J + Prog'Length - 1) = Prog then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; ++ -- According to Make-generated.in, this ends with a slash. ++ Prefix.all (Prefix.all'Last) := '-'; + +- if End_Of_Prefix > 1 then +- Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; ++ -- If our target is present, skip it. ++ First := Name_Len - Prefix.all'Length + 1; ++ if 0 < First and then Name_Buffer (First .. Name_Len) = Prefix.all then ++ Name_Len := First - 1; + end if; + +- -- Create the new program name ++ -- What remains must be the directory part. ++ if 0 < Name_Len ++ and then Name_Buffer (Name_Len) /= ':' ++ and then not Is_Directory_Separator (Name_Buffer (Name_Len)) ++ then ++ Fail ("Osint.Program_Name: must start with " & Prog ++ & " or " & Prefix.all & Prog); ++ end if; + +- return new String' +- (Name_Buffer (Start_Of_Prefix .. End_Of_Prefix) +- & Nam +- & Name_Buffer (Start_Of_Suffix .. Name_Len)); ++ Result := new String'(Prefix.all & Nam & Suffix); ++ Types.Free (Prefix); ++ return Result; + end Program_Name; + + ------------------------------ +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -36,6 +36,7 @@ with GNAT.OS_Lib; use GNA + with GNAT.Heap_Sort_G; + with GNAT.Table; + ++with Osint; + with Switch; use Switch; + with Types; + +@@ -44,12 +45,9 @@ procedure Gnatchop is + Config_File_Name : constant String_Access := new String'("gnat.adc"); + -- The name of the file holding the GNAT configuration pragmas + +- Gcc : String_Access := new String'("gcc"); ++ Gcc : String_Access := null; + -- May be modified by switch --GCC= + +- Gcc_Set : Boolean := False; +- -- True if a switch --GCC= is used +- + Gnat_Cmd : String_Access; + -- Command to execute the GNAT compiler + +@@ -222,12 +220,6 @@ procedure Gnatchop is + Integer'Image + (Maximum_File_Name_Length); + +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access; +- -- Locate executable for given program name. This takes into account +- -- the target-prefix of the current command, if Look_For_Prefix is True. +- + subtype EOL_Length is Natural range 0 .. 2; + -- Possible lengths of end of line sequence + +@@ -492,76 +484,6 @@ procedure Gnatchop is + Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; + end Is_Duplicated; + +- ----------------------- +- -- Locate_Executable -- +- ----------------------- +- +- function Locate_Executable +- (Program_Name : String; +- Look_For_Prefix : Boolean := True) return String_Access +- is +- Gnatchop_Str : constant String := "gnatchop"; +- Current_Command : constant String := Normalize_Pathname (Command_Name); +- End_Of_Prefix : Natural; +- Start_Of_Prefix : Positive; +- Start_Of_Suffix : Positive; +- Result : String_Access; +- +- begin +- Start_Of_Prefix := Current_Command'First; +- Start_Of_Suffix := Current_Command'Last + 1; +- End_Of_Prefix := Start_Of_Prefix - 1; +- +- if Look_For_Prefix then +- +- -- Find Start_Of_Prefix +- +- for J in reverse Current_Command'Range loop +- if Current_Command (J) = '/' or else +- Current_Command (J) = Directory_Separator or else +- Current_Command (J) = ':' +- then +- Start_Of_Prefix := J + 1; +- exit; +- end if; +- end loop; +- +- -- Find End_Of_Prefix +- +- for J in Start_Of_Prefix .. +- Current_Command'Last - Gnatchop_Str'Length + 1 +- loop +- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = +- Gnatchop_Str +- then +- End_Of_Prefix := J - 1; +- exit; +- end if; +- end loop; +- end if; +- +- if End_Of_Prefix > Current_Command'First then +- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; +- end if; +- +- declare +- Command : constant String := +- Current_Command (Start_Of_Prefix .. End_Of_Prefix) +- & Program_Name +- & Current_Command (Start_Of_Suffix .. +- Current_Command'Last); +- begin +- Result := Locate_Exec_On_Path (Command); +- +- if Result = null then +- Error_Msg +- (Command & ": installation problem, executable not found"); +- end if; +- end; +- +- return Result; +- end Locate_Executable; +- + --------------- + -- Parse_EOL -- + --------------- +@@ -1090,8 +1012,8 @@ procedure Gnatchop is + exit; + + when '-' => +- Gcc := new String'(Parameter); +- Gcc_Set := True; ++ Free (Gcc); ++ Gcc := new String'(Parameter); + + when 'c' => + Compilation_Mode := True; +@@ -1769,9 +1691,13 @@ begin + + -- Check presence of required executables + +- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); ++ if Gcc = null then ++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); ++ end if; ++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); + + if Gnat_Cmd = null then ++ Error_Msg (Gcc.all & ": installation problem, executable not found"); + goto No_Files_Written; + end if; + diff --git a/patches/ada-gnattools-cross.diff b/patches/ada-gnattools-cross.diff new file mode 100644 index 0000000..8095c8a --- /dev/null +++ b/patches/ada-gnattools-cross.diff @@ -0,0 +1,267 @@ +TODO: Check that the part removing the dependency from stamp-gnatlib1 +to stamp-gnatlib2 is not necessary anymore with gcc-9. + +* Link tools dynamically. +* Prevent direct embedding of libada objects: + Mark ALI files as read-only, remove objects after the build. + A solution keeping the objects would be more intrusive. +* Rebuild gnatbind/make/link with themselves. + This removes unneeded objects inherited from the hardcoded bootstrap list. + The same thing would be useful for gnat1drv, but is less easy. +* TOOLS_ALREADY_COMPILED lists LIBGNAT objects that + gcc/ada/gcc-interface/Makefile should not rebuild. +* Install the shared Ada libraries as '.so.1', not '.so' to conform + to the Debian policy. +* Link libgnat/gnarl with LDFLAGS. +* Create libgnat-BV.so symbolic link, use it and -L to link libgnarl. + This prevents undefined symbols or unwanted usage of host libgnat. +* Compile with -gnatn, link with --as-needed -z defs. +* set LD_LIBRARY_PATH so that rebuilt tools can be executed. + +This patch depends on ada-libgnatvsn.diff. + +# DP: - When building a cross gnat, link against the libgnatvsnBV-dev +# DP: package. +# DP: This link will be done by /usr/bin/$(host_alias)-gnat*, thus +# DP: the native gnat with the same major version will be required. + +--- a/src/gcc/ada/Makefile.rtl ++++ b/src/gcc/ada/Makefile.rtl +@@ -1781,6 +1781,11 @@ ifeq ($(strip $(filter-out s390% linux%, + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + # HP/PA HP-UX 10 + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -482,6 +482,20 @@ gnatlink-re: ../stamp-tools gnatmake-re + --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS) + $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) + ++gnatbind-re: ../stamp-tools gnatmake-re gnatlink-re ++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatbind --GCC="$(CC) $(ALL_ADAFLAGS)" ++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatbind ++ $(GNATLINK) -v gnatbind -o ../../gnatbind$(exeext) \ ++ --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS) ++ ++# When driven by gnattools/Makefile for a native build, ++# TOOLS_ALREADY_COMPILED will list objects in the target standard Ada ++# libraries, that Make should avoid rebuilding. ++# We cannot use recursive variables to avoid an infinite loop, ++# so we must put this after definition of EXTRA_GNATMAKE_OBJS. ++GNATLINK_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATLINK_OBJS)) ++GNATMAKE_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATMAKE_OBJS)) ++ + # Needs to be built with CC=gcc + # Since the RTL should be built with the latest compiler, remove the + # stamp target in the parent directory whenever gnat1 is rebuilt +@@ -530,14 +544,10 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + # Also install the .dSYM directories if they exist (these directories + # contain the debug information for the shared libraries on darwin) + for file in gnat gnarl; do \ +- if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ +- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ ++ $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + fi; \ +- if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \ +- $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \ +- fi; \ + if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \ + $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \ + $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +@@ -607,7 +617,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib + $(OSCONS_EXTRACT) ; \ + ../bldtools/oscons/xoscons s-oscons) + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads + test -f $(RTSDIR)/s-oscons.ads || exit 1 + # C files + $(MAKE) -C $(RTSDIR) \ +@@ -641,36 +651,51 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../ + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) + endif + $(CHMOD) a-wx $(RTSDIR)/*.ali ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(RM) $(RTSDIR)/*.o + touch ../stamp-gnatlib-$(RTSDIR) + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. + gnatlib-shared-default: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(RTSDIR) \ ++ CC="`echo \"$(GCC_FOR_TARGET)\" \ ++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET)" \ ++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ srcdir=$(fsrcdir) \ ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) ++ $(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1 + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 $(LDFLAGS) \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ + $(MISCLIB) -lm ++ cd $(RTSDIR) && $(LN_S) -f libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) + cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \ + | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \ + $(PICFLAG_FOR_TARGET) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 $(LDFLAGS) \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -L. -lgnat$(hyphen)$(LIBRARY_VERSION) \ + $(THREADSLIB) +- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) ++ cd $(RTSDIR) && $(LN_S) -f libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) ++ $(CHMOD) a-wx $(RTSDIR)/*.ali + + # Create static libgnat and libgnarl compiled with -fPIC + $(RM) $(RTSDIR)/libgnat_pic$(arext) $(RTSDIR)/libgnarl_pic$(arext) +@@ -681,6 +706,8 @@ gnatlib-shared-default: + $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) + $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl_pic$(arext) + ++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. ++ $(RM) $(RTSDIR)/*.o + + gnatlib-shared-dual: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -690,21 +717,15 @@ gnatlib-shared-dual: + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-default +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(MV) $(RTSDIR)/libgnat_pic$(arext) . +- $(MV) $(RTSDIR)/libgnarl_pic$(arext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) +- $(MV) libgnat_pic$(arext) $(RTSDIR) +- $(MV) libgnarl_pic$(arext) $(RTSDIR) ++ gnatlib-shared-default + + gnatlib-shared-dual-win32: + $(MAKE) $(FLAGS_TO_PASS) \ +@@ -714,17 +735,15 @@ gnatlib-shared-dual-win32: + PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib-shared-win32 +- $(MV) $(RTSDIR)/libgna*$(soext) . +- $(RM) ../stamp-gnatlib2-$(RTSDIR) ++ gnatlib ++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali + $(MAKE) $(FLAGS_TO_PASS) \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(MV) libgna*$(soext) $(RTSDIR) ++ gnatlib-shared-win32 + + # ??? we need to add the option to support auto-import of arrays/records to + # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -75,16 +75,23 @@ CXX_LFLAGS = \ + -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ + -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs + ++rtsdir := $(abspath ../gcc/ada/rts) ++vsndir := $(abspath ../$(target_noncanonical)/libgnatvsn/lib-for-gnat-tools) ++ + # Variables for gnattools, native + TOOLS_FLAGS_TO_PASS_NATIVE= \ + "CC=../../xgcc -B../../" \ + "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \ +- "LDFLAGS=$(LDFLAGS)" \ +- "ADAFLAGS=$(ADAFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ ++ "ADAFLAGS=$(ADAFLAGS) -gnatn" \ + "ADA_CFLAGS=$(ADA_CFLAGS)" \ + "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ +- "ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ ++ "ADA_INCLUDES=-I- -nostdinc -I$(vsndir) -I$(rtsdir) $(ADA_INCLUDES_FOR_SUBDIR)" \ ++ "TOOLS_ALREADY_COMPILED=$(foreach d, $(vsndir) $(rtsdir), \ ++ $(patsubst $(d)/%.ali,%.o, $(wildcard $(d)/*.ali)))" \ ++ 'LIBGNAT=-L$(vsndir) -lgnatvsn -L$(rtsdir) -lgnat-$$(LIB_VERSION)' \ ++ "GNATBIND_FLAGS=-nostdlib -x" \ + "exeext=$(exeext)" \ + "fsrcdir=$(fsrcdir)" \ + "srcdir=$(fsrcdir)" \ +@@ -190,6 +197,10 @@ $(GCC_DIR)/stamp-tools: + # to be able to build gnatmake without a version of gnatmake around. Once + # everything has been compiled once, gnatmake can be recompiled with itself + # (see target regnattools) ++gnattools-native: export LD_LIBRARY_PATH := \ ++ $(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(vsndir):$(rtsdir) ++# Useful even for 1st pass, as ../../gnatmake may already be ++# dynamically linked in case this target has already been invoked. + gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts + # gnattools1 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +@@ -198,6 +209,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools + # gnattools2 + $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ + $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools ++# The hard-coded object lists for gnatbind/make/link contain unneeded ++# objects. Use the fresh tools to recompute dependencies. ++# A separate Make run avoids race conditions between gnatmakes ++# building the same object for common-tools and gnat*-re. ++# (parallelism is already forbidden between gnat*-re targets) ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re + + # gnatmake/link can be built with recent gnatmake/link if they are available. + # This is especially convenient for building cross tools or for rebuilding diff --git a/patches/ada-kfreebsd.diff b/patches/ada-kfreebsd.diff new file mode 100644 index 0000000..ae399bd --- /dev/null +++ b/patches/ada-kfreebsd.diff @@ -0,0 +1,80 @@ +Description: add support for GNU/kFreeBSD and GNU/Hurd. + For now, it seems that BSD requires -lrt. + It will be ignored on other platforms thanks to --as-needed. +Author: Ludovic Brenta +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +@@ -45,6 +45,7 @@ package System.OS_Interface is + pragma Preelaborate; + + pragma Linker_Options ("-lpthread"); ++ pragma Linker_Options ("-lrt"); + + subtype int is Interfaces.C.int; + subtype char is Interfaces.C.char; +@@ -437,31 +438,25 @@ package System.OS_Interface is + PTHREAD_PRIO_PROTECT : constant := 2; + PTHREAD_PRIO_INHERIT : constant := 1; + ++ -- GNU/kFreeBSD does not support Thread Priority Protection or Thread ++ -- Priority Inheritance and lacks some pthread_mutexattr_* functions. ++ -- Replace them with dummy versions. ++ + function pthread_mutexattr_setprotocol +- (attr : access pthread_mutexattr_t; +- protocol : int) return int; +- pragma Import +- (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol"); ++ (ignored_attr : access pthread_mutexattr_t; ++ ignored_protocol : int) return int is (0); + + function pthread_mutexattr_getprotocol +- (attr : access pthread_mutexattr_t; +- protocol : access int) return int; +- pragma Import +- (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol"); ++ (ignored_attr : access pthread_mutexattr_t; ++ ignored_protocol : access int) return int is (0); + + function pthread_mutexattr_setprioceiling +- (attr : access pthread_mutexattr_t; +- prioceiling : int) return int; +- pragma Import +- (C, pthread_mutexattr_setprioceiling, +- "pthread_mutexattr_setprioceiling"); ++ (ignored_attr : access pthread_mutexattr_t; ++ ignored_prioceiling : int) return int is (0); + + function pthread_mutexattr_getprioceiling +- (attr : access pthread_mutexattr_t; +- prioceiling : access int) return int; +- pragma Import +- (C, pthread_mutexattr_getprioceiling, +- "pthread_mutexattr_getprioceiling"); ++ (ignored_attr : access pthread_mutexattr_t; ++ ignored_prioceiling : access int) return int is (0); + + type struct_sched_param is record + sched_priority : int; -- scheduling priority +--- a/src/gcc/ada/gsocket.h ++++ b/src/gcc/ada/gsocket.h +@@ -253,6 +253,7 @@ + #endif + + #if defined (__FreeBSD__) || defined (__vxworks) || defined(__rtems__) \ ++ || defined (__FreeBSD_kernel__) || defined(__GNU__) \ + || defined (__DragonFly__) || defined (__NetBSD__) || defined (__OpenBSD__) + # define Has_Sockaddr_Len 1 + #else +--- a/src/gcc/ada/s-oscons-tmplt.c ++++ b/src/gcc/ada/s-oscons-tmplt.c +@@ -1705,6 +1705,7 @@ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU + + #if defined(__linux__) || defined(__FreeBSD__) \ + || (defined(_AIX) && defined(_AIXVERSION_530)) \ ++ || defined(__FreeBSD_kernel__) \ + || defined(__DragonFly__) || defined(__QNX__) + /** On these platforms use system provided monotonic clock instead of + ** the default CLOCK_REALTIME. We then need to set up cond var attributes diff --git a/patches/ada-lib-info-source-date-epoch.diff b/patches/ada-lib-info-source-date-epoch.diff new file mode 100644 index 0000000..794a2ba --- /dev/null +++ b/patches/ada-lib-info-source-date-epoch.diff @@ -0,0 +1,144 @@ +Description: set ALI timestamps from SOURCE_DATE_EPOCH if available. + When the SOURCE_DATE_EPOCH environment variable is set, + replace timestamps more recent than its value with its value + when writing Ada Library Information (ALI) files. + This allow reproducible builds from generated or patched Ada sources. + https://reproducible-builds.org/specs/source-date-epoch/ +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/ali-util.adb ++++ b/src/gcc/ada/ali-util.adb +@@ -484,8 +484,10 @@ package body ALI.Util is + for D in ALIs.Table (A).First_Sdep .. ALIs.Table (A).Last_Sdep loop + Src := Source_Id (Get_Name_Table_Int (Sdep.Table (D).Sfile)); + +- if Opt.Minimal_Recompilation +- and then Sdep.Table (D).Stamp /= Source.Table (Src).Stamp ++ if (Opt.Minimal_Recompilation ++ and then Sdep.Table (D).Stamp /= Source.Table (Src).Stamp) ++ or else (Sdep.Table (D).Stamp = Source_Date_Epoch ++ and then Source_Date_Epoch < Source.Table (Src).Stamp) + then + -- If minimal recompilation is in action, replace the stamp + -- of the source file in the table if checksums match. +--- a/src/gcc/ada/lib-writ.adb ++++ b/src/gcc/ada/lib-writ.adb +@@ -1559,7 +1559,14 @@ package body Lib.Writ is + + Write_Info_Name_May_Be_Quoted (Fname); + Write_Info_Tab (25); +- Write_Info_Str (String (Time_Stamp (Sind))); ++ declare ++ T : Time_Stamp_Type := Time_Stamp (Sind); ++ begin ++ if Source_Date_Epoch < T then ++ T := Source_Date_Epoch; ++ end if; ++ Write_Info_Str (String (T)); ++ end; + Write_Info_Char (' '); + Write_Info_Str (Get_Hex_String (Source_Checksum (Sind))); + +--- a/src/gcc/ada/osint.adb ++++ b/src/gcc/ada/osint.adb +@@ -1686,6 +1686,20 @@ package body Osint is + + Lib_Search_Directories.Set_Last (Primary_Directory); + Lib_Search_Directories.Table (Primary_Directory) := new String'(""); ++ ++ -- Look for Source_Date_Epoch in the environment. ++ declare ++ Env_Var : String_Access; ++ Get_OK : Boolean; ++ Epoch : OS_Time; ++ begin ++ Env_Var := Getenv ("SOURCE_DATE_EPOCH"); ++ Get_OS_Time_From_String (Env_Var.all, Get_OK, Epoch); ++ Free (Env_Var); ++ if Get_OK then ++ Source_Date_Epoch := OS_Time_To_GNAT_Time (Epoch); ++ end if; ++ end; + end Initialize; + + ------------------ +--- a/src/gcc/ada/osint.ads ++++ b/src/gcc/ada/osint.ads +@@ -683,6 +683,17 @@ package Osint is + function Prep_Suffix return String; + -- The suffix used for preprocessed files + ++ Source_Date_Epoch : Time_Stamp_Type := Time_Stamp_Type'("99991231235959"); ++ -- * gnat1 truncates to this date time stamps written to ALI files, making ++ -- their contents deterministic even for patched or generated sources. ++ -- See https://reproducible-builds.org/specs/source-date-epoch. ++ -- * When gnatmake reads this date from an ALI file, and the source file is ++ -- more recent, it ignores the dates and only considers checksums as if ++ -- Minimal_Recompilation was selected. Else, the source would always ++ -- be detected as requiring a recompilation. ++ -- The default value has no effect, but Initialize will assign it if ++ -- SOURCE_DATE_EPOCH in the environment represents a valid epoch. ++ + private + + Current_Main : File_Name_Type := No_File; +--- a/src/gcc/ada/libgnat/s-os_lib.adb ++++ b/src/gcc/ada/libgnat/s-os_lib.adb +@@ -1146,6 +1146,41 @@ package body System.OS_Lib is + return Result; + end Get_Object_Suffix; + ++ ----------------------------- ++ -- Get_OS_Time_From_String -- ++ ----------------------------- ++ ++ procedure Get_OS_Time_From_String (Arg : String; ++ Success : out Boolean; ++ Result : out OS_Time) is ++ -- Calling System.Val_LLI breaks the bootstrap sequence. ++ Digit : OS_Time; ++ begin ++ Result := 0; ++ if Arg'Length = 0 then ++ Success := False; ++ return; ++ end if; ++ for I in Arg'Range loop ++ if Arg (I) not in '0' .. '9' then ++ Success := False; ++ return; ++ end if; ++ Digit := OS_Time (Character'Pos (Arg (I)) - Character'Pos ('0')); ++ if OS_Time'Last / 10 < Result then ++ Success := False; ++ return; ++ end if; ++ Result := Result * 10; ++ if OS_Time'Last - Digit < Result then ++ Success := False; ++ return; ++ end if; ++ Result := Result + Digit; ++ end loop; ++ Success := True; ++ end Get_OS_Time_From_String; ++ + ---------------------------------- + -- Get_Target_Debuggable_Suffix -- + ---------------------------------- +--- a/src/gcc/ada/libgnat/s-os_lib.ads ++++ b/src/gcc/ada/libgnat/s-os_lib.ads +@@ -164,6 +164,13 @@ package System.OS_Lib is + -- component parts to be interpreted in the local time zone, and returns + -- an OS_Time. Returns Invalid_Time if the creation fails. + ++ procedure Get_OS_Time_From_String (Arg : String; ++ Success : out Boolean; ++ Result : out OS_Time); ++ -- Success is set if Arg is not empty, only contains decimal ++ -- digits and represents an integer within OS_Time range. Result ++ -- is then affected with the represented value. ++ + ---------------- + -- File Stuff -- + ---------------- diff --git a/patches/ada-libgnatvsn.diff b/patches/ada-libgnatvsn.diff new file mode 100644 index 0000000..c4c83b8 --- /dev/null +++ b/patches/ada-libgnatvsn.diff @@ -0,0 +1,2733 @@ +Some GNAT components are used by the GNAT tools, and also by external +tools outside GCC (mostly ASIS and GNATcoll). + +For years, Debian has been gathering them into a library named +libgnatvsn, and linking all tools against it. + +More recently, upstream has created a library named libgnat_util +(https://www.adacore.com/community) avoiding duplication accross +external tools, but duplicating code outside the GCC tree. + +The intent is similar, it make senses that the Debian library is +renamed accordingly during next GCC passage through the NEW queue. + +However, some divergences seem necessary. +* AdaCore links GNAT tools with libcommon.a, but simplifies gnatvsn in + gnat_util so that it does not refer to version.c anymore. +* AdaCore links GNAT tools link with libcommon-target.a, but lets + osint.adb in gnat_util refer to a update_path() from + gnat_utils_dummies.c instead of the original in prefix.c. +This is sufficient for external tools, but we do not want this in +Debian because it would break GNAT tools. + +Debian rebuilds version.c, which is a small dedicated file. This seems +a good soluton. + +prefix.c requires libbacktrace, a C++ compiler, and so on, so +recompiling or embedding it is quite complex. For now, no tool (in +Debian) requires the Ada sources depending on it, so in the absence of +a better idea, we remove from libgnatvsn all Ada sources needing +prefix.c. +Removed from spec_with_body: ali ali-util errout erroutc errutil fmap + fname-uf osint restrict scng sdefault styleg stylesw switch switch-m + targparm (sdefault.adb also not symlinked from ../../gcc/ada). +Removed from spec_no_body: err_vars +This has caused no problem for a decade, but a proper solution is of +course welcome. + +'Makefile.in' and 'aclocal.m4' are generated, but required for the +Debian build. If this patch belongs an upstream commit, 'configure' +should also be added. autoreconf -fi' rebuilds all 3 files. + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + +# !!! Must be applied after ada-link-lib.diff + +--- /dev/null ++++ b/src/libgnatvsn/configure.ac +@@ -0,0 +1,163 @@ ++# Configure script for libgnatvsn. ++# Copyright (C) 2006 Ludovic Brenta ++# Copyright (C) 2017-2019 Nicolas Boulenguez ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++AC_INIT([gnatvsn], [version-unused]) ++ ++# Gets build, host, target, *_vendor, *_cpu, *_os, etc. ++# ++# You will slowly go insane if you do not grok the following fact: when ++# building this library, the top-level /target/ becomes the library's /host/. ++# ++# configure then causes --target to default to --host, exactly like any ++# other package using autoconf. Therefore, 'target' and 'host' will ++# always be the same. This makes sense both for native and cross compilers ++# just think about it for a little while. :-) ++# ++# Also, if this library is being configured as part of a cross compiler, the ++# top-level configure script will pass the "real" host as $with_cross_host. ++# ++# Do not delete or change the following two lines. For why, see ++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html ++AC_CANONICAL_SYSTEM ++target_alias=${target_alias-$host_alias} ++ ++# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the ++# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am. ++# 1.9.0: minimum required version ++# no-define: PACKAGE and VERSION will not be #define'd in config.h (a bunch ++# of other PACKAGE_* variables will, however, and there's nothing ++# we can do about that; they come from AC_INIT). ++# foreign: we don't follow the normal rules for GNU packages (no COPYING ++# file in the top srcdir, etc, etc), so stop complaining. ++# no-dist: we don't want 'dist' and related rules. ++# -Wall: turns on all automake warnings... ++# -Wno-portability: ...except this one, since GNU make is required. ++# -Wno-override: ... and this one, since we do want this in testsuite. ++# ++# A warning says: You are advised to start using 'subdir-objects' ++# option throughout your automake: project, to avoid future ++# incompatibilities. ++AM_INIT_AUTOMAKE([1.9.0 foreign no-dist subdir-objects -Wall -Wno-portability -Wno-override]) ++dnl gnat isn't multilib'd, don't enable it here ++dnl AM_ENABLE_MULTILIB(, ..) ++ ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AM_PROG_AR ++ ++# Configure libtool ++AM_PROG_LIBTOOL ++ACX_LT_HOST_FLAGS ++AC_SUBST(enable_shared) ++AC_SUBST(enable_static) ++AM_MAINTAINER_MODE ++ ++AC_CONFIG_SRCDIR([gnatvsn.gpr.in]) ++AC_CONFIG_MACRO_DIR([..]) ++AC_PROG_MKDIR_P ++AC_PROG_LN_S ++AC_PROG_SED ++ ++sinclude(../config/acx.m4) ++ ++GCC_BASE_VER ++ ++ACX_BUGURL([https://gcc.gnu.org/bugs/]) ++AC_DEFINE_UNQUOTED([BUGURL], ["$REPORT_BUGS_TO"]) ++ ++AC_DEFINE_UNQUOTED([BASEVER], ["`cat $srcdir/../gcc/BASE-VER`"]) ++ ++devphase="`cat $srcdir/../gcc/DEV-PHASE`" ++if test "x$devphase" = x; then ++ datestamp= ++else ++ datestamp="\" `cat $srcdir/../gcc/DATESTAMP`\"" ++ devphase="\" ($devphase)\"" ++fi ++AC_DEFINE_UNQUOTED([DATESTAMP], [$datestamp]) ++AC_DEFINE_UNQUOTED([DEVPHASE], [$devphase]) ++ ++AC_DEFINE([REVISION], []) ++ ++ACX_PKGVERSION([GCC]) ++AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"]) ++ ++# Get target configury for libatomic. ++. ${srcdir}/../libatomic/configure.tgt ++if test -n "$UNSUPPORTED"; then ++ with_libatomic=no ++else ++ # See if the user wants to configure without libatomic. This is useful if we are ++ # on an architecture for which libgo does not need an atomic support library and ++ # libatomic does not support our C compiler. ++ AC_ARG_WITH(libatomic, ++ AS_HELP_STRING([--without-libatomic], ++ [don't use libatomic]), ++ [:], ++ [with_libatomic=${with_libatomic_default-yes}]) ++fi ++LIBATOMIC= ++if test "$with_libatomic" != no; then ++ LIBATOMIC=../libatomic/libatomic_convenience.la ++ LIBATOMIC=../libatomic/libatomic.la ++fi ++AC_SUBST(LIBATOMIC) ++ ++AC_CONFIG_FILES([Makefile]) ++AC_OUTPUT +--- /dev/null ++++ b/src/libgnatvsn/gnatvsn.gpr.in +@@ -0,0 +1,8 @@ ++library project Gnatvsn is ++ for Library_Name use "@PACKAGE@"; ++ for Library_Kind use "dynamic"; ++ for Library_Dir use "@libdir@"; ++ for Source_Dirs use ("@pkgadaincludedir@"); ++ for Library_ALI_Dir use "@pkgexecalidir@"; ++ for Externally_Built use "true"; ++end Gnatvsn; +--- /dev/null ++++ b/src/libgnatvsn/Makefile.am +@@ -0,0 +1,204 @@ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# Copyright (c) 2017-2019 Nicolas Boulenguez ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++# Configuration is shared with other GCC components. ++ACLOCAL_AMFLAGS = -I .. -I ../config ++ ++gcc_base_version = `$(get_gcc_base_ver) $(srcdir)/../gcc/BASE-VER` ++ ++# This module only builds a library. ++lib_LTLIBRARIES = libgnatvsn.la ++ ++# The library links against the Ada Runtime Library/libada/libgnat. ++# GNAT tools and other projects outside the GCC tree link against it. ++rtl_adaflags = -nostdinc -I../libada/adainclude ++rtl_libadd =-L../libada/adalib -lgnat-$(gcc_base_version) ++ ++############## ++# List sources ++ ++# A single list in configure.ac with AC_CONFIG_LINKS would be easyer ++# to compare with MANIFEST.gnat_util, but difficult to split with ++# POSIX Make. Also, Automake likes explicit file lists in Makefile.am. ++ ++adbs = aspects.adb atree.adb binderr.adb butil.adb casing.adb \ ++ csets.adb debug.adb einfo.adb elists.adb fname.adb get_scos.adb \ ++ gnatvsn.adb krunch.adb lib.adb namet.adb nlists.adb opt.adb output.adb \ ++ put_scos.adb repinfo.adb repinfo-input.adb scans.adb scos.adb \ ++ sem_aux.adb sinfo.adb sinput.adb sinput-c.adb stand.adb \ ++ stringt.adb table.adb tempdir.adb tree_in.adb tree_io.adb types.adb \ ++ uintp.adb uname.adb urealp.adb widechar.adb xutil.adb ++adbs_gen = snames.adb ++ads = alloc.ads hostparm.ads rident.ads ++adb = lib-list.adb lib-sort.adb ++c = link.c ++c_gcc = version.c ++h_gcc = $(srcdir)/../gcc/version.h ++ ++ada_sources = $(adbs) $(adbs:.adb=.ads) $(adb) $(ads) \ ++ $(adbs_gen) $(adbs_gen:.adb=.ads) ++ ++####################################### ++# Create symbolic links to most sources ++ ++# With a -I option to the directory containing all Ada sources, GNAT would ++# silently rebuild missing dependencies when the lists above become out of ++# sync with MANIFEST.gnat_util. An explicit failure is way better. ++# For both Ada and C, automake takes .. as a subdirectory and would ++# create objects like ../gcc/ada/libgnatvsn_la_link.o, interfering with ++# parent directories (some warnings say that subdir-objects will ++# become the default in the future). ++# Both problems disappear for C headers. ++ ++BUILT_SOURCES = $(ada_sources) $(c) $(c_gcc) ++ ++# No prerequisite, symbolic links have no timestamps on their own. ++$(adbs) $(adbs:.adb=.ads) $(adb) $(ads) $(c): ++ $(LN_S) $(srcdir)/../gcc/ada/$@ . ++$(adbs_gen) $(adbs_gen:.adb=.ads): ++ $(LN_S) ../../gcc/ada/$@ . ++$(c_gcc): ++ $(LN_S) $(srcdir)/../gcc/$@ . ++ ++######### ++# Compile ++ ++# C headers are mentioned here for dependency tracking. ++libgnatvsn_la_SOURCES = $(ada_sources) $(c) $(c_gcc) $(h_gcc) ++ ++# So that version.c sees version.h. ++libgnatvsn_la_CPPFLAGS = -I$(srcdir)/../gcc ++ ++# The Makefiles of other Ada components seem to imply that ++# CFLAGS and ADA_CFLAGS should affect both Ada and C. ++libgnatvsn_la_CFLAGS = $(ADA_CFLAGS) ++ ++# According to libtool documentation, something like ++# .ads.o: ++# $(CC) -c -o $@ $< ++# should cause Automake, for each .adb listed in SOURCES, to ++# * add .lo to DEPENDENCIES ++# * embed the .lo into the libraries without explicit LIBADD ++# * write a libtool compilation recipe wrapping the one above ++# This seems to work for executables, but not for libraries. ++# Tracked at https://bugs.debian.org/940263. ++ ++# Normal units require both .ad[bs] files, the source is then .adb. ++# When the language forbids a body, GCC accepts the .ads as argument instead. ++# Single .adb without .ads are separate bodies and can be ignored here. ++lo_adb = $(adbs:.adb=.lo) $(adbs_gen:.adb=.lo) ++lo_ads = $(ads:.ads=.lo) ++lo_ada = $(lo_adb) $(lo_ads) ++ ++# Blindly recompile all Ada sources whenever one of them changes. ++# Teaching Make the dependencies would bring little benefit here. ++LTADACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC \ ++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) \ ++ -gnatn $(rtl_adaflags) \ ++ $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) ++$(lo_adb): $(ada_sources) ++ $(LTADACOMPILE) -c -o $@ $(@:.lo=.adb) ++$(lo_ads): $(ada_sources) ++ $(LTADACOMPILE) -c -o $@ $(@:.lo=.ads) ++ ++# Each compilation produces a .ali file in addition to the .o file, ++# but libtool does know about it so we have to remove it manually. ++cleanfiles_ali = $(lo_ada:.lo=.ali) ++# The shared library also produces .ali files, but they will be ++# removed with the .libs/ subdirectory. ++ ++# Remove an empty directory left by libtool. ++cleandirs_deps = .deps ++ ++######################### ++# Link the shared library ++ ++EXTRA_libgnatvsn_la_DEPENDENCIES = $(lo_ada) ++libgnatvsn_la_LIBADD = $(rtl_libadd) $(lo_ada) $(LIBATOMIC) ++libgnatvsn_la_LDFLAGS = \ ++ -version-info $(gcc_base_version) \ ++ -Wl,--as-needed -Wl,-z,defs ++ ++################################## ++# Prepare later link of GNAT tools ++ ++# GNAT tools like to find all gnatvsn stuff in one directory, but ++# '.' already contains static .o and static read-and-write .ali. ++all-local: lib-for-gnat-tools ++lib-for-gnat-tools: libgnatvsn.la ++ rm -fr $@ ++ mkdir $@ ++ $(INSTALL) -m 444 .libs/*.ali $@ ++ cd $@ && $(LN_S) ../*.ad[bs] ../.libs/libgnatvsn.so* . ++ ++cleandirs_lib_for_gnat_tools = lib-for-gnat-tools ++ ++################# ++# Install sources ++ ++# C sources are not necessary, but convenient when debugging. ++pkgadaincludedir = $(datadir)/ada/adainclude/$(PACKAGE) ++pkgadainclude_DATA = $(ada_sources) $(c) $(c_gcc) $(h_gcc) ++ ++# The installation directory is specific to this package. ++uninstall_removedir_sources = '$(DESTDIR)$(pkgadaincludedir)' ++ ++################################# ++# Install Ada Library Information ++ ++# With GNAT conventions, .ali files must be read-only for the library ++# being preferred over recompilation of unavailable objects. ++ ++pkgexecalidir = $(libdir)/ada/adalib/$(PACKAGE) ++# pkgexecali_DATA would require an explicit list prefixed with .libs/, ++# and the mode needs to be fixed anyway. ++ ++install-exec-local: ++ $(MKDIR_P) '$(DESTDIR)$(pkgexecalidir)' ++ $(INSTALL) -m 444 .libs/*.ali '$(DESTDIR)$(pkgexecalidir)' ++ ++# The installation directory is specific to this package. ++uninstall_removedir_ali = '$(DESTDIR)$(pkgexecalidir)' ++ ++################## ++# GPRBuild project ++ ++# Gnatvsn will one day be renamed to Gnat_Util, prepare the transition. ++gprdir = $(datadir)/gpr ++gpr_DATA = gnatvsn.gpr gnat_util.gpr ++ ++gnatvsn.gpr: $(srcdir)/gnatvsn.gpr.in Makefile ++ $(SED) \ ++ -e 's|@PACKAGE[@]|$(PACKAGE)|' \ ++ -e 's|@libdir[@]|$(libdir)|' \ ++ -e 's|@pkgadaincludedir[@]|$(pkgadaincludedir)|' \ ++ -e 's|@pkgexecalidir[@]|$(pkgexecalidir)|' \ ++ $< > $@ ++ ++gnat_util.gpr: gnatvsn.gpr ++ $(SED) s/Gnatvsn/Gnat_Util/ $< > $@ ++ ++cleanfiles_gpr = $(gpr_DATA) ++ ++############################# ++ ++CLEANFILES = $(cleanfiles_ali) $(cleanfiles_gpr) ++clean-local: ++ rm -fr $(cleandirs_deps) $(cleandirs_lib_for_gnat_tools) ++uninstall-local: ++ rm -fr $(uninstall_removedir_sources) $(uninstall_removedir_ali) +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -184,6 +184,16 @@ target_modules = { module= libada; no_in + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= pdf; ++ missing= install-html; ++ missing= install-pdf; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgm2; lib_path=.libs; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; +@@ -389,6 +399,8 @@ dependencies = { module=all-fixincludes; + dependencies = { module=all-target-libada; on=all-gcc; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++dependencies = { module=all-gnattools; on=all-target-libgnatvsn; }; ++dependencies = { module=all-target-libgnatvsn; on=all-target-libada; }; + + // Depending on the specific configuration, the LTO plugin will either use the + // generic libiberty build or the specific build for linker plugins. +@@ -572,6 +584,7 @@ dependencies = { module=configure-target + dependencies = { module=all-target-libgo; on=all-target-libbacktrace; }; + dependencies = { module=all-target-libgo; on=all-target-libffi; }; + dependencies = { module=all-target-libgo; on=all-target-libatomic; }; ++dependencies = { module=all-target-libgnatvsn; on=all-target-libatomic; }; + dependencies = { module=configure-target-libphobos; on=configure-target-libbacktrace; }; + dependencies = { module=configure-target-libphobos; on=configure-target-zlib; }; + dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; }; +@@ -588,6 +601,7 @@ dependencies = { module=all-target-libst + dependencies = { module=all-target-liboffloadmic; on=all-target-libgomp; }; + + dependencies = { module=install-target-libgo; on=install-target-libatomic; }; ++dependencies = { module=install-target-libgnatvsn; on=install-target-libatomic; }; + dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; }; + dependencies = { module=install-target-libgfortran; on=install-target-libgcc; }; + dependencies = { module=install-target-libphobos; on=install-target-libatomic; }; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -168,6 +168,7 @@ target_libraries="target-libgcc \ + target-libobjc \ + target-libada \ + ${target_libiberty} \ ++ target-libgnatvsn \ + target-libgm2 \ + target-libgo \ + target-libphobos \ +@@ -455,7 +456,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" + fi + + AC_ARG_ENABLE(libgm2, +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -43,7 +43,7 @@ if test "x$cross_compiling/$build/$host" + lang_requires="c c++" + fi + +-target_libs="target-libada" ++target_libs="target-libada target-libgnatvsn" + lang_dirs="libada gnattools" + + # Ada is not enabled by default for the time being. +--- a/src/gcc/testsuite/ada/acats/run_acats.sh ++++ b/src/gcc/testsuite/ada/acats/run_acats.sh +@@ -32,6 +32,15 @@ ADA_INCLUDE_PATH=$BASE/ada/rts + LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH + ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH + ++target_gcc="$BASE/xgcc -B$BASE/" ++target=`$target_gcc -dumpmachine` ++vsn_lib_dir=$BASE/../$target/libgnatvsn/lib-for-gnat-tools ++LD_LIBRARY_PATH=$vsn_lib_dir:$LD_LIBRARY_PATH ++if [ ! -d $vsn_lib_dir ]; then ++ echo libgnatvsn not found in "$vsn_lib_dir", exiting. ++ exit 1 ++fi ++ + if [ ! -d $ADA_INCLUDE_PATH ]; then + echo gnatlib missing, exiting. + exit 1 +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -128,8 +128,10 @@ proc gnat_target_compile { source dest t + set gnat_target_current "[current_target_name]" + if [info exists TOOL_OPTIONS] { + set rtsdir "[get_multilibs ${TOOL_OPTIONS}]/libada" ++ set vsndir "[get_multilibs ${TOOL_OPTIONS}]/libgnatvsn/lib-for-gnat-tools" + } else { + set rtsdir "[get_multilibs]/libada" ++ set vsndir "[get_multilibs]/libgnatvsn/libgnatvsn/lib-for-gnat-tools" + } + if [info exists TOOL_EXECUTABLE] { + set GNAT_UNDER_TEST "$TOOL_EXECUTABLE" +@@ -140,14 +142,15 @@ proc gnat_target_compile { source dest t + + # gnatlink looks for system.ads itself and has no --RTS option, so + # specify via environment +- setenv ADA_INCLUDE_PATH "$rtsdir/adainclude" +- setenv ADA_OBJECTS_PATH "$rtsdir/adainclude" ++ setenv ADA_INCLUDE_PATH "$rtsdir/adainclude:$vsndir" ++ setenv ADA_OBJECTS_PATH "$rtsdir/adainclude:$vsndir" + # Always log so compilations can be repeated manually. +- verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" +- verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" ++ verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude:$vsndir" ++ verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude:$vsndir" + + if { ! [ string match "*/libada/adalib*" $ld_library_path ] } { + append ld_library_path ":$rtsdir/adalib" ++ append ld_library_path ":$vsndir" + set_ld_library_path_env_vars + } + } +--- /dev/null ++++ b/src/libgnatvsn/Makefile.in +@@ -0,0 +1,935 @@ ++# Makefile.in generated by automake 1.15.1 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994-2017 Free Software Foundation, Inc. ++ ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# Copyright (c) 2017-2019 Nicolas Boulenguez ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ++ ++ ++VPATH = @srcdir@ ++am__is_gnu_make = { \ ++ if test -z '$(MAKELEVEL)'; then \ ++ false; \ ++ elif test -n '$(MAKE_HOST)'; then \ ++ true; \ ++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ ++ true; \ ++ else \ ++ false; \ ++ fi; \ ++} ++am__make_running_with_option = \ ++ case $${target_option-} in \ ++ ?) ;; \ ++ *) echo "am__make_running_with_option: internal error: invalid" \ ++ "target option '$${target_option-}' specified" >&2; \ ++ exit 1;; \ ++ esac; \ ++ has_opt=no; \ ++ sane_makeflags=$$MAKEFLAGS; \ ++ if $(am__is_gnu_make); then \ ++ sane_makeflags=$$MFLAGS; \ ++ else \ ++ case $$MAKEFLAGS in \ ++ *\\[\ \ ]*) \ ++ bs=\\; \ ++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ ++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ ++ esac; \ ++ fi; \ ++ skip_next=no; \ ++ strip_trailopt () \ ++ { \ ++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ ++ }; \ ++ for flg in $$sane_makeflags; do \ ++ test $$skip_next = yes && { skip_next=no; continue; }; \ ++ case $$flg in \ ++ *=*|--*) continue;; \ ++ -*I) strip_trailopt 'I'; skip_next=yes;; \ ++ -*I?*) strip_trailopt 'I';; \ ++ -*O) strip_trailopt 'O'; skip_next=yes;; \ ++ -*O?*) strip_trailopt 'O';; \ ++ -*l) strip_trailopt 'l'; skip_next=yes;; \ ++ -*l?*) strip_trailopt 'l';; \ ++ -[dEDm]) skip_next=yes;; \ ++ -[JT]) skip_next=yes;; \ ++ esac; \ ++ case $$flg in \ ++ *$$target_option*) has_opt=yes; break;; \ ++ esac; \ ++ done; \ ++ test $$has_opt = yes ++am__make_dryrun = (target_option=n; $(am__make_running_with_option)) ++am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkglibexecdir = $(libexecdir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++target_triplet = @target@ ++subdir = . ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/../libtool.m4 \ ++ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ ++ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \ ++ $(top_srcdir)/../config/depstand.m4 \ ++ $(top_srcdir)/../config/lead-dot.m4 \ ++ $(top_srcdir)/../config/lthostflags.m4 \ ++ $(top_srcdir)/../config/override.m4 \ ++ $(top_srcdir)/../config/acx.m4 $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ ++ $(am__configure_deps) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno config.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs ++CONFIG_CLEAN_FILES = ++CONFIG_CLEAN_VPATH_FILES = ++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; ++am__vpath_adj = case $$p in \ ++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ ++ *) f=$$p;; \ ++ esac; ++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; ++am__install_max = 40 ++am__nobase_strip_setup = \ ++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` ++am__nobase_strip = \ ++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" ++am__nobase_list = $(am__nobase_strip_setup); \ ++ for p in $$list; do echo "$$p $$p"; done | \ ++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ ++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ ++ if (++n[$$2] == $(am__install_max)) \ ++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ ++ END { for (dir in files) print dir, files[dir] }' ++am__base_list = \ ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++am__uninstall_files_from_dir = { \ ++ test -z "$$files" \ ++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ ++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ ++ $(am__cd) "$$dir" && rm -f $$files; }; \ ++ } ++am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(gprdir)" \ ++ "$(DESTDIR)$(pkgadaincludedir)" ++LTLIBRARIES = $(lib_LTLIBRARIES) ++am__DEPENDENCIES_1 = ++am__DEPENDENCIES_2 = aspects.lo atree.lo binderr.lo butil.lo casing.lo \ ++ csets.lo debug.lo einfo.lo elists.lo fname.lo get_scos.lo \ ++ gnatvsn.lo krunch.lo lib.lo namet.lo nlists.lo opt.lo \ ++ output.lo put_scos.lo repinfo.lo repinfo-input.lo scans.lo \ ++ scos.lo sem_aux.lo sinfo.lo sinput.lo sinput-c.lo stand.lo \ ++ stringt.lo table.lo tempdir.lo tree_in.lo tree_io.lo types.lo \ ++ uintp.lo uname.lo urealp.lo widechar.lo xutil.lo ++am__DEPENDENCIES_3 = snames.lo ++am__DEPENDENCIES_4 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) ++am__DEPENDENCIES_5 = alloc.lo hostparm.lo rident.lo ++am__DEPENDENCIES_6 = $(am__DEPENDENCIES_5) ++am__DEPENDENCIES_7 = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_6) ++libgnatvsn_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ ++ $(am__DEPENDENCIES_7) $(am__DEPENDENCIES_1) ++am__objects_1 = ++am__objects_2 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \ ++ $(am__objects_1) $(am__objects_1) $(am__objects_1) ++am__objects_3 = libgnatvsn_la-link.lo ++am__objects_4 = libgnatvsn_la-version.lo ++am_libgnatvsn_la_OBJECTS = $(am__objects_2) $(am__objects_3) \ ++ $(am__objects_4) $(am__objects_1) ++libgnatvsn_la_OBJECTS = $(am_libgnatvsn_la_OBJECTS) ++AM_V_lt = $(am__v_lt_@AM_V@) ++am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) ++am__v_lt_0 = --silent ++am__v_lt_1 = ++libgnatvsn_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgnatvsn_la_CFLAGS) \ ++ $(CFLAGS) $(libgnatvsn_la_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_P = $(am__v_P_@AM_V@) ++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) ++am__v_P_0 = false ++am__v_P_1 = : ++AM_V_GEN = $(am__v_GEN_@AM_V@) ++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) ++am__v_GEN_0 = @echo " GEN " $@; ++am__v_GEN_1 = ++AM_V_at = $(am__v_at_@AM_V@) ++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) ++am__v_at_0 = @ ++am__v_at_1 = ++DEFAULT_INCLUDES = -I.@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/../depcomp ++am__depfiles_maybe = depfiles ++am__mv = mv -f ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ ++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ ++ $(AM_CFLAGS) $(CFLAGS) ++AM_V_CC = $(am__v_CC_@AM_V@) ++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) ++am__v_CC_0 = @echo " CC " $@; ++am__v_CC_1 = ++CCLD = $(CC) ++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ ++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++AM_V_CCLD = $(am__v_CCLD_@AM_V@) ++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) ++am__v_CCLD_0 = @echo " CCLD " $@; ++am__v_CCLD_1 = ++SOURCES = $(libgnatvsn_la_SOURCES) ++am__can_run_installinfo = \ ++ case $$AM_UPDATE_INFO_DIR in \ ++ n|no|NO) false;; \ ++ *) (install-info --version) >/dev/null 2>&1;; \ ++ esac ++DATA = $(gpr_DATA) $(pkgadainclude_DATA) ++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) ++# Read a list of newline-separated strings from the standard input, ++# and print each of them once, without duplicates. Input order is ++# *not* preserved. ++am__uniquify_input = $(AWK) '\ ++ BEGIN { nonempty = 0; } \ ++ { items[$$0] = 1; nonempty = 1; } \ ++ END { if (nonempty) { for (i in items) print i; }; } \ ++' ++# Make sure the list of sources is unique. This is necessary because, ++# e.g., the same source file might be shared among _SOURCES variables ++# for different programs/libraries. ++am__define_uniq_tagged_files = \ ++ list='$(am__tagged_files)'; \ ++ unique=`for i in $$list; do \ ++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++ done | $(am__uniquify_input)` ++ETAGS = etags ++CTAGS = ctags ++CSCOPE = cscope ++AM_RECURSIVE_TARGETS = cscope ++ACLOCAL = @ACLOCAL@ ++AMTAR = @AMTAR@ ++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++CC = @CC@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++DSYMUTIL = @DSYMUTIL@ ++DUMPBIN = @DUMPBIN@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ ++FGREP = @FGREP@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LD = @LD@ ++LDFLAGS = @LDFLAGS@ ++LIBATOMIC = @LIBATOMIC@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LIPO = @LIPO@ ++LN_S = @LN_S@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++NM = @NM@ ++NMEDIT = @NMEDIT@ ++OBJDUMP = @OBJDUMP@ ++OBJEXT = @OBJEXT@ ++OTOOL = @OTOOL@ ++OTOOL64 = @OTOOL64@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_URL = @PACKAGE_URL@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++PKGVERSION = @PKGVERSION@ ++RANLIB = @RANLIB@ ++REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@ ++REPORT_BUGS_TO = @REPORT_BUGS_TO@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++STRIP = @STRIP@ ++VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_AR = @ac_ct_AR@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++enable_shared = @enable_shared@ ++enable_static = @enable_static@ ++exec_prefix = @exec_prefix@ ++get_gcc_base_ver = @get_gcc_base_ver@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++lt_host_flags = @lt_host_flags@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target = @target@ ++target_alias = @target_alias@ ++target_cpu = @target_cpu@ ++target_os = @target_os@ ++target_vendor = @target_vendor@ ++toolexecdir = @toolexecdir@ ++toolexeclibdir = @toolexeclibdir@ ++top_build_prefix = @top_build_prefix@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++ ++# Configuration is shared with other GCC components. ++ACLOCAL_AMFLAGS = -I .. -I ../config ++gcc_base_version = `$(get_gcc_base_ver) $(srcdir)/../gcc/BASE-VER` ++ ++# This module only builds a library. ++lib_LTLIBRARIES = libgnatvsn.la ++ ++# The library links against the Ada Runtime Library/libada/libgnat. ++# GNAT tools and other projects outside the GCC tree link against it. ++rtl_adaflags = -nostdinc -I../libada/adainclude ++rtl_libadd = -L../libada/adalib -lgnat-$(gcc_base_version) ++ ++############## ++# List sources ++ ++# A single list in configure.ac with AC_CONFIG_LINKS would be easyer ++# to compare with MANIFEST.gnat_util, but difficult to split with ++# POSIX Make. Also, Automake likes explicit file lists in Makefile.am. ++adbs = aspects.adb atree.adb binderr.adb butil.adb casing.adb \ ++ csets.adb debug.adb einfo.adb elists.adb fname.adb get_scos.adb \ ++ gnatvsn.adb krunch.adb lib.adb namet.adb nlists.adb opt.adb output.adb \ ++ put_scos.adb repinfo.adb repinfo-input.adb scans.adb scos.adb \ ++ sem_aux.adb sinfo.adb sinput.adb sinput-c.adb stand.adb \ ++ stringt.adb table.adb tempdir.adb tree_in.adb tree_io.adb types.adb \ ++ uintp.adb uname.adb urealp.adb widechar.adb xutil.adb ++ ++adbs_gen = snames.adb ++ads = alloc.ads hostparm.ads rident.ads ++adb = lib-list.adb lib-sort.adb ++c = link.c ++c_gcc = version.c ++h_gcc = $(srcdir)/../gcc/version.h ++ada_sources = $(adbs) $(adbs:.adb=.ads) $(adb) $(ads) \ ++ $(adbs_gen) $(adbs_gen:.adb=.ads) ++ ++ ++####################################### ++# Create symbolic links to most sources ++ ++# With a -I option to the directory containing all Ada sources, GNAT would ++# silently rebuild missing dependencies when the lists above become out of ++# sync with MANIFEST.gnat_util. An explicit failure is way better. ++# For both Ada and C, automake takes .. as a subdirectory and would ++# create objects like ../gcc/ada/libgnatvsn_la_link.o, interfering with ++# parent directories (some warnings say that subdir-objects will ++# become the default in the future). ++# Both problems disappear for C headers. ++BUILT_SOURCES = $(ada_sources) $(c) $(c_gcc) ++ ++######### ++# Compile ++ ++# C headers are mentioned here for dependency tracking. ++libgnatvsn_la_SOURCES = $(ada_sources) $(c) $(c_gcc) $(h_gcc) ++ ++# So that version.c sees version.h. ++libgnatvsn_la_CPPFLAGS = -I$(srcdir)/../gcc ++ ++# The Makefiles of other Ada components seem to imply that ++# CFLAGS and ADA_CFLAGS should affect both Ada and C. ++libgnatvsn_la_CFLAGS = $(ADA_CFLAGS) ++ ++# According to libtool documentation, something like ++# .ads.o: ++# $(CC) -c -o $@ $< ++# should cause Automake, for each .adb listed in SOURCES, to ++# * add .lo to DEPENDENCIES ++# * embed the .lo into the libraries without explicit LIBADD ++# * write a libtool compilation recipe wrapping the one above ++# This seems to work for executables, but not for libraries. ++# Tracked at https://bugs.debian.org/940263. ++ ++# Normal units require both .ad[bs] files, the source is then .adb. ++# When the language forbids a body, GCC accepts the .ads as argument instead. ++# Single .adb without .ads are separate bodies and can be ignored here. ++lo_adb = $(adbs:.adb=.lo) $(adbs_gen:.adb=.lo) ++lo_ads = $(ads:.ads=.lo) ++lo_ada = $(lo_adb) $(lo_ads) ++ ++# Blindly recompile all Ada sources whenever one of them changes. ++# Teaching Make the dependencies would bring little benefit here. ++LTADACOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC \ ++ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) \ ++ -gnatn $(rtl_adaflags) \ ++ $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) ++ ++ ++# Each compilation produces a .ali file in addition to the .o file, ++# but libtool does know about it so we have to remove it manually. ++cleanfiles_ali = $(lo_ada:.lo=.ali) ++# The shared library also produces .ali files, but they will be ++# removed with the .libs/ subdirectory. ++ ++# Remove an empty directory left by libtool. ++cleandirs_deps = .deps ++ ++######################### ++# Link the shared library ++EXTRA_libgnatvsn_la_DEPENDENCIES = $(lo_ada) ++libgnatvsn_la_LIBADD = $(rtl_libadd) $(lo_ada) $(LIBATOMIC) ++libgnatvsn_la_LDFLAGS = \ ++ -version-info $(gcc_base_version) \ ++ -Wl,--as-needed -Wl,-z,defs ++ ++cleandirs_lib_for_gnat_tools = lib-for-gnat-tools ++ ++################# ++# Install sources ++ ++# C sources are not necessary, but convenient when debugging. ++pkgadaincludedir = $(datadir)/ada/adainclude/$(PACKAGE) ++pkgadainclude_DATA = $(ada_sources) $(c) $(c_gcc) $(h_gcc) ++ ++# The installation directory is specific to this package. ++uninstall_removedir_sources = '$(DESTDIR)$(pkgadaincludedir)' ++ ++################################# ++# Install Ada Library Information ++ ++# With GNAT conventions, .ali files must be read-only for the library ++# being preferred over recompilation of unavailable objects. ++pkgexecalidir = $(libdir)/ada/adalib/$(PACKAGE) ++ ++# The installation directory is specific to this package. ++uninstall_removedir_ali = '$(DESTDIR)$(pkgexecalidir)' ++ ++################## ++# GPRBuild project ++ ++# Gnatvsn will one day be renamed to Gnat_Util, prepare the transition. ++gprdir = $(datadir)/gpr ++gpr_DATA = gnatvsn.gpr gnat_util.gpr ++cleanfiles_gpr = $(gpr_DATA) ++ ++############################# ++CLEANFILES = $(cleanfiles_ali) $(cleanfiles_gpr) ++all: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++am--refresh: Makefile ++ @: ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ ++ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ ++ $(am__cd) $(top_srcdir) && \ ++ $(AUTOMAKE) --foreign Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ $(SHELL) ./config.status --recheck ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++ $(am__cd) $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++$(am__aclocal_m4_deps): ++ ++install-libLTLIBRARIES: $(lib_LTLIBRARIES) ++ @$(NORMAL_INSTALL) ++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ ++ list2=; for p in $$list; do \ ++ if test -f $$p; then \ ++ list2="$$list2 $$p"; \ ++ else :; fi; \ ++ done; \ ++ test -z "$$list2" || { \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ ++ } ++ ++uninstall-libLTLIBRARIES: ++ @$(NORMAL_UNINSTALL) ++ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ ++ for p in $$list; do \ ++ $(am__strip_dir) \ ++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ ++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ ++ done ++ ++clean-libLTLIBRARIES: ++ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ++ @list='$(lib_LTLIBRARIES)'; \ ++ locs=`for p in $$list; do echo $$p; done | \ ++ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ ++ sort -u`; \ ++ test -z "$$locs" || { \ ++ echo rm -f $${locs}; \ ++ rm -f $${locs}; \ ++ } ++ ++libgnatvsn.la: $(libgnatvsn_la_OBJECTS) $(libgnatvsn_la_DEPENDENCIES) $(EXTRA_libgnatvsn_la_DEPENDENCIES) ++ $(AM_V_CCLD)$(libgnatvsn_la_LINK) -rpath $(libdir) $(libgnatvsn_la_OBJECTS) $(libgnatvsn_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnatvsn_la-link.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnatvsn_la-version.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ ++@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ ++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ ++@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ ++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ ++@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ++ ++libgnatvsn_la-link.lo: link.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgnatvsn_la_CPPFLAGS) $(CPPFLAGS) $(libgnatvsn_la_CFLAGS) $(CFLAGS) -MT libgnatvsn_la-link.lo -MD -MP -MF $(DEPDIR)/libgnatvsn_la-link.Tpo -c -o libgnatvsn_la-link.lo `test -f 'link.c' || echo '$(srcdir)/'`link.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnatvsn_la-link.Tpo $(DEPDIR)/libgnatvsn_la-link.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='link.c' object='libgnatvsn_la-link.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgnatvsn_la_CPPFLAGS) $(CPPFLAGS) $(libgnatvsn_la_CFLAGS) $(CFLAGS) -c -o libgnatvsn_la-link.lo `test -f 'link.c' || echo '$(srcdir)/'`link.c ++ ++libgnatvsn_la-version.lo: version.c ++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgnatvsn_la_CPPFLAGS) $(CPPFLAGS) $(libgnatvsn_la_CFLAGS) $(CFLAGS) -MT libgnatvsn_la-version.lo -MD -MP -MF $(DEPDIR)/libgnatvsn_la-version.Tpo -c -o libgnatvsn_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c ++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnatvsn_la-version.Tpo $(DEPDIR)/libgnatvsn_la-version.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='version.c' object='libgnatvsn_la-version.lo' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgnatvsn_la_CPPFLAGS) $(CPPFLAGS) $(libgnatvsn_la_CFLAGS) $(CFLAGS) -c -o libgnatvsn_la-version.lo `test -f 'version.c' || echo '$(srcdir)/'`version.c ++ ++mostlyclean-libtool: ++ -rm -f *.lo ++ ++clean-libtool: ++ -rm -rf .libs _libs ++ ++distclean-libtool: ++ -rm -f libtool config.lt ++install-gprDATA: $(gpr_DATA) ++ @$(NORMAL_INSTALL) ++ @list='$(gpr_DATA)'; test -n "$(gprdir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(gprdir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(gprdir)" || exit 1; \ ++ fi; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(gprdir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(gprdir)" || exit $$?; \ ++ done ++ ++uninstall-gprDATA: ++ @$(NORMAL_UNINSTALL) ++ @list='$(gpr_DATA)'; test -n "$(gprdir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ dir='$(DESTDIR)$(gprdir)'; $(am__uninstall_files_from_dir) ++install-pkgadaincludeDATA: $(pkgadainclude_DATA) ++ @$(NORMAL_INSTALL) ++ @list='$(pkgadainclude_DATA)'; test -n "$(pkgadaincludedir)" || list=; \ ++ if test -n "$$list"; then \ ++ echo " $(MKDIR_P) '$(DESTDIR)$(pkgadaincludedir)'"; \ ++ $(MKDIR_P) "$(DESTDIR)$(pkgadaincludedir)" || exit 1; \ ++ fi; \ ++ for p in $$list; do \ ++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ++ echo "$$d$$p"; \ ++ done | $(am__base_list) | \ ++ while read files; do \ ++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgadaincludedir)'"; \ ++ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgadaincludedir)" || exit $$?; \ ++ done ++ ++uninstall-pkgadaincludeDATA: ++ @$(NORMAL_UNINSTALL) ++ @list='$(pkgadainclude_DATA)'; test -n "$(pkgadaincludedir)" || list=; \ ++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ ++ dir='$(DESTDIR)$(pkgadaincludedir)'; $(am__uninstall_files_from_dir) ++ ++ID: $(am__tagged_files) ++ $(am__define_uniq_tagged_files); mkid -fID $$unique ++tags: tags-am ++TAGS: tags ++ ++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ set x; \ ++ here=`pwd`; \ ++ $(am__define_uniq_tagged_files); \ ++ shift; \ ++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ if test $$# -gt 0; then \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ "$$@" $$unique; \ ++ else \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$unique; \ ++ fi; \ ++ fi ++ctags: ctags-am ++ ++CTAGS: ctags ++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) ++ $(am__define_uniq_tagged_files); \ ++ test -z "$(CTAGS_ARGS)$$unique" \ ++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++ $$unique ++ ++GTAGS: ++ here=`$(am__cd) $(top_builddir) && pwd` \ ++ && $(am__cd) $(top_srcdir) \ ++ && gtags -i $(GTAGS_ARGS) "$$here" ++cscope: cscope.files ++ test ! -s cscope.files \ ++ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) ++clean-cscope: ++ -rm -f cscope.files ++cscope.files: clean-cscope cscopelist ++cscopelist: cscopelist-am ++ ++cscopelist-am: $(am__tagged_files) ++ list='$(am__tagged_files)'; \ ++ case "$(srcdir)" in \ ++ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ ++ *) sdir=$(subdir)/$(srcdir) ;; \ ++ esac; \ ++ for i in $$list; do \ ++ if test -f "$$i"; then \ ++ echo "$(subdir)/$$i"; \ ++ else \ ++ echo "$$sdir/$$i"; \ ++ fi; \ ++ done >> $(top_builddir)/cscope.files ++ ++distclean-tags: ++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files ++check-am: all-am ++check: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) check-am ++all-am: Makefile $(LTLIBRARIES) $(DATA) all-local ++installdirs: ++ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(gprdir)" "$(DESTDIR)$(pkgadaincludedir)"; do \ ++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ ++ done ++install: $(BUILT_SOURCES) ++ $(MAKE) $(AM_MAKEFLAGS) install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++ if test -z '$(STRIP)'; then \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ install; \ ++ else \ ++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ ++ fi ++mostlyclean-generic: ++ ++clean-generic: ++ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) ++ ++distclean-generic: ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) ++ ++maintainer-clean-generic: ++ @echo "This command is intended for maintainers to use" ++ @echo "it deletes files that may require special tools to rebuild." ++ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) ++clean: clean-am ++ ++clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ ++ mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++html-am: ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-gprDATA install-pkgadaincludeDATA ++ ++install-dvi: install-dvi-am ++ ++install-dvi-am: ++ ++install-exec-am: install-exec-local install-libLTLIBRARIES ++ ++install-html: install-html-am ++ ++install-html-am: ++ ++install-info: install-info-am ++ ++install-info-am: ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-pdf-am: ++ ++install-ps: install-ps-am ++ ++install-ps-am: ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++ mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-gprDATA uninstall-libLTLIBRARIES \ ++ uninstall-local uninstall-pkgadaincludeDATA ++ ++.MAKE: all check install install-am install-strip ++ ++.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ ++ check-am clean clean-cscope clean-generic clean-libLTLIBRARIES \ ++ clean-libtool clean-local cscope cscopelist-am ctags ctags-am \ ++ distclean distclean-compile distclean-generic \ ++ distclean-libtool distclean-tags dvi dvi-am html html-am info \ ++ info-am install install-am install-data install-data-am \ ++ install-dvi install-dvi-am install-exec install-exec-am \ ++ install-exec-local install-gprDATA install-html \ ++ install-html-am install-info install-info-am \ ++ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ ++ install-pkgadaincludeDATA install-ps install-ps-am \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \ ++ uninstall-gprDATA uninstall-libLTLIBRARIES uninstall-local \ ++ uninstall-pkgadaincludeDATA ++ ++.PRECIOUS: Makefile ++ ++ ++# No prerequisite, symbolic links have no timestamps on their own. ++$(adbs) $(adbs:.adb=.ads) $(adb) $(ads) $(c): ++ $(LN_S) $(srcdir)/../gcc/ada/$@ . ++$(adbs_gen) $(adbs_gen:.adb=.ads): ++ $(LN_S) ../../gcc/ada/$@ . ++$(c_gcc): ++ $(LN_S) $(srcdir)/../gcc/$@ . ++$(lo_adb): $(ada_sources) ++ $(LTADACOMPILE) -c -o $@ $(@:.lo=.adb) ++$(lo_ads): $(ada_sources) ++ $(LTADACOMPILE) -c -o $@ $(@:.lo=.ads) ++ ++################################## ++# Prepare later link of GNAT tools ++ ++# GNAT tools like to find all gnatvsn stuff in one directory, but ++# '.' already contains static .o and static read-and-write .ali. ++all-local: lib-for-gnat-tools ++lib-for-gnat-tools: libgnatvsn.la ++ rm -fr $@ ++ mkdir $@ ++ $(INSTALL) -m 444 .libs/*.ali $@ ++ cd $@ && $(LN_S) ../*.ad[bs] ../.libs/libgnatvsn.so* . ++# pkgexecali_DATA would require an explicit list prefixed with .libs/, ++# and the mode needs to be fixed anyway. ++ ++install-exec-local: ++ $(MKDIR_P) '$(DESTDIR)$(pkgexecalidir)' ++ $(INSTALL) -m 444 .libs/*.ali '$(DESTDIR)$(pkgexecalidir)' ++ ++gnatvsn.gpr: $(srcdir)/gnatvsn.gpr.in Makefile ++ $(SED) \ ++ -e 's|@PACKAGE[@]|$(PACKAGE)|' \ ++ -e 's|@libdir[@]|$(libdir)|' \ ++ -e 's|@pkgadaincludedir[@]|$(pkgadaincludedir)|' \ ++ -e 's|@pkgexecalidir[@]|$(pkgexecalidir)|' \ ++ $< > $@ ++ ++gnat_util.gpr: gnatvsn.gpr ++ $(SED) s/Gnatvsn/Gnat_Util/ $< > $@ ++clean-local: ++ rm -fr $(cleandirs_deps) $(cleandirs_lib_for_gnat_tools) ++uninstall-local: ++ rm -fr $(uninstall_removedir_sources) $(uninstall_removedir_ali) ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +--- /dev/null ++++ b/src/libgnatvsn/aclocal.m4 +@@ -0,0 +1,1238 @@ ++# generated automatically by aclocal 1.15.1 -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++ ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, ++[m4_warning([this file was generated for autoconf 2.69. ++You have another version of autoconf. It may work, but is not guaranteed to. ++If you have problems, you may need to regenerate the build system entirely. ++To do so, use the procedure documented by the package, typically 'autoreconf'.])]) ++ ++# Copyright (C) 2002-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_AUTOMAKE_VERSION(VERSION) ++# ---------------------------- ++# Automake X.Y traces this macro to ensure aclocal.m4 has been ++# generated from the m4 files accompanying Automake X.Y. ++# (This private macro should not be called outside this file.) ++AC_DEFUN([AM_AUTOMAKE_VERSION], ++[am__api_version='1.15' ++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to ++dnl require some minimum version. Point them to the right macro. ++m4_if([$1], [1.15.1], [], ++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ++]) ++ ++# _AM_AUTOCONF_VERSION(VERSION) ++# ----------------------------- ++# aclocal traces this macro to find the Autoconf version. ++# This is a private macro too. Using m4_define simplifies ++# the logic in aclocal, which can simply ignore this definition. ++m4_define([_AM_AUTOCONF_VERSION], []) ++ ++# AM_SET_CURRENT_AUTOMAKE_VERSION ++# ------------------------------- ++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. ++# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. ++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ++[AM_AUTOMAKE_VERSION([1.15.1])dnl ++m4_ifndef([AC_AUTOCONF_VERSION], ++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl ++_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) ++ ++# Copyright (C) 2011-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_AR([ACT-IF-FAIL]) ++# ------------------------- ++# Try to determine the archiver interface, and trigger the ar-lib wrapper ++# if it is needed. If the detection of archiver interface fails, run ++# ACT-IF-FAIL (default is to abort configure with a proper error message). ++AC_DEFUN([AM_PROG_AR], ++[AC_BEFORE([$0], [LT_INIT])dnl ++AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl ++AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([ar-lib])dnl ++AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) ++: ${AR=ar} ++ ++AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], ++ [AC_LANG_PUSH([C]) ++ am_cv_ar_interface=ar ++ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], ++ [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' ++ AC_TRY_EVAL([am_ar_try]) ++ if test "$ac_status" -eq 0; then ++ am_cv_ar_interface=ar ++ else ++ am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' ++ AC_TRY_EVAL([am_ar_try]) ++ if test "$ac_status" -eq 0; then ++ am_cv_ar_interface=lib ++ else ++ am_cv_ar_interface=unknown ++ fi ++ fi ++ rm -f conftest.lib libconftest.a ++ ]) ++ AC_LANG_POP([C])]) ++ ++case $am_cv_ar_interface in ++ar) ++ ;; ++lib) ++ # Microsoft lib, so override with the ar-lib wrapper script. ++ # FIXME: It is wrong to rewrite AR. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__AR in this case, ++ # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something ++ # similar. ++ AR="$am_aux_dir/ar-lib $AR" ++ ;; ++unknown) ++ m4_default([$1], ++ [AC_MSG_ERROR([could not determine $AR interface])]) ++ ;; ++esac ++AC_SUBST([AR])dnl ++]) ++ ++# AM_AUX_DIR_EXPAND -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to ++# '$srcdir', '$srcdir/..', or '$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is '.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. ++ ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl ++# Expand $ac_aux_dir to an absolute path. ++am_aux_dir=`cd "$ac_aux_dir" && pwd` ++]) ++ ++# AM_CONDITIONAL -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ([2.52])dnl ++ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE])dnl ++AC_SUBST([$1_FALSE])dnl ++_AM_SUBST_NOTMAKE([$1_TRUE])dnl ++_AM_SUBST_NOTMAKE([$1_FALSE])dnl ++m4_define([_AM_COND_VALUE_$1], [$2])dnl ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' ++else ++ $1_TRUE='#' ++ $1_FALSE= ++fi ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++ ++ ++# _AM_DEPENDENCIES(NAME) ++# ---------------------- ++# See how the compiler implements dependency checking. ++# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". ++# We try a few techniques and use that to set a single cache variable. ++# ++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ++# dependency, and given that the user is not expected to run this macro, ++# just rely on AC_PROG_CC. ++AC_DEFUN([_AM_DEPENDENCIES], ++[AC_REQUIRE([AM_SET_DEPDIR])dnl ++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ++AC_REQUIRE([AM_MAKE_INCLUDE])dnl ++AC_REQUIRE([AM_DEP_TRACK])dnl ++ ++m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], ++ [$1], [CXX], [depcc="$CXX" am_compiler_list=], ++ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ++ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], ++ [$1], [UPC], [depcc="$UPC" am_compiler_list=], ++ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ++ [depcc="$$1" am_compiler_list=]) ++ ++AC_CACHE_CHECK([dependency style of $depcc], ++ [am_cv_$1_dependencies_compiler_type], ++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ++ # We make a subdir and do the tests there. Otherwise we can end up ++ # making bogus files that we don't know about and never remove. For ++ # instance it was reported that on HP-UX the gcc test will end up ++ # making a dummy file named 'D' -- because '-MD' means "put the output ++ # in D". ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ # Copy depcomp to subdir because otherwise we won't find it if we're ++ # using a relative directory. ++ cp "$am_depcomp" conftest.dir ++ cd conftest.dir ++ # We will build objects and dependencies in a subdirectory because ++ # it helps to detect inapplicable dependency modes. For instance ++ # both Tru64's cc and ICC support -MD to output dependencies as a ++ # side effect of compilation, but ICC will put the dependencies in ++ # the current directory while Tru64 will put them in the object ++ # directory. ++ mkdir sub ++ ++ am_cv_$1_dependencies_compiler_type=none ++ if test "$am_compiler_list" = ""; then ++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ++ fi ++ am__universal=false ++ m4_case([$1], [CC], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac], ++ [CXX], ++ [case " $depcc " in #( ++ *\ -arch\ *\ -arch\ *) am__universal=true ;; ++ esac]) ++ ++ for depmode in $am_compiler_list; do ++ # Setup a source with many dependencies, because some compilers ++ # like to wrap large dependency lists on column 80 (with \), and ++ # we should not choose a depcomp mode which is confused by this. ++ # ++ # We need to recreate these files for each test, as the compiler may ++ # overwrite some of them when testing with obscure command lines. ++ # This happens at least with the AIX C compiler. ++ : > sub/conftest.c ++ for i in 1 2 3 4 5 6; do ++ echo '#include "conftst'$i'.h"' >> sub/conftest.c ++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with ++ # Solaris 10 /bin/sh. ++ echo '/* dummy */' > sub/conftst$i.h ++ done ++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf ++ ++ # We check with '-c' and '-o' for the sake of the "dashmstdout" ++ # mode. It turns out that the SunPro C++ compiler does not properly ++ # handle '-M -o', and we need to detect this. Also, some Intel ++ # versions had trouble with output in subdirs. ++ am__obj=sub/conftest.${OBJEXT-o} ++ am__minus_obj="-o $am__obj" ++ case $depmode in ++ gcc) ++ # This depmode causes a compiler race in universal mode. ++ test "$am__universal" = false || continue ++ ;; ++ nosideeffect) ++ # After this tag, mechanisms are not by side-effect, so they'll ++ # only be used when explicitly requested. ++ if test "x$enable_dependency_tracking" = xyes; then ++ continue ++ else ++ break ++ fi ++ ;; ++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) ++ # This compiler won't grok '-c -o', but also, the minuso test has ++ # not run yet. These depmodes are late enough in the game, and ++ # so weak that their functioning should not be impacted. ++ am__obj=conftest.${OBJEXT-o} ++ am__minus_obj= ++ ;; ++ none) break ;; ++ esac ++ if depmode=$depmode \ ++ source=sub/conftest.c object=$am__obj \ ++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ ++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ ++ >/dev/null 2>conftest.err && ++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && ++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && ++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ++ # icc doesn't choke on unknown options, it will just issue warnings ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) ++ ++ ++# AM_SET_DEPDIR ++# ------------- ++# Choose a directory name for dependency files. ++# This macro is AC_REQUIREd in _AM_DEPENDENCIES. ++AC_DEFUN([AM_SET_DEPDIR], ++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) ++ ++ ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE([dependency-tracking], [dnl ++AS_HELP_STRING( ++ [--enable-dependency-tracking], ++ [do not reject slow dependency extractors]) ++AS_HELP_STRING( ++ [--disable-dependency-tracking], ++ [speeds up one-time build])]) ++if test "x$enable_dependency_tracking" != xno; then ++ am_depcomp="$ac_aux_dir/depcomp" ++ AMDEPBACKSLASH='\' ++ am__nodep='_no' ++fi ++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ++AC_SUBST([AMDEPBACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ++AC_SUBST([am__nodep])dnl ++_AM_SUBST_NOTMAKE([am__nodep])dnl ++]) ++ ++# Generate code to set up dependency tracking. -*- Autoconf -*- ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++ ++# _AM_OUTPUT_DEPENDENCY_COMMANDS ++# ------------------------------ ++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ++[{ ++ # Older Autoconf quotes --file arguments for eval, but not when files ++ # are listed without --file. Let's play safe and only enable the eval ++ # if we detect the quoting. ++ case $CONFIG_FILES in ++ *\'*) eval set x "$CONFIG_FILES" ;; ++ *) set x $CONFIG_FILES ;; ++ esac ++ shift ++ for mf ++ do ++ # Strip MF so we end up with the name of the file. ++ mf=`echo "$mf" | sed -e 's/:.*$//'` ++ # Check whether this is an Automake generated Makefile or not. ++ # We used to match only the files named 'Makefile.in', but ++ # some people rename them; so instead we look at the file content. ++ # Grep'ing the first line is not enough: some people post-process ++ # each Makefile.in and add a new line on top of each file to say so. ++ # Grep'ing the whole file is not good either: AIX grep has a line ++ # limit of 2048, but all sed's we know have understand at least 4000. ++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then ++ dirpart=`AS_DIRNAME("$mf")` ++ else ++ continue ++ fi ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running 'make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "$am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ ++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do ++ # Make sure the directory exists. ++ test -f "$dirpart/$file" && continue ++ fdir=`AS_DIRNAME(["$file"])` ++ AS_MKDIR_P([$dirpart/$fdir]) ++ # echo "creating $dirpart/$file" ++ echo '# dummy' > "$dirpart/$file" ++ done ++ done ++} ++])# _AM_OUTPUT_DEPENDENCY_COMMANDS ++ ++ ++# AM_OUTPUT_DEPENDENCY_COMMANDS ++# ----------------------------- ++# This macro should only be invoked once -- use via AC_REQUIRE. ++# ++# This code is only required when automatic dependency tracking ++# is enabled. FIXME. This creates each '.P' file that we will ++# need in order to bootstrap the dependency handling code. ++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ++[AC_CONFIG_COMMANDS([depfiles], ++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ++]) ++ ++# Do all the work for Automake. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This macro actually does too much. Some checks are only needed if ++# your package does certain things. But this isn't really a big deal. ++ ++dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. ++m4_define([AC_PROG_CC], ++m4_defn([AC_PROG_CC]) ++[_AM_PROG_CC_C_O ++]) ++ ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.65])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++if test "`cd $srcdir && pwd`" != "`pwd`"; then ++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output ++ # is not polluted with repeated "-I." ++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl ++ # test to see if srcdir already configured ++ if test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++ fi ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[AC_DIAGNOSE([obsolete], ++ [$0: two- and three-arguments forms are deprecated.]) ++m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. ++m4_if( ++ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), ++ [ok:ok],, ++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) ++ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) ++AM_MISSING_PROG([AUTOCONF], [autoconf]) ++AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) ++AM_MISSING_PROG([AUTOHEADER], [autoheader]) ++AM_MISSING_PROG([MAKEINFO], [makeinfo]) ++AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl ++AC_REQUIRE([AC_PROG_MKDIR_P])dnl ++# For better backward compatibility. To be removed once Automake 1.9.x ++# dies out for good. For more background, see: ++# ++# ++AC_SUBST([mkdir_p], ['$(MKDIR_P)']) ++# We need awk for the "check" target (and possibly the TAP driver). The ++# system "awk" is bad on some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES([CC])], ++ [m4_define([AC_PROG_CC], ++ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES([CXX])], ++ [m4_define([AC_PROG_CXX], ++ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJC], ++ [_AM_DEPENDENCIES([OBJC])], ++ [m4_define([AC_PROG_OBJC], ++ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], ++ [_AM_DEPENDENCIES([OBJCXX])], ++ [m4_define([AC_PROG_OBJCXX], ++ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ++]) ++AC_REQUIRE([AM_SILENT_RULES])dnl ++dnl The testsuite driver may need to know about EXEEXT, so add the ++dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This ++dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. ++AC_CONFIG_COMMANDS_PRE(dnl ++[m4_provide_if([_AM_COMPILER_EXEEXT], ++ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ++ ++# POSIX will say in a future version that running "rm -f" with no argument ++# is OK; and we want to be able to make that assumption in our Makefile ++# recipes. So use an aggressive probe to check that the usage we want is ++# actually supported "in the wild" to an acceptable degree. ++# See automake bug#10828. ++# To make any issue more visible, cause the running configure to be aborted ++# by default if the 'rm' program in use doesn't match our expectations; the ++# user can still override this though. ++if rm -f && rm -fr && rm -rf; then : OK; else ++ cat >&2 <<'END' ++Oops! ++ ++Your 'rm' program seems unable to run without file operands specified ++on the command line, even when the '-f' option is present. This is contrary ++to the behaviour of most rm programs out there, and not conforming with ++the upcoming POSIX standard: ++ ++Please tell bug-automake@gnu.org about your system, including the value ++of your $PATH and any error possibly output before this message. This ++can help us improve future automake versions. ++ ++END ++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then ++ echo 'Configuration will proceed anyway, since you have set the' >&2 ++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 ++ echo >&2 ++ else ++ cat >&2 <<'END' ++Aborting the configuration process, to ensure you take notice of the issue. ++ ++You can download and install GNU coreutils to get an 'rm' implementation ++that behaves properly: . ++ ++If you want to complete the configuration process using your problematic ++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM ++to "yes", and re-run configure. ++ ++END ++ AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) ++ fi ++fi ++dnl The trailing newline in this macro's definition is deliberate, for ++dnl backward compatibility and to allow trailing 'dnl'-style comments ++dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ++]) ++ ++dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not ++dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further ++dnl mangled by Autoconf and run in a shell conditional statement. ++m4_define([_AC_COMPILER_EXEEXT], ++m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) ++ ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_arg=$1 ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $_am_arg | $_am_arg:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++if test x"${install_sh+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; ++ *) ++ install_sh="\${SHELL} $am_aux_dir/install-sh" ++ esac ++fi ++AC_SUBST([install_sh])]) ++ ++# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- ++# From Jim Meyering ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAINTAINER_MODE([DEFAULT-MODE]) ++# ---------------------------------- ++# Control maintainer-specific portions of Makefiles. ++# Default is to disable them, unless 'enable' is passed literally. ++# For symmetry, 'disable' may be passed as well. Anyway, the user ++# can override the default with the --enable/--disable switch. ++AC_DEFUN([AM_MAINTAINER_MODE], ++[m4_case(m4_default([$1], [disable]), ++ [enable], [m4_define([am_maintainer_other], [disable])], ++ [disable], [m4_define([am_maintainer_other], [enable])], ++ [m4_define([am_maintainer_other], [enable]) ++ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) ++AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) ++ dnl maintainer-mode's default is 'disable' unless 'enable' is passed ++ AC_ARG_ENABLE([maintainer-mode], ++ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], ++ am_maintainer_other[ make rules and dependencies not useful ++ (and sometimes confusing) to the casual installer])], ++ [USE_MAINTAINER_MODE=$enableval], ++ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) ++ AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ++ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) ++ MAINT=$MAINTAINER_MODE_TRUE ++ AC_SUBST([MAINT])dnl ++] ++) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo this is the am__doit target ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# Ignore all kinds of additional output from 'make'. ++case `$am_make -s -f confmf 2> /dev/null` in #( ++*the\ am__doit\ target*) ++ am__include=include ++ am__quote= ++ _am_result=GNU ++ ;; ++esac ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ case `$am_make -s -f confmf 2> /dev/null` in #( ++ *the\ am__doit\ target*) ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ ;; ++ esac ++fi ++AC_SUBST([am__include]) ++AC_SUBST([am__quote]) ++AC_MSG_RESULT([$_am_result]) ++rm -f confinc confmf ++]) ++ ++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- ++ ++# Copyright (C) 1997-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it is modern enough. ++# If it is, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([missing])dnl ++if test x"${MISSING+set}" != xset; then ++ case $am_aux_dir in ++ *\ * | *\ *) ++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; ++ *) ++ MISSING="\${SHELL} $am_aux_dir/missing" ;; ++ esac ++fi ++# Use eval to expand $SHELL ++if eval "$MISSING --is-lightweight"; then ++ am_missing_run="$MISSING " ++else ++ am_missing_run= ++ AC_MSG_WARN(['missing' script is too old or missing]) ++fi ++]) ++ ++# Helper functions for option handling. -*- Autoconf -*- ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++ ++# _AM_SET_OPTION(NAME) ++# -------------------- ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ------------------------ ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ++ ++# Copyright (C) 1999-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_CC_C_O ++# --------------- ++# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC ++# to automatically call this. ++AC_DEFUN([_AM_PROG_CC_C_O], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++AC_REQUIRE_AUX_FILE([compile])dnl ++AC_LANG_PUSH([C])dnl ++AC_CACHE_CHECK( ++ [whether $CC understands -c and -o together], ++ [am_cv_prog_cc_c_o], ++ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) ++ # Make sure it works both with $CC and with simple cc. ++ # Following AC_PROG_CC_C_O, we do the test twice because some ++ # compilers refuse to overwrite an existing .o file with -o, ++ # though they will create one. ++ am_cv_prog_cc_c_o=yes ++ for am_i in 1 2; do ++ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ ++ && test -f conftest2.$ac_objext; then ++ : OK ++ else ++ am_cv_prog_cc_c_o=no ++ break ++ fi ++ done ++ rm -f core conftest* ++ unset am_i]) ++if test "$am_cv_prog_cc_c_o" != yes; then ++ # Losing compiler, so override with the script. ++ # FIXME: It is wrong to rewrite CC. ++ # But if we don't then we get into trouble of one sort or another. ++ # A longer-term fix would be to have automake use am__CC in this case, ++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" ++ CC="$am_aux_dir/compile $CC" ++fi ++AC_LANG_POP([C])]) ++ ++# For backward compatibility. ++AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_RUN_LOG(COMMAND) ++# ------------------- ++# Run COMMAND, save the exit status in ac_status, and log it. ++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) ++AC_DEFUN([AM_RUN_LOG], ++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ++ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD ++ (exit $ac_status); }]) ++ ++# Check to make sure that the build environment is sane. -*- Autoconf -*- ++ ++# Copyright (C) 1996-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Reject unsafe characters in $srcdir or the absolute working directory ++# name. Accept space and tab only in the latter. ++am_lf=' ++' ++case `pwd` in ++ *[[\\\"\#\$\&\'\`$am_lf]]*) ++ AC_MSG_ERROR([unsafe absolute working directory name]);; ++esac ++case $srcdir in ++ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) ++ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; ++esac ++ ++# Do 'set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ am_has_slept=no ++ for am_try in 1 2; do ++ echo "timestamp, slept: $am_has_slept" > conftest.file ++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t "$srcdir/configure" conftest.file` ++ fi ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++ alias in your environment]) ++ fi ++ if test "$[2]" = conftest.file || test $am_try -eq 2; then ++ break ++ fi ++ # Just in case. ++ sleep 1 ++ am_has_slept=yes ++ done ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT([yes]) ++# If we didn't sleep, we still need to ensure time stamps of config.status and ++# generated files are strictly newer. ++am_sleep_pid= ++if grep 'slept: no' conftest.file >/dev/null 2>&1; then ++ ( sleep 1 ) & ++ am_sleep_pid=$! ++fi ++AC_CONFIG_COMMANDS_PRE( ++ [AC_MSG_CHECKING([that generated files are newer than configure]) ++ if test -n "$am_sleep_pid"; then ++ # Hide warnings about reused PIDs. ++ wait $am_sleep_pid 2>/dev/null ++ fi ++ AC_MSG_RESULT([done])]) ++rm -f conftest.file ++]) ++ ++# Copyright (C) 2009-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_SILENT_RULES([DEFAULT]) ++# -------------------------- ++# Enable less verbose build rules; with the default set to DEFAULT ++# ("yes" being less verbose, "no" or empty being verbose). ++AC_DEFUN([AM_SILENT_RULES], ++[AC_ARG_ENABLE([silent-rules], [dnl ++AS_HELP_STRING( ++ [--enable-silent-rules], ++ [less verbose build output (undo: "make V=1")]) ++AS_HELP_STRING( ++ [--disable-silent-rules], ++ [verbose build output (undo: "make V=0")])dnl ++]) ++case $enable_silent_rules in @%:@ ((( ++ yes) AM_DEFAULT_VERBOSITY=0;; ++ no) AM_DEFAULT_VERBOSITY=1;; ++ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; ++esac ++dnl ++dnl A few 'make' implementations (e.g., NonStop OS and NextStep) ++dnl do not support nested variable expansions. ++dnl See automake bug#9928 and bug#10237. ++am_make=${MAKE-make} ++AC_CACHE_CHECK([whether $am_make supports nested variables], ++ [am_cv_make_support_nested_variables], ++ [if AS_ECHO([['TRUE=$(BAR$(V)) ++BAR0=false ++BAR1=true ++V=1 ++am__doit: ++ @$(TRUE) ++.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then ++ am_cv_make_support_nested_variables=yes ++else ++ am_cv_make_support_nested_variables=no ++fi]) ++if test $am_cv_make_support_nested_variables = yes; then ++ dnl Using '$V' instead of '$(V)' breaks IRIX make. ++ AM_V='$(V)' ++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' ++else ++ AM_V=$AM_DEFAULT_VERBOSITY ++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY ++fi ++AC_SUBST([AM_V])dnl ++AM_SUBST_NOTMAKE([AM_V])dnl ++AC_SUBST([AM_DEFAULT_V])dnl ++AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl ++AC_SUBST([AM_DEFAULT_VERBOSITY])dnl ++AM_BACKSLASH='\' ++AC_SUBST([AM_BACKSLASH])dnl ++_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ++]) ++ ++# Copyright (C) 2001-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# AM_PROG_INSTALL_STRIP ++# --------------------- ++# One issue with vendor 'install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in "make install-strip", and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using 'strip' when the user ++# run "make install-strip". However 'strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the 'STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) ++ ++# Copyright (C) 2006-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_SUBST_NOTMAKE(VARIABLE) ++# --------------------------- ++# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. ++# This macro is traced by Automake. ++AC_DEFUN([_AM_SUBST_NOTMAKE]) ++ ++# AM_SUBST_NOTMAKE(VARIABLE) ++# -------------------------- ++# Public sister of _AM_SUBST_NOTMAKE. ++AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) ++ ++# Check how to create a tarball. -*- Autoconf -*- ++ ++# Copyright (C) 2004-2017 Free Software Foundation, Inc. ++# ++# This file is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of 'v7', 'ustar', or 'pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++# ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. Yes, it's still used ++# in the wild :-( We should find a proper way to deprecate it ... ++AC_SUBST([AMTAR], ['$${TAR-tar}']) ++ ++# We'll loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++ ++m4_if([$1], [v7], ++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], ++ ++ [m4_case([$1], ++ [ustar], ++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields. ++ # There is notably a 21 bits limit for the UID and the GID. In fact, ++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 ++ # and bug#13588). ++ am_max_uid=2097151 # 2^21 - 1 ++ am_max_gid=$am_max_uid ++ # The $UID and $GID variables are not portable, so we need to resort ++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls ++ # below are definitely unexpected, so allow the users to see them ++ # (that is, avoid stderr redirection). ++ am_uid=`id -u || echo unknown` ++ am_gid=`id -g || echo unknown` ++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) ++ if test $am_uid -le $am_max_uid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi ++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) ++ if test $am_gid -le $am_max_gid; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ _am_tools=none ++ fi], ++ ++ [pax], ++ [], ++ ++ [m4_fatal([Unknown tar format])]) ++ ++ AC_MSG_CHECKING([how to create a $1 tar archive]) ++ ++ # Go ahead even if we have the value already cached. We do so because we ++ # need to set the values for the 'am__tar' and 'am__untar' variables. ++ _am_tools=${am_cv_prog_tar_$1-$_am_tools} ++ ++ for _am_tool in $_am_tools; do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; ++ esac ++ ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break ++ ++ # tar/untar a dummy directory, and stop if the command works. ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break ++ fi ++ done ++ rm -rf conftest.dir ++ ++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++ AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++ ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR ++ ++m4_include([../libtool.m4]) ++m4_include([../ltoptions.m4]) ++m4_include([../ltsugar.m4]) ++m4_include([../ltversion.m4]) ++m4_include([../lt~obsolete.m4]) ++m4_include([../config/depstand.m4]) ++m4_include([../config/lead-dot.m4]) ++m4_include([../config/lthostflags.m4]) ++m4_include([../config/override.m4]) diff --git a/patches/ada-link-lib.diff b/patches/ada-link-lib.diff new file mode 100644 index 0000000..0f126c0 --- /dev/null +++ b/patches/ada-link-lib.diff @@ -0,0 +1,183 @@ +Description: adapt libgnat build for Debian + Don't include a runtime link path (-rpath), when linking binaries. + . + Build the shared libraries on hppa-linux (see #786692 below). + TODO: ask the reporter (no porterbox) to attempt a rebuild without this + chunk, now that we diverge less from upstream. + . + Instead of building libada as a target library only, build it as + both a host and, if different, target library. + . + Compile with -gnatn, link with --as-needed -z defs. + . + Please read ada-changes-in-autogen-output.diff about src/Makefile.def. +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786692 +Forwarded: not-needed +Author: Ludovic Brenta +Author: Nicolas Boulenguez +Author: Matthias Klose + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -44,7 +44,7 @@ if test "x$cross_compiling/$build/$host" + fi + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/link.c ++++ b/src/gcc/ada/link.c +@@ -107,9 +107,9 @@ const char *__gnat_default_libgcc_subdir + || defined (__NetBSD__) || defined (__OpenBSD__) \ + || defined (__QNX__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +@@ -129,9 +129,9 @@ const char *__gnat_default_libgcc_subdir + + #elif defined (__linux__) || defined (__GLIBC__) + const char *__gnat_object_file_option = "-Wl,@"; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; +-char __gnat_shared_libgcc_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; ++char __gnat_shared_libgcc_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + const char *__gnat_object_library_extension = ".a"; +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -77,10 +77,10 @@ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /, + # by recursive make invocations in gcc/ada/Makefile.in + LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ +- "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ +- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ + "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ + "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG)" \ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -122,7 +122,16 @@ host_modules= { module= libtermcap; no_c + missing=distclean; + missing=maintainer-clean; }; + host_modules= { module= utils; no_check=true; }; +-host_modules= { module= gnattools; }; ++host_modules= { module= gnattools; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= pdf; ++ missing= install-pdf; ++ missing= install-html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= lto-plugin; bootstrap=true; + extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@'; + extra_make_flags='@extra_linker_plugin_flags@'; }; +@@ -165,7 +174,16 @@ target_modules = { module= libgloss; no_ + target_modules = { module= libffi; no_install=true; }; + target_modules = { module= zlib; }; + target_modules = { module= rda; }; +-target_modules = { module= libada; }; ++target_modules = { module= libada; no_install=true; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= pdf; ++ missing= install-html; ++ missing= install-pdf; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgm2; lib_path=.libs; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; +@@ -368,6 +386,7 @@ dependencies = { module=all-libcpp; on=a + + dependencies = { module=all-fixincludes; on=all-libiberty; }; + ++dependencies = { module=all-target-libada; on=all-gcc; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -141,6 +141,11 @@ host_libs="intl libiberty opcodes bfd re + # If --enable-gold is used, "gold" may replace "ld". + host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools" + ++case "${target}" in ++ hppa64-*linux*) ;; ++ *) target_libiberty="target-libiberty";; ++esac ++ + # these libraries are built for the target environment, and are built after + # the host libraries and the host tools (which may be a cross compiler) + # Note that libiberty is not a target library. +@@ -162,6 +167,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ ${target_libiberty} \ + target-libgm2 \ + target-libgo \ + target-libphobos \ +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -45,7 +45,7 @@ RMDIR = rm -rf + + + # Extra flags to pass to recursive makes. +-COMMON_ADAFLAGS= -gnatpg ++COMMON_ADAFLAGS= -gnatpgn + ifeq ($(TREECHECKING),) + CHECKING_ADAFLAGS= + else +@@ -233,7 +233,7 @@ else + endif + + # Strip -Werror during linking for the LTO bootstrap +-GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) ++GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) -Wl,--as-needed -Wl,-z,defs + + GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(LDFLAGS) + GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(LDFLAGS) +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -115,6 +115,7 @@ proc gnat_target_compile { source dest t + global TOOL_OPTIONS + global gnat_target_current + global TEST_ALWAYS_FLAGS ++ global ld_library_path + + # dg-require-effective-target tests must be compiled as C. + if [ string match "*.c" $source ] then { +@@ -144,6 +145,11 @@ proc gnat_target_compile { source dest t + # Always log so compilations can be repeated manually. + verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" + verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" ++ ++ if { ! [ string match "*/libada/adalib*" $ld_library_path ] } { ++ append ld_library_path ":$rtsdir/adalib" ++ set_ld_library_path_env_vars ++ } + } + + lappend options "compiler=$GNAT_UNDER_TEST -q -f" diff --git a/patches/ada-nobiarch-check.diff b/patches/ada-nobiarch-check.diff new file mode 100644 index 0000000..35190a7 --- /dev/null +++ b/patches/ada-nobiarch-check.diff @@ -0,0 +1,21 @@ +Description: For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). +Author: Matthias Klose + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4510,7 +4510,11 @@ + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) ++ if [ "$*" = gnat ]; then \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed -r 's/,-m(32|64|x32)//g;s/,-mabi=(n32|64)//g'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ ++ fi; \ ++ $(RUNTEST) --tool $* $$runtestflags) + + $(patsubst %,%-subtargets,$(filter-out $(lang_checks_parallelized),$(lang_checks))): check-%-subtargets: + @echo check-$* diff --git a/patches/ada-perl-shebang.diff b/patches/ada-perl-shebang.diff new file mode 100644 index 0000000..ea930b1 --- /dev/null +++ b/patches/ada-perl-shebang.diff @@ -0,0 +1,10 @@ +# DP: Fix perl shebang for the gnathtml binary. + +--- a/src/gcc/ada/gnathtml.pl ++++ b/src/gcc/ada/gnathtml.pl +@@ -1,4 +1,4 @@ +-#! /usr/bin/env perl ++#! /usr/bin/perl + + #----------------------------------------------------------------------------- + #- -- diff --git a/patches/ada-repinfo-input.diff b/patches/ada-repinfo-input.diff new file mode 100644 index 0000000..f246df6 --- /dev/null +++ b/patches/ada-repinfo-input.diff @@ -0,0 +1,1594 @@ +Description: [Ada] New Repinfo.Input unit to read back JSON representation info. + ASIS/GPL-2019 depends on repinfo-input.ad[bs] from gnat_util/GPL-2019. + gnat_utils/GPL-2019 duplicates sources from GCC/GPL-2019. + . + In Debian, we avoid code duplication and build gnat_util directly + from GCC-9 sources (under the name gnatvsn for historical reasons). + . + repinfo-input exists in GCC/GPL-2019 but not yet in GCC/9, + so we cherry-pick the upstream commit introducing it. +Origin: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5dc190e5b8095871578958225d5c4ad515417576 + +--- a/src/gcc/ada/alloc.ads ++++ b/src/gcc/ada/alloc.ads +@@ -116,6 +116,9 @@ + Rep_Table_Initial : constant := 1000; -- Repinfo + Rep_Table_Increment : constant := 200; + ++ Rep_JSON_Table_Initial : constant := 10; -- Repinfo ++ Rep_JSON_Table_Increment : constant := 200; ++ + Scope_Stack_Initial : constant := 10; -- Sem + Scope_Stack_Increment : constant := 200; + +--- a/src/gcc/ada/debug.adb ++++ b/src/gcc/ada/debug.adb +@@ -154,7 +154,7 @@ + -- d_g + -- d_h + -- d_i Ignore activations and calls to instances for elaboration +- -- d_j ++ -- d_j Read JSON files and populate Repinfo tables (opposite of -gnatRjs) + -- d_k + -- d_l + -- d_m +@@ -988,6 +988,10 @@ + -- subprogram or task type defined in an external instance for both + -- the static and dynamic elaboration models. + ++ -- d_j The compiler reads JSON files that would be generated by the same ++ -- compilation session if -gnatRjs was passed, in order to populate ++ -- the internal tables of the Repinfo unit from them. ++ + -- d_p The compiler ignores calls to subprograms which verify the run-time + -- semantics of invariants and postconditions in both the static and + -- dynamic elaboration models. +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -355,6 +355,7 @@ + ada/prep.o \ + ada/prepcomp.o \ + ada/put_scos.o \ ++ ada/repinfo-input.o \ + ada/repinfo.o \ + ada/restrict.o \ + ada/rident.o \ +--- a/src/gcc/ada/gnat1drv.adb ++++ b/src/gcc/ada/gnat1drv.adb +@@ -51,6 +51,7 @@ + with Par_SCO; + with Prepcomp; + with Repinfo; ++with Repinfo.Input; + with Restrict; + with Rident; use Rident; + with Rtsfind; +@@ -66,6 +67,7 @@ + with Sem_Type; + with Set_Targ; + with Sinfo; use Sinfo; ++with Sinput; use Sinput; + with Sinput.L; use Sinput.L; + with Snames; use Snames; + with Sprint; use Sprint; +@@ -114,6 +116,12 @@ + -- the information provided by the back end in back annotation of declared + -- entities (e.g. actual size and alignment values chosen by the back end). + ++ procedure Read_JSON_Files_For_Repinfo; ++ -- This procedure exercises the JSON parser of Repinfo by reading back the ++ -- JSON files generated by -gnatRjs in a previous compilation session. It ++ -- is intended to make sure that the JSON generator and the JSON parser are ++ -- kept synchronized when the JSON format evolves. ++ + ---------------------------- + -- Adjust_Global_Switches -- + ---------------------------- +@@ -1037,6 +1045,38 @@ procedure Gnat1drv is + -- end if; + end Post_Compilation_Validation_Checks; + ++ ----------------------------------- ++ -- Read_JSON_Files_For_Repinfo -- ++ ----------------------------------- ++ ++ procedure Read_JSON_Files_For_Repinfo is ++ begin ++ -- This is the same loop construct as in Repinfo.List_Rep_Info ++ ++ for U in Main_Unit .. Last_Unit loop ++ if In_Extended_Main_Source_Unit (Cunit_Entity (U)) then ++ declare ++ Nam : constant String := ++ Get_Name_String (File_Name (Source_Index (U))) & ".json"; ++ Namid : constant File_Name_Type := Name_Enter (Nam); ++ Index : constant Source_File_Index := Load_Config_File (Namid); ++ ++ begin ++ if Index = No_Source_File then ++ Write_Str ("cannot locate "); ++ Write_Line (Nam); ++ raise Unrecoverable_Error; ++ end if; ++ ++ Repinfo.Input.Read_JSON_Stream (Source_Text (Index).all, Nam); ++ exception ++ when Repinfo.Input.Invalid_JSON_Stream => ++ raise Unrecoverable_Error; ++ end; ++ end if; ++ end loop; ++ end Read_JSON_Files_For_Repinfo; ++ + -- Local variables + + Back_End_Mode : Back_End.Back_End_Mode_Type; +@@ -1103,7 +1143,6 @@ begin + -- Acquire target parameters from system.ads (package System source) + + Targparm_Acquire : declare +- use Sinput; + + S : Source_File_Index; + N : File_Name_Type; +@@ -1571,6 +1610,12 @@ begin + Par_SCO.SCO_Record_Filtered; + end if; + ++ -- If -gnatd_j is specified, exercise the JSON parser of Repinfo ++ ++ if Debug_Flag_Underscore_J then ++ Read_JSON_Files_For_Repinfo; ++ end if; ++ + -- Back end needs to explicitly unlock tables it needs to touch + + Atree.Lock; +--- /dev/null ++++ b/src/gcc/ada/repinfo-input.adb +@@ -0,0 +1,1350 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT COMPILER COMPONENTS -- ++-- -- ++-- R E P I N F O - I N P U T -- ++-- -- ++-- B o d y -- ++-- -- ++-- Copyright (C) 2018-2019, Free Software Foundation, Inc. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++with Alloc; ++with Csets; use Csets; ++with Hostparm; use Hostparm; ++with Namet; use Namet; ++with Output; use Output; ++with Snames; use Snames; ++with Table; ++ ++package body Repinfo.Input is ++ ++ SSU : constant := 8; ++ -- Value for Storage_Unit, we do not want to get this from TTypes, since ++ -- this introduces problematic dependencies in ASIS, and in any case this ++ -- value is assumed to be 8 for the implementation of the DDA. ++ ++ type JSON_Entity_Kind is (JE_Record_Type, JE_Array_Type, JE_Other); ++ -- Kind of an entiy ++ ++ type JSON_Entity_Node (Kind : JSON_Entity_Kind := JE_Other) is record ++ Esize : Node_Ref_Or_Val; ++ RM_Size : Node_Ref_Or_Val; ++ case Kind is ++ when JE_Record_Type => Variant : Nat; ++ when JE_Array_Type => Component_Size : Node_Ref_Or_Val; ++ when JE_Other => Dummy : Boolean; ++ end case; ++ end record; ++ pragma Unchecked_Union (JSON_Entity_Node); ++ -- Record to represent an entity ++ ++ package JSON_Entity_Table is new Table.Table ( ++ Table_Component_Type => JSON_Entity_Node, ++ Table_Index_Type => Nat, ++ Table_Low_Bound => 1, ++ Table_Initial => Alloc.Rep_JSON_Table_Initial, ++ Table_Increment => Alloc.Rep_JSON_Table_Increment, ++ Table_Name => "JSON_Entity_Table"); ++ -- Table of entities ++ ++ type JSON_Component_Node is record ++ Bit_Offset : Node_Ref_Or_Val; ++ Esize : Node_Ref_Or_Val; ++ end record; ++ -- Record to represent a component ++ ++ package JSON_Component_Table is new Table.Table ( ++ Table_Component_Type => JSON_Component_Node, ++ Table_Index_Type => Nat, ++ Table_Low_Bound => 1, ++ Table_Initial => Alloc.Rep_JSON_Table_Initial, ++ Table_Increment => Alloc.Rep_JSON_Table_Increment, ++ Table_Name => "JSON_Component_Table"); ++ -- Table of components ++ ++ type JSON_Variant_Node is record ++ Present : Node_Ref_Or_Val; ++ Variant : Nat; ++ Next : Nat; ++ end record; ++ -- Record to represent a variant ++ ++ package JSON_Variant_Table is new Table.Table ( ++ Table_Component_Type => JSON_Variant_Node, ++ Table_Index_Type => Nat, ++ Table_Low_Bound => 1, ++ Table_Initial => Alloc.Rep_JSON_Table_Initial, ++ Table_Increment => Alloc.Rep_JSON_Table_Increment, ++ Table_Name => "JSON_Variant_Table"); ++ -- Table of variants ++ ++ ------------------------------------- ++ -- Get_JSON_Component_Bit_Offset -- ++ ------------------------------------- ++ ++ function Get_JSON_Component_Bit_Offset ++ (Name : String; ++ Record_Name : String) return Node_Ref_Or_Val ++ is ++ Namid : constant Valid_Name_Id := Name_Find (Record_Name & '.' & Name); ++ Index : constant Int := Get_Name_Table_Int (Namid); ++ ++ begin ++ -- Return No_Uint if no information is available for the component ++ ++ if Index = 0 then ++ return No_Uint; ++ end if; ++ ++ return JSON_Component_Table.Table (Index).Bit_Offset; ++ end Get_JSON_Component_Bit_Offset; ++ ++ ------------------------------- ++ -- Get_JSON_Component_Size -- ++ ------------------------------- ++ ++ function Get_JSON_Component_Size (Name : String) return Node_Ref_Or_Val is ++ Namid : constant Valid_Name_Id := Name_Find (Name); ++ Index : constant Int := Get_Name_Table_Int (Namid); ++ ++ begin ++ -- Return No_Uint if no information is available for the component ++ ++ if Index = 0 then ++ return No_Uint; ++ end if; ++ ++ return JSON_Entity_Table.Table (Index).Component_Size; ++ end Get_JSON_Component_Size; ++ ++ ---------------------- ++ -- Get_JSON_Esize -- ++ ---------------------- ++ ++ function Get_JSON_Esize (Name : String) return Node_Ref_Or_Val is ++ Namid : constant Valid_Name_Id := Name_Find (Name); ++ Index : constant Int := Get_Name_Table_Int (Namid); ++ ++ begin ++ -- Return No_Uint if no information is available for the entity ++ ++ if Index = 0 then ++ return No_Uint; ++ end if; ++ ++ return JSON_Entity_Table.Table (Index).Esize; ++ end Get_JSON_Esize; ++ ++ ---------------------- ++ -- Get_JSON_Esize -- ++ ---------------------- ++ ++ function Get_JSON_Esize ++ (Name : String; ++ Record_Name : String) return Node_Ref_Or_Val ++ is ++ Namid : constant Valid_Name_Id := Name_Find (Record_Name & '.' & Name); ++ Index : constant Int := Get_Name_Table_Int (Namid); ++ ++ begin ++ -- Return No_Uint if no information is available for the entity ++ ++ if Index = 0 then ++ return No_Uint; ++ end if; ++ ++ return JSON_Component_Table.Table (Index).Esize; ++ end Get_JSON_Esize; ++ ++ ------------------------ ++ -- Get_JSON_RM_Size -- ++ ------------------------ ++ ++ function Get_JSON_RM_Size (Name : String) return Node_Ref_Or_Val is ++ Namid : constant Valid_Name_Id := Name_Find (Name); ++ Index : constant Int := Get_Name_Table_Int (Namid); ++ ++ begin ++ -- Return No_Uint if no information is available for the entity ++ ++ if Index = 0 then ++ return No_Uint; ++ end if; ++ ++ return JSON_Entity_Table.Table (Index).RM_Size; ++ end Get_JSON_RM_Size; ++ ++ ----------------------- ++ -- Read_JSON_Stream -- ++ ----------------------- ++ ++ procedure Read_JSON_Stream (Text : Text_Buffer; File_Name : String) is ++ ++ type Text_Position is record ++ Index : Text_Ptr := 0; ++ Line : Natural := 0; ++ Column : Natural := 0; ++ end record; ++ -- Record to represent position in the text ++ ++ type Token_Kind is ++ (J_NULL, ++ J_TRUE, ++ J_FALSE, ++ J_NUMBER, ++ J_INTEGER, ++ J_STRING, ++ J_ARRAY, ++ J_OBJECT, ++ J_ARRAY_END, ++ J_OBJECT_END, ++ J_COMMA, ++ J_COLON, ++ J_EOF); ++ -- JSON Token kind. Note that in ECMA 404 there is no notion of integer. ++ -- Only numbers are supported. In our implementation we return J_INTEGER ++ -- if there is no decimal part in the number. The semantic is that this ++ -- is a J_NUMBER token that might be represented as an integer. Special ++ -- token J_EOF means that end of stream has been reached. ++ ++ function Decode_Integer (Lo, Hi : Text_Ptr) return Uint; ++ -- Decode and return the integer in Text (Lo .. Hi) ++ ++ function Decode_Name (Lo, Hi : Text_Ptr) return Valid_Name_Id; ++ -- Decode and return the name in Text (Lo .. Hi) ++ ++ function Decode_Symbol (Lo, Hi : Text_Ptr) return TCode; ++ -- Decode and return the expression symbol in Text (Lo .. Hi) ++ ++ procedure Error (Msg : String); ++ pragma No_Return (Error); ++ -- Print an error message and raise an exception ++ ++ procedure Read_Entity; ++ -- Read an entity ++ ++ function Read_Name return Valid_Name_Id; ++ -- Read a name ++ ++ function Read_Name_With_Prefix return Valid_Name_Id; ++ -- Read a name and prepend a prefix ++ ++ function Read_Number return Uint; ++ -- Read a number ++ ++ function Read_Numerical_Expr return Node_Ref_Or_Val; ++ -- Read a numerical expression ++ ++ procedure Read_Record; ++ -- Read a record ++ ++ function Read_String return Valid_Name_Id; ++ -- Read a string ++ ++ procedure Read_Token ++ (Kind : out Token_Kind; ++ Token_Start : out Text_Position; ++ Token_End : out Text_Position); ++ -- Read a token and return it (this is a standard JSON lexer) ++ ++ procedure Read_Token_And_Error ++ (TK : Token_Kind; ++ Token_Start : out Text_Position; ++ Token_End : out Text_Position); ++ pragma Inline (Read_Token_And_Error); ++ -- Read a specified token and error out on failure ++ ++ function Read_Variant_Part return Nat; ++ -- Read a variant part ++ ++ procedure Skip_Value; ++ -- Skip a value ++ ++ Pos : Text_Position := (Text'First, 1, 1); ++ -- The current position in the text buffer ++ ++ Name_Buffer : Bounded_String (4 * Max_Name_Length); ++ -- The buffer used to build full qualifed names ++ ++ Prefix_Len : Natural := 0; ++ -- The length of the prefix present in Name_Buffer ++ ++ ---------------------- ++ -- Decode_Integer -- ++ ---------------------- ++ ++ function Decode_Integer (Lo, Hi : Text_Ptr) return Uint is ++ Len : constant Nat := Int (Hi) - Int (Lo) + 1; ++ ++ begin ++ -- Decode up to 9 characters manually, otherwise call into Uint ++ ++ if Len < 10 then ++ declare ++ Val : Int := 0; ++ ++ begin ++ for J in Lo .. Hi loop ++ Val := Val * 10 ++ + Character'Pos (Text (J)) - Character'Pos ('0'); ++ end loop; ++ return UI_From_Int (Val); ++ end; ++ ++ else ++ declare ++ Val : Uint := Uint_0; ++ ++ begin ++ for J in Lo .. Hi loop ++ Val := Val * 10 ++ + Character'Pos (Text (J)) - Character'Pos ('0'); ++ end loop; ++ return Val; ++ end; ++ end if; ++ end Decode_Integer; ++ ++ ------------------- ++ -- Decode_Name -- ++ ------------------- ++ ++ function Decode_Name (Lo, Hi : Text_Ptr) return Valid_Name_Id is ++ begin ++ -- Names are stored in lower case so fold them if need be ++ ++ if Is_Upper_Case_Letter (Text (Lo)) then ++ declare ++ S : String (Integer (Lo) .. Integer (Hi)); ++ ++ begin ++ for J in Lo .. Hi loop ++ S (Integer (J)) := Fold_Lower (Text (J)); ++ end loop; ++ ++ return Name_Find (S); ++ end; ++ ++ else ++ declare ++ S : String (Integer (Lo) .. Integer (Hi)); ++ for S'Address use Text (Lo)'Address; ++ ++ begin ++ return Name_Find (S); ++ end; ++ end if; ++ end Decode_Name; ++ ++ --------------------- ++ -- Decode_Symbol -- ++ --------------------- ++ ++ function Decode_Symbol (Lo, Hi : Text_Ptr) return TCode is ++ ++ function Cmp12 (A, B : Character) return Boolean; ++ pragma Inline (Cmp12); ++ -- Compare Text (Lo + 1 .. Lo + 2) with A & B. ++ ++ ------------- ++ -- Cmp12 -- ++ ------------- ++ ++ function Cmp12 (A, B : Character) return Boolean is ++ begin ++ return Text (Lo + 1) = A and then Text (Lo + 2) = B; ++ end Cmp12; ++ ++ Len : constant Nat := Int (Hi) - Int (Lo) + 1; ++ ++ -- Start of processing for Decode_Symbol ++ ++ begin ++ case Len is ++ when 1 => ++ case Text (Lo) is ++ when '+' => ++ return Plus_Expr; ++ when '-' => ++ return Minus_Expr; -- or Negate_Expr ++ when '*' => ++ return Mult_Expr; ++ when '<' => ++ return Lt_Expr; ++ when '>' => ++ return Gt_Expr; ++ when '&' => ++ return Bit_And_Expr; ++ when '#' => ++ return Discrim_Val; ++ when others => ++ null; ++ end case; ++ when 2 => ++ if Text (Lo) = '/' then ++ case Text (Lo + 1) is ++ when 't' => ++ return Trunc_Div_Expr; ++ when 'c' => ++ return Ceil_Div_Expr; ++ when 'f' => ++ return Floor_Div_Expr; ++ when 'e' => ++ return Exact_Div_Expr; ++ when others => ++ null; ++ end case; ++ elsif Text (Lo + 1) = '=' then ++ case Text (Lo) is ++ when '<' => ++ return Le_Expr; ++ when '>' => ++ return Ge_Expr; ++ when '=' => ++ return Eq_Expr; ++ when '!' => ++ return Ne_Expr; ++ when others => ++ null; ++ end case; ++ elsif Text (Lo) = 'o' and then Text (Lo + 1) = 'r' then ++ return Truth_Or_Expr; ++ end if; ++ when 3 => ++ case Text (Lo) is ++ when '?' => ++ if Cmp12 ('<', '>') then ++ return Cond_Expr; ++ end if; ++ when 'a' => ++ if Cmp12 ('b', 's') then ++ return Abs_Expr; ++ elsif Cmp12 ('n', 'd') then ++ return Truth_And_Expr; ++ end if; ++ when 'm' => ++ if Cmp12 ('a', 'x') then ++ return Max_Expr; ++ elsif Cmp12 ('i', 'n') then ++ return Min_Expr; ++ end if; ++ when 'n' => ++ if Cmp12 ('o', 't') then ++ return Truth_Not_Expr; ++ end if; ++ when 'x' => ++ if Cmp12 ('o', 'r') then ++ return Truth_Xor_Expr; ++ end if; ++ when 'v' => ++ if Cmp12 ('a', 'r') then ++ return Dynamic_Val; ++ end if; ++ when others => ++ null; ++ end case; ++ when 4 => ++ if Text (Lo) = 'm' ++ and then Text (Lo + 1) = 'o' ++ and then Text (Lo + 2) = 'd' ++ then ++ case Text (Lo + 3) is ++ when 't' => ++ return Trunc_Mod_Expr; ++ when 'c' => ++ return Ceil_Mod_Expr; ++ when 'f' => ++ return Floor_Mod_Expr; ++ when others => ++ null; ++ end case; ++ end if; ++ ++ pragma Annotate ++ (CodePeer, Intentional, ++ "condition predetermined", "Error called as defensive code"); ++ ++ when others => ++ null; ++ end case; ++ ++ Error ("unknown symbol"); ++ end Decode_Symbol; ++ ++ ----------- ++ -- Error -- ++ ----------- ++ ++ procedure Error (Msg : String) is ++ L : constant String := Pos.Line'Img; ++ C : constant String := Pos.Column'Img; ++ ++ begin ++ Set_Standard_Error; ++ Write_Eol; ++ Write_Str (File_Name); ++ Write_Char (':'); ++ Write_Str (L (L'First + 1 .. L'Last)); ++ Write_Char (':'); ++ Write_Str (C (C'First + 1 .. C'Last)); ++ Write_Char (':'); ++ Write_Line (Msg); ++ raise Invalid_JSON_Stream; ++ end Error; ++ ++ ------------------ ++ -- Read_Entity -- ++ ------------------ ++ ++ procedure Read_Entity is ++ Ent : JSON_Entity_Node; ++ Nam : Name_Id := No_Name; ++ Siz : Node_Ref_Or_Val; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ TK : Token_Kind; ++ ++ begin ++ Ent.Esize := No_Uint; ++ Ent.RM_Size := No_Uint; ++ Ent.Component_Size := No_Uint; ++ ++ -- Read the members as string : value pairs ++ ++ loop ++ case Read_String is ++ when Name_Name => ++ Nam := Read_Name; ++ when Name_Record => ++ if Nam = No_Name then ++ Error ("name expected"); ++ end if; ++ Ent.Variant := 0; ++ Prefix_Len := Natural (Length_Of_Name (Nam)); ++ Name_Buffer.Chars (1 .. Prefix_Len) := Get_Name_String (Nam); ++ Read_Record; ++ when Name_Variant => ++ Ent.Variant := Read_Variant_Part; ++ when Name_Size => ++ Siz := Read_Numerical_Expr; ++ Ent.Esize := Siz; ++ Ent.RM_Size := Siz; ++ when Name_Object_Size => ++ Ent.Esize := Read_Numerical_Expr; ++ when Name_Value_Size => ++ Ent.RM_Size := Read_Numerical_Expr; ++ when Name_Component_Size => ++ Ent.Component_Size := Read_Numerical_Expr; ++ when others => ++ Skip_Value; ++ end case; ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_OBJECT_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ end loop; ++ ++ -- Store the entity into the table ++ ++ JSON_Entity_Table.Append (Ent); ++ ++ -- Associate the name with the entity ++ ++ if Nam = No_Name then ++ Error ("name expected"); ++ end if; ++ ++ Set_Name_Table_Int (Nam, JSON_Entity_Table.Last); ++ end Read_Entity; ++ ++ ----------------- ++ -- Read_Name -- ++ ----------------- ++ ++ function Read_Name return Valid_Name_Id is ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Read a single string ++ ++ Read_Token_And_Error (J_STRING, Token_Start, Token_End); ++ ++ return Decode_Name (Token_Start.Index + 1, Token_End.Index - 1); ++ end Read_Name; ++ ++ ----------------------------- ++ -- Read_Name_With_Prefix -- ++ ----------------------------- ++ ++ function Read_Name_With_Prefix return Valid_Name_Id is ++ Len : Natural; ++ Lo, Hi : Text_Ptr; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Read a single string ++ ++ Read_Token_And_Error (J_STRING, Token_Start, Token_End); ++ Lo := Token_Start.Index + 1; ++ Hi := Token_End.Index - 1; ++ ++ -- Prepare for the concatenation with the prefix ++ ++ Len := Integer (Hi) - Integer (Lo) + 1; ++ if Prefix_Len + 1 + Len > Name_Buffer.Max_Length then ++ Error ("Name buffer too small"); ++ end if; ++ ++ Name_Buffer.Length := Prefix_Len + 1 + Len; ++ Name_Buffer.Chars (Prefix_Len + 1) := '.'; ++ ++ -- Names are stored in lower case so fold them if need be ++ ++ if Is_Upper_Case_Letter (Text (Lo)) then ++ for J in Lo .. Hi loop ++ Name_Buffer.Chars (Prefix_Len + 2 + Integer (J - Lo)) := ++ Fold_Lower (Text (J)); ++ end loop; ++ ++ else ++ declare ++ S : String (Integer (Lo) .. Integer (Hi)); ++ for S'Address use Text (Lo)'Address; ++ ++ begin ++ Name_Buffer.Chars (Prefix_Len + 2 .. Prefix_Len + 1 + Len) := S; ++ end; ++ end if; ++ ++ return Name_Find (Name_Buffer); ++ end Read_Name_With_Prefix; ++ ++ ------------------ ++ -- Read_Number -- ++ ------------------ ++ ++ function Read_Number return Uint is ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Only integers are to be expected here ++ ++ Read_Token_And_Error (J_INTEGER, Token_Start, Token_End); ++ ++ return Decode_Integer (Token_Start.Index, Token_End.Index); ++ end Read_Number; ++ ++ -------------------------- ++ -- Read_Numerical_Expr -- ++ -------------------------- ++ ++ function Read_Numerical_Expr return Node_Ref_Or_Val is ++ Code : TCode; ++ Nop : Integer; ++ Ops : array (1 .. 3) of Node_Ref_Or_Val; ++ TK : Token_Kind; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Read either an integer or an expression ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_INTEGER then ++ return Decode_Integer (Token_Start.Index, Token_End.Index); ++ ++ elsif TK = J_OBJECT then ++ -- Read the code of the expression and decode it ++ ++ if Read_String /= Name_Code then ++ Error ("name expected"); ++ end if; ++ ++ Read_Token_And_Error (J_STRING, Token_Start, Token_End); ++ Code := Decode_Symbol (Token_Start.Index + 1, Token_End.Index - 1); ++ Read_Token_And_Error (J_COMMA, Token_Start, Token_End); ++ ++ -- Read the array of operands ++ ++ if Read_String /= Name_Operands then ++ Error ("operands expected"); ++ end if; ++ ++ Read_Token_And_Error (J_ARRAY, Token_Start, Token_End); ++ ++ Nop := 0; ++ Ops := (others => No_Uint); ++ loop ++ Nop := Nop + 1; ++ Ops (Nop) := Read_Numerical_Expr; ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ end loop; ++ ++ Read_Token_And_Error (J_OBJECT_END, Token_Start, Token_End); ++ ++ -- Resolve the ambiguity for '-' now ++ ++ if Code = Minus_Expr and then Nop = 1 then ++ Code := Negate_Expr; ++ end if; ++ ++ return Create_Node (Code, Ops (1), Ops (2), Ops (3)); ++ ++ else ++ Error ("numerical expression expected"); ++ end if; ++ end Read_Numerical_Expr; ++ ++ ------------------- ++ -- Read_Record -- ++ ------------------- ++ ++ procedure Read_Record is ++ Comp : JSON_Component_Node; ++ First_Bit : Node_Ref_Or_Val := No_Uint; ++ Is_First : Boolean := True; ++ Nam : Name_Id := No_Name; ++ Position : Node_Ref_Or_Val := No_Uint; ++ TK : Token_Kind; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Read a possibly empty array of components ++ ++ Read_Token_And_Error (J_ARRAY, Token_Start, Token_End); ++ ++ loop ++ Read_Token (TK, Token_Start, Token_End); ++ if Is_First and then TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_OBJECT then ++ Error ("object expected"); ++ end if; ++ ++ -- Read the members as string : value pairs ++ ++ loop ++ case Read_String is ++ when Name_Name => ++ Nam := Read_Name_With_Prefix; ++ when Name_Discriminant => ++ Skip_Value; ++ when Name_Position => ++ Position := Read_Numerical_Expr; ++ when Name_First_Bit => ++ First_Bit := Read_Number; ++ when Name_Size => ++ Comp.Esize := Read_Numerical_Expr; ++ when others => ++ Error ("invalid component"); ++ end case; ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_OBJECT_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ end loop; ++ ++ -- Compute Component_Bit_Offset from Position and First_Bit, ++ -- either symbolically or literally depending on Position. ++ ++ if Position = No_Uint or else First_Bit = No_Uint then ++ Error ("bit offset expected"); ++ end if; ++ ++ if Position < Uint_0 then ++ declare ++ Bit_Position : constant Node_Ref_Or_Val := ++ Create_Node (Mult_Expr, Position, UI_From_Int (SSU)); ++ begin ++ if First_Bit = Uint_0 then ++ Comp.Bit_Offset := Bit_Position; ++ else ++ Comp.Bit_Offset := ++ Create_Node (Plus_Expr, Bit_Position, First_Bit); ++ end if; ++ end; ++ else ++ Comp.Bit_Offset := Position * SSU + First_Bit; ++ end if; ++ ++ -- Store the component into the table ++ ++ JSON_Component_Table.Append (Comp); ++ ++ -- Associate the name with the component ++ ++ if Nam = No_Name then ++ Error ("name expected"); ++ end if; ++ ++ Set_Name_Table_Int (Nam, JSON_Component_Table.Last); ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ ++ Is_First := False; ++ end loop; ++ end Read_Record; ++ ++ ------------------ ++ -- Read_String -- ++ ------------------ ++ ++ function Read_String return Valid_Name_Id is ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ Nam : Valid_Name_Id; ++ ++ begin ++ -- Read the string and the following colon ++ ++ Read_Token_And_Error (J_STRING, Token_Start, Token_End); ++ Nam := Decode_Name (Token_Start.Index + 1, Token_End.Index - 1); ++ Read_Token_And_Error (J_COLON, Token_Start, Token_End); ++ ++ return Nam; ++ end Read_String; ++ ++ ------------------ ++ -- Read_Token -- ++ ------------------ ++ ++ procedure Read_Token ++ (Kind : out Token_Kind; ++ Token_Start : out Text_Position; ++ Token_End : out Text_Position) ++ is ++ procedure Next_Char; ++ -- Update Pos to point to next char ++ ++ function Is_Whitespace return Boolean; ++ pragma Inline (Is_Whitespace); ++ -- Return True of current character is a whitespace ++ ++ function Is_Structural_Token return Boolean; ++ pragma Inline (Is_Structural_Token); ++ -- Return True if current character is one of the structural tokens ++ ++ function Is_Token_Sep return Boolean; ++ pragma Inline (Is_Token_Sep); ++ -- Return True if current character is a token separator ++ ++ procedure Delimit_Keyword (Kw : String); ++ -- Helper function to parse tokens such as null, false and true ++ ++ --------------- ++ -- Next_Char -- ++ --------------- ++ ++ procedure Next_Char is ++ begin ++ if Pos.Index > Text'Last then ++ Pos.Column := Pos.Column + 1; ++ elsif Text (Pos.Index) = ASCII.LF then ++ Pos.Column := 1; ++ Pos.Line := Pos.Line + 1; ++ else ++ Pos.Column := Pos.Column + 1; ++ end if; ++ Pos.Index := Pos.Index + 1; ++ end Next_Char; ++ ++ ------------------- ++ -- Is_Whitespace -- ++ ------------------- ++ ++ function Is_Whitespace return Boolean is ++ begin ++ return ++ Pos.Index <= Text'Last ++ and then ++ (Text (Pos.Index) = ASCII.LF ++ or else ++ Text (Pos.Index) = ASCII.CR ++ or else ++ Text (Pos.Index) = ASCII.HT ++ or else ++ Text (Pos.Index) = ' '); ++ end Is_Whitespace; ++ ++ ------------------------- ++ -- Is_Structural_Token -- ++ ------------------------- ++ ++ function Is_Structural_Token return Boolean is ++ begin ++ return ++ Pos.Index <= Text'Last ++ and then ++ (Text (Pos.Index) = '[' ++ or else ++ Text (Pos.Index) = ']' ++ or else ++ Text (Pos.Index) = '{' ++ or else ++ Text (Pos.Index) = '}' ++ or else ++ Text (Pos.Index) = ',' ++ or else ++ Text (Pos.Index) = ':'); ++ end Is_Structural_Token; ++ ++ ------------------ ++ -- Is_Token_Sep -- ++ ------------------ ++ ++ function Is_Token_Sep return Boolean is ++ begin ++ return ++ Pos.Index > Text'Last ++ or else ++ Is_Whitespace ++ or else ++ Is_Structural_Token; ++ end Is_Token_Sep; ++ ++ --------------------- ++ -- Delimit_Keyword -- ++ --------------------- ++ ++ procedure Delimit_Keyword (Kw : String) is ++ pragma Unreferenced (Kw); ++ begin ++ while not Is_Token_Sep loop ++ Token_End := Pos; ++ Next_Char; ++ end loop; ++ end Delimit_Keyword; ++ ++ CC : Character; ++ Can_Be_Integer : Boolean := True; ++ ++ -- Start of processing for Read_Token ++ ++ begin ++ -- Skip leading whitespaces ++ ++ while Is_Whitespace loop ++ Next_Char; ++ end loop; ++ ++ -- Initialize token delimiters ++ ++ Token_Start := Pos; ++ Token_End := Pos; ++ ++ -- End of stream reached ++ ++ if Pos.Index > Text'Last then ++ Kind := J_EOF; ++ return; ++ end if; ++ ++ CC := Text (Pos.Index); ++ ++ if CC = '[' then ++ Next_Char; ++ Kind := J_ARRAY; ++ return; ++ elsif CC = ']' then ++ Next_Char; ++ Kind := J_ARRAY_END; ++ return; ++ elsif CC = '{' then ++ Next_Char; ++ Kind := J_OBJECT; ++ return; ++ elsif CC = '}' then ++ Next_Char; ++ Kind := J_OBJECT_END; ++ return; ++ elsif CC = ',' then ++ Next_Char; ++ Kind := J_COMMA; ++ return; ++ elsif CC = ':' then ++ Next_Char; ++ Kind := J_COLON; ++ return; ++ elsif CC = 'n' then ++ Delimit_Keyword ("null"); ++ Kind := J_NULL; ++ return; ++ elsif CC = 'f' then ++ Delimit_Keyword ("false"); ++ Kind := J_FALSE; ++ return; ++ elsif CC = 't' then ++ Delimit_Keyword ("true"); ++ Kind := J_TRUE; ++ return; ++ elsif CC = '"' then ++ -- We expect a string ++ -- Just scan till the end the of the string but do not attempt ++ -- to decode it. This means that even if we get a string token ++ -- it might not be a valid string from the ECMA 404 point of ++ -- view. ++ ++ Next_Char; ++ while Pos.Index <= Text'Last and then Text (Pos.Index) /= '"' loop ++ if Text (Pos.Index) in ASCII.NUL .. ASCII.US then ++ Error ("control character not allowed in string"); ++ end if; ++ ++ if Text (Pos.Index) = '\' then ++ Next_Char; ++ if Pos.Index > Text'Last then ++ Error ("non terminated string token"); ++ end if; ++ ++ case Text (Pos.Index) is ++ when 'u' => ++ for Idx in 1 .. 4 loop ++ Next_Char; ++ if Pos.Index > Text'Last ++ or else (Text (Pos.Index) not in 'a' .. 'f' ++ and then ++ Text (Pos.Index) not in 'A' .. 'F' ++ and then ++ Text (Pos.Index) not in '0' .. '9') ++ then ++ Error ("invalid unicode escape sequence"); ++ end if; ++ end loop; ++ when '\' | '/' | '"' | 'b' | 'f' | 'n' | 'r' | 't' => ++ null; ++ when others => ++ Error ("invalid escape sequence"); ++ end case; ++ end if; ++ Next_Char; ++ end loop; ++ ++ -- No quote found report and error ++ ++ if Pos.Index > Text'Last then ++ Error ("non terminated string token"); ++ end if; ++ ++ Token_End := Pos; ++ ++ -- Go to next char and ensure that this is separator. Indeed ++ -- construction such as "string1""string2" are not allowed ++ ++ Next_Char; ++ if not Is_Token_Sep then ++ Error ("invalid syntax"); ++ end if; ++ Kind := J_STRING; ++ return; ++ elsif CC = '-' or else CC in '0' .. '9' then ++ -- We expect a number ++ if CC = '-' then ++ Next_Char; ++ end if; ++ ++ if Pos.Index > Text'Last then ++ Error ("invalid number"); ++ end if; ++ ++ -- Parse integer part of a number. Superfluous leading zeros are ++ -- not allowed. ++ ++ if Text (Pos.Index) = '0' then ++ Token_End := Pos; ++ Next_Char; ++ elsif Text (Pos.Index) in '1' .. '9' then ++ Token_End := Pos; ++ Next_Char; ++ while Pos.Index <= Text'Last ++ and then Text (Pos.Index) in '0' .. '9' ++ loop ++ Token_End := Pos; ++ Next_Char; ++ end loop; ++ else ++ Error ("invalid number"); ++ end if; ++ ++ if Is_Token_Sep then ++ -- Valid integer number ++ ++ Kind := J_INTEGER; ++ return; ++ elsif Text (Pos.Index) /= '.' ++ and then Text (Pos.Index) /= 'e' ++ and then Text (Pos.Index) /= 'E' ++ then ++ Error ("invalid number"); ++ end if; ++ ++ -- Check for a fractional part ++ ++ if Text (Pos.Index) = '.' then ++ Can_Be_Integer := False; ++ Token_End := Pos; ++ Next_Char; ++ if Pos.Index > Text'Last ++ or else Text (Pos.Index) not in '0' .. '9' ++ then ++ Error ("invalid number"); ++ end if; ++ ++ while Pos.Index <= Text'Last ++ and then Text (Pos.Index) in '0' .. '9' ++ loop ++ Token_End := Pos; ++ Next_Char; ++ end loop; ++ ++ end if; ++ ++ -- Check for exponent part ++ ++ if Pos.Index <= Text'Last ++ and then (Text (Pos.Index) = 'e' or else Text (Pos.Index) = 'E') ++ then ++ Token_End := Pos; ++ Next_Char; ++ if Pos.Index > Text'Last then ++ Error ("invalid number"); ++ end if; ++ ++ if Text (Pos.Index) = '-' then ++ -- Also a few corner cases can lead to an integer, assume ++ -- that the number is not an integer. ++ ++ Can_Be_Integer := False; ++ end if; ++ ++ if Text (Pos.Index) = '-' or else Text (Pos.Index) = '+' then ++ Next_Char; ++ end if; ++ ++ if Pos.Index > Text'Last ++ or else Text (Pos.Index) not in '0' .. '9' ++ then ++ Error ("invalid number"); ++ end if; ++ ++ while Pos.Index <= Text'Last ++ and then Text (Pos.Index) in '0' .. '9' ++ loop ++ Token_End := Pos; ++ Next_Char; ++ end loop; ++ end if; ++ ++ if Is_Token_Sep then ++ -- Valid decimal number ++ ++ if Can_Be_Integer then ++ Kind := J_INTEGER; ++ else ++ Kind := J_NUMBER; ++ end if; ++ return; ++ else ++ Error ("invalid number"); ++ end if; ++ elsif CC = EOF then ++ Kind := J_EOF; ++ else ++ Error ("Unexpected character"); ++ end if; ++ end Read_Token; ++ ++ ---------------------------- ++ -- Read_Token_And_Error -- ++ ---------------------------- ++ ++ procedure Read_Token_And_Error ++ (TK : Token_Kind; ++ Token_Start : out Text_Position; ++ Token_End : out Text_Position) ++ is ++ Kind : Token_Kind; ++ ++ begin ++ -- Read a token and errout out if not of the expected kind ++ ++ Read_Token (Kind, Token_Start, Token_End); ++ if Kind /= TK then ++ Error ("specific token expected"); ++ end if; ++ end Read_Token_And_Error; ++ ++ ------------------------- ++ -- Read_Variant_Part -- ++ ------------------------- ++ ++ function Read_Variant_Part return Nat is ++ Next : Nat := 0; ++ TK : Token_Kind; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ Var : JSON_Variant_Node; ++ ++ begin ++ -- Read a non-empty array of components ++ ++ Read_Token_And_Error (J_ARRAY, Token_Start, Token_End); ++ ++ loop ++ Read_Token_And_Error (J_OBJECT, Token_Start, Token_End); ++ ++ Var.Variant := 0; ++ ++ -- Read the members as string : value pairs ++ ++ loop ++ case Read_String is ++ when Name_Present => ++ Var.Present := Read_Numerical_Expr; ++ when Name_Record => ++ Read_Record; ++ when Name_Variant => ++ Var.Variant := Read_Variant_Part; ++ when others => ++ Error ("invalid variant"); ++ end case; ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_OBJECT_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ end loop; ++ ++ -- Chain the variant and store it into the table ++ ++ Var.Next := Next; ++ JSON_Variant_Table.Append (Var); ++ Next := JSON_Variant_Table.Last; ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ end loop; ++ ++ return Next; ++ end Read_Variant_Part; ++ ++ ------------------ ++ -- Skip_Value -- ++ ------------------ ++ ++ procedure Skip_Value is ++ Array_Depth : Natural := 0; ++ Object_Depth : Natural := 0; ++ TK : Token_Kind; ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ ++ begin ++ -- Read a value without recursing ++ ++ loop ++ Read_Token (TK, Token_Start, Token_End); ++ ++ case TK is ++ when J_STRING | J_INTEGER | J_NUMBER => ++ null; ++ when J_ARRAY => ++ Array_Depth := Array_Depth + 1; ++ when J_ARRAY_END => ++ Array_Depth := Array_Depth - 1; ++ when J_OBJECT => ++ Object_Depth := Object_Depth + 1; ++ when J_OBJECT_END => ++ Object_Depth := Object_Depth - 1; ++ when J_COLON | J_COMMA => ++ if Array_Depth = 0 and then Object_Depth = 0 then ++ Error ("value expected"); ++ end if; ++ when others => ++ Error ("value expected"); ++ end case; ++ ++ exit when Array_Depth = 0 and then Object_Depth = 0; ++ end loop; ++ end Skip_Value; ++ ++ Token_Start : Text_Position; ++ Token_End : Text_Position; ++ TK : Token_Kind; ++ Is_First : Boolean := True; ++ ++ -- Start of processing for Read_JSON_Stream ++ ++ begin ++ -- Read a possibly empty array of entities ++ ++ Read_Token_And_Error (J_ARRAY, Token_Start, Token_End); ++ ++ loop ++ Read_Token (TK, Token_Start, Token_End); ++ if Is_First and then TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_OBJECT then ++ Error ("object expected"); ++ end if; ++ ++ Read_Entity; ++ ++ Read_Token (TK, Token_Start, Token_End); ++ if TK = J_ARRAY_END then ++ exit; ++ elsif TK /= J_COMMA then ++ Error ("comma expected"); ++ end if; ++ ++ Is_First := False; ++ end loop; ++ end Read_JSON_Stream; ++ ++end Repinfo.Input; +--- /dev/null ++++ b/src/gcc/ada/repinfo-input.ads +@@ -0,0 +1,78 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT COMPILER COMPONENTS -- ++-- -- ++-- R E P I N F O - I N P U T -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 2018-2019, Free Software Foundation, Inc. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This package provides an alternate way of populating the internal tables ++-- of Repinfo from a JSON input rather than the binary blob of the tree file. ++-- Note that this is an additive mechanism, i.e. nothing is destroyed in the ++-- internal state of the unit when it is used. ++ ++-- The first step is to feed the unit with a JSON stream of a specified format ++-- (see the spec of Repinfo for its description) by means of Read_JSON_Stream. ++-- Then, for each entity whose representation information is present in the ++-- JSON stream, the appropriate Get_JSON_* routines can be invoked to override ++-- the eponymous fields of the entity in the tree. ++ ++package Repinfo.Input is ++ ++ function Get_JSON_Esize (Name : String) return Node_Ref_Or_Val; ++ -- Returns the Esize value of the entity specified by Name, which is not ++ -- the component of a record type, or else No_Uint if no representation ++ -- information was supplied for the entity. Name is the full qualified name ++ -- of the entity in lower case letters. ++ ++ function Get_JSON_RM_Size (Name : String) return Node_Ref_Or_Val; ++ -- Likewise for the RM_Size ++ ++ function Get_JSON_Component_Size (Name : String) return Node_Ref_Or_Val; ++ -- Likewise for the Component_Size of an array type ++ ++ function Get_JSON_Component_Bit_Offset ++ (Name : String; ++ Record_Name : String) return Node_Ref_Or_Val; ++ -- Returns the Component_Bit_Offset of the component specified by Name, ++ -- which is declared in the record type specified by Record_Name, or else ++ -- No_Uint if no representation information was supplied for the component. ++ -- Name is the unqualified name of the component whereas Record_Name is the ++ -- full qualified name of the record type, both in lower case letters. ++ ++ function Get_JSON_Esize ++ (Name : String; ++ Record_Name : String) return Node_Ref_Or_Val; ++ -- Likewise for the Esize ++ ++ Invalid_JSON_Stream : exception; ++ -- Raised if a format error is detected in the JSON stream ++ ++ procedure Read_JSON_Stream (Text : Text_Buffer; File_Name : String); ++ -- Reads a JSON stream and populates internal tables from it. File_Name is ++ -- only used in error messages issued by the JSON parser. ++ ++end Repinfo.Input; +--- a/src/gcc/ada/snames.ads-tmpl ++++ b/src/gcc/ada/snames.ads-tmpl +@@ -1511,6 +1511,11 @@ + Name_Runtime_Library_Dir : constant Name_Id := N + $; + Name_Runtime_Source_Dir : constant Name_Id := N + $; + ++ -- Additional names used by the Repinfo unit ++ ++ Name_Discriminant : constant Name_Id := N + $; ++ Name_Operands : constant Name_Id := N + $; ++ + -- Other miscellaneous names used in front end + + Name_Unaligned_Valid : constant Name_Id := N + $; diff --git a/patches/ada-sjlj.diff b/patches/ada-sjlj.diff new file mode 100644 index 0000000..26b3534 --- /dev/null +++ b/patches/ada-sjlj.diff @@ -0,0 +1,492 @@ +# Please read ada-changes-in-autogen-output.diff about src/Makefile.def. + +# !!! Must be applied after ada-libgnatvsn.diff + +--- /dev/null ++++ b/src/libada-sjlj/Makefile.in +@@ -0,0 +1,203 @@ ++# Makefile for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++# Default target; must be first. ++all: gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) ++ ++.PHONY: all ++ ++## Multilib support variables. ++MULTISRCTOP = ++MULTIBUILDTOP = ++MULTIDIRS = ++MULTISUBDIR = ++MULTIDO = true ++MULTICLEAN = true ++ ++# Standard autoconf-set variables. ++SHELL = @SHELL@ ++srcdir = @srcdir@ ++libdir = @libdir@ ++build = @build@ ++target = @target@ ++prefix = @prefix@ ++ ++# Nonstandard autoconf-set variables. ++enable_shared = @enable_shared@ ++ ++LN_S=@LN_S@ ++AWK=@AWK@ ++ ++ifeq (cp -p,$(LN_S)) ++LN_S_RECURSIVE = cp -pR ++else ++LN_S_RECURSIVE = $(LN_S) ++endif ++ ++# Variables for the user (or the top level) to override. ++objext=.o ++THREAD_KIND=native ++TRACE=no ++LDFLAGS= ++ ++# The tedious process of getting CFLAGS right. ++CFLAGS=-g ++PICFLAG = @PICFLAG@ ++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc ++GNATLIBCFLAGS= -g -O2 ++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ ++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ ++ ++host_subdir = @host_subdir@ ++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc ++ ++target_noncanonical:=@target_noncanonical@ ++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) ++ ++# exeext should not be used because it's the *host* exeext. We're building ++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus ++# definitions just in case something slips through the safety net provided ++# by recursive make invocations in gcc/ada/Makefile.in ++LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++ "LDFLAGS=$(LDFLAGS) -Wl,--as-needed -Wl,-z,defs" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++ "THREAD_KIND=$(THREAD_KIND)" \ ++ "TRACE=$(TRACE)" \ ++ "MULTISUBDIR=$(MULTISUBDIR)" \ ++ "libsubdir=$(libsubdir)" \ ++ "objext=$(objext)" \ ++ "prefix=$(prefix)" \ ++ "exeext=.exeext.should.not.be.used " \ ++ 'CC=the.host.compiler.should.not.be.needed' \ ++ "GCC_FOR_TARGET=$(CC)" \ ++ "CFLAGS=$(CFLAGS)" \ ++ "RTSDIR=rts-sjlj" ++ ++# Rules to build gnatlib. ++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool ++gnatlib: gnatlib-sjlj ++ ++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ ++ && touch stamp-libada ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile ++ test -f stamp-libada || \ ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ ++ && touch stamp-libada-sjlj ++ -rm -rf adainclude ++ -rm -rf adalib ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude ++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib ++ ++osconstool: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons ++ ++install-gnatlib: $(GCC_DIR)/ada/Makefile ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj ++ ++# Check uninstalled version. ++check: ++ ++# Check installed version. ++installcheck: ++ ++# Build info (none here). ++info: ++ ++# Build DVI (none here). ++dvi: ++ ++# Build PDF (none here). ++pdf: ++ ++# Build html (none here). ++html: ++ ++# Build TAGS (none here). ++TAGS: ++ ++.PHONY: check installcheck info dvi pdf html ++ ++# Installation rules. ++install: install-gnatlib ++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) ++ ++install-strip: install ++ ++install-info: ++ ++install-pdf: ++ ++install-html: ++ ++.PHONY: install install-strip install-info install-pdf install-html ++ ++# Cleaning rules. ++mostlyclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) ++ ++clean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) ++ ++distclean: ++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) ++ $(RM) Makefile config.status config.log ++ ++maintainer-clean: ++ ++.PHONY: mostlyclean clean distclean maintainer-clean ++ ++# Rules for rebuilding this Makefile. ++Makefile: $(srcdir)/Makefile.in config.status ++ CONFIG_FILES=$@ ; \ ++ CONFIG_HEADERS= ; \ ++ $(SHELL) ./config.status ++ ++config.status: $(srcdir)/configure ++ $(SHELL) ./config.status --recheck ++ ++AUTOCONF = autoconf ++configure_deps = \ ++ $(srcdir)/configure.ac \ ++ $(srcdir)/../config/acx.m4 \ ++ $(srcdir)/../config/multi.m4 \ ++ $(srcdir)/../config/override.m4 \ ++ $(srcdir)/../config/picflag.m4 \ ++ $(srcdir)/../config/unwind_ipinfo.m4 ++ ++$(srcdir)/configure: @MAINT@ $(configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++ ++# Don't export variables to the environment, in order to not confuse ++# configure. ++.NOEXPORT: +--- /dev/null ++++ b/src/libada-sjlj/configure.ac +@@ -0,0 +1,156 @@ ++# Configure script for libada. ++# Copyright (C) 2003-2017 Free Software Foundation, Inc. ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; see the file COPYING3. If not see ++# . ++ ++sinclude(../config/acx.m4) ++sinclude(../config/multi.m4) ++sinclude(../config/override.m4) ++sinclude(../config/picflag.m4) ++sinclude(../config/unwind_ipinfo.m4) ++ ++AC_INIT ++AC_PREREQ([2.64]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Determine the host, build, and target systems ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++target_alias=${target_alias-$host_alias} ++ ++# Determine the noncanonical target name, for directory use. ++ACX_NONCANONICAL_TARGET ++ ++# Determine the target- and build-specific subdirectories ++GCC_TOPLEV_SUBDIRS ++ ++# Command-line options. ++# Very limited version of AC_MAINTAINER_MODE. ++AC_ARG_ENABLE([maintainer-mode], ++ [AC_HELP_STRING([--enable-maintainer-mode], ++ [enable make rules and dependencies not useful (and ++ sometimes confusing) to the casual installer])], ++ [case ${enable_maintainer_mode} in ++ yes) MAINT='' ;; ++ no) MAINT='#' ;; ++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; ++ esac ++ maintainer_mode=${enableval}], ++ [MAINT='#']) ++AC_SUBST([MAINT])dnl ++ ++AM_ENABLE_MULTILIB(, ..) ++# Calculate toolexeclibdir ++# Also toolexecdir, though it's only used in toolexeclibdir ++case ${enable_version_specific_runtime_libs} in ++ yes) ++ # Need the gcc compiler version to know where to install libraries ++ # and header files if --enable-version-specific-runtime-libs option ++ # is selected. ++ toolexecdir='$(libdir)/gcc/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' ++ ;; ++ no) ++ if test -n "$with_cross_host" && ++ test x"$with_cross_host" != x"no"; then ++ # Install a library built with a cross compiler in tooldir, not libdir. ++ toolexecdir='$(exec_prefix)/$(target_alias)' ++ toolexeclibdir='$(toolexecdir)/lib' ++ else ++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' ++ toolexeclibdir='$(libdir)' ++ fi ++ multi_os_directory=`$CC -print-multi-os-directory` ++ case $multi_os_directory in ++ .) ;; # Avoid trailing /. ++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; ++ esac ++ ;; ++esac ++AC_SUBST(toolexecdir) ++AC_SUBST(toolexeclibdir) ++#TODO: toolexeclibdir is currently disregarded ++ ++# Check the compiler. ++# The same as in boehm-gc and libstdc++. Have to borrow it from there. ++# We must force CC to /not/ be precious variables; otherwise ++# the wrong, non-multilib-adjusted value will be used in multilibs. ++# As a side effect, we have to subst CFLAGS ourselves. ++ ++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) ++m4_define([_AC_ARG_VAR_PRECIOUS],[]) ++AC_PROG_CC ++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) ++ ++AC_SUBST(CFLAGS) ++ ++AC_ARG_ENABLE([shared], ++[AC_HELP_STRING([--disable-shared], ++ [don't provide a shared libgnat])], ++[ ++case $enable_shared in ++ yes | no) ;; ++ *) ++ enable_shared=no ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," ++ for pkg in $enableval; do ++ case $pkg in ++ ada | libada) ++ enable_shared=yes ;; ++ esac ++ done ++ IFS="$ac_save_ifs" ++ ;; ++esac ++], [enable_shared=yes]) ++AC_SUBST([enable_shared]) ++ ++GCC_PICFLAG ++AC_SUBST([PICFLAG]) ++ ++# These must be passed down, or are needed by gcc/libgcc.mvars ++AC_PROG_AWK ++AC_PROG_LN_S ++ ++# Determine what to build for 'gnatlib' ++if test ${enable_shared} = yes; then ++ default_gnatlib_target="gnatlib-shared" ++else ++ default_gnatlib_target="gnatlib-plain" ++fi ++AC_SUBST([default_gnatlib_target]) ++ ++# Check for _Unwind_GetIPInfo ++GCC_CHECK_UNWIND_GETIPINFO ++if test x$have_unwind_getipinfo = xyes; then ++ have_getipinfo=-DHAVE_GETIPINFO ++else ++ have_getipinfo= ++fi ++AC_SUBST([have_getipinfo]) ++ ++# Check for ++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) ++AC_SUBST([have_capability]) ++ ++# Determine what GCC version number to use in filesystem paths. ++GCC_BASE_VER ++ ++# Output: create a Makefile. ++AC_CONFIG_FILES([Makefile]) ++ ++AC_OUTPUT +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -194,6 +194,7 @@ target_modules = { module= libgnatvsn; n + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libada-sjlj; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -394,6 +395,7 @@ dependencies = { module=all-libcpp; on=a + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-target-libada; on=all-gcc; }; ++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libada; }; + dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; + dependencies = { module=all-gnattools; on=all-target-libgnatvsn; }; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -167,6 +167,7 @@ target_libraries="target-libgcc \ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libada-sjlj \ + ${target_libiberty} \ + target-libgnatvsn \ + target-libgo \ +@@ -454,7 +455,7 @@ AC_ARG_ENABLE(libada, + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs target-libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs target-libgnatvsn gnattools target-libada-sjlj" + fi + + AC_ARG_ENABLE(libssp, +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -193,7 +193,7 @@ GNAT_SRC=$(fsrcpfx)ada + + # Multilib handling + MULTISUBDIR = +-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) ++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) + + # Link flags used to build gnat tools. By default we prefer to statically + # link with libgcc to avoid a dependency on shared libgcc (which is tricky +@@ -561,6 +561,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb + cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads + ++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR) ++# Create the directory before deleting it, in case the directory is ++# a list of directories (as it may be on VMS). This ensures we are ++# deleting the right one. ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) ++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) ++ for file in $(RTSDIR)/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \ ++ done ++ # This copy must be done preserving the date on the original file. ++ for file in $(RTSDIR)/*.ad?; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \ ++ done ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads ++ + ../stamp-gnatlib2-$(RTSDIR): + $(RM) $(RTSDIR)/s-*.ali + $(RM) $(RTSDIR)/s-*$(objext) +@@ -826,6 +846,7 @@ gnatlib-shared: + gnatlib-sjlj: + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ ++ RTSDIR="$(RTSDIR)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + ../stamp-gnatlib1-$(RTSDIR) +@@ -835,6 +856,7 @@ gnatlib-sjlj: + $(RTSDIR)/system.ads > $(RTSDIR)/s.ads + $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads + $(MAKE) $(FLAGS_TO_PASS) \ ++ RTSDIR="$(RTSDIR)" \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +@@ -889,6 +911,8 @@ b_gnatm.o : b_gnatm.adb + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude ++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib + + # Special flags + +--- a/src/gcc/ada/gcc-interface/config-lang.in ++++ b/src/gcc/ada/gcc-interface/config-lang.in +@@ -43,8 +43,8 @@ if test "x$cross_compiling/$build/$host" + lang_requires="c c++" + fi + +-target_libs="target-libada target-libgnatvsn" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn target-libada-sjlj" ++lang_dirs="libada gnattools libada-sjlj" + + # Ada is not enabled by default for the time being. + build_by_default=no +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -837,6 +837,7 @@ ada.install-common: + + install-gnatlib: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) + + install-gnatlib-obj: + $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj diff --git a/patches/ada-tools-move-ldflags.diff b/patches/ada-tools-move-ldflags.diff new file mode 100644 index 0000000..4e837e2 --- /dev/null +++ b/patches/ada-tools-move-ldflags.diff @@ -0,0 +1,31 @@ +Description: For Ada tools, move LDFLAGS from GCC_LINK to TOOLS_LIBS. + Gnatlink moves GCC_LINK linker options after other options, + probably so that standard libraries come after user libraries + in case --as-needed is activated. + However, if --as-needed is activated via LDFLAGS, it is appended via + GCC_LINK and comes too late on the eventual command line. + All GCC_LINKS expansions but one are followed by an expansion of + TOOLS_LIBS, so TOOLS_LIBS seems to be the right place for LDFLAGS. +Author: Nicolas Boulenguez +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81104 + +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -250,7 +250,7 @@ LIBS = $(LIBINTL) $(LIBICONV) $(LIBBACKT + LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ ++TOOLS_LIBS = $(LDFLAGS) ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \ + ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \ + ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB) + +@@ -376,7 +376,7 @@ TOOLS_FLAGS_TO_PASS= \ + "GNATLINK=$(GNATLINK)" \ + "GNATBIND=$(GNATBIND)" + +-GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(LDFLAGS) ++GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) + + # Build directory for the tools. Let's copy the target-dependent + # sources using the same mechanism as for gnatlib. The other sources are diff --git a/patches/ada-verbose.diff b/patches/ada-verbose.diff new file mode 100644 index 0000000..fe46850 --- /dev/null +++ b/patches/ada-verbose.diff @@ -0,0 +1,61 @@ +Description: Display subprocess command lines when building Ada. + The log can be a page longer if it helps debugging. +Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87778 +Author: Nicolas Boulenguez + +--- a/src/gcc/ada/Make-generated.in ++++ b/src/gcc/ada/Make-generated.in +@@ -28,21 +28,21 @@ $(ADA_GEN_SUBDIR)/treeprs.ads : $(ADA_GE + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/treeprs + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/treeprs/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/treeprs +- (cd $(ADA_GEN_SUBDIR)/bldtools/treeprs; gnatmake -q xtreeprs ; ./xtreeprs treeprs.ads ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/treeprs && gnatmake -v xtreeprs && ./xtreeprs treeprs.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/treeprs/treeprs.ads $(ADA_GEN_SUBDIR)/treeprs.ads + + $(ADA_GEN_SUBDIR)/einfo.h : $(ADA_GEN_SUBDIR)/einfo.ads $(ADA_GEN_SUBDIR)/einfo.adb $(ADA_GEN_SUBDIR)/xeinfo.adb $(ADA_GEN_SUBDIR)/ceinfo.adb + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/einfo + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/einfo/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/einfo +- (cd $(ADA_GEN_SUBDIR)/bldtools/einfo; gnatmake -q xeinfo ; ./xeinfo einfo.h ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/einfo && gnatmake -v xeinfo && ./xeinfo einfo.h + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/einfo/einfo.h $(ADA_GEN_SUBDIR)/einfo.h + + $(ADA_GEN_SUBDIR)/sinfo.h : $(ADA_GEN_SUBDIR)/sinfo.ads $(ADA_GEN_SUBDIR)/sinfo.adb $(ADA_GEN_SUBDIR)/xsinfo.adb $(ADA_GEN_SUBDIR)/csinfo.adb + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/sinfo + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/sinfo/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/sinfo +- (cd $(ADA_GEN_SUBDIR)/bldtools/sinfo; gnatmake -q xsinfo ; ./xsinfo sinfo.h ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/sinfo && gnatmake -v xsinfo && ./xsinfo sinfo.h + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/sinfo/sinfo.h $(ADA_GEN_SUBDIR)/sinfo.h + + $(ADA_GEN_SUBDIR)/snames.h $(ADA_GEN_SUBDIR)/snames.ads $(ADA_GEN_SUBDIR)/snames.adb : $(ADA_GEN_SUBDIR)/stamp-snames ; @true +@@ -50,7 +50,7 @@ $(ADA_GEN_SUBDIR)/stamp-snames : $(ADA_G + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/snamest + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/snamest/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/snamest +- (cd $(ADA_GEN_SUBDIR)/bldtools/snamest; gnatmake -q xsnamest ; ./xsnamest ) ++ cd $(ADA_GEN_SUBDIR)/bldtools/snamest && gnatmake -v xsnamest && ./xsnamest + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.ns $(ADA_GEN_SUBDIR)/snames.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.nb $(ADA_GEN_SUBDIR)/snames.adb + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/snamest/snames.nh $(ADA_GEN_SUBDIR)/snames.h +@@ -61,7 +61,7 @@ $(ADA_GEN_SUBDIR)/stamp-nmake: $(ADA_GEN + -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/nmake + $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/nmake/,$(notdir $^)) + $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/nmake +- (cd $(ADA_GEN_SUBDIR)/bldtools/nmake; gnatmake -q xnmake ; ./xnmake -b nmake.adb ; ./xnmake -s nmake.ads) ++ cd $(ADA_GEN_SUBDIR)/bldtools/nmake && gnatmake -v xnmake && ./xnmake -b nmake.adb && ./xnmake -s nmake.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/nmake/nmake.ads $(ADA_GEN_SUBDIR)/nmake.ads + $(MOVE_IF_CHANGE) $(ADA_GEN_SUBDIR)/bldtools/nmake/nmake.adb $(ADA_GEN_SUBDIR)/nmake.adb + touch $(ADA_GEN_SUBDIR)/stamp-nmake +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -598,7 +598,7 @@ OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFL + -$(MKDIR) ./bldtools/oscons + $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) + $(CP) $^ ./bldtools/oscons +- (cd ./bldtools/oscons ; gnatmake -q xoscons) ++ cd ./bldtools/oscons && gnatmake -v xoscons + + $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons + $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s diff --git a/patches/alpha-ieee-doc.diff b/patches/alpha-ieee-doc.diff new file mode 100644 index 0000000..0564158 --- /dev/null +++ b/patches/alpha-ieee-doc.diff @@ -0,0 +1,24 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +--- + gcc/doc/invoke.texi | 7 +++++++ + 1 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -9980,6 +9980,13 @@ able to correctly support denormalized numbers and exceptional IEEE + values such as not-a-number and plus/minus infinity. Other Alpha + compilers call this option @option{-ieee_with_no_inexact}. + ++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless ++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} ++set) is specified, because the software functions in the GNU libc math ++libraries generate denormalized numbers, NaNs, and infs (all of which ++will cause a programs to SIGFPE when it attempts to use the results without ++@option{-mieee}). ++ + @item -mieee-with-inexact + @opindex mieee-with-inexact + This is like @option{-mieee} except the generated code also maintains diff --git a/patches/alpha-ieee.diff b/patches/alpha-ieee.diff new file mode 100644 index 0000000..40497fb --- /dev/null +++ b/patches/alpha-ieee.diff @@ -0,0 +1,21 @@ +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +--- + gcc/config/alpha/alpha.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -259,6 +259,10 @@ + int line_size = 0, l1_size = 0, l2_size = 0; + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + #ifdef SUBTARGET_OVERRIDE_OPTIONS + SUBTARGET_OVERRIDE_OPTIONS; + #endif diff --git a/patches/alpha-no-ev4-directive.diff b/patches/alpha-no-ev4-directive.diff new file mode 100644 index 0000000..533437f --- /dev/null +++ b/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,30 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -9542,7 +9542,7 @@ alpha_file_start (void) + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -9552,10 +9552,9 @@ alpha_file_start (void) + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + diff --git a/patches/arm-multilib-defaults.diff b/patches/arm-multilib-defaults.diff new file mode 100644 index 0000000..b9e187c --- /dev/null +++ b/patches/arm-multilib-defaults.diff @@ -0,0 +1,88 @@ +# DP: Set MULTILIB_DEFAULTS for ARM multilib builds + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3946,10 +3946,18 @@ case "${target}" in + done + + case "$with_float" in +- "" \ +- | soft | hard | softfp) ++ "") + # OK + ;; ++ soft) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0" ++ ;; ++ softfp) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1" ++ ;; ++ hard) ++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2" ++ ;; + *) + echo "Unknown floating point type used in --with-float=$with_float" 1>&2 + exit 1 +@@ -3983,6 +3991,9 @@ case "${target}" in + "" \ + | arm | thumb ) + #OK ++ if test "$with_mode" = thumb; then ++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" ++ fi + ;; + *) + echo "Unknown mode used in --with-mode=$with_mode" +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -37,7 +37,21 @@ + target hardware. If you override this to use the hard-float ABI then + change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ + #undef TARGET_DEFAULT_FLOAT_ABI ++#ifdef TARGET_CONFIGURED_FLOAT_ABI ++#if TARGET_CONFIGURED_FLOAT_ABI == 2 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" ++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" ++#else ++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif ++#else + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT ++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" ++#endif + + /* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +@@ -91,6 +105,28 @@ + #define MUSL_DYNAMIC_LINKER \ + "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1" + ++/* Set the multilib defaults according the configuration, needed to ++ let gcc -print-multi-dir do the right thing. */ ++ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" ++#else ++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" ++#endif ++ ++#ifndef TARGET_CONFIGURED_THUMB_MODE ++#define MULTILIB_DEFAULT_MODE "marm" ++#elif TARGET_CONFIGURED_THUMB_MODE == 1 ++#define MULTILIB_DEFAULT_MODE "mthumb" ++#else ++#define MULTILIB_DEFAULT_MODE "marm" ++#endif ++ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ ++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC diff --git a/patches/arm-multilib-soft-cross.diff b/patches/arm-multilib-soft-cross.diff new file mode 100644 index 0000000..00a83d3 --- /dev/null +++ b/patches/arm-multilib-soft-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/soft float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -27,6 +27,20 @@ MULTILIB_REUSE = + MULTILIB_MATCHES = + MULTILIB_REQUIRED = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/arm-multilib-soft-float.diff b/patches/arm-multilib-soft-float.diff new file mode 100644 index 0000000..18f51fb --- /dev/null +++ b/patches/arm-multilib-soft-float.diff @@ -0,0 +1,26 @@ +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -24,6 +24,23 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) ++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . hf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float ++endif ++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) ++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft ++ MULTILIB_DIRNAMES = . sf soft-float ++ MULTILIB_EXCEPTIONS = ++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float ++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float ++endif ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/arm-multilib-soft.diff b/patches/arm-multilib-soft.diff new file mode 100644 index 0000000..0d45338 --- /dev/null +++ b/patches/arm-multilib-soft.diff @@ -0,0 +1,25 @@ +# DP: ARM hard/soft float multilib support + +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -27,6 +27,20 @@ MULTILIB_REUSE = + MULTILIB_MATCHES = + MULTILIB_REQUIRED = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=soft/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/arm-multilib-softfp-cross.diff b/patches/arm-multilib-softfp-cross.diff new file mode 100644 index 0000000..89ed142 --- /dev/null +++ b/patches/arm-multilib-softfp-cross.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/arm-multilib-softfp.diff b/patches/arm-multilib-softfp.diff new file mode 100644 index 0000000..f4268da --- /dev/null +++ b/patches/arm-multilib-softfp.diff @@ -0,0 +1,27 @@ +# DP: ARM hard/softfp float multilib support + +Index: b/src/gcc/config/arm/t-linux-eabi +=================================================================== +--- a/src/gcc/config/arm/t-linux-eabi 2011-01-03 20:52:22.000000000 +0000 ++++ b/src/gcc/config/arm/t-linux-eabi 2011-08-21 21:08:47.583351817 +0000 +@@ -24,6 +24,20 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + ++ifeq ($(with_float),hard) ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf ++else ++MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES = sf hf ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft ++MULTILIB_OSDIRNAMES = ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf ++endif ++ + #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te + #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te + #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --git a/patches/bind_now_when_pie.diff b/patches/bind_now_when_pie.diff new file mode 100644 index 0000000..4fe24fe --- /dev/null +++ b/patches/bind_now_when_pie.diff @@ -0,0 +1,23 @@ +Author: Steve Beattie +Description: enable bind now by default when linking with pie by default + +--- + src/gcc/gcc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -936,7 +936,11 @@ proper position among the other output f + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #ifndef LD_PIE_SPEC ++#ifdef ACCEL_COMPILER + #define LD_PIE_SPEC "-pie" ++#else ++#define LD_PIE_SPEC "-pie -z now" ++#endif + #endif + #else + #define LD_PIE_SPEC "" diff --git a/patches/bootstrap-no-unneeded-libs.diff b/patches/bootstrap-no-unneeded-libs.diff new file mode 100644 index 0000000..4939110 --- /dev/null +++ b/patches/bootstrap-no-unneeded-libs.diff @@ -0,0 +1,30 @@ +# DP: For bootstrap builds, don't build unneeded libstdc++ things +# DP: (debug library, PCH headers). + +# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. + +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -1060,7 +1060,9 @@ + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ +- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] ++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ ++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ ++ [+ ENDIF bootstrap_configure_flags +] + @endif [+prefix+][+module+]-bootstrap + [+ ENDFOR bootstrap_stage +] + [+ ENDIF bootstrap +] +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -117,7 +117,8 @@ + target_modules = { module= libstdc++-v3; + bootstrap=true; + lib_path=src/.libs; +- raw_cxx=true; }; ++ raw_cxx=true; ++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; + target_modules = { module= libmudflap; lib_path=.libs; }; + target_modules = { module= libsanitizer; lib_path=.libs; }; + target_modules = { module= libssp; lib_path=.libs; }; diff --git a/patches/canonical-cpppath.diff b/patches/canonical-cpppath.diff new file mode 100644 index 0000000..c234d1c --- /dev/null +++ b/patches/canonical-cpppath.diff @@ -0,0 +1,34 @@ +# DP: Don't use any relative path names for the standard include paths. + +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -172,6 +172,14 @@ add_standard_paths (const char *sysroot, + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } + } +@@ -246,6 +254,14 @@ add_standard_paths (const char *sysroot, + else + str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } ++ { ++ char *rp = lrealpath (str); ++ if (rp) ++ { ++ free (str); ++ str = rp; ++ } ++ } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } diff --git a/patches/config-ml.diff b/patches/config-ml.diff new file mode 100644 index 0000000..36a16d1 --- /dev/null +++ b/patches/config-ml.diff @@ -0,0 +1,52 @@ +# DP: - Disable some biarch libraries for biarch builds. +# DP: - Fix multilib builds on kernels which don't support all multilibs. + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -475,6 +475,25 @@ powerpc*-*-* | rs6000*-*-*) + ;; + esac + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++old_multidirs="${multidirs}" ++multidirs="" ++for x in ${old_multidirs}; do ++ case " $x " in ++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ") ++ case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++done ++ + # Remove extraneous blanks from multidirs. + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` +@@ -877,9 +896,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + fi + fi + ++ ml_configure_args= ++ for arg in ${ac_configure_args} ++ do ++ case $arg in ++ *CC=*) ml_configure_args=${ml_config_env} ;; ++ *CXX=*) ml_configure_args=${ml_config_env} ;; ++ *) ;; ++ esac ++ done ++ + if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ + --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ +- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then ++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then + true + else + exit 1 diff --git a/patches/cross-biarch.diff b/patches/cross-biarch.diff new file mode 100644 index 0000000..a62d4d7 --- /dev/null +++ b/patches/cross-biarch.diff @@ -0,0 +1,89 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -533,7 +533,13 @@ multi-do: + else \ + if [ -d ../$${dir}/$${lib} ]; then \ + flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ +- if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \ ++ libsuffix_="$${dir}"; \ ++ if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \ ++ if [ -n "$$($${compiler} -v 2>&1 |grep '^Target: mips')" ] && [ "$${dir}" = "32" ]; then libsuffix_=o32; fi; \ ++ if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \ ++ -B$(build_tooldir)/lib/, \ ++ -B$(build_tooldir)/lib$${libsuffix_}/, \ ++ $(FLAGS_TO_PASS)) \ + CFLAGS="$(CFLAGS) $${flags}" \ + CCASFLAGS="$(CCASFLAGS) $${flags}" \ + FCFLAGS="$(FCFLAGS) $${flags}" \ +@@ -786,6 +792,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + GOC_=$GOC' ' + GDC_=$GDC' ' + else ++ if [ "${ml_dir}" = "." ]; then ++ FILTER_="s!X\\(.*\\)!\\1!p" ++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 ++ FILTER_="s!X\\(.*\\)/!\\132/!p" ++ elif [ "${ml_dir}" = "32" ] && [ "$(echo ${host} |grep '^mips')" ]; then # mips o32 -> libo32 ++ FILTER_="s!X\\(.*\\)/!\\1o32/!p" ++ else ++ FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p" ++ fi + # Create a regular expression that matches any string as long + # as ML_POPDIR. + popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'` +@@ -794,6 +809,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;; ++ -B*/lib/) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -806,6 +823,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -818,6 +837,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -830,6 +851,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -842,6 +865,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -854,6 +879,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) diff --git a/patches/cross-fixes.diff b/patches/cross-fixes.diff new file mode 100644 index 0000000..cfe223f --- /dev/null +++ b/patches/cross-fixes.diff @@ -0,0 +1,81 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/ia64/fde-glibc.c | 3 +++ + gcc/config/ia64/unwind-ia64.c | 3 ++- + gcc/unwind-compat.c | 2 ++ + gcc/unwind-generic.h | 2 ++ + 6 files changed, 14 insertions(+), 1 deletions(-) + +Index: b/src/libgcc/config/ia64/fde-glibc.c +=================================================================== +--- a/src/libgcc/config/ia64/fde-glibc.c ++++ b/src/libgcc/config/ia64/fde-glibc.c +@@ -28,6 +28,7 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif ++#ifndef inhibit_libc + #include "config.h" + #include + #include +@@ -159,3 +160,5 @@ _Unwind_FindTableEntry (void *pc, unw_wo + + return data.ret; + } ++ ++#endif +Index: b/src/libgcc/config/ia64/unwind-ia64.c +=================================================================== +--- a/src/libgcc/config/ia64/unwind-ia64.c ++++ b/src/libgcc/config/ia64/unwind-ia64.c +@@ -26,6 +26,7 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2466,3 +2467,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +Index: b/src/libgcc/unwind-compat.c +=================================================================== +--- a/src/libgcc/unwind-compat.c ++++ b/src/libgcc/unwind-compat.c +@@ -23,6 +23,7 @@ + . */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -207,3 +208,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +Index: b/src/libgcc/unwind-generic.h +=================================================================== +--- a/src/libgcc/unwind-generic.h ++++ b/src/libgcc/unwind-generic.h +@@ -221,6 +221,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + static inline _Unwind_Ptr + _Unwind_GetDataRelBase (struct _Unwind_Context *_C) + { +@@ -237,6 +238,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif /* inhibit_libc */ + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); diff --git a/patches/cross-install-location-gm2.diff b/patches/cross-install-location-gm2.diff new file mode 100644 index 0000000..9fbfcea --- /dev/null +++ b/patches/cross-install-location-gm2.diff @@ -0,0 +1,154 @@ +--- ./src/libgm2/libcor/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libcor/Makefile.am 2019-07-20 19:08:41.827125474 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libcor/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libcor/Makefile.in 2019-07-20 19:09:04.631281919 +0200 +@@ -380,7 +380,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/libiso/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libiso/Makefile.am 2019-07-20 19:09:20.055398547 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libiso/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libiso/Makefile.in 2019-07-20 19:09:48.035631457 +0200 +@@ -396,7 +396,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/liblog/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/liblog/Makefile.am 2019-07-20 19:09:57.287714323 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/liblog/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/liblog/Makefile.in 2019-07-20 19:10:16.295893344 +0200 +@@ -385,7 +385,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/libmin/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libmin/Makefile.am 2019-07-20 19:10:42.940163506 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libmin/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libmin/Makefile.in 2019-07-20 19:10:53.552277128 +0200 +@@ -383,7 +383,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/libpim/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libpim/Makefile.am 2019-07-20 19:11:01.084359796 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libpim/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libpim/Makefile.in 2019-07-20 19:11:09.660455929 +0200 +@@ -392,7 +392,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/libpth/Makefile.am~ 2019-07-11 00:09:29.000000000 +0200 ++++ ./src/libgm2/libpth/Makefile.am 2019-07-20 19:11:16.896538671 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libpth/Makefile.in~ 2019-07-11 00:09:29.000000000 +0200 ++++ ./src/libgm2/libpth/Makefile.in 2019-07-20 19:12:01.565081356 +0200 +@@ -304,7 +304,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) +--- ./src/libgm2/libulm/Makefile.am~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libulm/Makefile.am 2019-07-20 19:08:16.910977263 +0200 +@@ -11,7 +11,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + # Used to install the shared libgcc. + slibdir = @slibdir@ + +--- ./src/libgm2/libulm/Makefile.in~ 2019-07-08 17:12:57.000000000 +0200 ++++ ./src/libgm2/libulm/Makefile.in 2019-07-20 19:08:03.650908456 +0200 +@@ -395,7 +395,7 @@ + version := $(shell $(CC) -dumpversion) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version) ++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version) + MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) + MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) + MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi) diff --git a/patches/cross-install-location.diff b/patches/cross-install-location.diff new file mode 100644 index 0000000..9d6669d --- /dev/null +++ b/patches/cross-install-location.diff @@ -0,0 +1,369 @@ +--- a/src/fixincludes/Makefile.in ++++ b/src/fixincludes/Makefile.in +@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica + gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + # Where our executable files go + itoolsdir = $(libexecsubdir)/install-tools + # Where our data files go +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -717,7 +717,7 @@ gcc_version := $(shell @get_gcc_base_ver + @LIBGFOR_USE_SYMVER_GNU_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = $(srcdir)/gfortran.map + @LIBGFOR_USE_SYMVER_SUN_TRUE@@LIBGFOR_USE_SYMVER_TRUE@version_dep = gfortran.map-sun + gfor_c_HEADERS = $(srcdir)/ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) + +@@ -732,12 +732,12 @@ libgfortran_la_LDFLAGS = -version-info ` + + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) +-@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + @IEEE_SUPPORT_TRUE@nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \ + -I$(srcdir)/$(MULTISRCTOP)../gcc/config $(LIBQUADINCLUDE) \ +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -31,7 +31,7 @@ version_dep = + endif + + gfor_c_HEADERS = $(srcdir)/ISO_Fortran_binding.h +-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ + $(lt_host_flags) +@@ -47,14 +47,14 @@ libgfortran_la_LDFLAGS = -version-info ` + libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) + + cafexeclib_LTLIBRARIES = libcaf_single.la +-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libcaf_single_la_SOURCES = caf/single.c + libcaf_single_la_LDFLAGS = -static + libcaf_single_la_DEPENDENCIES = caf/libcaf.h + libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) + + if IEEE_SUPPORT +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude + nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod + endif + +--- a/src/lto-plugin/Makefile.in ++++ b/src/lto-plugin/Makefile.in +@@ -338,7 +338,7 @@ with_libiberty = @with_libiberty@ + ACLOCAL_AMFLAGS = -I .. -I ../config + AUTOMAKE_OPTIONS = no-dependencies + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ + AM_LDFLAGS = @ac_lto_plugin_ldflags@ +--- a/src/lto-plugin/Makefile.am ++++ b/src/lto-plugin/Makefile.am +@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies + + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + target_noncanonical := @target_noncanonical@ +-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) + + AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) + AM_CFLAGS = @ac_lto_plugin_warn_cflags@ +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -458,8 +458,8 @@ SUBDIRS = testsuite + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) + abi_version = -fabi-version=4 + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \ +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -12,8 +12,8 @@ abi_version = -fabi-version=4 + config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -4482,7 +4482,7 @@ process_command (unsigned int decoded_op + GCC_EXEC_PREFIX is typically a directory name with a trailing + / (which is ignored by make_relative_prefix), so append a + program name. */ +- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL); ++ char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL); + gcc_libexec_prefix = get_relative_prefix (tmp_prefix, + standard_exec_prefix, + standard_libexec_prefix); +@@ -4508,15 +4508,15 @@ process_command (unsigned int decoded_op + { + int len = strlen (gcc_exec_prefix); + +- if (len > (int) sizeof ("/lib/gcc/") - 1 ++ if (len > (int) sizeof ("/lib/gcc-cross/") - 1 + && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1]))) + { +- temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1; ++ temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1; + if (IS_DIR_SEPARATOR (*temp) + && filename_ncmp (temp + 1, "lib", 3) == 0 + && IS_DIR_SEPARATOR (temp[4]) +- && filename_ncmp (temp + 5, "gcc", 3) == 0) +- len -= sizeof ("/lib/gcc/") - 1; ++ && filename_ncmp (temp + 5, "gcc-cross", 3) == 0) ++ len -= sizeof ("/lib/gcc-cross/") - 1; + } + + set_std_prefix (gcc_exec_prefix, len); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -617,9 +617,9 @@ libexecdir = @libexecdir@ + # -------- + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libsubdir = $(libdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which the compiler finds executables +-libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++libexecsubdir = $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) + # Directory in which all plugin resources are installed + plugin_resourcesdir = $(libsubdir)/plugin + # Directory in which plugin headers are installed +@@ -2160,8 +2160,8 @@ default-d.o: config/default-d.c + + DRIVER_DEFINES = \ + -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ +- -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ ++ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \ + -DDEFAULT_TARGET_VERSION=\"$(version)\" \ + -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \ + -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ +@@ -2853,7 +2853,7 @@ PREPROCESSOR_DEFINES = \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \ + -DPREFIX=\"$(prefix)/\" \ +- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ ++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + + CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) +--- a/src/libssp/Makefile.in ++++ b/src/libssp/Makefile.in +@@ -365,7 +365,7 @@ gcc_version := $(shell @get_gcc_base_ver + @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun + AM_CFLAGS = -Wall $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + libssp_la_SOURCES = \ + ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ +--- a/src/libssp/Makefile.am ++++ b/src/libssp/Makefile.am +@@ -39,7 +39,7 @@ AM_CFLAGS += $(XCFLAGS) + toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la + + target_noncanonical = @target_noncanonical@ +-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include + nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h + + libssp_la_SOURCES = \ +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -467,7 +467,7 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + @BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + @BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \ + @BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/acoshq.c math/fmodq.c \ + @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -41,7 +41,7 @@ libquadmath_la_LDFLAGS = -version-info ` + libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) + + nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + libquadmath_la_SOURCES = \ + math/x2y2m1q.c math/acoshq.c math/fmodq.c \ +--- a/src/libobjc/Makefile.in ++++ b/src/libobjc/Makefile.in +@@ -48,7 +48,7 @@ extra_ldflags_libobjc = @extra_ldflags_l + top_builddir = . + + libdir = $(exec_prefix)/lib +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) + + # Multilib support variables. + MULTISRCTOP = +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -68,7 +68,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub + + target_noncanonical:=@target_noncanonical@ + version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) + + # exeext should not be used because it's the *host* exeext. We're building +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -521,8 +521,8 @@ gcc_version := $(shell @get_gcc_base_ver + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + AM_CPPFLAGS = $(addprefix -I, $(search_path)) + AM_CFLAGS = $(XCFLAGS) + AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -11,8 +11,8 @@ config_path = @config_path@ + search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ + $(top_srcdir)/../include + +-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + vpath % $(strip $(search_path)) + +--- a/src/libgcc/Makefile.in ++++ b/src/libgcc/Makefile.in +@@ -199,7 +199,7 @@ STRIP = @STRIP@ + STRIP_FOR_TARGET = $(STRIP) + + # Directory in which the compiler finds libraries etc. +-libsubdir = $(libdir)/gcc/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ ++libsubdir = $(libdir)/gcc-cross/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ + # Used to install the shared libgcc. + slibdir = @slibdir@ + # Maybe used for DLLs on Windows targets. +--- a/src/libffi/include/Makefile.am ++++ b/src/libffi/include/Makefile.am +@@ -8,6 +8,6 @@ EXTRA_DIST=ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + + toollibffi_HEADERS = ffi.h ffitarget.h +--- a/src/libffi/include/Makefile.in ++++ b/src/libffi/include/Makefile.in +@@ -321,7 +321,7 @@ EXTRA_DIST = ffi.h.in + + # Where generated headers like ffitarget.h get installed. + gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include ++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include + toollibffi_HEADERS = ffi.h ffitarget.h + all: all-am + +--- a/src/libcc1/Makefile.am ++++ b/src/libcc1/Makefile.am +@@ -37,7 +37,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) + +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + + if ENABLE_PLUGIN +--- a/src/libcc1/Makefile.in ++++ b/src/libcc1/Makefile.in +@@ -393,7 +393,7 @@ libiberty = $(if $(wildcard $(libiberty_ + $(Wc)$(libiberty_normal))) + + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) +-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin ++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin + cc1libdir = $(libdir)/$(libsuffix) + @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la + @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la +--- a/src/libsanitizer/Makefile.am ++++ b/src/libsanitizer/Makefile.am +@@ -1,6 +1,6 @@ + ACLOCAL_AMFLAGS = -I .. -I ../config + +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + + nodist_saninclude_HEADERS = + +--- a/src/libsanitizer/Makefile.in ++++ b/src/libsanitizer/Makefile.in +@@ -357,7 +357,7 @@ top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I .. -I ../config +-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer ++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer + nodist_saninclude_HEADERS = $(am__append_1) + @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ + @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -200,6 +200,8 @@ AC_SUBST(SPEC_PHOBOS_DEPS) + libtool_VERSION=76:3:0 + AC_SUBST(libtool_VERSION) + ++# trigger rebuild of the configure file ++ + # Set default flags (after DRUNTIME_WERROR!) + if test -z "$GDCFLAGS"; then + GDCFLAGS="-Wall $WERROR_FLAG -g -frelease -O2" +--- a/src/libphobos/m4/druntime.m4 ++++ b/src/libphobos/m4/druntime.m4 +@@ -105,6 +105,7 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES], + + # Default case for install directory for D sources files. + gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d' ++ gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${gcc_version}/include/d + AC_SUBST(gdc_include_dir) + ]) + diff --git a/patches/cross-no-locale-include.diff b/patches/cross-no-locale-include.diff new file mode 100644 index 0000000..7b7c18a --- /dev/null +++ b/patches/cross-no-locale-include.diff @@ -0,0 +1,17 @@ +# DP: Don't add /usr/local/include for cross compilers. Assume that +# DP: /usr/include is ready for multiarch, but not /usr/local/include. + +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -66,8 +66,11 @@ + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++#if 0 ++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif ++#endif + #ifdef PREFIX_INCLUDE_DIR + { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, + #endif diff --git a/patches/cuda-float128.diff b/patches/cuda-float128.diff new file mode 100644 index 0000000..7ac4c73 --- /dev/null +++ b/patches/cuda-float128.diff @@ -0,0 +1,24 @@ +# Mask __float128 types from CUDA compilers (LP: #1717257) + +--- a/src/libstdc++-v3/include/std/type_traits ++++ b/src/libstdc++-v3/include/std/type_traits +@@ -341,7 +341,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + struct __is_floating_point_helper + : public true_type { }; + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + template<> + struct __is_floating_point_helper<__float128> + : public true_type { }; +--- a/src/libstdc++-v3/include/bits/std_abs.h ++++ b/src/libstdc++-v3/include/bits/std_abs.h +@@ -97,7 +97,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION + abs(__GLIBCXX_TYPE_INT_N_3 __x) { return __x >= 0 ? __x : -__x; } + #endif + +-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) ++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) + inline _GLIBCXX_CONSTEXPR + __float128 + abs(__float128 __x) diff --git a/patches/disable-gdc-tests.diff b/patches/disable-gdc-tests.diff new file mode 100644 index 0000000..ef9e21c --- /dev/null +++ b/patches/disable-gdc-tests.diff @@ -0,0 +1,19 @@ +# DP: Disable D tests, hang on many buildds + +Index: b/src/gcc/d/Make-lang.in +=================================================================== +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -148,9 +148,9 @@ d.srcman: doc/gdc.1 + # check targets. However, our DejaGNU framework requires 'check-gdc' as its + # entry point. We feed the former to the latter here. + check-d: check-gdc +-lang_checks += check-gdc +-lang_checks_parallelized += check-gdc +-check_gdc_parallelize = 10 ++#lang_checks += check-gdc ++#lang_checks_parallelized += check-gdc ++#check_gdc_parallelize = 10 + + # Install hooks. + diff --git a/patches/g++-multiarch-incdir.diff b/patches/g++-multiarch-incdir.diff new file mode 100644 index 0000000..d397de0 --- /dev/null +++ b/patches/g++-multiarch-incdir.diff @@ -0,0 +1,109 @@ +# DP: Use /usr/include//c++/4.x as the include directory +# DP: for host dependent c++ header files. + +--- a/src/libstdc++-v3/include/Makefile.am ++++ b/src/libstdc++-v3/include/Makefile.am +@@ -969,7 +969,7 @@ endif + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/libstdc++-v3/include/Makefile.in ++++ b/src/libstdc++-v3/include/Makefile.in +@@ -1306,7 +1306,7 @@ profile_impl_headers = \ + @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits +-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits ++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -1172,6 +1172,7 @@ FLAGS_TO_PASS = \ + "prefix=$(prefix)" \ + "local_prefix=$(local_prefix)" \ + "gxx_include_dir=$(gcc_gxx_include_dir)" \ ++ "gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ + "build_tooldir=$(build_tooldir)" \ + "gcc_tooldir=$(gcc_tooldir)" \ + "bindir=$(bindir)" \ +@@ -1721,6 +1722,14 @@ ifneq ($(xmake_file),) + include $(xmake_file) + endif + ++# Directory in which the compiler finds target-dependent g++ includes. ++ifneq ($(call if_multiarch,non-empty),) ++ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(version) ++else ++ gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) ++endif ++ ++ + # all-tree.def includes all the tree.def files. + all-tree.def: s-alltree; @true + s-alltree: Makefile +@@ -2846,7 +2855,7 @@ PREPROCESSOR_DEFINES = \ + -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ +- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ ++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -49,6 +49,8 @@ const struct default_include cpp_include + /* Pick up GNU C++ target-dependent include files. */ + { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -159,6 +159,18 @@ add_standard_paths (const char *sysroot, + } + str = reconcat (str, str, dir_separator_str, + imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); + } + add_path (str, INC_SYSTEM, p->cxx_aware, false); + } +@@ -223,7 +235,16 @@ add_standard_paths (const char *sysroot, + free (str); + continue; + } +- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ if (p->cplusplus && strstr (str, "/c++/")) ++ { ++ char *suffix = strstr (str, "/c++/"); ++ *suffix++ = '\0'; ++ suffix = xstrdup (suffix); ++ str = reconcat (str, str, dir_separator_str, imultiarch, ++ dir_separator_str, suffix, NULL); ++ } ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); + } + + add_path (str, INC_SYSTEM, p->cxx_aware, false); diff --git a/patches/gcc-as-needed-gold.diff b/patches/gcc-as-needed-gold.diff new file mode 100644 index 0000000..72a4c92 --- /dev/null +++ b/patches/gcc-as-needed-gold.diff @@ -0,0 +1,56 @@ +# DP: Use --push-state/--pop-state for gold as well when linking libtsan. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -706,10 +706,10 @@ proper position among the other output f + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ +- " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " %{!static-libasan:--push-state --no-as-needed}" \ + " -lasan " \ + " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libasan:--pop-state}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -727,10 +727,10 @@ proper position among the other output f + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libtsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " %{!static-libtsan:--push-state --no-as-needed}" \ + " -ltsan " \ + " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libtsan:--pop-state}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -748,10 +748,10 @@ proper position among the other output f + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) + #define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ +- " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " %{!static-liblsan:--push-state --no-as-needed}" \ + " -llsan " \ + " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-liblsan:--pop-state}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -767,10 +767,10 @@ proper position among the other output f + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC + #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ +- " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " %{!static-libubsan:--push-state --no-as-needed}" \ + " -lubsan " \ + " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ " %{!static-libubsan:--pop-state}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS diff --git a/patches/gcc-as-needed.diff b/patches/gcc-as-needed.diff new file mode 100644 index 0000000..9f32196 --- /dev/null +++ b/patches/gcc-as-needed.diff @@ -0,0 +1,218 @@ +# DP: On linux targets pass --as-needed by default to the linker, but always +# DP: link the sanitizer libraries with --no-as-needed. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -705,8 +705,11 @@ proper position among the other output f + #ifdef LIBASAN_EARLY_SPEC + #define LIBASAN_SPEC STATIC_LIBASAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \ +- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libasan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " -lasan " \ ++ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBASAN_LIBS + #else + #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS +@@ -723,8 +726,11 @@ proper position among the other output f + #ifdef LIBTSAN_EARLY_SPEC + #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \ +- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libtsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " -ltsan " \ ++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBTSAN_LIBS + #else + #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS +@@ -741,8 +747,11 @@ proper position among the other output f + #ifdef LIBLSAN_EARLY_SPEC + #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS + #elif defined(HAVE_LD_STATIC_DYNAMIC) +-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \ +- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-liblsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " -llsan " \ ++ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBLSAN_LIBS + #else + #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS +@@ -757,8 +766,11 @@ proper position among the other output f + #define STATIC_LIBUBSAN_LIBS \ + " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" + #ifdef HAVE_LD_STATIC_DYNAMIC +-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \ +- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ ++ " %{!static-libubsan:%{!fuse-ld=gold:--push-state }--no-as-needed}" \ ++ " -lubsan " \ ++ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ + STATIC_LIBUBSAN_LIBS + #else + #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS +--- a/src/gcc/config/gnu-user.h ++++ b/src/gcc/config/gnu-user.h +@@ -136,17 +136,17 @@ see the files COPYING3 and COPYING.RUNTI + #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ + "%{static-libasan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBTSAN_EARLY_SPEC + #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ + "%{static-libtsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #undef LIBLSAN_EARLY_SPEC + #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ + "%{static-liblsan:%{!shared:" \ + LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ +- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}" ++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" + #endif + + #undef TARGET_F951_OPTIONS +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -36,6 +36,7 @@ + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ + --hash-style=gnu \ ++ --as-needed \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC " --hash-style=gnu \ ++#define LINK_SPEC " --hash-style=gnu --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -87,7 +87,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu --as-needed %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -77,7 +77,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -473,13 +473,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -790,7 +790,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu --as-needed %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ + --hash-style=gnu \ ++ --as-needed \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu --as-needed %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu --as-needed %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -71,6 +71,7 @@ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ + --hash-style=gnu \ ++ --as-needed \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/mips/gnu-user.h ++++ b/src/gcc/config/mips/gnu-user.h +@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. + #undef GNU_USER_TARGET_LINK_SPEC + #define GNU_USER_TARGET_LINK_SPEC "\ + %{G*} %{EB} %{EL} %{mips*} %{shared} \ ++ -as-needed \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. + + #define LINK_SPEC "\ + -hash-style=gnu \ ++-as-needed \ + -melf" XLEN_SPEC "lriscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + %{shared} \ diff --git a/patches/gcc-auto-build.diff b/patches/gcc-auto-build.diff new file mode 100644 index 0000000..aad1c6d --- /dev/null +++ b/patches/gcc-auto-build.diff @@ -0,0 +1,13 @@ +# DP: Fix cross building a native compiler. + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1740,7 +1740,7 @@ else + # Clearing GMPINC is necessary to prevent host headers being + # used by the build compiler. Defining GENERATOR_FILE stops + # system.h from including gmp.h. +- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ ++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ + CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ + LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ + GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \ diff --git a/patches/gcc-default-fortify-source.diff b/patches/gcc-default-fortify-source.diff new file mode 100644 index 0000000..74d7ed0 --- /dev/null +++ b/patches/gcc-default-fortify-source.diff @@ -0,0 +1,42 @@ +# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, +# DP: if the optimization level is > 0 + +--- + gcc/doc/invoke.texi | 6 ++++++ + gcc/c-family/c-cppbuiltin.c | 3 + + 2 files changed, 9 insertions(+), 0 deletions(-) + +Index: b/src/gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -7105,6 +7105,12 @@ also turns on the following optimization + Please note the warning under @option{-fgcse} about + invoking @option{-O2} on programs that use computed gotos. + ++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2} is ++set by default, and is activated when @option{-O} is set to 2 or higher. ++This enables additional compile-time and run-time checks for several libc ++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or ++@option{-D_FORTIFY_SOURCE=0}. ++ + @item -O3 + @opindex O3 + Optimize yet more. @option{-O3} turns on all optimizations specified +Index: b/src/gcc/c-family/c-cppbuiltin.c +=================================================================== +--- a/src/gcc/c-family/c-cppbuiltin.c ++++ b/src/gcc/c-family/c-cppbuiltin.c +@@ -1335,6 +1335,12 @@ c_cpp_builtins (cpp_reader *pfile) + builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0); + builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0); + ++#if !defined(ACCEL_COMPILER) ++ /* Fortify Source enabled by default for optimization levels > 0 */ ++ if (optimize) ++ builtin_define_with_int_value ("_FORTIFY_SOURCE", 2); ++#endif ++ + /* Misc. */ + if (flag_gnu89_inline) + cpp_define (pfile, "__GNUC_GNU_INLINE__"); diff --git a/patches/gcc-default-relro.diff b/patches/gcc-default-relro.diff new file mode 100644 index 0000000..9e80816 --- /dev/null +++ b/patches/gcc-default-relro.diff @@ -0,0 +1,42 @@ +# DP: Turn on -Wl,-z,relro by default. + +--- + gcc/doc/invoke.texi | 3 +++ + gcc/gcc.c | 1 + + 2 files changed, 4 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -13520,6 +13520,9 @@ For example, @option{-Wl,-Map,output.map + linker. When using the GNU linker, you can also get the same effect with + @option{-Wl,-Map=output.map}. + ++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option ++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. ++ + @item -u @var{symbol} + @opindex u + Pretend the symbol @var{symbol} is undefined, to force linking of +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -1122,6 +1122,12 @@ proper position among the other output f + to understand them. In practice, this means it had better be collect2. */ + /* %{e*} includes -export-dynamic; see comment in common.opt. */ + ++#if defined(ACCEL_COMPILER) ++# define RELRO_SPEC "" ++#else ++# define RELRO_SPEC "-z relro " ++#endif ++ + #ifndef LINK_COMMAND_SPEC + #define LINK_COMMAND_SPEC "\ + %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ +@@ -1130,6 +1136,7 @@ proper position among the other output f + "%{flto|flto=*:%/*.h instead? */ ++#include "distro-defaults.h" ++ + #include "config.h" + #include "system.h" + #include "coretypes.h" +@@ -875,6 +880,69 @@ + #define LINK_GCC_C_SEQUENCE_SPEC "%G %{!nolibc:%L %G}" + #endif + ++/* Generate full unwind information covering all program points. ++ Only needed for some architectures. */ ++#ifndef ASYNC_UNWIND_SPEC ++# ifdef DIST_DEFAULT_ASYNC_UNWIND ++# define ASYNC_UNWIND_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}" ++# else ++# define ASYNC_UNWIND_SPEC "" ++# endif ++#endif ++ ++/* Turn on stack protector. ++ */ ++#ifndef SSP_DEFAULT_SPEC ++# ifdef DIST_DEFAULT_SSP ++# ifdef DIST_DEFAULT_SSP_STRONG ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}}" ++# else ++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}" ++# endif ++# else ++# define SSP_DEFAULT_SPEC "" ++# endif ++#endif ++ ++/* Turn on -Wformat -Wformat-security by default for C, C++, ++ ObjC, ObjC++. */ ++#ifndef FORMAT_SECURITY_SPEC ++# ifdef DIST_DEFAULT_FORMAT_SECURITY ++# define FORMAT_SECURITY_SPEC " %{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" ++# else ++# define FORMAT_SECURITY_SPEC "" ++# endif ++#endif ++ ++/* Enable -fstack-clash-protection by default. Only available ++ on some targets. */ ++#ifndef STACK_CLASH_SPEC ++# ifdef DIST_DEFAULT_STACK_CLASH ++# define STACK_CLASH_SPEC " %{!fno-stack-clash-protection:-fstack-clash-protection}" ++# else ++# define STACK_CLASH_SPEC "" ++# endif ++#endif ++ ++/* Enable code instrumentation of control-flow transfers. ++ Available on x86 and x86_64. */ ++#ifndef CF_PROTECTION_SPEC ++# ifdef DIST_DEFAULT_CF_PROTECTION ++# define CF_PROTECTION_SPEC " %{!fcf-protection*:%{!fno-cf-protection:-fcf-protection}}" ++# else ++# define CF_PROTECTION_SPEC "" ++# endif ++#endif ++ ++/* Don't enable any of those for the offload compilers, ++ unsupported. */ ++#if !defined(DISTRO_DEFAULT_SPEC) && !defined(ACCEL_COMPILER) ++# define DISTRO_DEFAULT_SPEC ASYNC_UNWIND_SPEC SSP_DEFAULT_SPEC \ ++ FORMAT_SECURITY_SPEC STACK_CLASH_SPEC CF_PROTECTION_SPEC ++#else ++# define DISTRO_DEFAULT_SPEC "" ++#endif ++ + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ +@@ -1079,6 +1148,7 @@ + static const char *cc1_spec = CC1_SPEC; + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; ++static const char *distro_default_spec = DISTRO_DEFAULT_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; + static const char *asm_spec = ASM_SPEC; + static const char *asm_final_spec = ASM_FINAL_SPEC; +@@ -1136,7 +1206,7 @@ + "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\ + %{f*} %{g*:%{%:debug-level-gt(0):%{g*}\ + %{!fno-working-directory:-fworking-directory}}} %{O*}\ +- %{undef} %{save-temps*:-fpch-preprocess}"; ++ %{undef} %{save-temps*:-fpch-preprocess} %(distro_defaults)"; + + /* This contains cpp options which are not passed when the preprocessor + output will be used by another program. */ +@@ -1319,9 +1389,9 @@ + %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\ + cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \ +- %(cc1_options)}\ ++ %(cc1_options)%(distro_defaults)}\ + %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(distro_defaults)}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1}, + {"-", + "%{!E:%e-E or -x required when input is from standard input}\ +@@ -1335,18 +1405,18 @@ + %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\ + cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \ +- %(cc1_options)\ ++ %(cc1_options) %(distro_defaults)\ + %{!fsyntax-only:%{!S:-o %g.s} \ + %{!fdump-ada-spec*:%{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}}%V}}\ + %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(distro_defaults)\ + %{!fsyntax-only:%{!S:-o %g.s} \ + %{!fdump-ada-spec*:%{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0}, + {".i", "@cpp-output", 0, 0, 0}, + {"@cpp-output", +- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, ++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(distro_defaults) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {".s", "@assembler", 0, 0, 0}, + {"@assembler", + "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0}, +@@ -1577,6 +1647,7 @@ + INIT_STATIC_SPEC ("cc1_options", &cc1_options), + INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec), + INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec), ++ INIT_STATIC_SPEC ("distro_defaults", &distro_default_spec), + INIT_STATIC_SPEC ("link_ssp", &link_ssp_spec), + INIT_STATIC_SPEC ("endfile", &endfile_spec), + INIT_STATIC_SPEC ("link", &link_spec), +Index: gcc/cp/lang-specs.h +=================================================================== +--- a/src/gcc/cp/lang-specs.h (revision 270858) ++++ a/src/gcc/cp/lang-specs.h (working copy) +@@ -47,7 +47,7 @@ + " cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed" + " %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}" + " %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}" +- " %(cc1_options) %2" ++ " %(cc1_options) %(distro_defaults) %2" + " %{!fsyntax-only:%{!S:-o %g.s}" + " %{!fdump-ada-spec*:%{!o*:--output-pch=%i.gch}" + " %W{o*:--output-pch=%*}}%V}}}}", +@@ -60,11 +60,11 @@ + " cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed" + " %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}" + " %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}" +- " %(cc1_options) %2" ++ " %(cc1_options) %(distro_defaults) %2" + " %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".ii", "@c++-cpp-output", 0, 0, 0}, + {"@c++-cpp-output", + "%{!E:%{!M:%{!MM:" +- " cc1plus -fpreprocessed %i %(cc1_options) %2" ++ " cc1plus -fpreprocessed %i %(cc1_options) %(distro_defaults) %2" + " %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +Index: gcc/objc/lang-specs.h +=================================================================== +--- a/src/gcc/objc/lang-specs.h (revision 270858) ++++ a/src/gcc/objc/lang-specs.h (working copy) +@@ -29,9 +29,9 @@ + %{traditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\ +- cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ ++ cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(distro_defaults) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps*:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(distro_defaults) %{print-objc-runtime-info} %{gen-decls}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objective-c-header", + "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\ +@@ -40,11 +40,11 @@ + %{traditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\ +- cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj -fpreprocessed %b.mi %(cc1_options) %(distro_defaults) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}\ + %{!save-temps*:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(distro_defaults) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, + {".mi", "@objective-c-cpp-output", 0, 0, 0}, +@@ -53,5 +53,5 @@ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc-cpp-output", + "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\ +- %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(distro_defaults) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +Index: gcc/objcp/lang-specs.h +=================================================================== +--- a/src/gcc/objcp/lang-specs.h (revision 270858) ++++ a/src/gcc/objcp/lang-specs.h (working copy) +@@ -36,7 +36,7 @@ + %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\ + cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(distro_defaults) %2\ + -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@objective-c++", +@@ -46,16 +46,16 @@ + %(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\ + cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\ + %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2\ ++ %(cc1_options) %(distro_defaults) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".mii", "@objective-c++-cpp-output", 0, 0, 0}, + {"@objective-c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(distro_defaults) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc++-cpp-output", + "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\ + %{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(distro_defaults) %2\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, diff --git a/patches/gcc-driver-extra-langs-linaro.diff b/patches/gcc-driver-extra-langs-linaro.diff new file mode 100644 index 0000000..6fd50a3 --- /dev/null +++ b/patches/gcc-driver-extra-langs-linaro.diff @@ -0,0 +1,22 @@ +# DP: Add options and specs for languages that are not built from a source +# DP: (but built from separate sources). + +--- + gcc/Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -527,8 +527,8 @@ xm_include_list=@xm_include_list@ + xm_defines=@xm_defines@ + lang_checks= + lang_checks_parallelized= +-lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt +-lang_specs_files=@lang_specs_files@ ++lang_opt_files=$(sort @lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt)) ++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h)) + lang_tree_files=@lang_tree_files@ + target_cpu_default=@target_cpu_default@ + OBJC_BOEHM_GC=@objc_boehm_gc@ diff --git a/patches/gcc-driver-extra-langs.diff b/patches/gcc-driver-extra-langs.diff new file mode 100644 index 0000000..b64ccbf --- /dev/null +++ b/patches/gcc-driver-extra-langs.diff @@ -0,0 +1,20 @@ +# DP: Add options and specs for languages that are not built from a source +# DP: (but built from separate sources). + +--- + gcc/Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -567,8 +567,8 @@ xm_include_list=@xm_include_list@ + xm_defines=@xm_defines@ + lang_checks= + lang_checks_parallelized= +-lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt +-lang_specs_files=@lang_specs_files@ ++lang_opt_files=$(sort @lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt)) ++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h)) + lang_tree_files=@lang_tree_files@ + target_cpu_default=@target_cpu_default@ + OBJC_BOEHM_GC=@objc_boehm_gc@ diff --git a/patches/gcc-foffload-default.diff b/patches/gcc-foffload-default.diff new file mode 100644 index 0000000..1ad0556 --- /dev/null +++ b/patches/gcc-foffload-default.diff @@ -0,0 +1,121 @@ +# DP: Allow setting offload targets by OFFLOAD_TARGET_DEFAULT + +http://pkgs.fedoraproject.org/cgit/rpms/gcc.git/tree/gcc7-foffload-default.patch + +2017-01-20 Jakub Jelinek + + * gcc.c (offload_targets_default): New variable. + (process_command): Set it if -foffload is defaulted. + (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 + into environment if -foffload has been defaulted. + * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. + (compile_images_for_offload_targets): If OFFLOAD_TARGET_DEFAULT + is in the environment, don't fail if corresponding mkoffload + can't be found. Free and clear offload_names if no valid offload + is found. +libgomp/ + * target.c (gomp_load_plugin_for_device): If a plugin can't be + dlopened, assume it has no devices silently. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -301,6 +301,10 @@ static const char *spec_host_machine = D + + static char *offload_targets = NULL; + ++/* Set to true if -foffload has not been used and offload_targets ++ is set to the configured in default. */ ++static bool offload_targets_default; ++ + /* Nonzero if cross-compiling. + When -b is used, the value comes from the `specs' file. */ + +@@ -4680,7 +4684,10 @@ process_command (unsigned int decoded_op + /* If the user didn't specify any, default to all configured offload + targets. */ + if (ENABLE_OFFLOADING && offload_targets == NULL) +- handle_foffload_option (OFFLOAD_TARGETS); ++ { ++ handle_foffload_option (OFFLOAD_TARGETS); ++ offload_targets_default = true; ++ } + + if (output_file + && strcmp (output_file, "-") != 0 +@@ -7898,6 +7905,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () + obstack_grow (&collect_obstack, offload_targets, + strlen (offload_targets) + 1); + xputenv (XOBFINISH (&collect_obstack, char *)); ++ if (offload_targets_default) ++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); + } + + free (offload_targets); +--- a/src/gcc/lto-wrapper.c ++++ b/src/gcc/lto-wrapper.c +@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. + /* Environment variable, used for passing the names of offload targets from GCC + driver to lto-wrapper. */ + #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" ++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" + + enum lto_mode_d { + LTO_MODE_NONE, /* Not doing LTO. */ +@@ -881,8 +882,10 @@ compile_images_for_offload_targets (unsi + if (!target_names) + return; + unsigned num_targets = parse_env_var (target_names, &names, NULL); ++ const char *target_names_default = getenv (OFFLOAD_TARGET_DEFAULT_ENV); + + int next_name_entry = 0; ++ bool hsa_seen = false; + const char *compiler_path = getenv ("COMPILER_PATH"); + if (!compiler_path) + goto out; +@@ -895,18 +898,32 @@ compile_images_for_offload_targets (unsi + /* HSA does not use LTO-like streaming and a different compiler, skip + it. */ + if (strcmp (names[i], "hsa") == 0) +- continue; ++ { ++ hsa_seen = true; ++ continue; ++ } + + offload_names[next_name_entry] + = compile_offload_image (names[i], compiler_path, in_argc, in_argv, + compiler_opts, compiler_opt_count, + linker_opts, linker_opt_count); + if (!offload_names[next_name_entry]) +- fatal_error (input_location, +- "problem with building target image for %s\n", names[i]); ++ { ++ if (target_names_default != NULL) ++ continue; ++ fatal_error (input_location, ++ "problem with building target image for %s\n", ++ names[i]); ++ } + next_name_entry++; + } + ++ if (next_name_entry == 0 && !hsa_seen) ++ { ++ free (offload_names); ++ offload_names = NULL; ++ } ++ + out: + free_array_of_ptrs ((void **) names, num_targets); + } +--- a/src/libgomp/target.c ++++ b/src/libgomp/target.c +@@ -2592,7 +2592,7 @@ gomp_load_plugin_for_device (struct gomp + + void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); + if (!plugin_handle) +- goto dl_fail; ++ return 0; + + /* Check if all required functions are available in the plugin and store + their handlers. None of the symbols can legitimately be NULL, diff --git a/patches/gcc-force-cross-layout.diff b/patches/gcc-force-cross-layout.diff new file mode 100644 index 0000000..db27f16 --- /dev/null +++ b/patches/gcc-force-cross-layout.diff @@ -0,0 +1,49 @@ +# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3070,7 +3070,7 @@ target_configargs="$target_configargs ${ + # native. However, it would be better to use other mechanisms to make the + # sorts of decisions they want to make on this basis. Please consider + # this option to be deprecated. FIXME. +-if test x${is_cross_compiler} = xyes ; then ++if test x${is_cross_compiler} = xyes || test x${FORCE_CROSS_LAYOUT} = xyes; then + target_configargs="--with-cross-host=${host_noncanonical} ${target_configargs}" + fi + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2072,14 +2072,14 @@ SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADE + BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR) + + if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x || +- test x$build != x$host || test "x$with_build_sysroot" != x; then ++ test x$build != x$host || test "x$with_build_sysroot" != x || test x$FORCE_CROSS_LAYOUT = xyes; then + if test "x$with_build_sysroot" != x; then + BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' + else + BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)' + fi + +- if test x$host != x$target ++ if test x$host != x$target || test x$FORCE_CROSS_LAYOUT = xyes + then + CROSS="-DCROSS_DIRECTORY_STRUCTURE" + ALL=all.cross +@@ -6447,14 +6447,14 @@ AC_SUBST_FILE(language_hooks) + + # Echo link setup. + if test x${build} = x${host} ; then +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build a native compiler for ${target}." 1>&2 + else + echo "Links are now set up to build a cross-compiler" 1>&2 + echo " from ${host} to ${target}." 1>&2 + fi + else +- if test x${host} = x${target} ; then ++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then + echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 + echo " for ${target}." 1>&2 + else diff --git a/patches/gcc-gfdl-build.diff b/patches/gcc-gfdl-build.diff new file mode 100644 index 0000000..1d4c482 --- /dev/null +++ b/patches/gcc-gfdl-build.diff @@ -0,0 +1,38 @@ +# DP: Build a dummy s-tm-texi without access to the texinfo sources + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -2472,31 +2472,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi + # \r is not portable to Solaris tr, therefore we have a special + # case for ASCII. We use \r for other encodings like EBCDIC. + s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in +- $(RUN_GEN) build/genhooks$(build_exeext) -d \ +- $(srcdir)/doc/tm.texi.in > tmp-tm.texi +- case `echo X|tr X '\101'` in \ +- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ +- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ +- esac +- mv tmp2-tm.texi tmp-tm.texi +- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi +- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ +- $(STAMP) $@; \ +- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ +- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ +- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ +- ); then \ +- echo >&2 ; \ +- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ +- false; \ +- else \ +- echo >&2 ; \ +- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ +- echo new text in $(objdir)/tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ +- false; \ +- fi ++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++ $(STAMP) $@ + + gimple-match.c: s-match gimple-match-head.c ; @true + generic-match.c: s-match generic-match-head.c ; @true diff --git a/patches/gcc-hash-style-both.diff b/patches/gcc-hash-style-both.diff new file mode 100644 index 0000000..f0af163 --- /dev/null +++ b/patches/gcc-hash-style-both.diff @@ -0,0 +1,183 @@ +# DP: Link using --hash-style=both (alpha, amd64, armel, armhf, ia64, i386, powerpc, ppc64, riscv64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=both. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=both. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=both. + +2018-03-02 Aurelien Jarno + + * config/riscv/linux.h (LINK_SPEC): Add --hash-style=both. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/gcc/config/alpha/linux-elf.h +=================================================================== +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +Index: b/src/gcc/config/ia64/linux.h +=================================================================== +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/rs6000/linux64.h +=================================================================== +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -385,11 +385,11 @@ + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}" + +Index: b/src/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -788,7 +788,7 @@ + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +Index: b/src/gcc/config/s390/linux.h +=================================================================== +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -65,7 +65,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +Index: b/src/gcc/config/sparc/linux.h +=================================================================== +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/arm/linux-elf.h +=================================================================== +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -67,6 +67,7 @@ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=both \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +Index: b/src/gcc/config/i386/gnu-user.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +Index: b/src/gcc/config/i386/gnu-user64.h +=================================================================== +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +Index: b/src/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -24,6 +24,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=both \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +Index: b/src/gcc/config/riscv/linux.h +=================================================================== +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -50,6 +50,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINK_SPEC "\ ++-hash-style=both \ + -melf" XLEN_SPEC "lriscv \ + %{shared} \ + {!shared: \ diff --git a/patches/gcc-hash-style-gnu.diff b/patches/gcc-hash-style-gnu.diff new file mode 100644 index 0000000..3fa418f --- /dev/null +++ b/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,164 @@ +# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64, +# DP: i386, powerpc, ppc64, riscv64, s390, sparc) + +2006-07-11 Jakub Jelinek + + * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. + * config/i386/linux64.h (LINK_SPEC): Likewise. + * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. + * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, + LINK_OS_LINUX_SPEC64): Likewise. + * config/s390/linux.h (LINK_SPEC): Likewise. + * config/ia64/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux.h (LINK_SPEC): Likewise. + * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, + LINK_ARCH64_SPEC): Likewise. + * config/alpha/linux-elf.h (LINK_SPEC): Likewise. + +2009-12-21 Matthias Klose + + * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu. + +2012-11-17 Matthias Klose + + * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu. + +2018-03-02 Aurelien Jarno + + * config/riscv/linux.h (LINK_SPEC): Add --hash-style=gnu. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. + + #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -58,7 +58,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC " --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -473,13 +473,13 @@ extern int dot_symbols; + " -m elf64ppc") + #endif + +-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ + %(link_os_extra_spec32)" + +-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ + %{!static-pie: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -790,7 +790,7 @@ GNU_USER_TARGET_CC1_SPEC + #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif + +-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" + +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -77,7 +77,7 @@ along with GCC; see the file COPYING3. + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -87,7 +87,7 @@ extern const char *host_detect_local_cpu + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -70,6 +70,7 @@ + %{rdynamic:-export-dynamic} \ + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ + -X \ ++ --hash-style=gnu \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + +--- a/src/gcc/config/i386/gnu-user.h ++++ b/src/gcc/config/i386/gnu-user.h +@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3. + { "link_emulation", GNU_USER_LINK_EMULATION },\ + { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } + +-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{!static-pie: \ +--- a/src/gcc/config/i386/gnu-user64.h ++++ b/src/gcc/config/i386/gnu-user64.h +@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI + "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ + %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ + %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/aarch64/aarch64-linux.h ++++ b/src/gcc/config/aarch64/aarch64-linux.h +@@ -35,6 +35,7 @@ + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + + #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=gnu \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ +--- a/src/gcc/config/riscv/linux.h ++++ b/src/gcc/config/riscv/linux.h +@@ -58,6 +58,7 @@ along with GCC; see the file COPYING3. + "%{mabi=ilp32:_ilp32}" + + #define LINK_SPEC "\ ++-hash-style=gnu \ + -melf" XLEN_SPEC "lriscv" LD_EMUL_SUFFIX " \ + %{mno-relax:--no-relax} \ + %{shared} \ diff --git a/patches/gcc-ice-apport.diff b/patches/gcc-ice-apport.diff new file mode 100644 index 0000000..9fecbb5 --- /dev/null +++ b/patches/gcc-ice-apport.diff @@ -0,0 +1,22 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -7125,6 +7125,16 @@ do_report_bug (const char **new_argv, co + fflush(stderr); + free(cmd); + } ++ if (!env.get ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file) ++ + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], *out_file); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-ice-dump.diff b/patches/gcc-ice-dump.diff new file mode 100644 index 0000000..788489f --- /dev/null +++ b/patches/gcc-ice-dump.diff @@ -0,0 +1,39 @@ +# DP: For ICEs, dump the preprocessed source file to stderr +# DP: when in a distro build environment. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3394,7 +3394,8 @@ execute (void) + /* For ICEs in cc1, cc1obj, cc1plus see if it is + reproducible or not. */ + const char *p; +- if (flag_report_bug ++ const char *deb_build_options = env.get("DEB_BUILD_OPTIONS"); ++ if ((flag_report_bug || deb_build_options) + && WEXITSTATUS (status) == ICE_EXIT_CODE + && i == 0 + && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) +@@ -7107,8 +7108,23 @@ do_report_bug (const char **new_argv, co + + if (status == ATTEMPT_STATUS_SUCCESS) + { ++ const char *deb_build_options = env.get("DEB_BUILD_OPTIONS"); ++ + fnotice (stderr, "Preprocessed source stored into %s file," + " please attach this to your bugreport.\n", *out_file); ++ if (deb_build_options) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++ sprintf(cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid(), *out_file); ++ fprintf(stderr, "=== BEGIN GCC DUMP ===\n"); ++ fflush(stderr); ++ system(cmd); ++ fflush(stderr); ++ fprintf(stderr, "=== END GCC DUMP ===\n"); ++ fflush(stderr); ++ free(cmd); ++ } + /* Make sure it is not deleted. */ + free (*out_file); + *out_file = NULL; diff --git a/patches/gcc-linaro-doc.diff b/patches/gcc-linaro-doc.diff new file mode 100644 index 0000000..11a3f8b --- /dev/null +++ b/patches/gcc-linaro-doc.diff @@ -0,0 +1,2 @@ +# DP: Changes for the Linaro 8-2018.xx snapshot (documentation). + diff --git a/patches/gcc-linaro-no-macros.diff b/patches/gcc-linaro-no-macros.diff new file mode 100644 index 0000000..c94dbe8 --- /dev/null +++ b/patches/gcc-linaro-no-macros.diff @@ -0,0 +1,92 @@ +# DP : Don't add the __LINARO_RELEASE__ and __LINARO_SPIN__ macros for distro builds. + +Index: b/src/gcc/cppbuiltin.c +=================================================================== +--- a/src/gcc/cppbuiltin.c ++++ b/src/gcc/cppbuiltin.c +@@ -53,41 +53,18 @@ parse_basever (int *major, int *minor, i + *patchlevel = s_patchlevel; + } + +-/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]" +- to create Linaro release number YYYYMM and spin version. */ +-static void +-parse_linarover (int *release, int *spin) +-{ +- static int s_year = -1, s_month, s_spin; +- +- if (s_year == -1) +- if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3) +- { +- sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month); +- s_spin = 0; +- } +- +- if (release) +- *release = s_year * 100 + s_month; +- +- if (spin) +- *spin = s_spin; +-} + + /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__. */ + static void + define__GNUC__ (cpp_reader *pfile) + { +- int major, minor, patchlevel, linaro_release, linaro_spin; ++ int major, minor, patchlevel; + + parse_basever (&major, &minor, &patchlevel); +- parse_linarover (&linaro_release, &linaro_spin); + cpp_define_formatted (pfile, "__GNUC__=%d", major); + cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor); + cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel); + cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string); +- cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release); +- cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin); + cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED); + cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST); + cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE); +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -845,12 +845,10 @@ BASEVER := $(srcdir)/BASE-VER # 4.x + DEVPHASE := $(srcdir)/DEV-PHASE # experimental, prerelease, "" + DATESTAMP := $(srcdir)/DATESTAMP # YYYYMMDD or empty + REVISION := $(srcdir)/REVISION # [BRANCH revision XXXXXX] +-LINAROVER := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev] + + BASEVER_c := $(shell cat $(BASEVER)) + DEVPHASE_c := $(shell cat $(DEVPHASE)) + DATESTAMP_c := $(shell cat $(DATESTAMP)) +-LINAROVER_c := $(shell cat $(LINAROVER)) + + ifeq (,$(wildcard $(REVISION))) + REVISION_c := +@@ -877,7 +875,6 @@ DATESTAMP_s := \ + "\"$(if $(DEVPHASE_c)$(filter-out 0,$(PATCHLEVEL_c)), $(DATESTAMP_c))\"" + PKGVERSION_s:= "\"@PKGVERSION@\"" + BUGURL_s := "\"@REPORT_BUGS_TO@\"" +-LINAROVER_s := "\"$(LINAROVER_c)\"" + + PKGVERSION := @PKGVERSION@ + BUGURL_TEXI := @REPORT_BUGS_TEXI@ +@@ -2804,9 +2801,8 @@ PREPROCESSOR_DEFINES = \ + -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + +-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \ +- -DLINAROVER=$(LINAROVER_s) +-cppbuiltin.o: $(BASEVER) $(LINAROVER) ++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) ++cppbuiltin.o: $(BASEVER) + + CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES) + +Index: b/src/gcc/LINARO-VERSION +=================================================================== +--- a/src/gcc/LINARO-VERSION ++++ /dev/null +@@ -1,1 +0,0 @@ +-Snapshot 7.2-2017.09 diff --git a/patches/gcc-linaro.diff b/patches/gcc-linaro.diff new file mode 100644 index 0000000..ae1c251 --- /dev/null +++ b/patches/gcc-linaro.diff @@ -0,0 +1,9 @@ +# DP: Changes for the Linaro 8-2018.xx snapshot. + +MSG=$(git log origin/linaro/gcc-8-branch --format=format:"%s" -n 1 --grep "Merge branches"); SVN=${MSG##* }; git log origin/gcc-7-branch --format=format:"%H" -n 1 --grep "gcc-7-branch@${SVN%.}" + +LANG=C git diff --no-renames bb85d61e6bfbadee4494e034a5d8187cf0626aed 1604249e382610b087a72d0d07103f815458cec0 \ + | egrep -v '^(diff|index) ' \ + | filterdiff --strip=1 --addoldprefix=a/src/ --addnewprefix=b/src/ \ + | sed 's,a/src//dev/null,/dev/null,' + diff --git a/patches/gcc-lto-jobserver-doc.diff b/patches/gcc-lto-jobserver-doc.diff new file mode 100644 index 0000000..00b3a3e --- /dev/null +++ b/patches/gcc-lto-jobserver-doc.diff @@ -0,0 +1,24 @@ +# DP: Backport LTO jobserver support (documentation). + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -10327,7 +10327,7 @@ If you specify the optional @var{n}, the + generation done at link time is executed in parallel using @var{n} + parallel jobs by utilizing an installed @command{make} program. The + environment variable @env{MAKE} may be used to override the program +-used. The default value for @var{n} is 1. ++used. + + You can also specify @option{-flto=jobserver} to use GNU make's + job server mode to determine the number of parallel jobs. This +@@ -10336,6 +10336,10 @@ You must prepend a @samp{+} to the comma + for this to work. This option likely only works if @env{MAKE} is + GNU make. + ++Use @option{-flto=auto} to use GNU make's job server, if available, ++or otherwise fall back to autodetection of the number of CPU threads ++present in your system. ++ + @item -flto-partition=@var{alg} + @opindex flto-partition + Specify the partitioning algorithm used by the link-time optimizer. diff --git a/patches/gcc-lto-jobserver.diff b/patches/gcc-lto-jobserver.diff new file mode 100644 index 0000000..82dd009 --- /dev/null +++ b/patches/gcc-lto-jobserver.diff @@ -0,0 +1,499 @@ +# DP: Backport LTO jobserver support. + +f12fbeb535f192f742025cc4f9b69a48136730f1 +e63ca5570db076ec7b7bdfa55d51ef6f654d9412 +d25b1154d110c5403525b66fa54c5aefddd50de7 +907e3499443d0e441fcb3b7575d6432598413bff +567ef43c98f6783dde4290467476f8de389c3c10 +267389902a985871dd172ab5c5b651f0cd082290 +5aa3a1348175aff8d670cb9d0fb5f28444e84aa5 + +gcc/ + +2019-07-30 Martin Liska + + * doc/invoke.texi: Document new behavior. + * lto-wrapper.c (cpuset_popcount): New function + is a copy of libgomp/config/linux/proc.c. + (init_num_threads): Likewise. + (run_gcc): Automatically detect core count for -flto. + (jobserver_active_p): New function. + +2019-08-02 Martin Liska + + PR lto/91313 + * gcc.c (driver::maybe_run_linker): Call detect_jobserver + to detect working job server. + (driver::detect_jobserver): Test whether jobserver + is active from GCC driver. That will prevent situation where + GCC is invoked from a LD plugin and the linker already uses + file descriptors suggested by make. That leads to a wrong + detection. + * gcc.h (driver): Add detect_jobserver. + * lto-wrapper.c (jobserver_active_p): Simplify sscanf by + not scanning for --jobserver-auth prefix. + +2019-08-08 Martin Liska + + PR bootstrap/91352 + * gcc.c (driver::detect_jobserver): Use is_valid_fd. + * lto-wrapper.c (jobserver_active_p): Likewise. + +2019-08-09 Martin Liska + + * opts.c (common_handle_option): Error for an invalid argument + to -flto=. + +2019-08-09 Martin Liska + + * doc/invoke.texi: Document the option value. + * lto-wrapper.c (run_gcc): Set auto_parallel + only with -flto=auto. + +2019-08-23 Martin Liska + + * lto-wrapper.c (run_gcc): When setting jobserver + set also parallel to 1. This was done so before r273908. + +gcc/testsuite/ + +2019-08-09 Martin Liska + + * gcc.dg/spellcheck-options-21.c: New test. + +2019-08-09 Martin Liska + + * g++.dg/lto/devirt-19_0.C: Add -flto=auto. + +include/ + +2019-08-08 Martin Liska + + PR bootstrap/91352 + * libiberty.h (is_valid_fd): New function. + +libiberty/ + +2019-08-08 Martin Liska + + PR bootstrap/91352 + * lrealpath.c (is_valid_fd): New function. + +2019-08-12 Martin Liska + + * Makefile.in: Add filedescriptor.c. + * filedescriptor.c: New file. + * lrealpath.c (is_valid_fd): Remove. + + + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -8261,6 +8261,8 @@ driver::maybe_run_linker (const char *ar + { + int tmp = execution_count; + ++ detect_jobserver (); ++ + if (! have_c) + { + #if HAVE_LTO_PLUGIN > 0 +@@ -8350,6 +8352,46 @@ driver::final_actions () const + } + } + ++/* Detect whether jobserver is active and working. If not drop ++ --jobserver-auth from MAKEFLAGS. */ ++ ++void ++driver::detect_jobserver () const ++{ ++ /* Detect jobserver and drop it if it's not working. */ ++ const char *makeflags = env.get ("MAKEFLAGS"); ++ if (makeflags != NULL) ++ { ++ const char *needle = "--jobserver-auth="; ++ const char *n = strstr (makeflags, needle); ++ if (n != NULL) ++ { ++ int rfd = -1; ++ int wfd = -1; ++ ++ bool jobserver ++ = (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2 ++ && rfd > 0 ++ && wfd > 0 ++ && is_valid_fd (rfd) ++ && is_valid_fd (wfd)); ++ ++ /* Drop the jobserver if it's not working now. */ ++ if (!jobserver) ++ { ++ unsigned offset = n - makeflags; ++ char *dup = xstrdup (makeflags); ++ dup[offset] = '\0'; ++ ++ const char *space = strchr (makeflags + offset, ' '); ++ if (space != NULL) ++ strcpy (dup + offset, space); ++ xputenv (concat ("MAKEFLAGS=", dup, NULL)); ++ } ++ } ++ } ++} ++ + /* Determine what the exit code of the driver should be. */ + + int +--- a/src/gcc/gcc.h ++++ b/src/gcc/gcc.h +@@ -51,6 +51,7 @@ class driver + void do_spec_on_infiles () const; + void maybe_run_linker (const char *argv0) const; + void final_actions () const; ++ void detect_jobserver () const; + int get_exit_code () const; + + private: +--- a/src/gcc/lto-wrapper.c ++++ b/src/gcc/lto-wrapper.c +@@ -1106,6 +1106,136 @@ cmp_priority (const void *a, const void + return *((const int *)b)-*((const int *)a); + } + ++/* Number of CPUs that can be used for parallel LTRANS phase. */ ++ ++static unsigned long nthreads_var = 0; ++ ++#ifdef HAVE_PTHREAD_AFFINITY_NP ++unsigned long cpuset_size; ++static unsigned long get_cpuset_size; ++cpu_set_t *cpusetp; ++ ++unsigned long ++static cpuset_popcount (unsigned long cpusetsize, cpu_set_t *cpusetp) ++{ ++#ifdef CPU_COUNT_S ++ /* glibc 2.7 and above provide a macro for this. */ ++ return CPU_COUNT_S (cpusetsize, cpusetp); ++#else ++#ifdef CPU_COUNT ++ if (cpusetsize == sizeof (cpu_set_t)) ++ /* glibc 2.6 and above provide a macro for this. */ ++ return CPU_COUNT (cpusetp); ++#endif ++ size_t i; ++ unsigned long ret = 0; ++ STATIC_ASSERT (sizeof (cpusetp->__bits[0]) == sizeof (unsigned long int)); ++ for (i = 0; i < cpusetsize / sizeof (cpusetp->__bits[0]); i++) ++ { ++ unsigned long int mask = cpusetp->__bits[i]; ++ if (mask == 0) ++ continue; ++ ret += __builtin_popcountl (mask); ++ } ++ return ret; ++#endif ++} ++#endif ++ ++/* At startup, determine the default number of threads. It would seem ++ this should be related to the number of cpus online. */ ++ ++static void ++init_num_threads (void) ++{ ++#ifdef HAVE_PTHREAD_AFFINITY_NP ++#if defined (_SC_NPROCESSORS_CONF) && defined (CPU_ALLOC_SIZE) ++ cpuset_size = sysconf (_SC_NPROCESSORS_CONF); ++ cpuset_size = CPU_ALLOC_SIZE (cpuset_size); ++#else ++ cpuset_size = sizeof (cpu_set_t); ++#endif ++ ++ cpusetp = (cpu_set_t *) xmalloc (gomp_cpuset_size); ++ do ++ { ++ int ret = pthread_getaffinity_np (pthread_self (), gomp_cpuset_size, ++ cpusetp); ++ if (ret == 0) ++ { ++ /* Count only the CPUs this process can use. */ ++ nthreads_var = cpuset_popcount (cpuset_size, cpusetp); ++ if (nthreads_var == 0) ++ break; ++ get_cpuset_size = cpuset_size; ++#ifdef CPU_ALLOC_SIZE ++ unsigned long i; ++ for (i = cpuset_size * 8; i; i--) ++ if (CPU_ISSET_S (i - 1, cpuset_size, cpusetp)) ++ break; ++ cpuset_size = CPU_ALLOC_SIZE (i); ++#endif ++ return; ++ } ++ if (ret != EINVAL) ++ break; ++#ifdef CPU_ALLOC_SIZE ++ if (cpuset_size < sizeof (cpu_set_t)) ++ cpuset_size = sizeof (cpu_set_t); ++ else ++ cpuset_size = cpuset_size * 2; ++ if (cpuset_size < 8 * sizeof (cpu_set_t)) ++ cpusetp ++ = (cpu_set_t *) realloc (cpusetp, cpuset_size); ++ else ++ { ++ /* Avoid fatal if too large memory allocation would be ++ requested, e.g. kernel returning EINVAL all the time. */ ++ void *p = realloc (cpusetp, cpuset_size); ++ if (p == NULL) ++ break; ++ cpusetp = (cpu_set_t *) p; ++ } ++#else ++ break; ++#endif ++ } ++ while (1); ++ cpuset_size = 0; ++ nthreads_var = 1; ++ free (cpusetp); ++ cpusetp = NULL; ++#endif ++#ifdef _SC_NPROCESSORS_ONLN ++ nthreads_var = sysconf (_SC_NPROCESSORS_ONLN); ++#endif ++} ++ ++/* FIXME: once using -std=c11, we can use std::thread::hardware_concurrency. */ ++ ++/* Return true when a jobserver is running and can accept a job. */ ++ ++static bool ++jobserver_active_p (void) ++{ ++ const char *makeflags = getenv ("MAKEFLAGS"); ++ if (makeflags == NULL) ++ return false; ++ ++ const char *needle = "--jobserver-auth="; ++ const char *n = strstr (makeflags, needle); ++ if (n == NULL) ++ return false; ++ ++ int rfd = -1; ++ int wfd = -1; ++ ++ return (sscanf (n + strlen (needle), "%d,%d", &rfd, &wfd) == 2 ++ && rfd > 0 ++ && wfd > 0 ++ && is_valid_fd (rfd) ++ && is_valid_fd (wfd)); ++} + + /* Execute gcc. ARGC is the number of arguments. ARGV contains the arguments. */ + +@@ -1120,6 +1250,7 @@ run_gcc (unsigned argc, char *argv[]) + const char *collect_gcc, *collect_gcc_options; + int parallel = 0; + int jobserver = 0; ++ int auto_parallel = 0; + bool no_partition = false; + struct cl_decoded_option *fdecoded_options = NULL; + struct cl_decoded_option *offload_fdecoded_options = NULL; +@@ -1243,8 +1374,13 @@ run_gcc (unsigned argc, char *argv[]) + case OPT_flto_: + if (strcmp (option->arg, "jobserver") == 0) + { ++ parallel = 1; + jobserver = 1; ++ } ++ else if (strcmp (option->arg, "auto") == 0) ++ { + parallel = 1; ++ auto_parallel = 1; + } + else + { +@@ -1286,8 +1422,14 @@ run_gcc (unsigned argc, char *argv[]) + { + lto_mode = LTO_MODE_LTO; + jobserver = 0; ++ auto_parallel = 0; + parallel = 0; + } ++ else if (!jobserver && jobserver_active_p ()) ++ { ++ parallel = 1; ++ jobserver = 1; ++ } + + if (linker_output) + { +@@ -1479,7 +1621,21 @@ cont1: + strcpy (tmp, ltrans_output_file); + + if (jobserver) +- obstack_ptr_grow (&argv_obstack, xstrdup ("-fwpa=jobserver")); ++ { ++ if (verbose) ++ fprintf (stderr, "Using make jobserver\n"); ++ obstack_ptr_grow (&argv_obstack, xstrdup ("-fwpa=jobserver")); ++ } ++ else if (auto_parallel) ++ { ++ char buf[256]; ++ init_num_threads (); ++ if (verbose) ++ fprintf (stderr, "LTO parallelism level set to %ld\n", ++ nthreads_var); ++ sprintf (buf, "-fwpa=%ld", nthreads_var); ++ obstack_ptr_grow (&argv_obstack, xstrdup (buf)); ++ } + else if (parallel > 1) + { + char buf[256]; +@@ -1687,7 +1843,8 @@ cont: + i = 3; + if (!jobserver) + { +- snprintf (jobs, 31, "-j%d", parallel); ++ snprintf (jobs, 31, "-j%ld", ++ auto_parallel ? nthreads_var : parallel); + new_argv[i++] = jobs; + } + new_argv[i++] = "all"; +--- a/src/gcc/opts.c ++++ b/src/gcc/opts.c +@@ -2738,6 +2738,15 @@ common_handle_option (struct gcc_options + opts->x_flag_lto = value ? "" : NULL; + break; + ++ case OPT_flto_: ++ if (strcmp (arg, "none") != 0 ++ && strcmp (arg, "jobserver") != 0 ++ && strcmp (arg, "auto") != 0 ++ && atoi (arg) == 0) ++ error_at (loc, ++ "unrecognized argument to %<-flto=%> option: %qs", arg); ++ break; ++ + case OPT_w: + dc->dc_inhibit_warnings = true; + break; +--- a/src/gcc/testsuite/g++.dg/lto/devirt-19_0.C ++++ b/src/gcc/testsuite/g++.dg/lto/devirt-19_0.C +@@ -1,5 +1,5 @@ + /* { dg-lto-do link } */ + /* { dg-lto-options { "-O2 -fdump-ipa-cp -Wno-return-type -flto -r -nostdlib" } } */ +-/* { dg-extra-ld-options "-flinker-output=nolto-rel" } */ ++/* { dg-extra-ld-options "-flinker-output=nolto-rel -flto=auto" } */ + #include "../ipa/devirt-19.C" + /* { dg-final { scan-wpa-ipa-dump-times "Discovered a virtual call to a known target" 1 "cp" } } */ +--- /dev/null ++++ b/src/gcc/testsuite/gcc.dg/spellcheck-options-21.c +@@ -0,0 +1,3 @@ ++/* { dg-do compile } */ ++/* { dg-options "-flto=sparta" } */ ++/* { dg-error "unrecognized argument to '-flto=' option: 'sparta'" "" { target *-*-* } 0 } */ +--- a/src/include/libiberty.h ++++ b/src/include/libiberty.h +@@ -137,6 +137,10 @@ extern const char *unix_lbasename (const + + extern char *lrealpath (const char *); + ++/* Return true when FD file descriptor exists. */ ++ ++extern int is_valid_fd (int fd); ++ + /* Concatenate an arbitrary number of strings. You must pass NULL as + the last argument of this function, to terminate the list of + strings. Allocates memory using xmalloc. */ +--- a/src/libiberty/Makefile.in ++++ b/src/libiberty/Makefile.in +@@ -127,7 +127,7 @@ CFILES = alloca.c argv.c asprintf.c atex + calloc.c choose-temp.c clock.c concat.c cp-demangle.c \ + cp-demint.c cplus-dem.c crc32.c \ + d-demangle.c dwarfnames.c dyn-string.c \ +- fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c \ ++ fdmatch.c ffs.c fibheap.c filedescriptor.c filename_cmp.c floatformat.c \ + fnmatch.c fopen_unlocked.c \ + getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \ + gettimeofday.c \ +@@ -171,6 +171,7 @@ REQUIRED_OFILES = \ + ./cp-demint.$(objext) ./crc32.$(objext) ./d-demangle.$(objext) \ + ./dwarfnames.$(objext) ./dyn-string.$(objext) \ + ./fdmatch.$(objext) ./fibheap.$(objext) \ ++ ./filedescriptor.$(objext) \ + ./filename_cmp.$(objext) ./floatformat.$(objext) \ + ./fnmatch.$(objext) ./fopen_unlocked.$(objext) \ + ./getopt.$(objext) ./getopt1.$(objext) ./getpwd.$(objext) \ +@@ -756,6 +757,17 @@ $(CONFIGURED_OFILES): stamp-picdir stamp + else true; fi + $(COMPILE.c) $(srcdir)/fibheap.c $(OUTPUT_OPTION) + ++./filedescriptor.$(objext): $(srcdir)/filedescriptor.c config.h $(INCDIR)/ansidecl.h \ ++ $(INCDIR)/libiberty.h ++ if [ x"$(PICFLAG)" != x ]; then \ ++ $(COMPILE.c) $(PICFLAG) $(srcdir)/filedescriptor.c -o pic/$@; \ ++ else true; fi ++ if [ x"$(NOASANFLAG)" != x ]; then \ ++ $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/filedescriptor.c -o noasan/$@; \ ++ else true; fi ++ $(COMPILE.c) $(srcdir)/filedescriptor.c $(OUTPUT_OPTION) ++ ++ + ./filename_cmp.$(objext): $(srcdir)/filename_cmp.c config.h $(INCDIR)/ansidecl.h \ + $(INCDIR)/filenames.h $(INCDIR)/hashtab.h \ + $(INCDIR)/safe-ctype.h +--- /dev/null ++++ b/src/libiberty/filedescriptor.c +@@ -0,0 +1,47 @@ ++/* File descriptor related functions. ++ ++ Copyright (C) 2019 Free Software Foundation, Inc. ++ ++ This file is part of the libiberty library. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin Street - Fifth Floor, ++ Boston, MA 02110-1301, USA. */ ++ ++#include "config.h" ++#include "ansidecl.h" ++#include "libiberty.h" ++ ++#ifdef HAVE_FCNTL_H ++#include ++#endif ++ ++#if defined (_WIN32) ++#define WIN32_LEAN_AND_MEAN ++#include /* for GetFullPathName */ ++#endif ++/* Return true when FD file descriptor exists. */ ++ ++int ++is_valid_fd (int fd) ++{ ++#if defined(_WIN32) ++ HANDLE h = (HANDLE) _get_osfhandle (fd); ++ return h != (HANDLE) -1; ++#elif defined(F_GETFD) ++ return fcntl (fd, F_GETFD) >= 0; ++#else ++ return dup2 (fd, fd) < 0; ++#endif ++} diff --git a/patches/gcc-lto-pick-compile-time-g-doc.diff b/patches/gcc-lto-pick-compile-time-g-doc.diff new file mode 100644 index 0000000..08235e6 --- /dev/null +++ b/patches/gcc-lto-pick-compile-time-g-doc.diff @@ -0,0 +1,29 @@ +# DP: Make LTO link pick up compile-time -g (documentation) + +https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00501.html + +2019-09-09 Richard Biener + + * lto-opts.c (lto_write_options): Stream -g when debug is enabled. + * lto-wrapper.c (merge_and_complain): Pick up -g. + (append_compiler_options): Likewise. + (run_gcc): Re-instantiate handling -g0 at link-time. + * doc/invoke.texi (flto): Document debug info generation. + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -10335,6 +10335,14 @@ conflicting translation units. Specific + precedence; and for example @option{-ffp-contract=off} takes precedence + over @option{-ffp-contract=fast}. You can override them at link time. + ++To enable debug info generation you need to supply @option{-g} at ++compile-time. If any of the input files at link time were built ++with debug info generation enabled the link will enable debug info ++generation as well. Any elaborate debug info settings ++like the dwarf level @option{-gdwarf-5} need to be explicitely repeated ++at the linker command line and mixing different settings in different ++translation units is discouraged. ++ + If LTO encounters objects with C linkage declared with incompatible + types in separate translation units to be linked together (undefined + behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be diff --git a/patches/gcc-lto-pick-compile-time-g.diff b/patches/gcc-lto-pick-compile-time-g.diff new file mode 100644 index 0000000..3cbf48e --- /dev/null +++ b/patches/gcc-lto-pick-compile-time-g.diff @@ -0,0 +1,54 @@ +# DP: Make LTO link pick up compile-time -g + +https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00501.html + +2019-09-09 Richard Biener + + * lto-opts.c (lto_write_options): Stream -g when debug is enabled. + * lto-wrapper.c (merge_and_complain): Pick up -g. + (append_compiler_options): Likewise. + (run_gcc): Re-instantiate handling -g0 at link-time. + * doc/invoke.texi (flto): Document debug info generation. + +--- a/src/gcc/lto-opts.c ++++ b/src/gcc/lto-opts.c +@@ -94,6 +94,10 @@ lto_write_options (void) + : "-fno-pie"); + } + ++ /* If debug info is enabled append -g. */ ++ if (debug_info_level > DINFO_LEVEL_NONE) ++ append_to_collect_gcc_options (&temporary_obstack, &first_p, "-g"); ++ + /* Append options from target hook and store them to offload_lto section. */ + if (lto_stream_offload_p) + { +--- a/src/gcc/lto-wrapper.c ++++ b/src/gcc/lto-wrapper.c +@@ -265,6 +265,7 @@ merge_and_complain (struct cl_decoded_op + case OPT_fshow_column: + case OPT_fcommon: + case OPT_fgnu_tm: ++ case OPT_g: + /* Do what the old LTO code did - collect exactly one option + setting per OPT code, we pick the first we encounter. + ??? This doesn't make too much sense, but when it doesn't +@@ -617,6 +618,7 @@ append_compiler_options (obstack *argv_o + case OPT_fopenacc: + case OPT_fopenacc_dim_: + case OPT_foffload_abi_: ++ case OPT_g: + case OPT_O: + case OPT_Ofast: + case OPT_Og: +@@ -1399,6 +1401,10 @@ run_gcc (unsigned argc, char *argv[]) + linker_output_rel = !strcmp (option->arg, "rel"); + break; + ++ case OPT_g: ++ /* Recognize -g0. */ ++ skip_debug = option->arg && !strcmp (option->arg, "0"); ++ break; + + default: + break; diff --git a/patches/gcc-multiarch.diff b/patches/gcc-multiarch.diff new file mode 100644 index 0000000..09b7219 --- /dev/null +++ b/patches/gcc-multiarch.diff @@ -0,0 +1,222 @@ +# DP: - Remaining multiarch patches, not yet submitted upstream. +# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, +# DP: which are used for the non-multilib builds. + +2013-06-12 Matthias Klose + + * config/i386/t-linux64: Set MULTIARCH_DIRNAME. + * config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME. + * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend + i386/t-linux to $tmake_file; + set default ABI to N64 for mips64el. + * config/mips/t-linux64: Set MULTIARCH_DIRNAME. + * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. + * config/s390/t-linux64: Set MULTIARCH_DIRNAME. + * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. + * src/gcc/config/mips/mips.h: (/usr)/lib as default path. + +--- a/src/gcc/config/sh/t-linux ++++ b/src/gcc/config/sh/t-linux +@@ -1,2 +1,10 @@ + MULTILIB_DIRNAMES= + MULTILIB_MATCHES = ++ ++ifneq (,$(findstring sh4,$(target))) ++MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu) ++else ++MULTILIB_OSDIRNAMES = .:sh3-linux-gnu sh3_nofpu-linux-gnu:sh3-linux-gnu ++MULTIARCH_DIRNAME = $(call if_multiarch,sh3-linux-gnu) ++endif +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) + MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++ ++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) + MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) + ++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c + $(COMPILE) $< + $(POSTCOMPILE) +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) + MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++ ++ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) ++ else ++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) ++ endif ++else ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) ++endif +--- a/src/gcc/config/i386/t-kfreebsd ++++ b/src/gcc/config/i386/t-kfreebsd +@@ -1,5 +1,9 @@ +-MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++ifeq (,$(MULTIARCH_DIRNAME)) ++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-kfreebsd-gnu) ++endif + + # MULTILIB_OSDIRNAMES are set in t-linux64. + KFREEBSD_OS = $(filter kfreebsd%, $(word 3, $(subst -, ,$(target)))) + MULTILIB_OSDIRNAMES := $(filter-out mx32=%,$(subst linux,$(KFREEBSD_OS),$(MULTILIB_OSDIRNAMES))) ++ ++MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME)) +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -18,9 +18,22 @@ + + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 + MULTILIB_DIRNAMES = n32 32 64 ++MIPS_R6 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),r6) ++MIPS_32 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),32) ++MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) + MULTILIB_OSDIRNAMES = \ + ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ + ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ + ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ++ifneq (,$(findstring abin32,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) ++else ++ifneq (,$(findstring abi64,$(target))) ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) ++endif ++endif +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2284,6 +2284,11 @@ mips*-*-linux*) # Linux MIPS, either + target_cpu_default=MASK_SOFT_FLOAT_ABI + enable_mips_multilibs="yes" + ;; ++ mipsisa64r6*-*-linux-gnuabi64) ++ default_mips_abi=64 ++ default_mips_arch=mips64r6 ++ enable_mips_multilibs="yes" ++ ;; + mipsisa64r6*-*-linux*) + default_mips_abi=n32 + default_mips_arch=mips64r6 +@@ -2294,6 +2299,10 @@ mips*-*-linux*) # Linux MIPS, either + default_mips_arch=mips64r2 + enable_mips_multilibs="yes" + ;; ++ mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64) ++ default_mips_abi=64 ++ enable_mips_multilibs="yes" ++ ;; + mips64*-*-linux* | mipsisa64*-*-linux*) + default_mips_abi=n32 + enable_mips_multilibs="yes" +@@ -3274,6 +3283,16 @@ case ${target} in + ;; + esac + ++# non-glibc systems ++case ${target} in ++*-linux-musl*) ++ tmake_file="${tmake_file} t-musl" ++ ;; ++*-linux-uclibc*) ++ tmake_file="${tmake_file} t-uclibc" ++ ;; ++esac ++ + # Build mkoffload tool + case ${target} in + *-intelmic-* | *-intelmicemul-*) +@@ -4919,7 +4938,7 @@ case ${target} in + ;; + i[34567]86-*-linux* | x86_64-*-linux*) + extra_objs="${extra_objs} cet.o" +- tmake_file="$tmake_file i386/t-linux i386/t-cet" ++ tmake_file="i386/t-linux $tmake_file i386/t-cet" + ;; + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) + tmake_file="$tmake_file i386/t-kfreebsd" +--- a/src/gcc/config/mips/mips.h ++++ b/src/gcc/config/mips/mips.h +@@ -3444,16 +3444,6 @@ struct GTY(()) machine_function { + #define PMODE_INSN(NAME, ARGS) \ + (Pmode == SImode ? NAME ## _si ARGS : NAME ## _di ARGS) + +-/* If we are *not* using multilibs and the default ABI is not ABI_32 we +- need to change these from /lib and /usr/lib. */ +-#if MIPS_ABI_DEFAULT == ABI_N32 +-#define STANDARD_STARTFILE_PREFIX_1 "/lib32/" +-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib32/" +-#elif MIPS_ABI_DEFAULT == ABI_64 +-#define STANDARD_STARTFILE_PREFIX_1 "/lib64/" +-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib64/" +-#endif +- + /* Load store bonding is not supported by micromips and fix_24k. The + performance can be degraded for those targets. Hence, do not bond for + micromips or fix_24k. */ +--- a/src/gcc/config/tilegx/t-tilegx ++++ b/src/gcc/config/tilegx/t-tilegx +@@ -1,6 +1,7 @@ + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib ../lib32 ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:tilegx-linux-gnu) ../lib32$(call if_multiarch,:tilegx32-linux-gnu) ++MULTIARCH_DIRNAME = $(call if_multiarch,tilegx-linux-gnu) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +--- a/src/gcc/config/riscv/t-linux ++++ b/src/gcc/config/riscv/t-linux +@@ -1,3 +1,5 @@ + # Only XLEN and ABI affect Linux multilib dir names, e.g. /lib32/ilp32d/ + MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst rv64%,lib64,$(MULTILIB_DIRNAMES))) + MULTILIB_OSDIRNAMES := $(patsubst lib%,../lib%,$(MULTILIB_DIRNAMES)) ++ ++MULTIARCH_DIRNAME := $(call if_multiarch,$(firstword $(subst -, ,$(target)))-linux-gnu) +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -532,7 +532,7 @@ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_S + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +-LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ] ++LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h -o -f $(BUILD_SYSTEM_HEADER_DIR)/$(MULTIARCH_DIRNAME)/limits.h ] + + # Directory for prefix to system directories, for + # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. +--- a/src/gcc/config/aarch64/t-aarch64-linux ++++ b/src/gcc/config/aarch64/t-aarch64-linux +@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm + LIB1ASMFUNCS = _aarch64_sync_cache_range + + AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) + MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) + + MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) diff --git a/patches/gcc-multilib-multiarch.diff b/patches/gcc-multilib-multiarch.diff new file mode 100644 index 0000000..8e64315 --- /dev/null +++ b/patches/gcc-multilib-multiarch.diff @@ -0,0 +1,114 @@ +# DP: Don't auto-detect multilib osdirnames. + +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -25,7 +25,12 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring sparc64,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) +--- a/src/gcc/config/s390/t-linux64 ++++ b/src/gcc/config/s390/t-linux64 +@@ -7,7 +7,12 @@ + + MULTILIB_OPTIONS = m64/m31 + MULTILIB_DIRNAMES = 64 32 ++ifneq (,$(findstring s390x,$(target))) ++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) ++else + MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) +-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) ++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -28,8 +28,13 @@ + MULTILIB_OPTIONS := m64/m32 + MULTILIB_DIRNAMES := 64 32 + MULTILIB_EXTRA_OPTS := ++ifneq (,$(findstring powerpc64,$(target))) ++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) ++else + MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) ++endif + + MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) + +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -33,9 +33,19 @@ + comma=, + MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) + MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) ++ifneq (,$(findstring gnux32,$(target))) + MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) ++else ifneq (,$(findstring x86_64,$(target))) ++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) + MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++else ++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) ++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) ++endif + + ifneq (,$(findstring x86_64,$(target))) + ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -23,10 +23,23 @@ MIPS_32 = $(if $(findstring r6, $(firstw + MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) + MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) + MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) ++ ++ifneq (,$(findstring gnuabi64,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else ifneq (,$(findstring gnuabin32,$(target))) ++MULTILIB_OSDIRNAMES = \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++else + MULTILIB_OSDIRNAMES = \ +- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++endif + + ifneq (,$(findstring abin32,$(target))) + MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +--- a/src/gcc/config/rs6000/t-linux ++++ b/src/gcc/config/rs6000/t-linux +@@ -2,7 +2,7 @@ + # or soft-float. + ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) + ifneq (,$(findstring powerpc64,$(target))) +-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) + else + MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) + endif diff --git a/patches/gcc-search-prefixed-as-ld.diff b/patches/gcc-search-prefixed-as-ld.diff new file mode 100644 index 0000000..2b9cc5e --- /dev/null +++ b/patches/gcc-search-prefixed-as-ld.diff @@ -0,0 +1,37 @@ +# DP: Search for the -as / -ld before serching for as / ld. + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -2686,6 +2686,7 @@ for_each_path (const struct path_prefix + { + len = paths->max_len + extra_space + 1; + len += MAX (MAX (suffix_len, multi_os_dir_len), multiarch_len); ++ len += multiarch_len + 2; /* triplet prefix for as, ld. */ + path = XNEWVEC (char, len); + } + +@@ -2899,6 +2900,24 @@ file_at_path (char *path, void *data) + struct file_at_path_info *info = (struct file_at_path_info *) data; + size_t len = strlen (path); + ++ /* search for the -as / -ld first. */ ++ if (! strcmp (info->name, "as") || ! strcmp (info->name, "ld")) ++ { ++ struct file_at_path_info prefix_info = *info; ++ char *prefixed_name = XNEWVEC (char, info->name_len + 2 ++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); ++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); ++ strcat (prefixed_name, "-"); ++ strcat (prefixed_name, info->name); ++ prefix_info.name = (const char *) prefixed_name; ++ prefix_info.name_len = strlen (prefixed_name); ++ if (file_at_path (path, &prefix_info)) ++ { ++ XDELETEVEC (prefixed_name); ++ return path; ++ } ++ XDELETEVEC (prefixed_name); ++ } + memcpy (path + len, info->name, info->name_len); + len += info->name_len; + diff --git a/patches/gcc-target-include-asm.diff b/patches/gcc-target-include-asm.diff new file mode 100644 index 0000000..e3d40c3 --- /dev/null +++ b/patches/gcc-target-include-asm.diff @@ -0,0 +1,13 @@ +# DP: Search $(builddir)/sys-include for the asm header files + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3210,7 +3210,7 @@ fi + # being built; programs in there won't even run. + if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then + # Search for pre-installed headers if nothing else fits. +- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' ++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' + fi + + if test "x${use_gnu_ld}" = x && diff --git a/patches/gcc-textdomain.diff b/patches/gcc-textdomain.diff new file mode 100644 index 0000000..dc2b0b0 --- /dev/null +++ b/patches/gcc-textdomain.diff @@ -0,0 +1,86 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +--- a/src/gcc/intl.c ++++ b/src/gcc/intl.c +@@ -55,8 +55,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-9", LOCALEDIR); ++ (void) textdomain ("gcc-9"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4199,8 +4199,8 @@ install-po: + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-9.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-9.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- a/src/libcpp/init.c ++++ b/src/libcpp/init.c +@@ -163,7 +163,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -284,7 +284,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -9 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -72,10 +73,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + +-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) ++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ ++ $(DEBCPPFLAGS) + ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ +- $(CPPFLAGS) $(PICFLAG) ++ $(CPPFLAGS) $(PICFLAG) $(DEBCPPFLAGS) + + # The name of the compiler to use. + COMPILER = $(CXX) +@@ -164,8 +167,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: diff --git a/patches/gdc-cross-build.diff b/patches/gdc-cross-build.diff new file mode 100644 index 0000000..582e070 --- /dev/null +++ b/patches/gdc-cross-build.diff @@ -0,0 +1,44 @@ +# DP: Fix cross building gdc + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -51,7 +51,6 @@ d-warn = $(filter-out -pedantic -Woverlo + # Also filter out warnings for missing format attributes in the D Frontend. + DMD_WARN_CXXFLAGS = $(filter-out -Wmissing-format-attribute, $(WARN_CXXFLAGS)) + DMD_COMPILE = $(subst $(WARN_CXXFLAGS), $(DMD_WARN_CXXFLAGS), $(COMPILE)) +-DMDGEN_COMPILE = $(subst $(COMPILER), $(COMPILER_FOR_BUILD), $(DMD_COMPILE)) + + # D Frontend object files. + D_FRONTEND_OBJS = \ +@@ -335,6 +334,15 @@ d/id.h: d/id.c + d/impcnvtab.c: d/impcnvgen$(build_exeext) + cd d && ./impcnvgen$(build_exeext) + ++# Compile the generator programs. + d/%.dmdgen.o: $(srcdir)/d/dmd/%.c +- $(DMDGEN_COMPILE) $(D_INCLUDES) $< +- $(POSTCOMPILE) ++ $(COMPILER_FOR_BUILD) -c $(BUILD_COMPILERFLAGS) $(D_INCLUDES) \ ++ $(BUILD_CPPFLAGS) -o $@ $< ++ ++# Header dependencies for the generator programs. ++D_SYSTEM_H = d/dmd/root/dsystem.h d/d-system.h ++ ++d/idgen.dmdgen.o: d/dmd/idgen.c $(D_SYSTEM_H) $(BCONFIG_H) $(SYSTEM_H) ++ ++d/impcnvgen.dmdgen.o: d/dmd/impcnvgen.c d/dmd/mtype.h $(D_SYSTEM_H) \ ++ $(BCONFIG_H) $(SYSTEM_H) +--- a/src/gcc/d/d-system.h ++++ b/src/gcc/d/d-system.h +@@ -19,7 +19,11 @@ + #ifndef GCC_D_SYSTEM_H + #define GCC_D_SYSTEM_H + ++#ifdef GENERATOR_FILE ++#include "bconfig.h" ++#else + #include "config.h" ++#endif + #include "system.h" + + /* Used by the dmd front-end to determine if we have POSIX-style IO. */ diff --git a/patches/gdc-driver-nophobos.diff b/patches/gdc-driver-nophobos.diff new file mode 100644 index 0000000..799ee8d --- /dev/null +++ b/patches/gdc-driver-nophobos.diff @@ -0,0 +1,24 @@ +# DP: Modify gdc driver to have no libphobos by default. + +--- a/src/gcc/d/d-lang.cc ++++ b/src/gcc/d/d-lang.cc +@@ -315,7 +315,7 @@ static void + d_init_options_struct (gcc_options *opts) + { + /* GCC options. */ +- opts->x_flag_exceptions = 1; ++ opts->x_flag_exceptions = 0; + + /* Avoid range issues for complex multiply and divide. */ + opts->x_flag_complex_method = 2; +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -70,7 +70,7 @@ static phobos_action phobos_library = PH + + /* If true, use the standard D runtime library when linking with + standard libraries. */ +-static bool need_phobos = true; ++static bool need_phobos = false; + + void + lang_specific_driver (cl_decoded_option **in_decoded_options, diff --git a/patches/gdc-dynamic-link-phobos.diff b/patches/gdc-dynamic-link-phobos.diff new file mode 100644 index 0000000..fc54301 --- /dev/null +++ b/patches/gdc-dynamic-link-phobos.diff @@ -0,0 +1,17 @@ +# DP: Dynamically link the phobos library. + +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -418,9 +418,9 @@ lang_specific_driver (cl_decoded_option + /* Add `-lgphobos' if we haven't already done so. */ + if (phobos_library != PHOBOS_NOLINK && need_phobos) + { +- /* Default to static linking. */ +- if (phobos_library != PHOBOS_DYNAMIC) +- phobos_library = PHOBOS_STATIC; ++ /* Default to dynamic linking. */ ++ if (phobos_library != PHOBOS_STATIC) ++ phobos_library = PHOBOS_DYNAMIC; + + #ifdef HAVE_LD_STATIC_DYNAMIC + if (phobos_library == PHOBOS_DYNAMIC && static_link) diff --git a/patches/gdc-multiarch.diff b/patches/gdc-multiarch.diff new file mode 100644 index 0000000..1925e1a --- /dev/null +++ b/patches/gdc-multiarch.diff @@ -0,0 +1,17 @@ +# DP: Set the D target include directory to a multiarch location. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -61,7 +61,11 @@ + $(D_DMD_H) + + +-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++ifneq (,$(MULTIARCH_DIRNAME)) ++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) ++else ++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) ++endif + + # Name of phobos library + D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" diff --git a/patches/gdc-texinfo.diff b/patches/gdc-texinfo.diff new file mode 100644 index 0000000..bf99a04 --- /dev/null +++ b/patches/gdc-texinfo.diff @@ -0,0 +1,53 @@ +# DP: Add macros for the gdc texinfo documentation. + +--- a/src/gcc/d/gdc.texi ++++ b/src/gcc/d/gdc.texi +@@ -43,6 +43,22 @@ man page gfdl(7). + @insertcopying + @end ifinfo + ++@macro versionsubtitle ++@ifclear DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} ++@end ifclear ++@ifset DEVELOPMENT ++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) ++@end ifset ++@ifset VERSION_PACKAGE ++@sp 1 ++@subtitle @value{VERSION_PACKAGE} ++@end ifset ++@c Even if there are no authors, the second titlepage line should be ++@c forced to the bottom of the page. ++@vskip 0pt plus 1filll ++@end macro ++ + @titlepage + @title The GNU D Compiler + @versionsubtitle +@@ -124,6 +140,25 @@ This manual only documents the options s + * Developer Options:: Options useful for developers of gdc + @end menu + ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; ++@c they get lost at some point in handling the macro. But if @macro is ++@c used here rather than @alias, it produces double line breaks. ++@iftex ++@alias gol = * ++@end iftex ++@ifnottex ++@macro gol ++@end macro ++@end ifnottex ++ + @c man begin OPTIONS + + @node Input and Output files diff --git a/patches/gdc-updates.diff b/patches/gdc-updates.diff new file mode 100644 index 0000000..1efa364 --- /dev/null +++ b/patches/gdc-updates.diff @@ -0,0 +1,26 @@ +# DP: gdc updates up to 20160115. + + * Make-lang.in (d-warn): Filter out -Wmissing-format-attribute. + +--- a/src/gcc/d/Make-lang.in ++++ b/src/gcc/d/Make-lang.in +@@ -46,7 +46,7 @@ gdc-cross$(exeext): gdc$(exeext) + cp gdc$(exeext) gdc-cross$(exeext) + + # Filter out pedantic and virtual overload warnings. +-d-warn = $(filter-out -pedantic -Woverloaded-virtual, $(STRICT_WARN)) ++d-warn = $(filter-out -pedantic -Woverloaded-virtual -Wmissing-format-attribute, $(STRICT_WARN)) + + # Also filter out warnings for missing format attributes in the D Frontend. + DMD_WARN_CXXFLAGS = $(filter-out -Wmissing-format-attribute, $(WARN_CXXFLAGS)) +--- a/src/libphobos/src/std/internal/math/gammafunction.d ++++ b/src/libphobos/src/std/internal/math/gammafunction.d +@@ -460,7 +460,7 @@ real logGamma(real x) + if ( p == q ) + return real.infinity; + int intpart = cast(int)(p); +- real sgngam = 1; ++ real sgngam = 1.0L; + if ( (intpart & 1) == 0 ) + sgngam = -1; + z = q - p; diff --git a/patches/gm2-bootstrap-compare.diff b/patches/gm2-bootstrap-compare.diff new file mode 100644 index 0000000..7dfc4b6 --- /dev/null +++ b/patches/gm2-bootstrap-compare.diff @@ -0,0 +1,12 @@ +# DP: Ignore gm2 M2Version.o bootstrap comparison + +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -3573,6 +3573,7 @@ + # Specify what files to not compare during bootstrap. + + compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*" ++compare_exclusions="$compare_exclusions | gcc/gm2/*/M2Version\$(objext) | gcc/gm2/gm2version\$(objext)" + case "$target" in + hppa*64*-*-hpux*) ;; + hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/* | gcc/function-tests.o" ;; diff --git a/patches/gm2-install-man.diff b/patches/gm2-install-man.diff new file mode 100644 index 0000000..4cad7bb --- /dev/null +++ b/patches/gm2-install-man.diff @@ -0,0 +1,21 @@ +--- a/src/gcc/gm2/Make-lang.in ++++ b/src/gcc/gm2/Make-lang.in +@@ -403,15 +403,9 @@ + + gm2.install-man: $(GENERATED_MANPAGES) installdirs + -if [ -f xgm2$(exeext) ] ; then \ +- if [ -f xgm2-cross$(exeext) ] ; then \ +- rm -f $(DESTDIR)$(man1dir)/$(GM2_CROSS_NAME)$(man1ext); \ +- $(INSTALL_DATA) gm2/man/gm2.1 $(DESTDIR)$(man1dir)/$(GM2_CROSS_NAME)$(man1ext); \ +- chmod a-x $(DESTDIR)$(man1dir)/$(GM2_CROSS_NAME)$(man1ext); \ +- else \ +- rm -f $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ +- $(INSTALL_DATA) gm2/man/gm2.1 $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ +- chmod a-x $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ +- fi; \ ++ rm -f $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ ++ $(INSTALL_DATA) gm2/man/gm2.1 $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ ++ chmod a-x $(DESTDIR)$(man1dir)/$(GM2_INSTALL_NAME)$(man1ext); \ + else true; fi + + gm2.install-normal: gm2.install-common gm2.install-info gm2.install-man diff --git a/patches/gm2-updates.diff b/patches/gm2-updates.diff new file mode 100644 index 0000000..33e8f1c --- /dev/null +++ b/patches/gm2-updates.diff @@ -0,0 +1,32196 @@ +# DP: gm2 updates up to 20191031 + +git diff de2034bc023a89e45bec67e54d2a63982080c316 d48720ca19879ce3a08da42f3a8ef620a23baa46 | filterdiff --strip=2 --addoldprefix=a/src/ --addnewprefix=b/src/ --remove-timestamp | egrep -v '^(diff|index)' + +--- a/src/gcc/gm2/ChangeLog ++++ b/src/gcc/gm2/ChangeLog +@@ -1,4 +1,311 @@ +-2019-08-05 Gaius Mulley ++2019-10-30 Gaius Mulley ++ ++ * gm2/Make-lang.in: pruned old comments. (GM2_DIRS) ++ removed. All directory targets are tested before being created. ++ * gm2/config-lang.in: directory creation moved into configure. ++ (fixes a bug reported by Matthias Klose) where make install ++ would relink cc1gm2. ++ ++2019-10-29 Gaius Mulley ++ ++ * gm2/Make-lang.in: (gm2/gm2-gcc/%.o) added target dependencies. ++ (gm2/gm2-compiler-boot/m2flex.o) added target dependencies. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)libc.o) explicit rule. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)mcrts.o) explicit rule. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)UnixArgs.o) explicit rule. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)Selective.o) explicit rule. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)termios.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)SysExceptions.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)ldtoa.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)dtoa.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)wrapc.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)SYSTEM.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)errno.o) explicit rule. ++ (gm2/gm2-pge/boot/$(SRC_PREFIX)pth.o) explicit rule. ++ * testsuite/gm2/iso/run/pass/unbounded.mod: added many ++ more asserts. ++ * gm2/Make-lang.in: (gm2/gm2-gcc/%.o) added MCDEPS LIBDEPS. ++ (gm2/gm2-pge-boot/$(SRC_PREFIX)%.o) place C file into ++ gm2/gm2-pge-boot. (gm2/gm2-pge-boot/%.o) place C file into ++ gm2/gm2-pge-boot. ++ * gm2/Make-lang.in: (gm2.install-plugin) removed dependancy to ++ plygin/m2rte$(exeext).so. ++ ++2019-10-23 Gaius Mulley ++ ++ * gm2/mc-boot/GArgs.c: regenerated. ++ * gm2/mc-boot/GCmdArgs.c: regenerated. ++ * gm2/mc-boot/GDebug.c: regenerated. ++ * gm2/mc-boot/GDynamicStrings.c: regenerated. ++ * gm2/mc-boot/GEnvironment.c: regenerated. ++ * gm2/mc-boot/GFIO.c: regenerated. ++ * gm2/mc-boot/GFormatStrings.c: regenerated. ++ * gm2/mc-boot/GIO.c: regenerated. ++ * gm2/mc-boot/GIndexing.c: regenerated. ++ * gm2/mc-boot/GM2EXCEPTION.c: regenerated. ++ * gm2/mc-boot/GM2RTS.c: regenerated. ++ * gm2/mc-boot/GNumberIO.c: regenerated. ++ * gm2/mc-boot/GPushBackInput.c: regenerated. ++ * gm2/mc-boot/GRTExceptions.c: regenerated. ++ * gm2/mc-boot/GRTco.h: regenerated. ++ * gm2/mc-boot/GRTint.c: regenerated. ++ * gm2/mc-boot/GSFIO.c: regenerated. ++ * gm2/mc-boot/GStdIO.c: regenerated. ++ * gm2/mc-boot/GStrCase.c: regenerated. ++ * gm2/mc-boot/GStrIO.c: regenerated. ++ * gm2/mc-boot/GStrLib.c: regenerated. ++ * gm2/mc-boot/GStringConvert.c: regenerated. ++ * gm2/mc-boot/GSysStorage.c: regenerated. ++ * gm2/mc-boot/GTimeString.c: regenerated. ++ * gm2/mc-boot/Galists.c: regenerated. ++ * gm2/mc-boot/Gdecl.c: regenerated. ++ * gm2/mc-boot/Gkeyc.c: regenerated. ++ * gm2/mc-boot/Glists.c: regenerated. ++ * gm2/mc-boot/GmcComment.c: regenerated. ++ * gm2/mc-boot/GmcComp.c: regenerated. ++ * gm2/mc-boot/GmcDebug.c: regenerated. ++ * gm2/mc-boot/GmcError.c: regenerated. ++ * gm2/mc-boot/GmcFileName.c: regenerated. ++ * gm2/mc-boot/GmcLexBuf.c: regenerated. ++ * gm2/mc-boot/GmcMetaError.c: regenerated. ++ * gm2/mc-boot/GmcOptions.c: regenerated. ++ * gm2/mc-boot/GmcPreprocess.c: regenerated. ++ * gm2/mc-boot/GmcPretty.c: regenerated. ++ * gm2/mc-boot/GmcPrintf.c: regenerated. ++ * gm2/mc-boot/GmcQuiet.c: regenerated. ++ * gm2/mc-boot/GmcSearch.c: regenerated. ++ * gm2/mc-boot/GmcStack.c: regenerated. ++ * gm2/mc-boot/GmcStream.c: regenerated. ++ * gm2/mc-boot/Gmcp1.c: regenerated. ++ * gm2/mc-boot/Gmcp2.c: regenerated. ++ * gm2/mc-boot/Gmcp3.c: regenerated. ++ * gm2/mc-boot/Gmcp4.c: regenerated. ++ * gm2/mc-boot/Gmcp5.c: regenerated. ++ * gm2/mc-boot/GnameKey.c: regenerated. ++ * gm2/mc-boot/GsymbolKey.c: regenerated. ++ * gm2/mc-boot/Gvarargs.c: regenerated. ++ * gm2/mc-boot/Gwlists.c: regenerated. ++ * gm2/mc/decl.mod: (forceCompoundStatement) New boolean. ++ (doCompoundStmt) check whether a compound statement should be ++ forced. (doElsifC) check whether a compound statement should ++ be forced. ++ * testsuite/gm2/errors/fail/gm2.exp: (-Wunused-variable) added. ++ ++2019-10-22 Gaius Mulley ++ ++ * gm2/gm2-gcc/m2expr.c: (append_digit) use temporary ++ variables to hold the intermediate results before testing ++ if they are less than the rhs. ++ * append_m2_digit: (append_digit) use temporary ++ variables to hold the intermediate results before testing ++ if they are less than the rhs. ++ * gm2/gm2-libs-ch/dtoa.c: (calcmaxsig) use memmove rather ++ than strncpy. (calcsign) use memmove rather ++ than strncpy. ++ * gm2/mc-boot-ch/Gdtoa.c: (calcmaxsig) use memmove rather ++ than strncpy. (calcsign) use memmove rather ++ than strncpy. ++ * libgm2/libpim/dtoa.c: (calcmaxsig) use memmove rather ++ than strncpy. (calcsign) use memmove rather ++ than strncpy. ++ ++2019-10-10 Gaius Mulley ++ ++ * gm2/m2.flex: use time_t rather than long as the ++ parameter type casted to 0. ++ * gm2/lang.opt: frange, findex, fwholediv re-enabled. ++ * gm2/gm2-lang.c: frange, findex, fwholediv re-enabled. ++ * gm2/gm2-libs/Builtins.def: added boilerplate. ++ (longjmp) removed. (setjmp) removed. ++ Associated testsuite tests archived. ++ ++2019-09-21 Gaius Mulley ++ ++ * gm2/mc/decl.mod: huge amount of changes as the ++ varient record for intrinsics were being used ++ inconsistently. ++ * gm2/mc-boot: regenerated. ++ ++2019-09-18 Gaius Mulley ++ ++ * gm2/gm2-libs/FIO.mod: bugfix via valgrind, off by one ++ error corrected. ++ * (mc) regenerated. ++ ++2019-09-04 Gaius Mulley ++ ++ * gm2/tools-src/def2texi.py: replaced print((x)) with ++ print(x). ++ ++2019-09-04 Matthias Klose ++ ++ * gm2/examples/gravity/testsim.py: python2 to 3 conversion. ++ * gm2/examples/gravity/testsim2.py: python2 to 3 conversion. ++ * gm2/examples/pge/examples/boxes.py: python2 to 3 conversion. ++ * gm2/examples/pge/examples/exampleBoxes.py: python2 to 3 conversion. ++ * gm2/examples/pge/examples/triangle.py: python2 to 3 conversion. ++ * gm2/examples/pge/fig.py: python2 to 3 conversion. ++ * gm2/examples/pge/max2code.py: python2 to 3 conversion. ++ * gm2/examples/pge/mxmmaxima.py: python2 to 3 conversion. ++ * gm2/examples/pge/mxmout.py: python2 to 3 conversion. ++ * gm2/examples/pge/mxmparser.py: python2 to 3 conversion. ++ * gm2/examples/pge/mxmtree.py: python2 to 3 conversion. ++ * gm2/examples/pge/pge.py: python2 to 3 conversion. ++ * gm2/examples/pge/pgeplayback.py: python2 to 3 conversion. ++ * gm2/examples/pge/pgepygame.py: python2 to 3 conversion. ++ * gm2/examples/pge/t.py: python2 to 3 conversion. ++ * gm2/examples/server/client.py: python2 to 3 conversion. ++ * gm2/examples/swig/dual/testdual.py: python2 to 3 conversion. ++ * gm2/examples/swig/exceptions/stresstiny.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/exceptions/testtiny.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/full-strlib/testcopy.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/full-strlib/testequ.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/full-strlib/testlen.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/full-strlib/testnum.py: python2 to 3 ++ conversion. ++ * gm2/examples/swig/strlen/testlen.py: python2 to 3 conversion. ++ * gm2/examples/swig/strlib/testlen.py: python2 to 3 conversion. ++ * gm2/examples/swig/tiny/testtiny.py: python2 to 3 conversion. ++ * gm2/tools-src/array2index.py: python2 to 3 conversion. ++ * gm2/tools-src/def2texi.py: python2 to 3 conversion. ++ * gm2/tools-src/gensum.py: python2 to 3 conversion. ++ * gm2/tools-src/tidydates.py: python2 to 3 conversion. ++ * gm2/www/tools/texi2tr/src/navigation.py: python2 to 3 conversion. ++ * gm2/www/tools/texi2tr/src/outputdev.py: python2 to 3 conversion. ++ * gm2/www/tools/texi2tr/src/texi2tr.py: python2 to 3 conversion. ++ * gm2/Make-lang.in: use python3 rather than python2. ++ * gm2/examples/gravity/Makefile.in: use python3 rather than ++ python2. ++ * gm2/examples/gravity/README: reference python3. ++ * gm2/examples/pge/Makefile.in: use python3 rather than python2. ++ * gm2/examples/pge/debugthis: use python3 rather than python2. ++ * gm2/examples/pge/max2code: use python3 rather than python2. ++ * gm2/examples/pge/runfig: use python3 rather than python2. ++ * gm2/examples/pge/runthis: use python3 rather than python2. ++ * gm2/examples/swig/dual/Makefile.in: use python3 rather than ++ python2. ++ * gm2/examples/swig/exceptions/Makefile.in: use python3 rather ++ than python2. ++ * gm2/examples/swig/full-strlib/Makefile.in: use python3 rather ++ than python2. ++ * gm2/examples/swig/strio/Makefile.in: use python3 rather than ++ python2. ++ * gm2/examples/swig/strlen/Makefile: use python3 rather than ++ python2. ++ * gm2/examples/swig/strlib/Makefile.in: use python3 rather than ++ python2. ++ * gm2/examples/swig/tiny/Makefile.in: use python3 rather than ++ python2. ++ * gm2/www/Makefile.in: use python3 rather than python2. ++ * gm2/examples/gravity/testsim.py: python2 to 3 conversion. ++ * gm2/examples/gravity/testsim2.py: python2 to 3 conversion. ++ * gm2/examples/pge/examples/boxes.py: python2 to 3 conversion. ++ * gm2/examples/pge/examples/exampleBoxes.py: python2 to 3 ++ conversion. ++ * gm2/examples/pge/examples/triangle.py: python2 to 3 ++ conversion. ++ * gm2/examples/pge/fig.py: python2 to 3 conversion. ++ * gm2/examples/pge/max2code.py: python2 to 3 conversion. ++ * gm2/examples/pge/pge.py: python2 to 3 conversion. ++ * gm2/examples/pge/pgeplayback.py: python2 to 3 conversion. ++ * gm2/examples/pge/pgepygame.py: python2 to 3 conversion. ++ * gm2/examples/pge/t.py: python2 to 3 conversion. ++ * gm2/examples/server/client.py: python2 to 3 conversion. ++ * gm2/examples/swig/full-strlib/testequ.py: python2 to 3 ++ conversion. ++ * gm2/tools-src/array2index.py: python2 to 3 conversion. ++ * gm2/tools-src/def2texi.py: python2 to 3 conversion. ++ * gm2/tools-src/gensum.py: python2 to 3 conversion. ++ * gm2/tools-src/tidydates.py: python2 to 3 conversion. ++ * gm2/www/tools/texi2tr/src/navigation.py: python2 to 3 ++ conversion. ++ * gm2/www/tools/texi2tr/src/outputdev.py: python2 to 3 ++ conversion. ++ * gm2/www/tools/texi2tr/src/texi2tr.py: python2 to 3 ++ conversion. ++ * gm2/tools-src/def2texi.py: python2 to 3 conversion. ++ ++2019-09-04 Gaius Mulley ++ ++ * gm2/examples/pge/pge2d.py: removed. ++ * gm2/Make-lang.in: convert source build rules to use ++ $(STAMP). (gm2/gm2version.c) rewritten for $(STAMP). ++ (gm2.pod) rewritten for $(STAMP). ++ (gm2/gm2-libs.texi) rewritten for $(STAMP). ++ (gm2/gm2-ebnf.texi) rewritten for $(STAMP). ++ (gm2/SYSTEM-pim.texi) rewritten for $(STAMP). ++ (gm2/SYSTEM-iso.texi) rewritten for $(STAMP). ++ (gm2/Builtins.texi) rewritten for $(STAMP). ++ (gm2/version.texi) rewritten for $(STAMP). ++ (gm2/gm2-libs-boot/pthdummy.o) removed $(MCDEPS). ++ ++2019-08-22 Gaius Mulley ++ ++ * gm2/Make-lang.in: added $(srcdir) to prevent ++ race hazard in building from gm2/gm2-pge-boot/*c ++ files. ++ ++2019-08-20 Gaius Mulley ++ ++ * gm2/Make-lang.in: use -p parameter for mkdir. ++ ++2019-08-20 Matthias Klose ++ ++ * gm2/Make-lang.in: added dependancies for subdir ++ creation. ++ ++2019-08-20 Gaius Mulley ++ ++ * gm2/tools-src/buildsyntax: removed function keyword ++ to be sh complient rather than bash. ++ * gm2/tools-src/makeSystem: removed function keyword ++ to be sh complient rather than bash. ++ * gm2/tools-src/makeconfigure: removed function keyword ++ to be sh complient rather than bash. ++ * gm2/tools-src/makeversion: removed function keyword ++ to be sh complient rather than bash. Also use = rather ++ than ==. ++ ++2019-08-16 Gaius Mulley ++ ++ * gm2/Make-lang.in: (gm2/pge) added -lgcov. ++ (gm2/pg) added -lgcov. (gm2/ppg) ++ added -lgcov. (gm2/boot-bin/mc) added -lgcov. ++ ++2019-08-13 Gaius Mulley ++ ++ * gm2/Make-lang.in: (check-gm2) removed, use inbuilt ++ version. (lang_checks) include check-gm2. ++ * testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/examples/callingC/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/exceptions/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/extensions/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/imports/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/linking/libarchive/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/pim/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/gm2/types/run/pass/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ * testsuite/lib/gm2.exp: ++ use rootme and rootme/gm2 rather than tmpdir. ++ ++2019-08-13 Gaius Mulley ++ ++ * gm2/lang-specs.h: added %d to the temporary ++ assembly file. ++ ++2019-08-12 Gaius Mulley + + * New branch gcc_9_2_0_gm2 + * gm2/configure.in: changed release number to 1.9.2. +--- a/src/gcc/gm2/Make-lang.in ++++ b/src/gcc/gm2/Make-lang.in +@@ -18,24 +18,6 @@ + #along with GCC; see the file COPYING3. If not see + #. + +-# This file provides the language dependent support in the main Makefile. +-# Each language makefile fragment must provide the following targets: +-# +-# foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap, +-# foo.info, foo.dvi, +-# foo.install-normal, foo.install-common, foo.install-info, foo.install-man, +-# foo.uninstall, +-# foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean, +-# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4 +-# +-# where `foo' is the name of the language. +-# +-# It should also provide rules for: +-# +-# - making any compiler driver (eg: gm2) +-# - the compiler proper (eg: cc1gm2) +-# - define the names for selecting the language in LANGUAGES. +- + # QUIAT=@ + GM2_MAKE_DEBUG= + +@@ -107,7 +89,7 @@ gm2 m2 modula-2 modula2: xgm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) \ + + GM2_PROG_DEP=xgm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) + +-TEXI2HTML=python $(srcdir)/gm2/www/tools/texi2tr/src/texi2tr.py ++TEXI2HTML=python3 $(srcdir)/gm2/www/tools/texi2tr/src/texi2tr.py + + include gm2/config-make + LIBSTDCXX=../$(TARGET_SUBDIR)/libstdc++-v3/src/.libs/libstdc++.a +@@ -127,8 +109,11 @@ gm2/gm2spec.o: $(srcdir)/gm2/gm2spec.c $(SYSTEM_H) $(GCC_H) $(CONFIG_H) \ + -DPREFIX=\"$(prefix)\" \ + -c $(srcdir)/gm2/gm2spec.c $(OUTPUT_OPTION)) + +-gm2/gm2version.c: force ++gm2/gm2version.c: gm2version-check; @true ++ ++gm2version-check: + cd gm2 ; bash ../$(srcdir)/gm2/tools-src/makeversion -p ../$(srcdir) ++ $(STAMP) gm2version-check + + gm2version.o: gm2/gm2version.c + (SHLIB_LINK='$(SHLIB_LINK)' \ +@@ -145,7 +130,7 @@ GM2_OBJS = $(GCC_OBJS) gm2/gm2version.o version.o \ + + # Create the compiler driver for xgm2. + xgm2$(exeext): $(GM2_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) \ +- $(GM2_DIRS) gm2/gm2config.h ++ gm2/gm2config.h + +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ + $(GM2_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ + $(EXTRA_GCC_LIBS) $(LIBS) +@@ -166,47 +151,16 @@ GM2_LIB_DIR_LOG= $(DESTDIR)$(libsubdir)/gm2/logitech + GM2_LIB_DIR_PCO= $(DESTDIR)$(libsubdir)/gm2/pim-coroutine + GM2_LIB_DIR_ISO= $(DESTDIR)$(libsubdir)/gm2/iso + GM2_LIB_DIR_MIN= $(DESTDIR)$(libsubdir)/gm2/min +-GM2_DIRS = $(objdir)/gm2/gm2-compiler-boot \ +- $(objdir)/gm2/gm2-libs-boot \ +- $(objdir)/gm2/gm2-ppg-boot \ +- $(objdir)/gm2/gm2-pge-boot \ +- $(objdir)/gm2/gm2-pg-boot \ +- $(objdir)/gm2/gm2-tools-boot \ +- $(objdir)/gm2/gm2-tools \ +- $(objdir)/gm2/gm2-libiberty \ +- $(objdir)/gm2/gm2-gcc \ +- $(objdir)/gm2/gm2-auto \ +- $(objdir)/gm2/gm2-compiler \ +- $(objdir)/gm2/gm2-libs \ +- $(objdir)/gm2/gm2-libs-iso \ +- $(objdir)/gm2/gm2-compiler-paranoid \ +- $(objdir)/gm2/gm2-libs-paranoid \ +- $(objdir)/gm2/gm2-compiler-verify \ +- $(objdir)/gm2/boot-bin \ +- $(objdir)/gm2/ulm-lib-gm2 \ +- $(objdir)/gm2/ulm-lib-gm2/sys \ +- $(objdir)/gm2/ulm-lib-gm2/std \ +- $(objdir)/gm2/gm2-libs-pim \ +- $(objdir)/gm2/gm2-libs-coroutines \ +- $(objdir)/gm2/gm2-libs-min \ +- $(objdir)/gm2/mc-boot \ +- $(objdir)/gm2/mc-boot-ch \ +- $(objdir)/gm2/mc-boot-gen \ +- $(objdir)/plugin \ +- stage1/gm2 stage2/gm2 stage3/gm2 stage4/gm2 + + # gt-gm2-gm2-lang.h gtype-gm2.h gt-gm2-gccgm2.h gt-gm2-m2builtins.h gt-gm2-m2except.h: s-gtype; @true + + # Build hooks: + +-gm2.all.cross: xgm2-cross$(exeext) stage1/gm2/cc1gm2$(exeext) \ +- $(GM2_LINK_TOOLS) \ +- plugin/m2rte$(exeext).so ++gm2.all.cross: xgm2-cross$(exeext) + +-gm2.start.encap: xgm2$(exeext) stage1/gm2/cc1gm2$(exeext) \ +- $(GM2_LINK_TOOLS) \ +- plugin/m2rte$(exeext).so ++gm2.start.encap: xgm2$(exeext) plugin/m2rte$(exeext).so $(GM2_LINK_TOOLS) + gm2.rest.encap: ++ + gm2.info: $(objdir)/gm2/gm2.info + gm2.generated-manpages: gm2.man + +@@ -226,115 +180,138 @@ gm2.ps: gm2.dvi + gm2.pdf: gm2.ps + gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=$@ $< + ++.INTERMEDIATE: gm2.pod ++ ++gm2.pod: gm2/gm2.texi $(TEXISRC) ++ -$(TEXI2POD) -I $(objdir)/gm2 -D gm2 < $< > $@ ++ + $(objdir)/gm2/gm2.info: $(TEXISRC) + $(MAKEINFO) -I$(objdir)/gm2 -o $(objdir)/gm2/gm2.info $(srcdir)/gm2/gm2.texi + + $(objdir)/gm2/images/gnu.eps: $(srcdir)/gm2/images/gnupng +- mkdir -p gm2/images ++ test -d gm2/images || mkdir -p gm2/images + if [ -f $(srcdir)/gm2/images/gnu.eps ] ; then \ + cp $(srcdir)/gm2/images/gnu.eps $@ ; \ + else \ + pngtopnm $< | pnmtops -noturn > $@ ; \ + fi + +-gm2/gm2-libs.texi: gm2/SYSTEM-pim.texi gm2/SYSTEM-iso.texi gm2/Builtins.texi $(objdir)/gm2/gm2-libs-coroutines/SYSTEM.def +- python $(srcdir)/gm2/tools-src/def2texi.py -uLibraries -s$(srcdir)/gm2 -b$(objdir)/gm2 > $(objdir)/gm2/gm2-libs.texi ++gm2/gm2-libs.texi: gm2-libs.texi-check; @true ++ ++gm2-libs.texi-check: gm2/SYSTEM-pim.texi gm2/SYSTEM-iso.texi gm2/Builtins.texi $(objdir)/gm2/gm2-libs-coroutines/SYSTEM.def gm2/gm2-ebnf.texi ++ python3 $(srcdir)/gm2/tools-src/def2texi.py -uLibraries -s$(srcdir)/gm2 -b$(objdir)/gm2 > $(objdir)/gm2/gm2-libs.texi ++ $(STAMP) gm2-libs.texi-check + +-gm2/gm2-ebnf.texi: gm2/gm2-auto gm2/ppg$(exeext) $(srcdir)/gm2/bnf/m2.bnf +- ./gm2/ppg$(exeext) -c -p -t -f $(srcdir)/gm2/bnf/m2.bnf > $@ ++gm2/gm2-ebnf.texi: gm2-ebnf.texi-check; @true + +-gm2/SYSTEM-pim.texi: $(objdir)/gm2/gm2-libs/SYSTEM.def ++gm2-ebnf.texi-check: gm2/gm2-auto gm2/ppg$(exeext) $(srcdir)/gm2/bnf/m2.bnf ++ ./gm2/ppg$(exeext) -c -p -t -f $(srcdir)/gm2/bnf/m2.bnf > gm2/gm2-ebnf.texi ++ $(STAMP) gm2-ebnf.texi-check ++ ++gm2/SYSTEM-pim.texi: SYSTEM-pim-texi-check; @true ++ ++SYSTEM-pim-texi-check: $(objdir)/gm2/gm2-libs/SYSTEM.def + $(srcdir)/gm2/tools-src/def2texi.py -b$(objdir)/gm2 -f$(objdir)/gm2/gm2-libs/SYSTEM.def > $(objdir)/gm2/SYSTEM-pim.texi ++ $(STAMP) SYSTEM-pim-texi-check ++ ++gm2/SYSTEM-iso.texi: SYSTEM-iso.texi-check; @true + +-gm2/SYSTEM-iso.texi: $(objdir)/gm2/gm2-libs-iso/SYSTEM.def ++SYSTEM-iso.texi-check: $(objdir)/gm2/gm2-libs-iso/SYSTEM.def + $(srcdir)/gm2/tools-src/def2texi.py -b$(objdir)/gm2 -f$(objdir)/gm2/gm2-libs-iso/SYSTEM.def > $(objdir)/gm2/SYSTEM-iso.texi ++ $(STAMP) SYSTEM-iso.texi-check + +-gm2/Builtins.texi: gm2/gm2-libs/Builtins.def ++gm2/Builtins.texi: Builtins.texi-check; @true ++ ++Builtins.texi-check: gm2/gm2-libs/Builtins.def + $(srcdir)/gm2/tools-src/def2texi.py -b./ -f$(srcdir)/gm2/gm2-libs/Builtins.def > $(objdir)/gm2/Builtins.texi ++ $(STAMP) Builtins.texi-check ++ ++gm2/version.texi: gm2-version.texi-check; @true + +-gm2/version.texi: force ++gm2-version.texi-check: + cd gm2 ; bash ../$(srcdir)/gm2/tools-src/makeversion -t ../$(srcdir) ++ $(STAMP) gm2-version.texi-check + + $(objdir)/gm2/gm2-tools: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-tools-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-compiler-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-ppg-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-pg-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-pge-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-boot: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libiberty: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-auto: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-gcc: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-compiler: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-iso: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-min: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-compiler-paranoid: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-paranoid: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-compiler-verify: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/boot-bin: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/ulm-lib-gm2: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + +-$(objdir)/gm2/ulm-lib-gm2/sys: +- mkdir $@ ++$(objdir)/gm2/ulm-lib-gm2/sys: $(objdir)/gm2/ulm-lib-gm2 ++ test -d $@ || mkdir -p $@ + +-$(objdir)/gm2/ulm-lib-gm2/std: +- mkdir $@ ++$(objdir)/gm2/ulm-lib-gm2/std: $(objdir)/gm2/ulm-lib-gm2 ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-pim: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + $(objdir)/gm2/gm2-libs-coroutines: +- mkdir $@ ++ test -d $@ || mkdir -p $@ + + stage1/gm2: +- -mkdir -p stage1/gm2 ++ test -d $@ || mkdir -p $@ + + stage2/gm2: +- -mkdir -p stage2/gm2 ++ test -d $@ || mkdir -p $@ + + stage3/gm2: +- -mkdir -p stage3/gm2 ++ test -d $@ || mkdir -p $@ + + stage4/gm2: +- -mkdir -p stage4/gm2 ++ test -d $@ || mkdir -p $@ + + # No gm2-specific selftests + selftest-gm2: +@@ -435,14 +412,14 @@ gm2.uninstall: + -rm -rf $(bindir)/$(GM2_INSTALL_NAME) + -rm -rf $(bindir)/$(GM2_CROSS_NAME) + +-gm2.install-plugin: plugin/m2rte$(exeext).so ++gm2.install-plugin: + rm -f $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so + mkdir -p $(DESTDIR)$(plugin_bindir) + $(INSTALL_PROGRAM) plugin/m2rte$(exeext).so $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so + chmod a+x $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so + + plugin/m2rte$(exeext).so: $(srcdir)/gm2/plugin/m2rte.c $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h +- mkdir -p $(GM2_DIRS) ++ test -d $(objdir)/plugin || mkdir -p $(objdir)/plugin + $(PLUGINCC) $(PLUGINCFLAGS) -fno-rtti -I. -I$(srcdir) -I$(srcdir)/gm2 -I$(srcdir)/../include -I$(srcdir)/../libcpp/include -Wall -Wno-literal-suffix -fPIC -c -o plugin/m2rte.o $(srcdir)/gm2/plugin/m2rte.c + $(PLUGINCC) $(PLUGINCFLAGS) $(PLUGINLIBS) -fno-rtti plugin/m2rte.o -shared -o $@ + +@@ -577,7 +554,7 @@ SO=-O0 -g -fPIC + # directly to the Modula-2 source. + + # the C implementation module bridging the Modula-2 -> GCC +-GM2_C_OBJS = gm2/gm2-lang.o \ ++GM2_C_OBJS = gm2/gm2-lang.o \ + gm2/stor-layout.o \ + gm2/m2pp.o \ + gm2/gm2-gcc/m2assert.o \ +@@ -640,9 +617,10 @@ stage2/gm2/cc1gm2$(exeext): stage1/gm2/cc1gm2$(exeext) gm2/gm2-compiler/m2flex.o + $(BACKEND) $(LIBS) \ + $(BACKENDLIBS) $(LIBSTDCXX) -lm + +-stage1/gm2/cc1gm2$(exeext): $(GM2_DIRS) xgm2$(exeext) gm2/gm2-compiler-boot/m2flex.o \ ++stage1/gm2/cc1gm2$(exeext): gm2/gm2-compiler-boot/m2flex.o \ + $(P) $(GM2_C_OBJS) $(BACKEND) $(LIBDEPS) \ +- $(GM2_LIBS_BOOT) $(MC_LIBS) plugin/m2rte$(exeext).so ++ $(GM2_LIBS_BOOT) $(MC_LIBS) ++ $(__BREAKPOINT) + $(LINKER) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GM2_C_OBJS) gm2/gm2-compiler-boot/m2flex.o \ + attribs.o \ + $(GM2_LIBS_BOOT) $(MC_LIBS) \ +@@ -654,7 +632,7 @@ gm2-gcc/m2builtins.o : $(srcdir)/gm2/gm2-gcc/m2builtins.c $(CONFIG_H) $(TREE_H) + + gm2-gcc/m2except.o : $(srcdir)/gm2/gm2-gcc/m2except.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h gt-gm2-m2except.h + +-gm2/gm2-gcc/%.o: $(srcdir)/gm2/gm2-gcc/%.c $(TARGET_H) ++gm2/gm2-gcc/%.o: $(srcdir)/gm2/gm2-gcc/%.c $(MCDEPS) $(LIBDEPS) $(BUILD-BOOT-H) $(TIMEVAR_H) gm2/gm2config.h $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h + $(COMPILER) -c -g $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION) + + gm2/gm2-lang.o: $(srcdir)/gm2/gm2-lang.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gt-gm2-gm2-lang.h +@@ -998,7 +976,7 @@ gm2/gm2-libs-boot/%.o: $(srcdir)/gm2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H) + gm2/gm2-libs-boot/$(SRC_PREFIX)%.h: $(srcdir)/gm2/gm2-libs/%.def $(MCDEPS) + $(MC) -o=$@ $(srcdir)/gm2/gm2-libs/$*.def + +-gm2/gm2-libs-boot/pthdummy.o: $(srcdir)/gm2/gm2-libs-ch/pthdummy.c $(MCDEPS) gm2/gm2-libs/gm2-libs-host.h ++gm2/gm2-libs-boot/pthdummy.o: $(srcdir)/gm2/gm2-libs-ch/pthdummy.c gm2/gm2-libs/gm2-libs-host.h + $(CC) -c -DIN_GCC $(CFLAGS) -Igm2/gm2-libs -I$(srcdir)/gm2 -Igm2 -I. -Igm2/gm2-libs-boot $(INCLUDES) $< -o $@ + + gm2/gm2-libs-boot/wrapc.o: $(srcdir)/gm2/gm2-libs-ch/wrapc.c gm2/gm2-libs-boot/$(SRC_PREFIX)wrapc.h gm2/gm2-libs/gm2-libs-host.h +@@ -1126,7 +1104,8 @@ gm2/gm2-tools/m2flex.o: gm2/gm2-compiler/m2flex.c $(BUILD-BOOT-H) $(TIMEVAR_H) + -Igm2 -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot $< -o $@ + + gm2/gm2-compiler-boot/m2flex.o: gm2/gm2-compiler/m2flex.c $(BUILD-BOOT-H) $(TIMEVAR_H) \ +- $(BUILD-LIBS-BOOT-H) gm2/gm2-compiler-boot/$(SRC_PREFIX)NameKey.h ++ $(BUILD-LIBS-BOOT-H) gm2/gm2-compiler-boot/$(SRC_PREFIX)NameKey.h \ ++ $(CONFIG_H) gm2/gm2config.h $(TARGET_H) + $(COMPILER) -c -g $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + $(GM2GCC) $(INCLUDES) -I$(srcdir)/gm2 \ + -Igm2 -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot $< -o $@ +@@ -1150,8 +1129,11 @@ gm2/gm2-compiler-boot/M2Version.o: gm2/gm2-compiler-boot/M2Version.mod $(MCDEPS) + $(MC) -o=gm2/gm2-compiler-boot/M2Version.c $< + $(COMPILER) -c $(ALL_CPPFLAGS) $(GM2GCC) -I. -Igm2/gm2-libs-boot -Igm2/gm2-compiler-boot -Igm2/gm2-libiberty $(INCLUDES) gm2/gm2-compiler-boot/M2Version.c -o $@ + +-gm2/gm2-compiler-boot/M2Version.mod: ++gm2/gm2-compiler-boot/M2Version.mod: M2Version-check; @true ++ ++M2Version-check: + cd gm2/gm2-compiler-boot ; bash ../../$(srcdir)/gm2/tools-src/makeversion -m ../../$(srcdir) ++ $(STAMP) M2Version-check + + + # +@@ -1480,7 +1462,7 @@ MCLINK=-g + GM2SYS=/opt/gm2/lib/gcc/x86_64-linux-gnu/4.7.4/m2/pim + GM2PATH=$(srcdir)/gm2/mc:$(GM2SYS):$(srcdir)/gm2:gm2/gm2-auto:$(srcdir)/gm2/gm2-libs + +-mc: $(GM2_DIRS) mc-clean mc-devel ++mc: mc-clean mc-devel + + + # +@@ -1696,19 +1678,19 @@ BUILD-MC-BOOT-O = $(MC-LIB-BOOT-C:%.c=gm2/mc-boot/$(SRC_PREFIX)%.o) \ + BUILD-MC-INTERFACE-O = $(MC-INTERFACE-C:%.c=gm2/mc-boot-ch/$(SRC_PREFIX)%.o) + + +-$(objdir)/plugin: force +- mkdir -p $@ ++$(objdir)/plugin: ++ test -d $@ || mkdir -p $@ + +-$(objdir)/gm2/mc-boot: force +- mkdir -p $@ ++$(objdir)/gm2/mc-boot: ++ test -d $@ || mkdir -p $@ + +-$(objdir)/gm2/mc-boot-ch: force +- mkdir -p $@ ++$(objdir)/gm2/mc-boot-ch: ++ test -d $@ || mkdir -p $@ + +-$(objdir)/gm2/mc-boot-gen: force +- mkdir -p $@ ++$(objdir)/gm2/mc-boot-gen: ++ test -d $@ || mkdir -p $@ + +-mc-autogen: $(GM2_DIRS) mc-clean mc-devel \ ++mc-autogen: mc-clean mc-devel \ + $(BUILD-MC-BOOT-H) $(BUILD-MC-BOOT-C) \ + $(BUILD-MC-BOOT-AUTO-C) + cd gm2/mc-boot-gen ; for i in *.c ; do gcc -g -c -I../../$(srcdir)/gm2/mc-boot-ch $$i ; done +@@ -1754,10 +1736,12 @@ gm2/mc-boot-ch/$(SRC_PREFIX)%.o: gm2/mc-boot-ch/$(SRC_PREFIX)%.c + # files will be checked into git by the maintainer. + # + +-mc-bootstrap: $(GM2_DIRS) mc-clean gm2/boot-bin/mc$(exeext) ++mc-bootstrap: mc-clean gm2/boot-bin/mc$(exeext) + + gm2/boot-bin/mc$(exeext): $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o +- $(CC) -g -o $@ $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) $(LDFLAGS) gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o -lm ++ $(CC) -g -o $@ $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) $(LDFLAGS) \ ++ gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o -lm \ ++ -lgcov + + gm2/mc-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit + unset CC ; $(M2LINK) -s --gcc --exit --name mainmcinit.c $(srcdir)/gm2/init/mcinit +@@ -2104,7 +2088,7 @@ gm2/gm2-ppg-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-compiler/%.mod $(MCDEPS) $( + -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-ppg-boot/$(SRC_PREFIX)$*.c -o $@ + + gm2/ppg$(exeext): gm2/boot-bin/mc $(BUILD-PPG-O) $(BUILD-MC-INTERFACE-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o +- $(CC) -g -o $@ $(BUILD-PPG-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm ++ $(CC) -g -o $@ $(BUILD-PPG-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm + + gm2/gm2-ppg-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit + unset CC ; $(M2LINK) -s --gcc --exit --name mainppginit.c $(srcdir)/gm2/init/ppginit +@@ -2112,7 +2096,7 @@ gm2/gm2-ppg-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit + $(CC) -g -c -o $@ gm2/gm2-ppg-boot/main.c + + gm2/gm2-auto: +- mkdir gm2/gm2-auto ++ test -d $@ || mkdir -p $@ + + # + # gm2/pg$(exext) is the 2nd generation parser generator built from ebnf +@@ -2150,7 +2134,7 @@ gm2/gm2-pg-boot/$(SRC_PREFIX)pg.o: gm2/gm2-auto/pg.mod $(MCDEPS) $(BUILD-BOOT-H + gm2/pg$(exeext): gm2/boot-bin/mc \ + $(BUILD-PG-O) $(GM2-PPG-MODS:%.mod=gm2/gm2-pg-boot/%.o) \ + $(BUILD-MC-INTERFACE-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o +- $(CC) -g -o $@ $(BUILD-PG-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm ++ $(CC) -g -o $@ $(BUILD-PG-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm + + gm2/gm2-auto/pginit: + sed -e 's/ppg/pg/' < $(srcdir)/gm2/init/ppginit > $@ +@@ -2192,18 +2176,51 @@ gm2/gm2-auto/pge.mod: gm2/pg$(exeext) + gm2/gm2-pge-boot/$(SRC_PREFIX)%.h: $(srcdir)/gm2/gm2-libs/%.def $(MCDEPS) + $(MCC) -o=$@ $(srcdir)/gm2/gm2-libs/$*.def + +-gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: gm2/mc-boot-ch/$(SRC_PREFIX)%.c ++gm2/gm2-pge-boot/$(SRC_PREFIX)libc.o: $(srcdir)/gm2/mc-boot-ch/Glibc.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)mcrts.o: $(srcdir)/gm2/mc-boot-ch/Gmcrts.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)UnixArgs.o: $(srcdir)/gm2/mc-boot-ch/GUnixArgs.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)Selective.o: $(srcdir)/gm2/mc-boot-ch/GSelective.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)termios.o: $(srcdir)/gm2/mc-boot-ch/Gtermios.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)SysExceptions.o: $(srcdir)/gm2/mc-boot-ch/GSysExceptions.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)ldtoa.o: $(srcdir)/gm2/mc-boot-ch/Gldtoa.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)dtoa.o: $(srcdir)/gm2/mc-boot-ch/Gdtoa.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)wrapc.o: $(srcdir)/gm2/mc-boot-ch/Gwrapc.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)SYSTEM.o: $(srcdir)/gm2/mc-boot-ch/GSYSTEM.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)errno.o: $(srcdir)/gm2/mc-boot-ch/Gerrno.c ++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ ++ ++gm2/gm2-pge-boot/$(SRC_PREFIX)pth.o: $(srcdir)/gm2/mc-boot-ch/Gpth.c + $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@ + + gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H) +- $(MCC) -o=gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-libs/$*.mod +- $(CC) -Igm2/gm2-pg-boot -I$(srcdir)/gm2/mc-boot -I$(srcdir)/gm2/mc-boot-ch \ +- -g -c gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@ ++ $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-libs/$*.mod ++ $(CC) -Igm2/gm2-pge-boot -I$(srcdir)/gm2/mc-boot -I$(srcdir)/gm2/mc-boot-ch \ ++ -g -c gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c -o $@ + + gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-compiler/%.mod $(MCDEPS) $(BUILD-BOOT-H) +- $(MCC) -o=gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-compiler/$*.mod ++ $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-compiler/$*.mod + $(CC) -Igm2/mc-boot -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot \ +- -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@ ++ -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c -o $@ + + gm2/gm2-pge-boot/$(SRC_PREFIX)pge.o: gm2/gm2-auto/pge.mod $(MCDEPS) $(BUILD-BOOT-H) + $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)pge.c gm2/gm2-auto/pge.mod +@@ -2213,7 +2230,7 @@ gm2/gm2-pge-boot/$(SRC_PREFIX)pge.o: gm2/gm2-auto/pge.mod $(MCDEPS) $(BUILD-BOO + gm2/pge$(exeext): gm2/boot-bin/mc \ + $(BUILD-PGE-O) $(GM2-PPG-MODS:%.mod=gm2/gm2-pge-boot/%.o) \ + $(BUILD-MC-INTERFACE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o +- $(CC) -g -o $@ $(BUILD-PGE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm ++ $(CC) -g -o $@ $(BUILD-PGE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm + $(srcdir)/gm2/tools-src/buildpg $(srcdir)/gm2/gm2-compiler/ppg.mod t > gm2/gm2-auto/t.bnf + ./gm2/pge$(exeext) gm2/gm2-auto/t.bnf > gm2/gm2-auto/t1.mod + ./gm2/pg$(exeext) gm2/gm2-auto/t.bnf > gm2/gm2-auto/t2.mod +@@ -2414,17 +2431,7 @@ check-modula-2: check-gm2 + check_modula-2: check-gm2 + check_modula-2: check-gm2 + +-GM2TESTSUITEDIR=testsuite +- +-check-gm2: $(GM2TESTSUITEDIR)/site.exp +- -(rootme=`${PWD_COMMAND}`; export rootme; \ +- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \ +- cd $(TESTSUITEDIR); \ +- EXPECT=${EXPECT} ; export EXPECT ; \ +- if [ -f $${rootme}/../expect/expect ] ; then \ +- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ +- export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool gm2 $(RUNTESTFLAGS)) ++lang_checks += check-gm2 + + check-gm2-local: $(GM2TESTSUITEDIR)/site.exp + -(rootme=`${PWD_COMMAND}`; export rootme; \ +@@ -2472,7 +2479,7 @@ gm2.maintainer-help: force + @echo "make gm2.maintainer-reconfigure rebuild the configure scripts" + @echo "make gm2.maintainer-clean clean pre-built images and texi files" + +-GM2DISTFILES = CVS ChangeLog gm2/Make-lang.in README bnf config-lang.in \ ++GM2DISTFILES = ChangeLog gm2/Make-lang.in README bnf config-lang.in \ + el gccgdbinit gccgm2.c gm2-gcc \ + gm2-auto gm2-compiler gm2-compiler-boot \ + gm2-gccinit gm2-libs gm2-libs-boot gm2-libs-ch gm2.texi gm2spec.c \ +--- a/src/gcc/gm2/config-lang.in ++++ b/src/gcc/gm2/config-lang.in +@@ -79,3 +79,32 @@ outputs=" \ + gm2/man/Makefile \ + gm2/www/Makefile \ + " ++ ++mkdir -p gm2/gm2-compiler-boot ++mkdir -p gm2/gm2-libs-boot ++mkdir -p gm2/gm2-ppg-boot ++mkdir -p gm2/gm2-pge-boot ++mkdir -p gm2/gm2-pg-boot ++mkdir -p gm2/gm2-tools-boot ++mkdir -p gm2/gm2-tools ++mkdir -p gm2/gm2-libiberty ++mkdir -p gm2/gm2-gcc ++mkdir -p gm2/gm2-auto ++mkdir -p gm2/gm2-compiler ++mkdir -p gm2/gm2-libs ++mkdir -p gm2/gm2-libs-iso ++mkdir -p gm2/gm2-compiler-paranoid ++mkdir -p gm2/gm2-libs-paranoid ++mkdir -p gm2/gm2-compiler-verify ++mkdir -p gm2/boot-bin ++mkdir -p gm2/ulm-lib-gm2 ++mkdir -p gm2/ulm-lib-gm2/sys ++mkdir -p gm2/ulm-lib-gm2/std ++mkdir -p gm2/gm2-libs-pim ++mkdir -p gm2/gm2-libs-coroutines ++mkdir -p gm2/gm2-libs-min ++mkdir -p gm2/mc-boot ++mkdir -p gm2/mc-boot-ch ++mkdir -p gm2/mc-boot-gen ++mkdir -p plugin ++mkdir -p stage1/gm2 stage2/gm2 stage3/gm2 stage4/gm2 +--- a/src/gcc/gm2/examples/gravity/Makefile.in ++++ b/src/gcc/gm2/examples/gravity/Makefile.in +@@ -54,7 +54,7 @@ else + LIBDIR=$(prefix)/lib + endif + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + + all: force +@@ -64,7 +64,7 @@ all: force + pre-install: libtwoDsim.la + + run: pre-install +- PYTHONPATH=`pwd` python $(srcdir)/testsim2.py ++ PYTHONPATH=`pwd` python$(PYTHON_VERSION) $(srcdir)/testsim2.py + $(SHELL) $(srcdir)/produce-avi + + libtwoDsim.la: $(TWODSIM:%.mod=%.lo) +--- a/src/gcc/gm2/examples/gravity/README ++++ b/src/gcc/gm2/examples/gravity/README +@@ -5,4 +5,4 @@ netpbm. + + On Debian or Ubuntu you can: + +-$ sudo apt-get install groff imagemagick python2.8-dev python swig gs netpbm mplayer ++$ sudo apt-get install groff imagemagick python3-dev swig gs netpbm mplayer +--- a/src/gcc/gm2/examples/gravity/testsim.py ++++ b/src/gcc/gm2/examples/gravity/testsim.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2010 + # Free Software Foundation, Inc. +@@ -33,9 +33,9 @@ c2 = fix(c2) + gravity(-9.81) + fps(24.0*4.0) + replayRate(24.0) +-print "creating frames" ++print("creating frames") + try: + simulateFor(1.0) +- print "all done" ++ print("all done") + except: +- print "exception raised" ++ print("exception raised") +--- a/src/gcc/gm2/examples/gravity/testsim2.py ++++ b/src/gcc/gm2/examples/gravity/testsim2.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2010 + # Free Software Foundation, Inc. +@@ -43,9 +43,9 @@ for x in [0.4, 0.7]: + gravity(-9.81) + fps(24.0*4.0) + replayRate(24.0) +-print "creating frames" ++print("creating frames") + try: + simulateFor(3.0) +- print "all done" ++ print("all done") + except: +- print "exception raised" ++ print("exception raised") +--- a/src/gcc/gm2/examples/pge/Makefile.in ++++ b/src/gcc/gm2/examples/pge/Makefile.in +@@ -56,7 +56,7 @@ OBJ_PATH=.:../../gm2-libs-iso:../../gm2/gm2-libs + XGM2=../../../xgm2 -B../../../ + XGCC=../../../xgcc -B../../../ + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "you need to use 'make pre-install' to build the examples using the locally built compiler" +@@ -70,7 +70,7 @@ all: force + maxima -b $< > $@ + + %.m: $(srcdir)/%.mxm +- python $(srcdir)/max2code.py -o $@ $< ++ python$(PYTHON_VERSION) $(srcdir)/max2code.py -o $@ $< + + $(srcdir)/twoDsim.mod: circles.m rotating-line.m rotating-circles.m + +@@ -90,10 +90,10 @@ twoDsim.o: $(srcdir)/twoDsim.mod + libtool --tag=CC --mode=compile gcc -g -I$(srcdir) -c $< -o $@ + + run-whole-world: force +- ( python ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./whole-world ++ ( python$(PYTHON_VERSION) ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./whole-world + + run-post-world: force +- ( python ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./post-world ++ ( python$(PYTHON_VERSION) ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./post-world + + post-whole-world: circles.m force + gm2 -fm2-statistics -O3 -fsources -fiso -fcpp -I$(srcdir) -fm2-whole-program -fextended-opaque -g -o whole-world $(srcdir)/world.mod +@@ -117,13 +117,13 @@ libpgeif.la: $(PGELIBSOURCES:%.mod=%.lo) buffers.lo + cp .libs/libpgeif.so _pgeif.so + + output.raw: libpgeif.la +- PYTHONPATH=.:$(srcdir) python $(srcdir)/examples/exampleBoxes.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/examples/exampleBoxes.py + + playback: force +- PYTHONPATH=.:$(srcdir) python $(srcdir)/pgeplayback.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/pgeplayback.py + + boxes.raw: libpgeif.la +- PYTHONPATH=.:$(srcdir) python $(srcdir)/examples/boxes.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/examples/boxes.py + + foo: circles.m $(OBJECTS) + gm2 $(GM2FLAGS) -fonlylink $(srcdir)/foo.mod +--- a/src/gcc/gm2/examples/pge/debugthis ++++ b/src/gcc/gm2/examples/pge/debugthis +@@ -1,5 +1,5 @@ +-#!/bin/bash ++#!/bin/sh + + # python -m pdb max2code.py -v -o t.mod test.mxm +-python -m pdb fig.py foo.fig foo.mod ++python3 -m pdb fig.py foo.fig foo.mod + +--- a/src/gcc/gm2/examples/pge/examples/boxes.py ++++ b/src/gcc/gm2/examples/pge/examples/boxes.py +@@ -1,8 +1,8 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import pge, sys + +-print "starting boxes" ++print("starting boxes") + pge.batch () + + wood_light = pge.rgb (166.0/256.0, 124.0/256.0, 54.0/256.0) +@@ -14,7 +14,7 @@ boarder = 0.01 + + + def placeBoarders (thickness, color): +- print "placeBoarders" ++ print("placeBoarders") + pge.box (0.0, 0.0, 1.0, thickness, color).fix () + pge.box (0.0, 0.0, thickness, 1.0, color).fix () + pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix () +@@ -31,5 +31,5 @@ def main (): + pge.run (3.0) + pge.finish () + +-print "before main()" ++print("before main()") + main () +--- a/src/gcc/gm2/examples/pge/examples/exampleBoxes.py ++++ b/src/gcc/gm2/examples/pge/examples/exampleBoxes.py +@@ -1,9 +1,9 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import pge, sys + # import pgemacro + +-print "starting exampleBoxes" ++print("starting exampleBoxes") + pge.batch () + + t = pge.rgb (1.0/2.0, 2.0/3.0, 3.0/4.0) +@@ -21,19 +21,19 @@ gap = 0.01 + + + def play_wood (o): +- print "play_wood - wants to play bounce.wav" ++ print("play_wood - wants to play bounce.wav") + pge.play ("/home/gaius/Sandpit/cluedo/sounds/bounce.wav") + + def play_crack (o): +- print "play_crack - wants to play crack-single.wav" ++ print("play_crack - wants to play crack-single.wav") + pge.play ("/home/gaius/Sandpit/penguin-tower/sounds/crack-single.wav") + + def play_bounce (o): +- print "play_bounce - wants to play cardsnap.wav" ++ print("play_bounce - wants to play cardsnap.wav") + pge.play ("/home/gaius/Sandpit/cluedo/sounds/cardsnap.wav") + + def placeBoarders (thickness, color): +- print "placeBoarders" ++ print("placeBoarders") + e1 = pge.box (0.0, 0.0, 1.0, thickness, color).fix () + e2 = pge.box (0.0, 0.0, thickness, 1.0, color).fix () + e3 = pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix () +@@ -56,34 +56,34 @@ def is_odd (e): + def crate_split (p): + global gap + +- print "crate_split", p ++ print(("crate_split", p)) + pge.dump_world () + e = p.get_param () +- print "after get_param" ++ print("after get_param") + w = e[1] / 2 + wg = w - gap + if wg<0.0: +- print "error gap must be >= 0.0 and not", wg ++ print(("error gap must be >= 0.0 and not", wg)) + sys.exit (1) + if e != None: + if e[0] == 0: +- print "crate piece completely gone" ++ print("crate piece completely gone") + # at the end of 6 collisions the crates disappear + p.rm () + play_crack (p) + elif is_odd (e[0]): + pge.process_event () # update the velocities of objects (immediately after collision) +- print "crate sub divides" ++ print("crate sub divides") + # subdivide into smaller crates, every odd bounce + m = p.get_mass () +- print "mass of crate is", m ++ print(("mass of crate is", m)) + pge.dump_world () +- print "get crate colour" ++ print("get crate colour") + c = p.get_colour () +- print "colour of crate is", c ++ print(("colour of crate is", c)) + pge.dump_world () +- print e +- print "get_xpos" ++ print(e) ++ print("get_xpos") + x = p.get_xpos () - e[1]/2 + pge.dump_world () + y = p.get_ypos () - e[1]/2 +@@ -91,22 +91,22 @@ def crate_split (p): + vy = p.get_yvel () + ax = p.get_xaccel () + ay = p.get_yaccel () +- print "**************** x, y, w, wg = ", x, y, w, wg, vx, vy, ax, ay ++ print(("**************** x, y, w, wg = ", x, y, w, wg, vx, vy, ax, ay)) + pge.dump_world () +- print "rm", p ++ print(("rm", p)) + p.rm () +- print "finished rm, python dumping world" ++ print("finished rm, python dumping world") + pge.dump_world () + for v in [[0, 0], [0, w], [w, 0], [w, w]]: +- print "creating sub box", v, "gap =", wg ++ print(("creating sub box", v, "gap =", wg)) + b = pge.box (v[0]+x, v[1]+y, wg, wg, c).mass (m).on_collision (crate_split).velocity (vx, vy).accel (ax, ay) +- print "set_param", [e[0]-1, w] ++ print(("set_param", [e[0]-1, w])) + b.set_param ([e[0]-1, w]) + pge.dump_world () +- print "play_crack", p ++ print(("play_crack", p)) + play_crack (p) + else: +- print "crate bounces without breaking" ++ print("crate bounces without breaking") + # allow collision (bounce) without splitting every even bounce + p.set_param ([e[0]-1, e[1]]) + play_bounce (p) +@@ -118,11 +118,11 @@ def main (): + # b = placeBall (0.5, 0.5, 0.02) + # b.mass (1.0).on_collision (play_bounce).velocity (0.9, 0.0) + crate (0.6, 0.6, 0.2) +- print "before run" ++ print("before run") + pge.gravity () + pge.dump_world () + pge.run (10.0) + pge.finish () + +-print "before main()" ++print("before main()") + main () +--- a/src/gcc/gm2/examples/pge/examples/exampleBoxes.py~ ++++ b/src/gcc/gm2/examples/pge/examples/exampleBoxes.py~ +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import pge + # import pgemacro +--- a/src/gcc/gm2/examples/pge/examples/triangle.py ++++ b/src/gcc/gm2/examples/pge/examples/triangle.py +@@ -1,8 +1,8 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import pge, sys + +-print "starting triangle" ++print("starting triangle") + pge.batch () + + t = pge.rgb (1.0/2.0, 2.0/3.0, 3.0/4.0) +@@ -17,7 +17,7 @@ gap = 0.01 + + + def placeBoarders (thickness, color): +- print "placeBoarders" ++ print("placeBoarders") + e1 = pge.box (0.0, 0.0, 1.0, thickness, color).fix () + e2 = pge.box (0.0, 0.0, thickness, 1.0, color).fix () + e3 = pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix () +@@ -38,11 +38,11 @@ def main (): + c = placeBall (0.41, 0.89, 0.05).mass (1) + l = placeTriangle ([0.3, 0.3], [0.5, 0.3], [0.4, 0.4]) + b1, b2, b3, b4 = placeBoarders (boarder, wood_dark) +- print "before run" ++ print("before run") + pge.gravity () + pge.dump_world () + pge.run (3.0) + pge.finish () + +-print "before main()" ++print("before main()") + main () +--- a/src/gcc/gm2/examples/pge/fig.py ++++ b/src/gcc/gm2/examples/pge/fig.py +@@ -1,14 +1,14 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import sys + import getopt + + # object codes +-fig_o_customColor, fig_o_ellipse, fig_o_polygon, fig_o_spline, fig_o_text, fig_o_arc, fig_o_compound_begin = range(7) ++fig_o_customColor, fig_o_ellipse, fig_o_polygon, fig_o_spline, fig_o_text, fig_o_arc, fig_o_compound_begin = list(range(7)) + fig_o_compound_end = -6 + + # polygon type constants +-fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox = range(1, 6) ++fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox = list(range(1, 6)) + + + # +@@ -16,7 +16,7 @@ fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox = + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + colorNo = 0 + +@@ -54,7 +54,7 @@ class fig: + # + def readContents (self): + self.contents = open(self.filename, 'r').readlines() +- print self.contents ++ print(self.contents) + + def error (self, message): + printf("%s:%d:%s\n", self.filename, self.lineno, message) +@@ -133,19 +133,19 @@ class fig: + self.skipLine () + if characteristics[-1] == "2": + points = self.contents[0].split() +- print "force points are", points ++ print("force points are", points) + if characteristics[-3] == "0" and characteristics[-2] == "1": +- print "found force backward" ++ print("found force backward") + self.forces += [["force", "backward", points]] + elif characteristics[-3] == "1" and characteristics[-2] == "0": +- print "found force forward" ++ print("found force forward") + self.forces += [["force", "forward", points]] + elif characteristics[2] == "0": + # solid, we treat as fixed +- print "found fixed polygon", points ++ print("found fixed polygon", points) + self.objects += [["fixed", "polygon", points]] + else: +- print "found non fixed polygon", points ++ print("found non fixed polygon", points) + self.objects += [["nonfixed", "polygon", points]] + + +@@ -156,12 +156,12 @@ class fig: + def parseEllipse32 (self): + ellipse = self.contents[0].split () + if ellipse[2] == "0": +- print "found fixed circle", ellipse[-8:-4] ++ print("found fixed circle", ellipse[-8:-4]) + # solid (ellipse) treat as a fixed circle + self.objects += [["fixed", "circle", ellipse[-8:-4]]] + else: + # treat as a nonfixed circle +- print "found non fixed circle", ellipse[-8:-4] ++ print("found non fixed circle", ellipse[-8:-4]) + self.objects += [["nonfixed", "circle", ellipse[-8:-4]]] + self.skipLine () + +@@ -260,7 +260,7 @@ class fig: + def findExtents (self): + self.minp, self.maxp = -1, -1 + for o in self.objects: +- print "finding extent of", o ++ print("finding extent of", o) + self.minp, self.maxp = self.examineExtent(o) + return self.minp, self.maxp + +@@ -276,7 +276,7 @@ class fig: + + def doFract (self, n): + if (n<-100) or (n>100): +- print n, "error" ++ print(n, "error") + # self.error("incorrect position calculated") + if n == 0: + self.fo.write("zero()") +@@ -336,7 +336,7 @@ class fig: + popWorld.mass(cardinal(1)) ; + """) + if self.forces != []: +- print self.forces[0] ++ print(self.forces[0]) + self.doForce (self.forces[0]) + self.fo.write(""" + popWorld.populate(m, FALSE, TRUE) ; +@@ -345,16 +345,16 @@ class fig: + + def checkVectorSum (self, x0, x1, x2): + ox = x0 +- print "x:", x0, x1, x2, ++ print("x:", x0, x1, x2, end=' ') + tx = x0 + x1 + x2 + if tx<0: + x0 += (-tx) + elif tx>100: + x0 -= (tx-100) + if ox == x0: +- print ++ print() + else: +- print " ->", x0, x1, x2 ++ print(" ->", x0, x1, x2) + return x0, x1, x2 + + +@@ -429,9 +429,9 @@ class fig: + + def generateModula2 (self): + if self.objects != []: +- print "objects are: ", self.objects ++ print("objects are: ", self.objects) + self.minp, self.maxp = self.findExtents() +- print "max extents are:", self.minp, self.maxp ++ print("max extents are:", self.minp, self.maxp) + self.createModule() + + def doStyle (self, style): +@@ -547,7 +547,7 @@ BEGIN + # + + def usage (value): +- print "fig [-h] inputfile outputfile" ++ print("fig [-h] inputfile outputfile") + sys.exit(value) + + +--- a/src/gcc/gm2/examples/pge/max2code ++++ b/src/gcc/gm2/examples/pge/max2code +@@ -1,3 +1,3 @@ + #!/bin/bash + +-python max2code.py $* ++python3 max2code.py $* +--- a/src/gcc/gm2/examples/pge/max2code.py ++++ b/src/gcc/gm2/examples/pge/max2code.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import sys, getopt + +@@ -20,7 +20,7 @@ verbose = False + # + + def usage (value): +- print "max2code [-h][-v][-o outputfile][-l c][-l m2][--lang=m2][--lang=c] inputfile" ++ print("max2code [-h][-v][-o outputfile][-l c][-l m2][--lang=m2][--lang=c] inputfile") + sys.exit(value) + + +@@ -60,10 +60,10 @@ def main (): + + parseArgs() + if outputFile == "": +- print "no output file specified" ++ print("no output file specified") + usage(1) + if inputFile == "": +- print "no input file specified" ++ print("no input file specified") + usage(1) + else: + p = parse(inputFile, outputFile, defaultLang, verbose) +--- a/src/gcc/gm2/examples/pge/mxmmaxima.py ++++ b/src/gcc/gm2/examples/pge/mxmmaxima.py +@@ -38,7 +38,7 @@ class parse: + def getPolynomials (self, nTerms): + if self.expression(): + e = self.expressionStack.pop() +- for n in reversed(range(nTerms)): ++ for n in reversed(list(range(nTerms))): + self.terms += [e.collectPolynomial(n, 't')] + self.terms.reverse() + return self.terms +@@ -331,7 +331,7 @@ class parse: + def syntaxError (self, message): + mystop () + printHeader(self.inputFile, self.lineNo) +- print self.contents ++ print((self.contents)) + + j = self.columnNo-len(self.tok) + s = " " * j +@@ -339,7 +339,7 @@ class parse: + s += " " + s += message + printHeader(self.inputFile, self.lineNo) +- print s ++ print(s) + sys.exit(1) + + +@@ -349,10 +349,10 @@ class parse: + + def printToken (self, token): + printHeader(self.inputFile, self.lineNo-1) +- print self.contents ++ print((self.contents)) + + j = self.columnNo-len(token) + s = " " * j + s += "^" * len(token) + printHeader(self.inputFile, self.lineNo) +- print s ++ print(s) +--- a/src/gcc/gm2/examples/pge/mxmout.py ++++ b/src/gcc/gm2/examples/pge/mxmout.py +@@ -8,7 +8,7 @@ + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +--- a/src/gcc/gm2/examples/pge/mxmparser.py ++++ b/src/gcc/gm2/examples/pge/mxmparser.py +@@ -25,7 +25,7 @@ commentLeader = '//' + + def internalError (message): + stop() +- print message ++ print(message) + sys.exit(1) + + +@@ -116,8 +116,8 @@ class parse: + o = "outfile.m" + m = open(o, 'r').readlines() + if verbose: +- print "output from maxima is:" +- print string.join(m, '') ++ print("output from maxima is:") ++ print((string.join(m, ''))) + c = "rm %s\n" % i + os.system(c) + c = "rm %s\n" % o +@@ -238,7 +238,7 @@ class parse: + else: + printf(alternative) + printf("\n") +- print self.contents ++ print((self.contents)) + + + # +--- a/src/gcc/gm2/examples/pge/mxmtree.py ++++ b/src/gcc/gm2/examples/pge/mxmtree.py +@@ -6,7 +6,7 @@ from mxmutils import * + + + defaultLang = "c" +-atom, node = range(2) ++atom, node = list(range(2)) + output = "" + + +@@ -15,7 +15,7 @@ output = "" + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +--- a/src/gcc/gm2/examples/pge/pge.py ++++ b/src/gcc/gm2/examples/pge/pge.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + import pgeif + import pygame +@@ -9,10 +9,10 @@ import math + from pygame.locals import * + + +-colour_t, box_t, circle_t, fb_box_t, fb_circle_t, fb_text_t = range (6) ++colour_t, box_t, circle_t, fb_box_t, fb_circle_t, fb_text_t = list(range(6)) + id2ob = {} + ob2id = {} +-batch_d, pyg_d = range (2) ++batch_d, pyg_d = list(range(2)) + device = None + opened = False + output = None +@@ -49,14 +49,14 @@ font = None + # + + def printf (format, *args): +- print str (format) % args, ++ print(str (format) % args, end=' ') + + + def debugf (format, *args): + global debugging + + if debugging: +- print str (format) % args, ++ print(str (format) % args, end=' ') + + def errorf (format, *args): + m = str (format) % args +@@ -148,7 +148,7 @@ class object: + + self._check_colour () + i = pgeif.h2l (self._get_pgeif_colour ()) +- if idTOcol.has_key (i): ++ if i in idTOcol: + return idTOcol[i] + internalf ("3 colour triple should have been defined") + +@@ -197,7 +197,7 @@ class object: + _emit_fract (self.o [1]) # y pos + _emit_fract (self.o [2]) # radius + _emit_short (self.o [3]) # colour +- print "_emit_fill_circle, colour is ", self.o [3], self.o [0], self.o [1], self.o [2] ++ print("_emit_fill_circle, colour is ", self.o [3], self.o [0], self.o [1], self.o [2]) + + def _emit_fill_polygon (self): + output.write (struct.pack ("3s", "dP")) +@@ -225,7 +225,7 @@ class object: + self._check_type ([box_t, circle_t], "assign a velocity to a") + self._check_not_fixed ("assign a velocity") + self._check_not_deleted ("a velocity") +- print "velocity for object", self.o, vx, vy ++ print("velocity for object", self.o, vx, vy) + self.o = self._check_same (pgeif.velocity (self.o, vx, vy)) + return self + +@@ -242,7 +242,7 @@ class object: + self._check_no_mass ("cannot fix " + self._name () + " as it has a mass") + self.fixed = True + self.o = self._check_same (pgeif.fix (self.o)) +- print "fix", self.o ++ print("fix", self.o) + return self + + def mass (self, m): +@@ -253,7 +253,7 @@ class object: + errorf ("cannot give value None as the mass\n") + self.kg = m + self.o = self._check_same (pgeif.mass (self.o, m)) +- print "mass", self.o ++ print("mass", self.o) + return self + + def apply_impulse (self, unit_vec, magnitude): +@@ -262,13 +262,13 @@ class object: + self._check_not_deleted (" an impulse") + if (magnitude is None) or (unit_vec is None): + return +- print "magnitude", magnitude, "vector", unit_vec ++ print("magnitude", magnitude, "vector", unit_vec) + pgeif.apply_impulse (self.o, unit_vec[0], unit_vec[1], magnitude) + return self + + def on_collision_with (self, another, p): + if debugging: +- print "ok registering call back", p, another ++ print("ok registering call back", p, another) + self.collisionp = p + self.collisionWith = another + return self +@@ -318,14 +318,14 @@ class object: + + def _collision (self, between, e): + if debugging: +- print "collision seen, between:", between ++ print("collision seen, between:", between) + if self.collisionWith == []: + if self.collisionp != None: + if debugging: +- print "before collisionp" ++ print("before collisionp") + self.collisionp (self, e) + if debugging: +- print "after collisionp" ++ print("after collisionp") + else: + for c in self.collisionWith: + for b in between: +@@ -396,7 +396,7 @@ class object: + return pgeif.get_yaccel (self.o) + + def put_xvel (self, f): +- print "put_xvel on a", self._name () ++ print("put_xvel on a", self._name ()) + self._check_type ([box_t, circle_t], "put the xvel") + return pgeif.put_xvel (self.o, f) + +@@ -425,14 +425,14 @@ def _colspace (f): + def rgb (r, g, b): + global idTOcol + +- print "in rgb (", r, g, b, ")" ++ print("in rgb (", r, g, b, ")") + c = pgeif.rgb (float(r), float(g), float(b)) +- print "after pgeif.rgb ->", c ++ print("after pgeif.rgb ->", c) + o = object (colour_t, [float(r), float(g), float(b), c]) + o._check_colour () + c = pgeif.h2l (c) + idTOcol[c] = (_colspace (r), _colspace (g), _colspace (b)) +- print "define colour triple as:", idTOcol[c] ++ print("define colour triple as:", idTOcol[c]) + return o + + def white (): +@@ -462,18 +462,18 @@ def text (x, y, s, c, size, level): + + + def box (x, y, w, h, c, level = 0): +- print "box:", x, y, w, h, c, level ++ print("box:", x, y, w, h, c, level) + c._param_colour ("fifth parameter to box is expected to be a colour") + if level == 0: + id = pgeif.box (x, y, w, h, c._get_pgeif_colour ()) +- print "box colour =", c, c._get_pgeif_colour () ++ print("box colour =", c, c._get_pgeif_colour ()) + ob = object (box_t, id, c, level) + ob.set_width (w) + debugf ("box ") + _register (id, ob) + else: + ob = object (fb_box_t, [x, y, x+w, y, x+w, y+h, x+w, y+h, x, y+h, c._get_pgeif_colour ()], c, level) +- print "box colour =", c, c._get_pgeif_colour () ++ print("box colour =", c, c._get_pgeif_colour ()) + _add (ob, level) + return ob + +@@ -516,30 +516,30 @@ def _add (ob, level): + background += [level] + background.sort () + +- if levels.has_key (level): ++ if level in levels: + levels[level] += [ob] + else: + levels[level] = [ob] +- print levels[level] ++ print(levels[level]) + + + def _sub (ob, level): + global foreground, background + +- if levels.has_key (level): ++ if level in levels: + levels[level].remove (ob) + + if level > 0: + f = [] + for l in foreground: +- if levels.has_key (l): ++ if l in levels: + f += [l] + foreground = f + foreground.sort () + else: + b = [] + for l in background: +- if levels.has_key (l): ++ if l in levels: + b += [l] + background = b + background.sort () +@@ -549,13 +549,13 @@ def circle (x, y, r, c, level = 0): + c._param_colour ("fourth parameter to box is expected to be a colour") + if level == 0: + id = pgeif.circle (x, y, r, c._get_pgeif_colour ()) +- print "circle id =", id ++ print("circle id =", id) + debugf ("circle ") + ob = object (circle_t, id, c, level) + _register (id, ob) + else: +- print "circle, colour =", c +- print "pge: colour", c._get_pgeif_colour () ++ print("circle, colour =", c) ++ print("pge: colour", c._get_pgeif_colour ()) + ob = object (fb_circle_t, [x, y, r, c._get_pgeif_colour ()], c, level) + _add (ob, level) + return ob +@@ -636,7 +636,7 @@ def draw_background (): + for o in levels[l]: + o._draw () + +-no_event, frame_event, collision_event, function_event, final_event = range (5) ++no_event, frame_event, collision_event, function_event, final_event = list(range(5)) + + class event: + def __init__ (self, t, d, l): +@@ -706,14 +706,14 @@ class event: + self._handle_frame_buffer () + _collision (self._between (), self) + elif self._type == function_event: +- print "_process found timer_event", self.__id ++ print("_process found timer_event", self.__id) + i = self.__id +- if id2func.has_key (i): +- print "function", i, "about to be called" ++ if i in id2func: ++ print("function", i, "about to be called") + id2func [i] () +- print "function", i, "finished" ++ print("function", i, "finished") + else: +- print "function", i, "has been cancelled" ++ print("function", i, "has been cancelled") + def _handle_frame_buffer (self): + cData = pgeif.get_cbuf () + debugf ("cData len = %d\n", len (cData)) +@@ -741,7 +741,7 @@ class event: + def _get_time (self): + return self.__etime + def collision_between (self): +- print self._between () ++ print(self._between ()) + return self._between () + def cancel (self): + self._cancelled = True +@@ -827,28 +827,28 @@ def _add_relative (r): + pge_event_queue = [] + + def display_element (e, t): +- print "[", e[0], "ms ", ++ print("[", e[0], "ms ", end=' ') + if e[1]._type == frame_event: +- print "displayframe", ++ print("displayframe", end=' ') + elif e[1]._type == collision_event: +- print "collision", ++ print("collision", end=' ') + elif e[1]._type == function_event: +- print "timer", ++ print("timer", end=' ') + else: +- print "final", +- print " at", e[0] + (int) (t * 1000.0), "ms", +- print "], ", ++ print("final", end=' ') ++ print(" at", e[0] + (int) (t * 1000.0), "ms", end=' ') ++ print("], ", end=' ') + + def display_event_queue (q): + if q == []: +- print "event queue is empty" ++ print("event queue is empty") + else: +- print "event queue: " ++ print("event queue: ") + t = pgeif.get_time () + for e in q: + display_element (e, t) + t += e[1]._get_time () +- print "" ++ print("") + + prev_event_time = 0.0 + +@@ -869,7 +869,7 @@ def _wait_for_event (): + global pge_event_queue, slow_down_factor, device, _record, debugging + + if debugging: +- print "_wait_for_event, pge_event_queue =" ++ print("_wait_for_event, pge_event_queue =") + display_event_queue (pge_event_queue) + if device == pyg_d: + pygame.event.set_allowed (None) +@@ -903,7 +903,7 @@ def at_time (t, p): + + def at_cancel (i): + global id2func +- if id2func.has_key (i): ++ if i in id2func: + del id2func[i] + else: + error ("at_cancel cannot delete function %d as it no longer exists\n", i) +@@ -933,10 +933,10 @@ def pyg_draw_frame (cdata, clength, fdata, flength): + while f.left () >= 3: + header = struct.unpack ("3s", f.read (3))[0] + header = header[:2] +- if call.has_key (header): ++ if header in call: + f = call[header] (f) + else: +- print "not understood header =", header ++ print("not understood header =", header) + sys.exit (1) + # printf ("drawing foreground\n") + if flength > 0: +@@ -1086,7 +1086,7 @@ def runpy (t=-1, ep=None): + _process (pe) + ev = _get_next_event () + nev = _post_event (ev, ev._get_time ()) +- elif pyevent2func.has_key (e.type): ++ elif e.type in pyevent2func: + pyevent2func[e.type] (e) + # what does this code do?? + # elif ep != None: +@@ -1190,8 +1190,8 @@ def load_sound (name): + return NoneSound() + try: + sound = pygame.mixer.Sound(name) +- except pygame.error, message: +- print 'cannot load sound file:', name ++ except pygame.error as message: ++ print('cannot load sound file:', name) + return NoneSound() + return sound + +@@ -1342,7 +1342,7 @@ def doRegisterColour (f): + f, gf = readFract (f) + f, bf = readFract (f) + if debugging: +- print rf, gf, bf ++ print(rf, gf, bf) + r = toCol (rf) + g = toCol (gf) + b = toCol (bf) +@@ -1388,14 +1388,14 @@ def doDrawFillPolygon (f): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (resolution[0], xf) + y = mults (resolution[1], yf) + l += [[x, flip (y)]] + + f, c = readColour (f) + if debugging: +- print "drawFillPolygon (colour =", c, " l =", l, ")" ++ print("drawFillPolygon (colour =", c, " l =", l, ")") + pygame.draw.polygon (screen, c, l, 0) + return f + +@@ -1426,7 +1426,7 @@ def doDrawFillCircle (f): + f, c = readColour (f) + debugf("circle x = %d y = %d, r = %d\n", x, y, r) + if debugging: +- print " colour =", c ++ print(" colour =", c) + pygame.draw.circle (screen, c, (x, flip (y)), r, 0) + return f + +@@ -1479,14 +1479,14 @@ def doDrawPolygon (f): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (resolution[0], xf) + y = mults (resolution[1], yf) + l += [[x, flip(y)]] + + f, t = readFract (f) + if debugging: +- print "draw polygon", l, "thickness", t ++ print("draw polygon", l, "thickness", t) + # pygame.draw.polygon (screen, c, l, 0) + return f + +--- a/src/gcc/gm2/examples/pge/pge2d.py +--- b/src/gcc/gm2/examples/pge/pge2d.py +@@ -1,10 +0,0 @@ +-#!/usr/bin/env python +- +- +- +-# +-# +-# +- +-def rgb (r, g, b): +- +--- a/src/gcc/gm2/examples/pge/pgeplayback.py ++++ b/src/gcc/gm2/examples/pge/pgeplayback.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import os, pygame, string, sys, getopt, math, struct, time + from pygame.locals import * +@@ -73,7 +73,7 @@ class myfile: + def rewind_to (self, frameno): + global seekTable + +- if seekTable.has_key (frameno): ++ if frameno in seekTable: + self.pos = seekTable[frameno] + return True + else: +@@ -87,14 +87,14 @@ class myfile: + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + # + # error - issues an error message and exits. + # + + def error (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + sys.exit(1) + + +@@ -105,7 +105,7 @@ def error (format, *args): + def debugf (format, *args): + global debugging + if debugging: +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -129,8 +129,8 @@ def load_sound(name): + return NoneSound () + try: + sound = pygame.mixer.Sound (name) +- except pygame.error, message: +- print 'cannot load sound file:', name ++ except pygame.error as message: ++ print('cannot load sound file:', name) + return NoneSound () + return sound + +@@ -148,11 +148,11 @@ def doPlay (f): + global sounds, wantedFrame, frameNo + + name = getSoundName (f) +- print "need to play", name +- if not sounds.has_key (name): ++ print("need to play", name) ++ if name not in sounds: + sounds[name] = load_sound (name) + if frameNo == wantedFrame: +- print "playing", name ++ print("playing", name) + sounds[name].play () + return f + +@@ -201,7 +201,7 @@ def registerColour (f): + f, gf = readFract (f) + f, bf = readFract (f) + if debugging: +- print rf, gf, bf ++ print(rf, gf, bf) + r = toCol (rf) + g = toCol (gf) + b = toCol (bf) +@@ -243,7 +243,7 @@ def drawFillCircle (f): + if frameNo == wantedFrame: + debugf("circle x = %d y = %d, r = %d\n", x, y, r) + if debugging: +- print " colour =", c ++ print(" colour =", c) + pygame.draw.circle (screen, c, (x, flip (y)), r, 0) + return f + +@@ -258,19 +258,19 @@ def drawPolygon (f): + f, n = readShort (f) + l = [] + if debugging: +- print "drawPolygon", n, ++ print("drawPolygon", n, end=' ') + for i in range (n): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (resolution[0], xf) + y = mults (resolution[1], yf) + l += [[x, flip(y)]] + + f, t = readFract (f) + if debugging: +- print "draw polygon", l, "thickness", t ++ print("draw polygon", l, "thickness", t) + if frameNo == wantedFrame: + # pygame.draw.polygon(screen, c, l, 0) + pass +@@ -344,12 +344,12 @@ def drawFillPolygon (f): + f, n = readShort (f) + l = [] + if debugging: +- print "drawFillPolygon", n, ++ print("drawFillPolygon", n, end=' ') + for i in range (n): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (resolution[0], xf) + y = mults (resolution[1], yf) + l += [[x, flip(y)]] +@@ -357,8 +357,8 @@ def drawFillPolygon (f): + f, c = readColour (f) + if frameNo == wantedFrame: + if debugging: +- print "" +- print "drawFillPolygon (colour =", c, " l =", l, ")" ++ print("") ++ print("drawFillPolygon (colour =", c, " l =", l, ")") + pygame.draw.polygon (screen, c, l, 0) + return f + +@@ -499,7 +499,7 @@ def readFile (name): + header = header[:2] + # print "readFile", header + # printf ("(frameNo = %d, wantedFrame = %d)\n", frameNo, wantedFrame) +- if call.has_key (header): ++ if header in call: + f = call[header] (f) + pc = f.pos + header = struct.unpack ("3s", f.read (3))[0] +@@ -588,9 +588,9 @@ def doSystem (s): + global verbose + + if verbose: +- print s ++ print(s) + if os.system (s) != 0: +- print "shell failed:", s ++ print("shell failed:", s) + sys.exit (1) + + +@@ -687,7 +687,7 @@ def finishMovie (): + else: + printf ("generating sound effect file\n") + commandArgs = "" +- print soxSound ++ print(soxSound) + audio = "audio.wav" + for t, s, n in soxSound: + frameSound = "%6d-%3d.wav" % (t, n) +@@ -783,7 +783,7 @@ def grRegisterColour (f): + f, gf = readFract (f) + f, bf = readFract (f) + if debugging: +- print rf, gf, bf ++ print(rf, gf, bf) + r = toCol (rf) + g = toCol (gf) + b = toCol (bf) +@@ -802,7 +802,7 @@ def doMessage (f): + while int(b) != 0: + text += b + b = f.read (1) +- print "Time:", frameTime, text ++ print("Time:", frameTime, text) + + + def grMessage (f): +@@ -813,7 +813,7 @@ def grMessage (f): + while int(b) != 0: + text += b + b = f.read (1) +- print "Time:", frameTime, text ++ print("Time:", frameTime, text) + + + def grDrawPolygon (f): +@@ -823,19 +823,19 @@ def grDrawPolygon (f): + f, n = readShort (f) + l = [] + if debugging: +- print "grDrawPolygon", n, ++ print("grDrawPolygon", n, end=' ') + for i in range (n): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (1.0, xf) + y = mults (1.0, yf) + l += [[x, flip(y)]] + + f, t = readFract (f) + if debugging: +- print "draw polygon", l, "thickness", t ++ print("draw polygon", l, "thickness", t) + return f + + +@@ -847,12 +847,12 @@ def grDrawFillPolygon (f): + f, n = readShort (f) + l = [] + if debugging: +- print "grDrawFillPolygon", n, ++ print("grDrawFillPolygon", n, end=' ') + for i in range (n): + f, xf = readFract (f) + f, yf = readFract (f) + if debugging: +- print xf, yf, ++ print(xf, yf, end=' ') + x = mults (1.0, xf) + y = mults (1.0, yf) + l += [[x, flip(y)]] +--- a/src/gcc/gm2/examples/pge/pgepygame.py ++++ b/src/gcc/gm2/examples/pge/pgepygame.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + + import os, pygame, string, sys, getopt, math, struct + from pygame.locals import * +@@ -33,14 +33,14 @@ maxColour = 0 + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + # + # error - issues an error message and exits. + # + + def error (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + sys.exit(1) + + +@@ -51,7 +51,7 @@ def error (format, *args): + def debugf (format, *args): + global debugging + if debugging: +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -96,7 +96,7 @@ def registerColour (connection): + connection, bytes = get(connection, 3) + r, g, b = struct.unpack('BBB', bytes) + debugf("colour %d, %d, %d\n", r, g, b) +- if not colTOid.has_key((r, g, b)): ++ if (r, g, b) not in colTOid: + maxColour += 1 + colTOid[(r, g, b)] = maxColour + idTOcol[maxColour] = (r, g, b) +@@ -200,7 +200,7 @@ def serveRPC (): + data = connection.recv(1) + debugf("received packet %c\n", data) + if data: +- if call.has_key(data): ++ if data in call: + connection = call[data](connection) + else: + printf("error unexpected packet %c\n", data) +--- a/src/gcc/gm2/examples/pge/runfig ++++ b/src/gcc/gm2/examples/pge/runfig +@@ -16,11 +16,11 @@ killall a.out + rm *.png *.ms + + xfig $source +-if python fig.py $source $modname ; then ++if python3 fig.py $source $modname ; then + if gm2 -c -I. -g -fiso $modname ; then + rm `basename $modname .mod`.o + make foo.o ; make foo +- python pge.py & ++ python3 pge.py & + sleep 1 + ./a.out + # ./produce-avi +--- a/src/gcc/gm2/examples/pge/runthis ++++ b/src/gcc/gm2/examples/pge/runthis +@@ -1,3 +1,3 @@ +-#!/bin/bash ++#!/bin/sh + +-python max2code.py -v -o t.mod test.mxm ++python3 max2code.py -v -o t.mod test.mxm +--- a/src/gcc/gm2/examples/pge/t.py ++++ b/src/gcc/gm2/examples/pge/t.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + import pygame + from pygame.locals import * +@@ -24,6 +24,6 @@ pygame.draw.circle (screen, blue, (100, 100), 100, 0) + pygame.display.flip() + + +-print "setting timer for 3 seconds" ++print("setting timer for 3 seconds") + time.sleep (3) +-print "goodbye" ++print("goodbye") +--- a/src/gcc/gm2/examples/server/client.py ++++ b/src/gcc/gm2/examples/server/client.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + import sys + from socket import * +@@ -12,4 +12,4 @@ s.connect((serverHost, serverPort)) + while 1: + s.send('h') + data = s.recv(1024) +- print data ++ print(data) +--- a/src/gcc/gm2/examples/swig/dual/Makefile.in ++++ b/src/gcc/gm2/examples/swig/dual/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../ + XGPP=../../../../g++ -B../../../../ + XGCC=../../../../xgcc -B../../../../ + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "or you can use 'make post-install' to build the examples after installing the compiler" +@@ -55,7 +55,7 @@ post-install: clean + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libfirst.la + + cp .libs/libfirst.so _libfirst.so +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testdual.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testdual.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* *.i *.lst *.cpp *.lo *.la +--- a/src/gcc/gm2/examples/swig/dual/testdual.py ++++ b/src/gcc/gm2/examples/swig/dual/testdual.py +@@ -1,5 +1,5 @@ + import libfirst + +-print "inside Python" ++print("inside Python") + libfirst.libfirst_out("calling out") +-print "finishing Python" ++print("finishing Python") +--- a/src/gcc/gm2/examples/swig/exceptions/Makefile.in ++++ b/src/gcc/gm2/examples/swig/exceptions/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../ + XGPP=../../../../g++ + XGCC=../../../../gcc + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "you can use 'make post-install' to build the examples after installing the compiler" +@@ -54,8 +54,8 @@ post-install: clean + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libtiny.la + + cp .libs/libtiny.so _libtiny.so +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testtiny.py +- PYTHONPATH=.:$(srcdir) python $(srcdir)/stresstiny.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testtiny.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/stresstiny.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* tiny.py tiny.i *_m2.cpp +--- a/src/gcc/gm2/examples/swig/exceptions/stresstiny.py ++++ b/src/gcc/gm2/examples/swig/exceptions/stresstiny.py +@@ -7,8 +7,8 @@ import sys + for i in range (10): + try: + libtiny.doSomething (i) +- print "error exception should have been thrown" ++ print("error exception should have been thrown") + except: +- print "caught exception in Python: i =", i ++ print(("caught exception in Python: i =", i)) + +-print "stresstiny passed" ++print("stresstiny passed") +--- a/src/gcc/gm2/examples/swig/exceptions/testtiny.py ++++ b/src/gcc/gm2/examples/swig/exceptions/testtiny.py +@@ -5,6 +5,6 @@ import libtiny + + try: + libtiny.doSomething(1) +- print "error : should not arrive here" ++ print("error : should not arrive here") + except: +- print "success: caught exception in Python" ++ print("success: caught exception in Python") +--- a/src/gcc/gm2/examples/swig/full-strlib/Makefile.in ++++ b/src/gcc/gm2/examples/swig/full-strlib/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2 + XGPP=../../../../g++ + XGCC=../../../../xgcc + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "or you can use 'make post-install' to build the examples after installing the compiler" +@@ -56,9 +56,9 @@ strlib: force + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrLib.la + cp .libs/libStrLib.so _StrLib.so + +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testlen.py +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testequ.py +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testcopy.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testlen.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testequ.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testcopy.py + + numberio: force + gm2 -I$(srcdir) -c -g -fswig $(srcdir)/../../../gm2-libs/NumberIO.mod +@@ -75,7 +75,7 @@ numberio: force + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libNumberIO.la + cp .libs/libNumberIO.so _NumberIO.so + +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testnum.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testnum.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* StrLib.py NumberIO.py *.i *_m2.cpp +--- a/src/gcc/gm2/examples/swig/full-strlib/testcopy.py ++++ b/src/gcc/gm2/examples/swig/full-strlib/testcopy.py +@@ -1,7 +1,7 @@ + import StrLib + + +-print StrLib.StrLib_StrLen("hello") ++print((StrLib.StrLib_StrLen("hello"))) + a = "1234567890" # should really find a better method + StrLib.StrLib_StrCopy("hello", a) # for creating, a, which is also +-print a # compatible with ARRAY OF CHAR ++print(a) # compatible with ARRAY OF CHAR +--- a/src/gcc/gm2/examples/swig/full-strlib/testequ.py ++++ b/src/gcc/gm2/examples/swig/full-strlib/testequ.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2010 + # Free Software Foundation, Inc. +@@ -22,23 +22,23 @@ + + import StrLib + +-print 'we are going to call StrLib.StrLib_StrLess("abcd", "pqr") and we expect 1 in return' +-print StrLib.StrLib_StrLess("abcd", "pqr") ++print('we are going to call StrLib.StrLib_StrLess("abcd", "pqr") and we expect 1 in return') ++print((StrLib.StrLib_StrLess("abcd", "pqr"))) + if StrLib.StrLib_StrLess("abcd", "pqr")==1: +- print "passed" ++ print("passed") + else: +- print "failed" ++ print("failed") + +-print 'we are going to call StrLib.StrLib_StrLess("pqr", "abcd") and we expect 0 in return' +-print StrLib.StrLib_StrLess("pqr", "abcd") ++print('we are going to call StrLib.StrLib_StrLess("pqr", "abcd") and we expect 0 in return') ++print((StrLib.StrLib_StrLess("pqr", "abcd"))) + if StrLib.StrLib_StrLess("pqr", "abcd")==0: +- print "passed" ++ print("passed") + else: +- print "failed" ++ print("failed") + +-print 'we are going to call StrLib.StrLib_IsSubString("abcdefghijk", "fghi") and we expect 1 in return' +-print StrLib.StrLib_IsSubString("abcdefghijk", "fghi") ++print('we are going to call StrLib.StrLib_IsSubString("abcdefghijk", "fghi") and we expect 1 in return') ++print((StrLib.StrLib_IsSubString("abcdefghijk", "fghi"))) + if StrLib.StrLib_IsSubString("abcdefghijk", "fghi")==1: +- print "passed" ++ print("passed") + else: +- print "failed" ++ print("failed") +--- a/src/gcc/gm2/examples/swig/full-strlib/testlen.py ++++ b/src/gcc/gm2/examples/swig/full-strlib/testlen.py +@@ -1,4 +1,4 @@ + import StrLib + +-print 'we are going to call StrLib.StrLib_StrLen("hello world") and we expect 11 in return' +-print StrLib.StrLib_StrLen("hello world") ++print('we are going to call StrLib.StrLib_StrLen("hello world") and we expect 11 in return') ++print((StrLib.StrLib_StrLen("hello world"))) +--- a/src/gcc/gm2/examples/swig/full-strlib/testnum.py ++++ b/src/gcc/gm2/examples/swig/full-strlib/testnum.py +@@ -1,3 +1,3 @@ + import NumberIO + +-print "1234 x 2 =", NumberIO.NumberIO_StrToInt("1234")*2 ++print(("1234 x 2 =", NumberIO.NumberIO_StrToInt("1234")*2)) +--- a/src/gcc/gm2/examples/swig/strio/Makefile.in ++++ b/src/gcc/gm2/examples/swig/strio/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2 + XGPP=../../../../g++ + XGCC=../../../../xgcc + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "or you can use 'make post-install' to build the examples after installing the compiler" +@@ -55,7 +55,7 @@ strio: force + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrIO.la + cp .libs/libStrIO.so _StrIO.so + +- PYTHONPATH=.:$(srcdir) python $(srcdir)/teststrio.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/teststrio.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* StrIO.py *.i *_m2.cpp +--- a/src/gcc/gm2/examples/swig/strlen/Makefile ++++ b/src/gcc/gm2/examples/swig/strlen/Makefile +@@ -1,11 +1,11 @@ +-PYTHON_VERSION=2.5 ++PYTHON_VERSION=3 + + all: force + swig -python MyStrLib.i + gcc -c -fPIC MyStrLib_wrap.c -I/usr/include/python$(PYTHON_VERSION) + gm2 -fshared -c -fPIC -g MyStrLib.mod + gm2 -fmakeall -I. -fPIC -g -shared -fshared MyStrLib.mod MyStrLib_wrap.o -o _MyStrLib.so +- python testlen.py ++ python$(PYTHON_VERSION) testlen.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* MyStrLib.py *.lst *_m2.cpp +--- a/src/gcc/gm2/examples/swig/strlen/testlen.py ++++ b/src/gcc/gm2/examples/swig/strlen/testlen.py +@@ -1,4 +1,4 @@ + import MyStrLib + +-print 'we are going to call MyStrLib.MyStrLib_StrLen("hello world") and we expect 11 in return' +-print MyStrLib.MyStrLib_StrLen("hello world") ++print('we are going to call MyStrLib.MyStrLib_StrLen("hello world") and we expect 11 in return') ++print((MyStrLib.MyStrLib_StrLen("hello world"))) +--- a/src/gcc/gm2/examples/swig/strlib/Makefile.in ++++ b/src/gcc/gm2/examples/swig/strlib/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2 + XGPP=../../../../g++ + XGCC=../../../../xgcc + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "you can use 'make post-install' to build the examples after installing the compiler" +@@ -54,7 +54,7 @@ post-install: clean + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrLib.la + + cp .libs/libStrLib.so _libStrLib.so +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testlen.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testlen.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* libStrLib.py *.i *.lst libStrLib_m2.cpp +--- a/src/gcc/gm2/examples/swig/strlib/testlen.py ++++ b/src/gcc/gm2/examples/swig/strlib/testlen.py +@@ -1,4 +1,4 @@ + import libStrLib + +-print 'we are going to call libStrLib.libStrLib_StrLen("hello world") and we expect 11 in return' +-print libStrLib.libStrLib_StrLen("hello world") ++print('we are going to call libStrLib.libStrLib_StrLen("hello world") and we expect 11 in return') ++print((libStrLib.libStrLib_StrLen("hello world"))) +--- a/src/gcc/gm2/examples/swig/tiny/Makefile.in ++++ b/src/gcc/gm2/examples/swig/tiny/Makefile.in +@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../ + XGPP=../../../../g++ -B../../../../ + XGCC=../../../../xgcc -B../../../../ + +-PYTHON_VERSION=2.7 ++PYTHON_VERSION=3 + + all: force + @echo "or you can use 'make post-install' to build the examples after installing the compiler" +@@ -54,7 +54,7 @@ post-install: clean + -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libtiny.la + + cp .libs/libtiny.so _libtiny.so +- PYTHONPATH=.:$(srcdir) python $(srcdir)/testtiny.py ++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testtiny.py + + clean: force + $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* tiny.py *.i *.lst *.cpp +--- a/src/gcc/gm2/examples/swig/tiny/testtiny.py ++++ b/src/gcc/gm2/examples/swig/tiny/testtiny.py +@@ -1,5 +1,5 @@ + import libtiny + +-print "inside Python" ++print("inside Python") + libtiny.libtiny_out("calling out") +-print "finishing Python" ++print("finishing Python") +--- a/src/gcc/gm2/gm2-compiler/M2Error.mod ++++ b/src/gcc/gm2/gm2-compiler/M2Error.mod +@@ -709,7 +709,7 @@ BEGIN + END ; + IF FlushAll(head, TRUE) + THEN +- ExitOnHalt(1) ; ++ ExitOnHalt (1) ; + HALT + END + END FlushErrors ; +@@ -727,6 +727,7 @@ PROCEDURE FlushWarnings ; + BEGIN + IF FlushAll(head, FALSE) + THEN ++ ExitOnHalt (1) + END + END FlushWarnings ; + +--- a/src/gcc/gm2/gm2-compiler/M2Options.def ++++ b/src/gcc/gm2/gm2-compiler/M2Options.def +@@ -77,7 +77,9 @@ EXPORT QUALIFIED SetReturnCheck, SetNilCheck, SetCaseCheck, + SetStatistics, SetWall, + CppProg, CppArg, CppCommandLine, CppRemember, + SetDebugFunctionLineNumbers, DebugFunctionLineNumbers, +- SetGenerateStatementNote, GenerateStatementNote ; ++ SetGenerateStatementNote, GenerateStatementNote, ++ SetUnusedVariableChecking, SetUnusedParameterChecking, ++ SetIndex, SetRange, SetWholeDiv ; + + + VAR +--- a/src/gcc/gm2/gm2-gcc/m2expr.c ++++ b/src/gcc/gm2/gm2-gcc/m2expr.c +@@ -2592,7 +2592,7 @@ m2expr_BuildBinaryForeachWordDo (location_t location, tree type, tree op1, + } + + /* Append DIGIT to NUM, a number of PRECISION bits being read in base +-BASE. */ ++ BASE. */ + + static int + append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high, +@@ -2600,8 +2600,8 @@ append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high, + { + unsigned int shift; + int overflow; +- HOST_WIDE_INT add_high, res_high; +- unsigned HOST_WIDE_INT add_low, res_low; ++ HOST_WIDE_INT add_high, res_high, test_high; ++ unsigned HOST_WIDE_INT add_low, res_low, test_low; + + switch (base) + { +@@ -2643,13 +2643,16 @@ append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high, + else + add_high = add_low = 0; + +- if (add_low + digit < add_low) ++ test_low = add_low + digit; ++ if (test_low < add_low) + add_high++; + add_low += digit; + +- if (res_low + add_low < res_low) ++ test_low = res_low + add_low; ++ if (test_low < res_low) + add_high++; +- if (res_high + add_high < res_high) ++ test_high = res_high + add_high; ++ if (test_high < res_high) + overflow = TRUE; + + *low = res_low + add_low; +@@ -2711,15 +2714,16 @@ m2expr_interpret_integer (const char *str, unsigned int base, + } + + /* Append DIGIT to NUM, a number of PRECISION bits being read in base +-BASE. */ ++ BASE. */ ++ + static int + append_m2_digit (unsigned int *low, int *high, unsigned int digit, + unsigned int base) + { + unsigned int shift; + int overflow; +- int add_high, res_high; +- unsigned int add_low, res_low; ++ int add_high, res_high, test_high; ++ unsigned int add_low, res_low, test_low; + + switch (base) + { +@@ -2761,13 +2765,16 @@ append_m2_digit (unsigned int *low, int *high, unsigned int digit, + else + add_high = add_low = 0; + +- if (add_low + digit < add_low) ++ test_low = add_low + digit; ++ if (test_low < add_low) + add_high++; + add_low += digit; + +- if (res_low + add_low < res_low) ++ test_low = res_low + add_low; ++ if (test_low < res_low) + add_high++; +- if (res_high + add_high < res_high) ++ test_high = res_high + add_high; ++ if (test_high < res_high) + overflow = TRUE; + + *low = res_low + add_low; +@@ -2777,10 +2784,10 @@ append_m2_digit (unsigned int *low, int *high, unsigned int digit, + } + + /* interpret_m2_integer convert an integer constant into two integer +-constants. Heavily borrowed from gcc/cppexp.c. Note that this is a +-copy of the above code except that it uses `int' rather than +-HOST_WIDE_INT to allow gm2 to determine what Modula-2 base type to +-use for this constant. */ ++ constants. Heavily borrowed from gcc/cppexp.c. Note that this is a ++ copy of the above code except that it uses `int' rather than ++ HOST_WIDE_INT to allow gm2 to determine what Modula-2 base type to ++ use for this constant. */ + + int + m2expr_interpret_m2_integer (const char *str, unsigned int base, +--- a/src/gcc/gm2/gm2-lang.c ++++ b/src/gcc/gm2/gm2-lang.c +@@ -259,17 +259,15 @@ gm2_langhook_handle_option ( + case OPT_fnil: + M2Options_SetNilCheck (value); + return 1; +-#if 0 +- case OPT_fwholediv: +- M2Options_SetWholeDiv (value); +- return 1; +- case OPT_findex: +- M2Options_SetIndex (value); +- return 1; +- case OPT_frange: +- M2Options_SetRange (value); +- return 1; +-#endif ++ case OPT_fwholediv: ++ M2Options_SetWholeDiv (value); ++ return 1; ++ case OPT_findex: ++ M2Options_SetIndex (value); ++ return 1; ++ case OPT_frange: ++ M2Options_SetRange (value); ++ return 1; + case OPT_ffloatvalue: + M2Options_SetFloatValueCheck (value); + return 1; +--- a/src/gcc/gm2/gm2-libs-ch/dtoa.c ++++ b/src/gcc/gm2/gm2-libs-ch/dtoa.c +@@ -118,7 +118,7 @@ dtoa_calcmaxsig (char *p, int ndigits) + return strlen (p) + x; + else + { +- strncpy (o, o + 1, ndigits - (o - p)); ++ memmove (o, o + 1, ndigits - (o - p)); + return o - p + x; + } + } +@@ -167,7 +167,7 @@ dtoa_calcsign (char *p, int str_size) + { + if (p[0] == '-') + { +- strncpy (p, p + 1, str_size - 1); ++ memmove (p, p + 1, str_size - 1); + return TRUE; + } + else +--- a/src/gcc/gm2/gm2-libs/Builtins.def ++++ b/src/gcc/gm2/gm2-libs/Builtins.def +@@ -1,3 +1,22 @@ ++(* Builtins.def defines all gm2 built-in functions. ++ ++Copyright (C) 2001-2019 Free Software Foundation, Inc. ++Contributed by Gaius Mulley . ++ ++This file is part of GNU Modula-2. ++ ++GNU Modula-2 is free software: you can redistribute it and/or modify ++it under the terms of the GNU Lesser General Public License as ++published by the Free Software Foundation, either version 3 of the ++License, or (at your option) any later version. ++ ++GNU Modula-2 is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++Lesser General Public License for more details. ++ ++You should have received a copy of the GNU Lesser General Public License ++along with GNU Modula-2. If not, see . *) + + DEFINITION MODULE Builtins ; + +@@ -177,18 +196,6 @@ PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ; + PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ; + PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ; + +-(* +- longjmp - this GCC builtin restricts the val to always 1. +-*) +-(* do not use these two builtins, as gcc, only really +- anticipates that the Ada front end should use them +- and it only uses them in its runtime exception handling. +- We leave them here in the hope that someday they will +- behave more like their libc counterparts. *) +- +-PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ; +-PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ; +- + + (* + frame_address - returns the address of the frame. +--- a/src/gcc/gm2/gm2-libs/Builtins.mod ++++ b/src/gcc/gm2/gm2-libs/Builtins.mod +@@ -634,17 +634,6 @@ BEGIN + RETURN -1.0 + END huge_valf ; + +-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_longjmp)) longjmp (env: ADDRESS; val: INTEGER) ; +-BEGIN +- (* empty, replaced internally by gcc *) +-END longjmp ; +- +-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_setjmp)) setjmp (env: ADDRESS) : INTEGER ; +-BEGIN +- (* empty, replaced internally by gcc *) +- RETURN 0 (* keeps gm2 happy *) +-END setjmp ; +- + + (* + frame_address - returns the address of the frame. +--- a/src/gcc/gm2/gm2-libs/FIO.mod ++++ b/src/gcc/gm2/gm2-libs/FIO.mod +@@ -630,21 +630,21 @@ VAR + n: INTEGER ; + p: POINTER TO CHAR ; + BEGIN +- IF f#Error ++ IF f # Error + THEN +- CheckAccess(f, openedforread, FALSE) ; +- n := ReadFromBuffer(f, a, nBytes) ; +- IF n<0 ++ CheckAccess (f, openedforread, FALSE) ; ++ n := ReadFromBuffer (f, a, nBytes) ; ++ IF n <= 0 + THEN +- RETURN( 0 ) ++ RETURN 0 + ELSE + p := a ; +- INC(p, n) ; +- SetEndOfLine(f, p^) ; +- RETURN( n ) ++ INC (p, n-1) ; ++ SetEndOfLine (f, p^) ; ++ RETURN n + END + ELSE +- RETURN( 0 ) ++ RETURN 0 + END + END ReadNBytes ; + +--- a/src/gcc/gm2/lang-specs.h ++++ b/src/gcc/gm2/lang-specs.h +@@ -31,7 +31,7 @@ Boston, MA 02110-1301, USA. */ + %{MT*} %{MF*} -quiet " + + #define GM2CC(INPUT,OUTPUT) \ +- "%{!fno-exceptions:cc1plus;:cc1} " GM2CC_OPTIONS " " INPUT " -o %b_m2.s \n\ ++ "%{!fno-exceptions:cc1plus;:cc1} " GM2CC_OPTIONS " " INPUT " -o %d%b_m2.s \n\ + " AS("%b_m2.s",OUTPUT) " " + + #define GM2LCC(OBJECT,LST) \ +--- a/src/gcc/gm2/lang.opt ++++ b/src/gcc/gm2/lang.opt +@@ -82,6 +82,18 @@ fcase + Modula-2 + turns on runtime checking to check whether a CASE statement requires an ELSE clause when on was not specified + ++frange ++Modula-2 ++turns on all range checking for numerical values ++ ++findex ++Modula-2 ++turns on all range checking for numerical values ++ ++fwholediv ++Modula-2 ++turns on all division and modulus by zero checking for ordinal values ++ + ffloatvalue + Modula-2 + turns on runtime checking to check whether a floating point number is about to exceed range +--- a/src/gcc/gm2/m2.flex ++++ b/src/gcc/gm2/m2.flex +@@ -351,10 +351,10 @@ static void handleColumn (void) + + static void handleDate (void) + { +- time_t clock = time((long *)0); +- char *sdate = ctime(&clock); +- char *s = (char *)alloca(strlen(sdate)+2+1); +- char *p = index(sdate, '\n'); ++ time_t clock = time ((time_t *)0); ++ char *sdate = ctime (&clock); ++ char *s = (char *) alloca (strlen (sdate) + 2 + 1); ++ char *p = index (sdate, '\n'); + + if (p != NULL) { + *p = (char) 0; +@@ -362,7 +362,7 @@ static void handleDate (void) + strcpy(s, "\""); + strcat(s, sdate); + strcat(s, "\""); +- M2LexBuf_AddTokCharStar(M2Reserved_stringtok, s); ++ M2LexBuf_AddTokCharStar (M2Reserved_stringtok, s); + } + + /* +--- a/src/gcc/gm2/mc-boot-ch/Gdtoa.c ++++ b/src/gcc/gm2/mc-boot-ch/Gdtoa.c +@@ -100,7 +100,7 @@ dtoa_calcmaxsig (char *p, int ndigits) + return strlen (p) + x; + else + { +- strncpy (o, o + 1, ndigits - (o - p)); ++ memmove (o, o + 1, ndigits - (o - p)); + return o - p + x; + } + } +@@ -149,7 +149,7 @@ dtoa_calcsign (char *p, int str_size) + { + if (p[0] == '-') + { +- strncpy (p, p + 1, str_size - 1); ++ memmove (p, p + 1, str_size - 1); + return TRUE; + } + else +--- a/src/gcc/gm2/mc-boot/GArgs.c ++++ b/src/gcc/gm2/mc-boot/GArgs.c +@@ -79,7 +79,9 @@ unsigned int Args_GetArg (char *a, unsigned int _a_high, unsigned int i) + } + } + if (j <= High) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + return i < UnixArgs_ArgC; + } + +--- a/src/gcc/gm2/mc-boot/GCmdArgs.c ++++ b/src/gcc/gm2/mc-boot/GCmdArgs.c +@@ -103,7 +103,9 @@ static unsigned int GetNextArg (char *CmdLine_, unsigned int _CmdLine_high, unsi + ArgIndex = 0; + /* Skip spaces */ + while (((*CmdIndex) < HighC) && (Space (CmdLine[(*CmdIndex)]))) +- (*CmdIndex) += 1; ++ { ++ (*CmdIndex) += 1; ++ } + if ((*CmdIndex) < HighC) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ +@@ -116,19 +118,27 @@ static unsigned int GetNextArg (char *CmdLine_, unsigned int _CmdLine_high, unsi + } + else if (DoubleQuote (CmdLine[(*CmdIndex)])) + { ++ /* avoid dangling else. */ + /* Skip over the double quote */ + (*CmdIndex) += 1; + CopyUntil ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA, dquote); + (*CmdIndex) += 1; + } + else +- CopyUntilSpace ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA); ++ { ++ /* avoid dangling else. */ ++ CopyUntilSpace ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA); ++ } + } + /* Skip spaces */ + while (((*CmdIndex) < HighC) && (Space (CmdLine[(*CmdIndex)]))) +- (*CmdIndex) += 1; ++ { ++ (*CmdIndex) += 1; ++ } + if (ArgIndex < HighA) +- Arg[ArgIndex] = ASCII_nul; ++ { ++ Arg[ArgIndex] = ASCII_nul; ++ } + return (*CmdIndex) < HighC; + } + +@@ -145,7 +155,9 @@ static void CopyUntilSpace (char *From_, unsigned int _From_high, unsigned int * + memcpy (From, From_, _From_high+1); + + while ((((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh)) && (! (Space (From[(*FromIndex)])))) +- CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh); ++ { ++ CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh); ++ } + } + + +@@ -161,7 +173,9 @@ static void CopyUntil (char *From_, unsigned int _From_high, unsigned int *FromI + memcpy (From, From_, _From_high+1); + + while ((((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh)) && (From[(*FromIndex)] != UntilChar)) +- CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh); ++ { ++ CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh); ++ } + } + + +@@ -181,8 +195,10 @@ static void CopyChar (char *From_, unsigned int _From_high, unsigned int *FromIn + if (((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh)) + { + if (Escape (From[(*FromIndex)])) +- /* Skip over Escape Character */ +- (*FromIndex) += 1; ++ { ++ /* Skip over Escape Character */ ++ (*FromIndex) += 1; ++ } + if ((*FromIndex) < FromHigh) + { + /* Copy Normal Character */ +@@ -260,7 +276,9 @@ unsigned int CmdArgs_Narg (char *CmdLine_, unsigned int _CmdLine_high) + + ArgNo = 0; + while (CmdArgs_GetArg ((char *) CmdLine, _CmdLine_high, ArgNo, (char *) &a.array[0], 1000)) +- ArgNo += 1; ++ { ++ ArgNo += 1; ++ } + /* + IF ArgNo>0 + THEN +--- a/src/gcc/gm2/mc-boot/GDebug.c ++++ b/src/gcc/gm2/mc-boot/GDebug.c +@@ -133,13 +133,16 @@ void Debug_DebugString (char *a_, unsigned int _a_high) + } + else if (a[n+1] == '\\') + { ++ /* avoid dangling else. */ + StdIO_Write ('\\'); + n += 1; + } + } + } + else +- StdIO_Write (a[n]); ++ { ++ StdIO_Write (a[n]); ++ } + n += 1; + } + } +--- a/src/gcc/gm2/mc-boot/GDynamicStrings.c ++++ b/src/gcc/gm2/mc-boot/GDynamicStrings.c +@@ -693,7 +693,9 @@ static void DumpStringInfo (DynamicStrings_String s, unsigned int i) + static void doDSdbEnter (void) + { + if (CheckOn) +- DynamicStrings_PushAllocation (); ++ { ++ DynamicStrings_PushAllocation (); ++ } + } + + +@@ -704,7 +706,9 @@ static void doDSdbEnter (void) + static void doDSdbExit (DynamicStrings_String s) + { + if (CheckOn) +- s = DynamicStrings_PopAllocationExemption (TRUE, s); ++ { ++ s = DynamicStrings_PopAllocationExemption (TRUE, s); ++ } + } + + +@@ -748,9 +752,13 @@ static unsigned int Capture (DynamicStrings_String s) + static unsigned int Min (unsigned int a, unsigned int b) + { + if (a < b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -761,9 +769,13 @@ static unsigned int Min (unsigned int a, unsigned int b) + static unsigned int Max (unsigned int a, unsigned int b) + { + if (a > b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -792,9 +804,13 @@ static void writeCstring (void * a) + int i; + + if (a == NULL) +- writeString ((char *) "(null)", 6); ++ { ++ writeString ((char *) "(null)", 6); ++ } + else +- i = libc_write (1, a, libc_strlen (a)); ++ { ++ i = libc_write (1, a, libc_strlen (a)); ++ } + } + + +@@ -814,7 +830,7 @@ static void writeCard (unsigned int c) + } + else + { +- ch = (char) (((unsigned int) ('0'))+c); ++ ch = ((char) ( ((unsigned int) ('0'))+c)); + i = libc_write (1, &ch, (size_t) 1); + } + } +@@ -836,12 +852,14 @@ static void writeLongcard (long unsigned int l) + } + else if (l < 10) + { +- ch = (char) (((unsigned int) ('0'))+((unsigned int ) (l))); ++ /* avoid dangling else. */ ++ ch = ((char) ( ((unsigned int) ('0'))+((unsigned int ) (l)))); + i = libc_write (1, &ch, (size_t) 1); + } + else if (l < 16) + { +- ch = (char) ((((unsigned int) ('a'))+((unsigned int ) (l)))-10); ++ /* avoid dangling else. */ ++ ch = ((char) (( ((unsigned int) ('a'))+((unsigned int ) (l)))-10)); + i = libc_write (1, &ch, (size_t) 1); + } + } +@@ -906,7 +924,9 @@ static DynamicStrings_String AssignDebug (DynamicStrings_String s, char *file_, + static unsigned int IsOn (DynamicStrings_String list, DynamicStrings_String s) + { + while ((list != s) && (list != NULL)) +- list = list->debug.next; ++ { ++ list = list->debug.next; ++ } + return list == s; + } + +@@ -939,17 +959,25 @@ static void SubFrom (DynamicStrings_String *list, DynamicStrings_String s) + DynamicStrings_String p; + + if ((*list) == s) +- (*list) = s->debug.next; ++ { ++ (*list) = s->debug.next; ++ } + else + { + p = (*list); + while ((p->debug.next != NULL) && (p->debug.next != s)) +- p = p->debug.next; ++ { ++ p = p->debug.next; ++ } + if (p->debug.next == s) +- p->debug.next = s->debug.next; ++ { ++ p->debug.next = s->debug.next; ++ } + else +- /* not found, quit */ +- return; ++ { ++ /* not found, quit */ ++ return; ++ } + } + s->debug.next = NULL; + } +@@ -989,9 +1017,13 @@ static unsigned int IsOnAllocated (DynamicStrings_String s) + f = frameHead; + do { + if (IsOn (f->alloc, s)) +- return TRUE; ++ { ++ return TRUE; ++ } + else +- f = f->next; ++ { ++ f = f->next; ++ } + } while (! (f == NULL)); + return FALSE; + } +@@ -1009,9 +1041,13 @@ static unsigned int IsOnDeallocated (DynamicStrings_String s) + f = frameHead; + do { + if (IsOn (f->dealloc, s)) +- return TRUE; ++ { ++ return TRUE; ++ } + else +- f = f->next; ++ { ++ f = f->next; ++ } + } while (! (f == NULL)); + return FALSE; + } +@@ -1034,7 +1070,9 @@ static void SubAllocated (DynamicStrings_String s) + return; + } + else +- f = f->next; ++ { ++ f = f->next; ++ } + } while (! (f == NULL)); + } + +@@ -1056,7 +1094,9 @@ static void SubDeallocated (DynamicStrings_String s) + return; + } + else +- f = f->next; ++ { ++ f = f->next; ++ } + } while (! (f == NULL)); + } + +@@ -1079,8 +1119,10 @@ static void SubDebugInfo (DynamicStrings_String s) + AddDeallocated (s); + } + else +- /* string has not been allocated */ +- Assertion_Assert (! DebugOn); ++ { ++ /* string has not been allocated */ ++ Assertion_Assert (! DebugOn); ++ } + } + + +@@ -1095,7 +1137,9 @@ static void AddDebugInfo (DynamicStrings_String s) + s->debug.line = 0; + s->debug.proc = NULL; + if (CheckOn) +- AddAllocated (s); ++ { ++ AddAllocated (s); ++ } + } + + +@@ -1131,7 +1175,9 @@ static void ConcatContents (Contents *c, char *a_, unsigned int _a_high, unsigne + (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 701, (char *) "ConcatContents", 14); + } + else +- (*c).len = i; ++ { ++ (*c).len = i; ++ } + } + + +@@ -1144,7 +1190,9 @@ static void DeallocateCharStar (DynamicStrings_String s) + if ((s != NULL) && (s->head != NULL)) + { + if (s->head->charStarUsed && (s->head->charStar != NULL)) +- Storage_DEALLOCATE (&s->head->charStar, s->head->charStarSize); ++ { ++ Storage_DEALLOCATE (&s->head->charStar, s->head->charStarSize); ++ } + s->head->charStarUsed = FALSE; + s->head->charStar = NULL; + s->head->charStarSize = 0; +@@ -1160,7 +1208,9 @@ static void DeallocateCharStar (DynamicStrings_String s) + static DynamicStrings_String CheckPoisoned (DynamicStrings_String s) + { + if (((PoisonOn && (s != NULL)) && (s->head != NULL)) && (s->head->state == poisoned)) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + return s; + } + +@@ -1172,9 +1222,13 @@ static DynamicStrings_String CheckPoisoned (DynamicStrings_String s) + static void MarkInvalid (DynamicStrings_String s) + { + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (s->head != NULL) +- s->head->charStarValid = FALSE; ++ { ++ s->head->charStarValid = FALSE; ++ } + } + + +@@ -1210,7 +1264,9 @@ static void ConcatContentsAddress (Contents *c, void * a, unsigned int h) + ConcatContentsAddress (&(*c).next->contents, (void *) p, h-j); + AddDebugInfo ((*c).next); + if (TraceOn) +- (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 896, (char *) "ConcatContentsAddress", 21); ++ { ++ (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 896, (char *) "ConcatContentsAddress", 21); ++ } + } + else + { +@@ -1245,11 +1301,15 @@ static DynamicStrings_String AddToGarbage (DynamicStrings_String a, DynamicStrin + { + c = a; + while (c->head->garbage != NULL) +- c = c->head->garbage; ++ { ++ c = c->head->garbage; ++ } + c->head->garbage = b; + b->head->state = onlist; + if (CheckOn) +- SubDebugInfo (b); ++ { ++ SubDebugInfo (b); ++ } + } + return a; + } +@@ -1262,11 +1322,19 @@ static DynamicStrings_String AddToGarbage (DynamicStrings_String a, DynamicStrin + static unsigned int IsOnGarbage (DynamicStrings_String e, DynamicStrings_String s) + { + if ((e != NULL) && (s != NULL)) +- while (e->head->garbage != NULL) +- if (e->head->garbage == s) +- return TRUE; +- else +- e = e->head->garbage; ++ { ++ while (e->head->garbage != NULL) ++ { ++ if (e->head->garbage == s) ++ { ++ return TRUE; ++ } ++ else ++ { ++ e = e->head->garbage; ++ } ++ } ++ } + return FALSE; + } + +@@ -1331,11 +1399,19 @@ static void DumpStringSynopsis (DynamicStrings_String s) + writeString ((char *) " ", 1); + DumpState (s); + if (IsOnAllocated (s)) +- writeString ((char *) " globally allocated", 19); ++ { ++ writeString ((char *) " globally allocated", 19); ++ } + else if (IsOnDeallocated (s)) +- writeString ((char *) " globally deallocated", 21); ++ { ++ /* avoid dangling else. */ ++ writeString ((char *) " globally deallocated", 21); ++ } + else +- writeString ((char *) " globally unknown", 17); ++ { ++ /* avoid dangling else. */ ++ writeString ((char *) " globally unknown", 17); ++ } + writeLn (); + } + +@@ -1407,7 +1483,9 @@ DynamicStrings_String DynamicStrings_InitString (char *a_, unsigned int _a_high) + s->head->state = inuse; + AddDebugInfo (s); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 737, (char *) "InitString", 10); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 737, (char *) "InitString", 10); ++ } + return s; + } + +@@ -1422,23 +1500,32 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s) + DynamicStrings_String t; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (s != NULL) + { + if (CheckOn) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (IsOnAllocated (s)) +- SubAllocated (s); ++ { ++ SubAllocated (s); ++ } + else if (IsOnDeallocated (s)) +- SubDeallocated (s); ++ { ++ /* avoid dangling else. */ ++ SubDeallocated (s); ++ } + } + if (s->head != NULL) + { + s->head->state = poisoned; + s->head->garbage = DynamicStrings_KillString (s->head->garbage); + if (! PoisonOn) +- DeallocateCharStar (s); ++ { ++ DeallocateCharStar (s); ++ } + if (! PoisonOn) + { + Storage_DEALLOCATE ((void **) &s->head, sizeof (descriptor)); +@@ -1447,7 +1534,9 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s) + } + t = DynamicStrings_KillString (s->contents.next); + if (! PoisonOn) +- Storage_DEALLOCATE ((void **) &s, sizeof (stringRecord)); ++ { ++ Storage_DEALLOCATE ((void **) &s, sizeof (stringRecord)); ++ } + } + return NULL; + } +@@ -1462,7 +1551,9 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s) + void DynamicStrings_Fin (DynamicStrings_String s) + { + if ((DynamicStrings_KillString (s)) != NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -1478,7 +1569,9 @@ DynamicStrings_String DynamicStrings_InitStringCharStar (void * a) + s->contents.len = 0; + s->contents.next = NULL; + if (a != NULL) +- ConcatContentsAddress (&s->contents, a, (unsigned int) libc_strlen (a)); ++ { ++ ConcatContentsAddress (&s->contents, a, (unsigned int) libc_strlen (a)); ++ } + Storage_ALLOCATE ((void **) &s->head, sizeof (descriptor)); + s->head->charStarUsed = FALSE; + s->head->charStar = NULL; +@@ -1488,7 +1581,9 @@ DynamicStrings_String DynamicStrings_InitStringCharStar (void * a) + s->head->state = inuse; + AddDebugInfo (s); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 936, (char *) "InitStringCharStar", 18); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 936, (char *) "InitStringCharStar", 18); ++ } + return s; + } + +@@ -1509,7 +1604,9 @@ DynamicStrings_String DynamicStrings_InitStringChar (char ch) + a.array[1] = ASCII_nul; + s = DynamicStrings_InitString ((char *) &a.array[0], 1); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 956, (char *) "InitStringChar", 14); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 956, (char *) "InitStringChar", 14); ++ } + return s; + } + +@@ -1521,9 +1618,13 @@ DynamicStrings_String DynamicStrings_InitStringChar (char ch) + DynamicStrings_String DynamicStrings_Mark (DynamicStrings_String s) + { + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if ((s != NULL) && (s->head->state == inuse)) +- s->head->state = marked; ++ { ++ s->head->state = marked; ++ } + return s; + } + +@@ -1535,9 +1636,13 @@ DynamicStrings_String DynamicStrings_Mark (DynamicStrings_String s) + unsigned int DynamicStrings_Length (DynamicStrings_String s) + { + if (s == NULL) +- return 0; ++ { ++ return 0; ++ } + else +- return s->contents.len+(DynamicStrings_Length (s->contents.next)); ++ { ++ return s->contents.len+(DynamicStrings_Length (s->contents.next)); ++ } + } + + +@@ -1555,22 +1660,29 @@ DynamicStrings_String DynamicStrings_ConCat (DynamicStrings_String a, DynamicStr + b = CheckPoisoned (b); + } + if (a == b) +- return DynamicStrings_ConCat (a, DynamicStrings_Mark (DynamicStrings_Dup (b))); ++ { ++ return DynamicStrings_ConCat (a, DynamicStrings_Mark (DynamicStrings_Dup (b))); ++ } + else if (a != NULL) + { ++ /* avoid dangling else. */ + a = AddToGarbage (a, b); + MarkInvalid (a); + t = a; + while (b != NULL) + { + while ((t->contents.len == MaxBuf) && (t->contents.next != NULL)) +- t = t->contents.next; ++ { ++ t = t->contents.next; ++ } + ConcatContents (&t->contents, (char *) &b->contents.buf.array[0], (MaxBuf-1), b->contents.len, 0); + b = b->contents.next; + } + } + if ((a == NULL) && (b != NULL)) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + return a; + } + +@@ -1588,13 +1700,17 @@ DynamicStrings_String DynamicStrings_ConCatChar (DynamicStrings_String a, char c + DynamicStrings_String t; + + if (PoisonOn) +- a = CheckPoisoned (a); ++ { ++ a = CheckPoisoned (a); ++ } + b.array[0] = ch; + b.array[1] = ASCII_nul; + t = a; + MarkInvalid (a); + while ((t->contents.len == MaxBuf) && (t->contents.next != NULL)) +- t = t->contents.next; ++ { ++ t = t->contents.next; ++ } + ConcatContents (&t->contents, (char *) &b.array[0], 1, 1, 0); + return a; + } +@@ -1628,10 +1744,14 @@ DynamicStrings_String DynamicStrings_Assign (DynamicStrings_String a, DynamicStr + DynamicStrings_String DynamicStrings_Dup (DynamicStrings_String s) + { + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + s = DynamicStrings_Assign (DynamicStrings_InitString ((char *) "", 0), s); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1152, (char *) "Dup", 3); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1152, (char *) "Dup", 3); ++ } + return s; + } + +@@ -1649,7 +1769,9 @@ DynamicStrings_String DynamicStrings_Add (DynamicStrings_String a, DynamicString + } + a = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "", 0), a), b); + if (TraceOn) +- a = AssignDebug (a, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1172, (char *) "Add", 3); ++ { ++ a = AssignDebug (a, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1172, (char *) "Add", 3); ++ } + return a; + } + +@@ -1676,11 +1798,17 @@ unsigned int DynamicStrings_Equal (DynamicStrings_String a, DynamicStrings_Strin + while (i < a->contents.len) + { + if (a->contents.buf.array[i] != a->contents.buf.array[i]) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + if (b->contents.buf.array[i] != b->contents.buf.array[i]) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + if (a->contents.buf.array[i] != b->contents.buf.array[i]) +- return FALSE; ++ { ++ return FALSE; ++ } + i += 1; + } + a = a->contents.next; +@@ -1689,7 +1817,9 @@ unsigned int DynamicStrings_Equal (DynamicStrings_String a, DynamicStrings_Strin + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -1703,10 +1833,14 @@ unsigned int DynamicStrings_EqualCharStar (DynamicStrings_String s, void * a) + DynamicStrings_String t; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + t = DynamicStrings_InitStringCharStar (a); + if (TraceOn) +- t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1237, (char *) "EqualCharStar", 13); ++ { ++ t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1237, (char *) "EqualCharStar", 13); ++ } + t = AddToGarbage (t, s); + if (DynamicStrings_Equal (t, s)) + { +@@ -1735,10 +1869,14 @@ unsigned int DynamicStrings_EqualArray (DynamicStrings_String s, char *a_, unsig + memcpy (a, a_, _a_high+1); + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + t = DynamicStrings_InitString ((char *) a, _a_high); + if (TraceOn) +- t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1267, (char *) "EqualArray", 10); ++ { ++ t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1267, (char *) "EqualArray", 10); ++ } + t = AddToGarbage (t, s); + if (DynamicStrings_Equal (t, s)) + { +@@ -1760,13 +1898,21 @@ unsigned int DynamicStrings_EqualArray (DynamicStrings_String s, char *a_, unsig + DynamicStrings_String DynamicStrings_Mult (DynamicStrings_String s, unsigned int n) + { + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (n <= 0) +- s = AddToGarbage (DynamicStrings_InitString ((char *) "", 0), s); ++ { ++ s = AddToGarbage (DynamicStrings_InitString ((char *) "", 0), s); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_Mult (s, n-1), s); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_Mult (s, n-1), s); ++ } + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1299, (char *) "Mult", 4); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1299, (char *) "Mult", 4); ++ } + return s; + } + +@@ -1792,54 +1938,76 @@ DynamicStrings_String DynamicStrings_Slice (DynamicStrings_String s, int low, in + int o; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (low < 0) +- low = ((int ) (DynamicStrings_Length (s)))+low; ++ { ++ low = ((int ) (DynamicStrings_Length (s)))+low; ++ } + if (high <= 0) +- high = ((int ) (DynamicStrings_Length (s)))+high; ++ { ++ high = ((int ) (DynamicStrings_Length (s)))+high; ++ } + else +- /* make sure high is <= Length (s) */ +- high = Min (DynamicStrings_Length (s), (unsigned int) high); ++ { ++ /* make sure high is <= Length (s) */ ++ high = Min (DynamicStrings_Length (s), (unsigned int) high); ++ } + d = DynamicStrings_InitString ((char *) "", 0); + d = AddToGarbage (d, s); + o = 0; + t = d; + while (s != NULL) +- if (low < (o+((int ) (s->contents.len)))) +- if (o > high) +- s = NULL; +- else ++ { ++ if (low < (o+((int ) (s->contents.len)))) + { +- /* found sliceable unit */ +- if (low < o) +- start = 0; ++ if (o > high) ++ { ++ s = NULL; ++ } + else +- start = low-o; +- end = Max (Min (MaxBuf, (unsigned int) high-o), 0); +- while (t->contents.len == MaxBuf) + { +- if (t->contents.next == NULL) ++ /* found sliceable unit */ ++ if (low < o) + { +- Storage_ALLOCATE ((void **) &t->contents.next, sizeof (stringRecord)); +- t->contents.next->head = NULL; +- t->contents.next->contents.len = 0; +- AddDebugInfo (t->contents.next); +- if (TraceOn) +- t->contents.next = AssignDebug (t->contents.next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1367, (char *) "Slice", 5); ++ start = 0; + } +- t = t->contents.next; ++ else ++ { ++ start = low-o; ++ } ++ end = Max (Min (MaxBuf, (unsigned int) high-o), 0); ++ while (t->contents.len == MaxBuf) ++ { ++ if (t->contents.next == NULL) ++ { ++ Storage_ALLOCATE ((void **) &t->contents.next, sizeof (stringRecord)); ++ t->contents.next->head = NULL; ++ t->contents.next->contents.len = 0; ++ AddDebugInfo (t->contents.next); ++ if (TraceOn) ++ { ++ t->contents.next = AssignDebug (t->contents.next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1367, (char *) "Slice", 5); ++ } ++ } ++ t = t->contents.next; ++ } ++ ConcatContentsAddress (&t->contents, &s->contents.buf.array[start], (unsigned int) end-start); ++ o += s->contents.len; ++ s = s->contents.next; + } +- ConcatContentsAddress (&t->contents, &s->contents.buf.array[start], (unsigned int) end-start); ++ } ++ else ++ { + o += s->contents.len; + s = s->contents.next; + } +- else +- { +- o += s->contents.len; +- s = s->contents.next; +- } ++ } + if (TraceOn) +- d = AssignDebug (d, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1384, (char *) "Slice", 5); ++ { ++ d = AssignDebug (d, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1384, (char *) "Slice", 5); ++ } + return d; + } + +@@ -1856,19 +2024,25 @@ int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned int o) + unsigned int k; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + k = 0; + while (s != NULL) + { + if ((k+s->contents.len) < o) +- k += s->contents.len; ++ { ++ k += s->contents.len; ++ } + else + { + i = o-k; + while (i < s->contents.len) + { + if (s->contents.buf.array[i] == ch) +- return k+i; ++ { ++ return k+i; ++ } + i += 1; + } + k += i; +@@ -1893,23 +2067,33 @@ int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned int o) + int j; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + j = -1; + k = 0; + while (s != NULL) + { + if ((k+s->contents.len) < o) +- k += s->contents.len; ++ { ++ k += s->contents.len; ++ } + else + { + if (o < k) +- i = 0; ++ { ++ i = 0; ++ } + else +- i = o-k; ++ { ++ i = o-k; ++ } + while (i < s->contents.len) + { + if (s->contents.buf.array[i] == ch) +- j = k; ++ { ++ j = k; ++ } + k += 1; + i += 1; + } +@@ -1934,11 +2118,18 @@ DynamicStrings_String DynamicStrings_RemoveComment (DynamicStrings_String s, cha + + i = DynamicStrings_Index (s, comment, 0); + if (i == 0) +- s = DynamicStrings_InitString ((char *) "", 0); ++ { ++ s = DynamicStrings_InitString ((char *) "", 0); ++ } + else if (i > 0) +- s = DynamicStrings_RemoveWhitePostfix (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i)); ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_RemoveWhitePostfix (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i)); ++ } + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1496, (char *) "RemoveComment", 13); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1496, (char *) "RemoveComment", 13); ++ } + return s; + } + +@@ -1954,10 +2145,14 @@ DynamicStrings_String DynamicStrings_RemoveWhitePrefix (DynamicStrings_String s) + + i = 0; + while (IsWhite (DynamicStrings_char (s, (int) i))) +- i += 1; ++ { ++ i += 1; ++ } + s = DynamicStrings_Slice (s, (int ) (i), 0); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1608, (char *) "RemoveWhitePrefix", 17); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1608, (char *) "RemoveWhitePrefix", 17); ++ } + return s; + } + +@@ -1973,10 +2168,14 @@ DynamicStrings_String DynamicStrings_RemoveWhitePostfix (DynamicStrings_String s + + i = ((int ) (DynamicStrings_Length (s)))-1; + while ((i >= 0) && (IsWhite (DynamicStrings_char (s, i)))) +- i -= 1; ++ { ++ i -= 1; ++ } + s = DynamicStrings_Slice (s, 0, i+1); + if (TraceOn) +- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1630, (char *) "RemoveWhitePostfix", 18); ++ { ++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1630, (char *) "RemoveWhitePostfix", 18); ++ } + return s; + } + +@@ -2004,7 +2203,9 @@ DynamicStrings_String DynamicStrings_ToUpper (DynamicStrings_String s) + { + ch = t->contents.buf.array[i]; + if ((ch >= 'a') && (ch <= 'z')) +- t->contents.buf.array[i] = (char) ((((unsigned int) (ch))-((unsigned int) ('a')))+((unsigned int) ('A'))); ++ { ++ t->contents.buf.array[i] = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('a')))+ ((unsigned int) ('A')))); ++ } + i += 1; + } + t = t->contents.next; +@@ -2037,7 +2238,9 @@ DynamicStrings_String DynamicStrings_ToLower (DynamicStrings_String s) + { + ch = t->contents.buf.array[i]; + if ((ch >= 'A') && (ch <= 'Z')) +- t->contents.buf.array[i] = (char) ((((unsigned int) (ch))-((unsigned int) ('A')))+((unsigned int) ('a'))); ++ { ++ t->contents.buf.array[i] = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('A')))+ ((unsigned int) ('a')))); ++ } + i += 1; + } + t = t->contents.next; +@@ -2056,15 +2259,17 @@ void DynamicStrings_CopyOut (char *a, unsigned int _a_high, DynamicStrings_Strin + unsigned int i; + unsigned int l; + +- l = Min ((_a_high)+1, DynamicStrings_Length (s)); ++ l = Min (_a_high+1, DynamicStrings_Length (s)); + i = 0; + while (i < l) + { + a[i] = DynamicStrings_char (s, (int) i); + i += 1; + } +- if (i <= (_a_high)) +- a[i] = ASCII_nul; ++ if (i <= _a_high) ++ { ++ a[i] = ASCII_nul; ++ } + } + + +@@ -2077,20 +2282,30 @@ char DynamicStrings_char (DynamicStrings_String s, int i) + unsigned int c; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (i < 0) +- c = (unsigned int ) (((int ) (DynamicStrings_Length (s)))+i); ++ { ++ c = (unsigned int ) (((int ) (DynamicStrings_Length (s)))+i); ++ } + else +- c = i; ++ { ++ c = i; ++ } + while ((s != NULL) && (c >= s->contents.len)) + { + c -= s->contents.len; + s = s->contents.next; + } + if ((s == NULL) || (c >= s->contents.len)) +- return ASCII_nul; ++ { ++ return ASCII_nul; ++ } + else +- return s->contents.buf.array[c]; ++ { ++ return s->contents.buf.array[c]; ++ } + } + + +@@ -2106,9 +2321,13 @@ void * DynamicStrings_string (DynamicStrings_String s) + char * p; + + if (PoisonOn) +- s = CheckPoisoned (s); ++ { ++ s = CheckPoisoned (s); ++ } + if (s == NULL) +- return NULL; ++ { ++ return NULL; ++ } + else + { + if (! s->head->charStarValid) +@@ -2291,7 +2510,9 @@ DynamicStrings_String DynamicStrings_PopAllocationExemption (unsigned int halt, + + Init (); + if (frameHead == NULL) +- writeString ((char *) "mismatched number of PopAllocation's compared to PushAllocation's", 65); ++ { ++ writeString ((char *) "mismatched number of PopAllocation's compared to PushAllocation's", 65); ++ } + else + { + if (frameHead->alloc != NULL) +@@ -2313,7 +2534,9 @@ DynamicStrings_String DynamicStrings_PopAllocationExemption (unsigned int halt, + s = s->debug.next; + } + if (b && halt) +- libc_exit (1); ++ { ++ libc_exit (1); ++ } + } + frameHead = frameHead->next; + } +--- a/src/gcc/gm2/mc-boot/GEnvironment.c ++++ b/src/gcc/gm2/mc-boot/GEnvironment.c +@@ -65,7 +65,9 @@ unsigned int Environment_GetEnvironment (char *Env_, unsigned int _Env_high, cha + i += 1; + } + if (i < High) +- a[i] = ASCII_nul; ++ { ++ a[i] = ASCII_nul; ++ } + return Addr != NULL; + } + +--- a/src/gcc/gm2/mc-boot/GFIO.c ++++ b/src/gcc/gm2/mc-boot/GFIO.c +@@ -479,9 +479,13 @@ static void Init (void); + static unsigned int Max (unsigned int a, unsigned int b) + { + if (a > b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -492,9 +496,13 @@ static unsigned int Max (unsigned int a, unsigned int b) + static unsigned int Min (unsigned int a, unsigned int b) + { + if (a < b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -517,7 +525,9 @@ static FIO_File GetNextFreeDescriptor (void) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd == NULL) +- return f; ++ { ++ return f; ++ } + } + f += 1; + if (f > h) +@@ -591,7 +601,9 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength, + fd->buffer->position = 0; + fd->buffer->filled = 0; + if (fd->buffer->size == 0) +- fd->buffer->address = NULL; ++ { ++ fd->buffer->address = NULL; ++ } + else + { + Storage_ALLOCATE (&fd->buffer->address, fd->buffer->size); +@@ -602,9 +614,13 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength, + } + } + if (towrite) +- fd->buffer->left = fd->buffer->size; ++ { ++ fd->buffer->left = fd->buffer->size; ++ } + else +- fd->buffer->left = 0; ++ { ++ fd->buffer->left = 0; ++ } + fd->buffer->contents = fd->buffer->address; /* provides easy access for reading characters */ + fd->state = fstate; /* provides easy access for reading characters */ + } +@@ -627,14 +643,24 @@ static void ConnectToUnix (FIO_File f, unsigned int towrite, unsigned int newfil + if (fd != NULL) + { + if (towrite) +- if (newfile) +- fd->unixfd = libc_creat (fd->name.address, CreatePermissions); +- else +- fd->unixfd = libc_open (fd->name.address, UNIXWRITEONLY, 0); ++ { ++ if (newfile) ++ { ++ fd->unixfd = libc_creat (fd->name.address, CreatePermissions); ++ } ++ else ++ { ++ fd->unixfd = libc_open (fd->name.address, UNIXWRITEONLY, 0); ++ } ++ } + else +- fd->unixfd = libc_open (fd->name.address, UNIXREADONLY, 0); ++ { ++ fd->unixfd = libc_open (fd->name.address, UNIXREADONLY, 0); ++ } + if (fd->unixfd < 0) +- fd->state = connectionfailure; ++ { ++ fd->state = connectionfailure; ++ } + } + } + } +@@ -665,38 +691,40 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes) + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); /* how many bytes have we read */ + /* extract from the buffer first */ + if ((fd->buffer != NULL) && fd->buffer->valid) +- if (fd->buffer->left > 0) +- { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if (nBytes == 1) +- { +- /* too expensive to call memcpy for 1 character */ +- p = a; +- (*p) = (*fd->buffer->contents).array[fd->buffer->position]; +- fd->buffer->left -= 1; /* remove consumed bytes */ +- fd->buffer->position += 1; /* move onwards n bytes */ +- nBytes = 0; /* reduce the amount for future direct */ +- /* read */ +- return 1; +- } +- else +- { +- n = Min (fd->buffer->left, nBytes); +- t = fd->buffer->address; +- t += fd->buffer->position; +- p = libc_memcpy (a, t, (size_t) n); +- fd->buffer->left -= n; /* remove consumed bytes */ +- fd->buffer->position += n; /* move onwards n bytes */ +- /* move onwards ready for direct reads */ +- a += n; +- nBytes -= n; /* reduce the amount for future direct */ +- /* read */ +- total += n; +- return total; /* much cleaner to return now, */ +- } +- /* difficult to record an error if */ +- } +- /* the read below returns -1 */ ++ { ++ if (fd->buffer->left > 0) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if (nBytes == 1) ++ { ++ /* too expensive to call memcpy for 1 character */ ++ p = a; ++ (*p) = (*fd->buffer->contents).array[fd->buffer->position]; ++ fd->buffer->left -= 1; /* remove consumed bytes */ ++ fd->buffer->position += 1; /* move onwards n bytes */ ++ nBytes = 0; /* reduce the amount for future direct */ ++ /* read */ ++ return 1; ++ } ++ else ++ { ++ n = Min (fd->buffer->left, nBytes); ++ t = fd->buffer->address; ++ t += fd->buffer->position; ++ p = libc_memcpy (a, t, (size_t) n); ++ fd->buffer->left -= n; /* remove consumed bytes */ ++ fd->buffer->position += n; /* move onwards n bytes */ ++ /* move onwards ready for direct reads */ ++ a += n; ++ nBytes -= n; /* reduce the amount for future direct */ ++ /* read */ ++ total += n; ++ return total; /* much cleaner to return now, */ ++ } ++ /* difficult to record an error if */ ++ } ++ /* the read below returns -1 */ ++ } + if (nBytes > 0) + { + /* still more to read */ +@@ -708,15 +736,21 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes) + fd->abspos += result; + /* now disable the buffer as we read directly into, a. */ + if (fd->buffer != NULL) +- fd->buffer->valid = FALSE; ++ { ++ fd->buffer->valid = FALSE; ++ } + } + else + { + if (result == 0) +- /* eof reached */ +- fd->state = endoffile; ++ { ++ /* eof reached */ ++ fd->state = endoffile; ++ } + else +- fd->state = failed; ++ { ++ fd->state = failed; ++ } + /* indicate buffer is empty */ + if (fd->buffer != NULL) + { +@@ -724,7 +758,9 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes) + fd->buffer->left = 0; + fd->buffer->position = 0; + if (fd->buffer->address != NULL) +- (*fd->buffer->contents).array[fd->buffer->position] = ASCII_nul; ++ { ++ (*fd->buffer->contents).array[fd->buffer->position] = ASCII_nul; ++ } + } + return -1; + } +@@ -732,7 +768,9 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes) + return total; + } + else +- return -1; ++ { ++ return -1; ++ } + } + + +@@ -759,72 +797,82 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a) + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + total = 0; /* how many bytes have we read */ + if (fd != NULL) /* how many bytes have we read */ +- /* extract from the buffer first */ +- if (fd->buffer != NULL) +- { +- while (nBytes > 0) +- if ((fd->buffer->left > 0) && fd->buffer->valid) +- if (nBytes == 1) +- { +- /* too expensive to call memcpy for 1 character */ +- p = a; +- (*p) = (*fd->buffer->contents).array[fd->buffer->position]; +- fd->buffer->left -= 1; /* remove consumed byte */ +- fd->buffer->position += 1; /* move onwards n byte */ +- total += 1; /* move onwards n byte */ +- return total; +- } +- else +- { +- n = Min (fd->buffer->left, nBytes); +- t = fd->buffer->address; +- t += fd->buffer->position; +- p = libc_memcpy (a, t, (size_t) n); +- fd->buffer->left -= n; /* remove consumed bytes */ +- fd->buffer->position += n; /* move onwards n bytes */ +- /* move onwards ready for direct reads */ +- a += n; +- nBytes -= n; /* reduce the amount for future direct */ +- /* read */ +- total += n; +- } +- else ++ { ++ /* extract from the buffer first */ ++ if (fd->buffer != NULL) ++ { ++ while (nBytes > 0) + { +- /* refill buffer */ +- n = libc_read (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->size); +- if (n >= 0) ++ if ((fd->buffer->left > 0) && fd->buffer->valid) + { +- /* avoid dangling else. */ +- fd->buffer->valid = TRUE; +- fd->buffer->position = 0; +- fd->buffer->left = n; +- fd->buffer->filled = n; +- fd->buffer->bufstart = fd->abspos; +- fd->abspos += n; +- if (n == 0) ++ if (nBytes == 1) + { +- /* eof reached */ +- fd->state = endoffile; +- return -1; ++ /* too expensive to call memcpy for 1 character */ ++ p = a; ++ (*p) = (*fd->buffer->contents).array[fd->buffer->position]; ++ fd->buffer->left -= 1; /* remove consumed byte */ ++ fd->buffer->position += 1; /* move onwards n byte */ ++ total += 1; /* move onwards n byte */ ++ return total; ++ } ++ else ++ { ++ n = Min (fd->buffer->left, nBytes); ++ t = fd->buffer->address; ++ t += fd->buffer->position; ++ p = libc_memcpy (a, t, (size_t) n); ++ fd->buffer->left -= n; /* remove consumed bytes */ ++ fd->buffer->position += n; /* move onwards n bytes */ ++ /* move onwards ready for direct reads */ ++ a += n; ++ nBytes -= n; /* reduce the amount for future direct */ ++ /* read */ ++ total += n; + } + } + else + { +- fd->buffer->valid = FALSE; +- fd->buffer->position = 0; +- fd->buffer->left = 0; +- fd->buffer->filled = 0; +- fd->state = failed; +- return total; ++ /* refill buffer */ ++ n = libc_read (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->size); ++ if (n >= 0) ++ { ++ /* avoid dangling else. */ ++ fd->buffer->valid = TRUE; ++ fd->buffer->position = 0; ++ fd->buffer->left = n; ++ fd->buffer->filled = n; ++ fd->buffer->bufstart = fd->abspos; ++ fd->abspos += n; ++ if (n == 0) ++ { ++ /* eof reached */ ++ fd->state = endoffile; ++ return -1; ++ } ++ } ++ else ++ { ++ fd->buffer->valid = FALSE; ++ fd->buffer->position = 0; ++ fd->buffer->left = 0; ++ fd->buffer->filled = 0; ++ fd->state = failed; ++ return total; ++ } + } + } +- return total; +- } +- else +- return -1; ++ return total; ++ } ++ else ++ { ++ return -1; ++ } ++ } + } + else +- return -1; ++ { ++ return -1; ++ } + } + + +@@ -852,6 +900,7 @@ static void HandleEscape (char *dest, unsigned int _dest_high, char *src_, unsig + } + else if (src[(*i)+1] == 't') + { ++ /* avoid dangling else. */ + /* requires a tab (yuck) tempted to fake this but I better not.. */ + dest[(*j)] = ASCII_tab; + (*j) += 1; +@@ -859,6 +908,7 @@ static void HandleEscape (char *dest, unsigned int _dest_high, char *src_, unsig + } + else + { ++ /* avoid dangling else. */ + /* copy escaped character */ + (*i) += 1; + dest[(*j)] = src[(*i)]; +@@ -881,11 +931,17 @@ static void Cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns + /* make a local copy of each unbounded array. */ + memcpy (b, b_, _b_high+1); + +- if ((_a_high) == (_b_high)) +- for (i=0; i<=_a_high; i++) +- a[i] = b[i]; ++ if (_a_high == _b_high) ++ { ++ for (i=0; i<=_a_high; i++) ++ { ++ a[i] = b[i]; ++ } ++ } + else +- FormatError ((char *) "cast failed", 11); ++ { ++ FormatError ((char *) "cast failed", 11); ++ } + } + + +@@ -918,14 +974,18 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi + i = 0; + j = 0; + while ((((i < HighSrc) && (src[i] != ASCII_nul)) && (j < HighDest)) && (src[i] != '%')) +- if (src[i] == '\\') +- HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest); +- else +- { +- dest[j] = src[i]; +- i += 1; +- j += 1; +- } ++ { ++ if (src[i] == '\\') ++ { ++ HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest); ++ } ++ else ++ { ++ dest[j] = src[i]; ++ i += 1; ++ j += 1; ++ } ++ } + if ((((i+1) < HighSrc) && (src[i] == '%')) && (j < HighDest)) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ +@@ -939,12 +999,15 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi + p += 1; + } + if (j < HighDest) +- dest[j] = ASCII_nul; ++ { ++ dest[j] = ASCII_nul; ++ } + j = StrLib_StrLen ((char *) dest, _dest_high); + i += 2; + } + else if (src[i+1] == 'd') + { ++ /* avoid dangling else. */ + dest[j] = ASCII_nul; + Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high); + NumberIO_CardToStr (c, 0, (char *) &str.array[0], MaxErrorString); +@@ -954,6 +1017,7 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi + } + else + { ++ /* avoid dangling else. */ + dest[j] = src[i]; + i += 1; + j += 1; +@@ -961,16 +1025,22 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi + } + /* and finish off copying src into dest */ + while (((i < HighSrc) && (src[i] != ASCII_nul)) && (j < HighDest)) +- if (src[i] == '\\') +- HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest); +- else +- { +- dest[j] = src[i]; +- i += 1; +- j += 1; +- } ++ { ++ if (src[i] == '\\') ++ { ++ HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest); ++ } ++ else ++ { ++ dest[j] = src[i]; ++ i += 1; ++ j += 1; ++ } ++ } + if (j < HighDest) +- dest[j] = ASCII_nul; ++ { ++ dest[j] = ASCII_nul; ++ } + } + + +@@ -1051,36 +1121,45 @@ static void CheckAccess (FIO_File f, FileUsage use, unsigned int towrite) + if (fd == NULL) + { + if (f != FIO_StdErr) +- FormatError ((char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96); ++ { ++ FormatError ((char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96); ++ } + M2RTS_HALT (-1); + } + else +- if ((use == openedforwrite) && (fd->usage == openedforread)) +- { +- FormatError1 ((char *) "this file (%s) has been opened for reading but is now being written\\n", 69, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); +- M2RTS_HALT (-1); +- } +- else if ((use == openedforread) && (fd->usage == openedforwrite)) +- { +- FormatError1 ((char *) "this file (%s) has been opened for writing but is now being read\\n", 66, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); +- M2RTS_HALT (-1); +- } +- else if (fd->state == connectionfailure) +- { +- FormatError1 ((char *) "this file (%s) was not successfully opened\\n", 44, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); +- M2RTS_HALT (-1); +- } +- else if (towrite != fd->output) +- if (fd->output) ++ { ++ if ((use == openedforwrite) && (fd->usage == openedforread)) + { +- FormatError1 ((char *) "this file (%s) was opened for writing but is now being read\\n", 61, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ FormatError1 ((char *) "this file (%s) has been opened for reading but is now being written\\n", 69, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); + M2RTS_HALT (-1); + } +- else ++ else if ((use == openedforread) && (fd->usage == openedforwrite)) + { +- FormatError1 ((char *) "this file (%s) was opened for reading but is now being written\\n", 64, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ /* avoid dangling else. */ ++ FormatError1 ((char *) "this file (%s) has been opened for writing but is now being read\\n", 66, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); + M2RTS_HALT (-1); + } ++ else if (fd->state == connectionfailure) ++ { ++ /* avoid dangling else. */ ++ FormatError1 ((char *) "this file (%s) was not successfully opened\\n", 44, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ M2RTS_HALT (-1); ++ } ++ else if (towrite != fd->output) ++ { ++ /* avoid dangling else. */ ++ if (fd->output) ++ { ++ FormatError1 ((char *) "this file (%s) was opened for writing but is now being read\\n", 61, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ M2RTS_HALT (-1); ++ } ++ else ++ { ++ FormatError1 ((char *) "this file (%s) was opened for reading but is now being written\\n", 64, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ M2RTS_HALT (-1); ++ } ++ } ++ } + } + else + { +@@ -1103,9 +1182,13 @@ static void SetEndOfLine (FIO_File f, char ch) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (ch == ASCII_nl) +- fd->state = endofline; ++ { ++ fd->state = endofline; ++ } + else +- fd->state = successful; ++ { ++ fd->state = successful; ++ } + } + } + +@@ -1137,36 +1220,42 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a) + { + /* place into the buffer first */ + while (nBytes > 0) +- if (fd->buffer->left > 0) +- if (nBytes == 1) ++ { ++ if (fd->buffer->left > 0) + { +- /* too expensive to call memcpy for 1 character */ +- p = a; +- (*fd->buffer->contents).array[fd->buffer->position] = (*p); +- fd->buffer->left -= 1; /* reduce space */ +- fd->buffer->position += 1; /* move onwards n byte */ +- total += 1; /* move onwards n byte */ +- return total; ++ if (nBytes == 1) ++ { ++ /* too expensive to call memcpy for 1 character */ ++ p = a; ++ (*fd->buffer->contents).array[fd->buffer->position] = (*p); ++ fd->buffer->left -= 1; /* reduce space */ ++ fd->buffer->position += 1; /* move onwards n byte */ ++ total += 1; /* move onwards n byte */ ++ return total; ++ } ++ else ++ { ++ n = Min (fd->buffer->left, nBytes); ++ t = fd->buffer->address; ++ t += fd->buffer->position; ++ p = libc_memcpy (a, t, (size_t) (unsigned int ) (n)); ++ fd->buffer->left -= n; /* remove consumed bytes */ ++ fd->buffer->position += n; /* move onwards n bytes */ ++ /* move ready for further writes */ ++ a += n; ++ nBytes -= n; /* reduce the amount for future writes */ ++ total += n; /* reduce the amount for future writes */ ++ } + } + else + { +- n = Min (fd->buffer->left, nBytes); +- t = fd->buffer->address; +- t += fd->buffer->position; +- p = libc_memcpy (a, t, (size_t) (unsigned int ) (n)); +- fd->buffer->left -= n; /* remove consumed bytes */ +- fd->buffer->position += n; /* move onwards n bytes */ +- /* move ready for further writes */ +- a += n; +- nBytes -= n; /* reduce the amount for future writes */ +- total += n; /* reduce the amount for future writes */ ++ FIO_FlushBuffer (f); ++ if ((fd->state != successful) && (fd->state != endofline)) ++ { ++ nBytes = 0; ++ } + } +- else +- { +- FIO_FlushBuffer (f); +- if ((fd->state != successful) && (fd->state != endofline)) +- nBytes = 0; +- } ++ } + return total; + } + } +@@ -1195,15 +1284,23 @@ static void PreInitialize (FIO_File f, char *fname_, unsigned int _fname_high, F + { + fe = Indexing_GetIndice (FileInfo, (unsigned int) FIO_StdErr); + if (fe == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- fd->unixfd = fe->unixfd; /* the error channel */ ++ { ++ fd->unixfd = fe->unixfd; /* the error channel */ ++ } + } + else +- fd->unixfd = osfd; ++ { ++ fd->unixfd = osfd; ++ } + } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -1223,7 +1320,9 @@ static void Init (void) + FIO_StdErr = 3; + PreInitialize (FIO_StdErr, (char *) "", 8, (FileStatus) successful, (FileUsage) openedforwrite, TRUE, 2, MaxBufferLength); + if (! (M2RTS_InstallTerminationProcedure ((PROC ) {(PROC_t) FIO_FlushOutErr}))) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -1236,7 +1335,9 @@ unsigned int FIO_IsNoError (FIO_File f) + FileDescriptor fd; + + if (f == Error) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); +@@ -1252,9 +1353,13 @@ unsigned int FIO_IsNoError (FIO_File f) + unsigned int FIO_IsActive (FIO_File f) + { + if (f == Error) +- return FALSE; ++ { ++ return FALSE; ++ } + else +- return (Indexing_GetIndice (FileInfo, (unsigned int) f)) != NULL; ++ { ++ return (Indexing_GetIndice (FileInfo, (unsigned int) f)) != NULL; ++ } + } + + unsigned int FIO_Exists (char *fname_, unsigned int _fname_high) +@@ -1321,17 +1426,23 @@ void FIO_Close (FIO_File f) + { + FIO_FlushBuffer (f); + if (fd->unixfd >= 0) +- if ((libc_close (fd->unixfd)) != 0) +- { +- FormatError1 ((char *) "failed to close file (%s)\\n", 27, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); +- fd->state = failed; /* --fixme-- too late to notify user (unless we return a BOOLEAN) */ +- } ++ { ++ if ((libc_close (fd->unixfd)) != 0) ++ { ++ FormatError1 ((char *) "failed to close file (%s)\\n", 27, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1)); ++ fd->state = failed; /* --fixme-- too late to notify user (unless we return a BOOLEAN) */ ++ } ++ } + if (fd->name.address != NULL) +- Storage_DEALLOCATE (&fd->name.address, fd->name.size); ++ { ++ Storage_DEALLOCATE (&fd->name.address, fd->name.size); ++ } + if (fd->buffer != NULL) + { + if (fd->buffer->address != NULL) +- Storage_DEALLOCATE (&fd->buffer->address, fd->buffer->size); ++ { ++ Storage_DEALLOCATE (&fd->buffer->address, fd->buffer->size); ++ } + Storage_DEALLOCATE ((void **) &fd->buffer, sizeof (buf)); + fd->buffer = NULL; + } +@@ -1377,7 +1488,9 @@ FIO_File FIO_openToRead (void * fname, unsigned int flength) + + f = GetNextFreeDescriptor (); + if (f == Error) +- SetState (f, (FileStatus) toomanyfilesopen); ++ { ++ SetState (f, (FileStatus) toomanyfilesopen); ++ } + else + { + f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforread, FALSE, MaxBufferLength); +@@ -1400,7 +1513,9 @@ FIO_File FIO_openToWrite (void * fname, unsigned int flength) + + f = GetNextFreeDescriptor (); + if (f == Error) +- SetState (f, (FileStatus) toomanyfilesopen); ++ { ++ SetState (f, (FileStatus) toomanyfilesopen); ++ } + else + { + f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforwrite, TRUE, MaxBufferLength); +@@ -1425,7 +1540,9 @@ FIO_File FIO_openForRandom (void * fname, unsigned int flength, unsigned int tow + + f = GetNextFreeDescriptor (); + if (f == Error) +- SetState (f, (FileStatus) toomanyfilesopen); ++ { ++ SetState (f, (FileStatus) toomanyfilesopen); ++ } + else + { + f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforrandom, towrite, MaxBufferLength); +@@ -1447,17 +1564,23 @@ void FIO_FlushBuffer (FIO_File f) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- if (fd->output && (fd->buffer != NULL)) +- if ((fd->buffer->position == 0) || ((libc_write (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->position)) == ((int ) (fd->buffer->position)))) ++ { ++ if (fd->output && (fd->buffer != NULL)) + { +- fd->abspos += fd->buffer->position; +- fd->buffer->bufstart = fd->abspos; +- fd->buffer->position = 0; +- fd->buffer->filled = 0; +- fd->buffer->left = fd->buffer->size; ++ if ((fd->buffer->position == 0) || ((libc_write (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->position)) == ((int ) (fd->buffer->position)))) ++ { ++ fd->abspos += fd->buffer->position; ++ fd->buffer->bufstart = fd->abspos; ++ fd->buffer->position = 0; ++ fd->buffer->filled = 0; ++ fd->buffer->left = fd->buffer->size; ++ } ++ else ++ { ++ fd->state = failed; ++ } + } +- else +- fd->state = failed; ++ } + } + } + +@@ -1478,18 +1601,22 @@ unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void * a) + { + CheckAccess (f, (FileUsage) openedforread, FALSE); + n = ReadFromBuffer (f, a, nBytes); +- if (n < 0) +- return 0; ++ if (n <= 0) ++ { ++ return 0; ++ } + else + { + p = a; +- p += n; ++ p += n-1; + SetEndOfLine (f, (*p)); + return n; + } + } + else +- return 0; ++ { ++ return 0; ++ } + } + + +@@ -1502,8 +1629,10 @@ unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void * a) + void FIO_ReadAny (FIO_File f, unsigned char *a, unsigned int _a_high) + { + CheckAccess (f, (FileUsage) openedforread, FALSE); +- if ((BufferedRead (f, _a_high, a)) == (_a_high)) +- SetEndOfLine (f, (char) a[_a_high]); ++ if ((BufferedRead (f, _a_high, a)) == _a_high) ++ { ++ SetEndOfLine (f, (char) a[_a_high]); ++ } + } + + +@@ -1537,7 +1666,9 @@ unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void * a) + { + fd->abspos += (unsigned int ) (total); + if (fd->buffer != NULL) +- fd->buffer->bufstart = fd->abspos; ++ { ++ fd->buffer->bufstart = fd->abspos; ++ } + return (unsigned int ) (total); + } + } +@@ -1555,7 +1686,7 @@ unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void * a) + void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high) + { + CheckAccess (f, (FileUsage) openedforwrite, TRUE); +- if ((BufferedWrite (f, _a_high, a)) == (_a_high)) ++ if ((BufferedWrite (f, _a_high, a)) == _a_high) + {} /* empty. */ + } + +@@ -1567,7 +1698,7 @@ void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high) + void FIO_WriteChar (FIO_File f, char ch) + { + CheckAccess (f, (FileUsage) openedforwrite, TRUE); +- if ((BufferedWrite (f, (unsigned int) sizeof (ch), &ch)) == (sizeof (ch))) ++ if ((BufferedWrite (f, sizeof (ch), &ch)) == sizeof (ch)) + {} /* empty. */ + } + +@@ -1585,7 +1716,9 @@ unsigned int FIO_EOF (FIO_File f) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- return fd->state == endoffile; ++ { ++ return fd->state == endoffile; ++ } + } + return TRUE; + } +@@ -1610,13 +1743,17 @@ unsigned int FIO_EOLN (FIO_File f) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- if ((fd->state == successful) || (fd->state == endofline)) +- { +- ch = FIO_ReadChar (f); +- if ((fd->state == successful) || (fd->state == endofline)) +- FIO_UnReadChar (f, ch); +- return ch == ASCII_nl; +- } ++ { ++ if ((fd->state == successful) || (fd->state == endofline)) ++ { ++ ch = FIO_ReadChar (f); ++ if ((fd->state == successful) || (fd->state == endofline)) ++ { ++ FIO_UnReadChar (f, ch); ++ } ++ return ch == ASCII_nl; ++ } ++ } + } + return FALSE; + } +@@ -1632,7 +1769,9 @@ unsigned int FIO_WasEOLN (FIO_File f) + + CheckAccess (f, (FileUsage) openedforread, FALSE); + if (f == Error) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); +@@ -1652,13 +1791,15 @@ char FIO_ReadChar (FIO_File f) + char ch; + + CheckAccess (f, (FileUsage) openedforread, FALSE); +- if ((BufferedRead (f, (unsigned int) sizeof (ch), &ch)) == (sizeof (ch))) ++ if ((BufferedRead (f, sizeof (ch), &ch)) == sizeof (ch)) + { + SetEndOfLine (f, ch); + return ch; + } + else +- return ASCII_nul; ++ { ++ return ASCII_nul; ++ } + } + + +@@ -1704,22 +1845,28 @@ void FIO_UnReadChar (FIO_File f, char ch) + (*fd->buffer->contents).array[fd->buffer->position] = ch; + } + else +- /* if possible make room and store ch */ +- if (fd->buffer->filled == fd->buffer->size) +- FormatError1 ((char *) "performing too many UnReadChar calls on file (%d)\\n", 51, (unsigned char *) &f, (sizeof (f)-1)); +- else +- { +- n = fd->buffer->filled-fd->buffer->position; +- b = &(*fd->buffer->contents).array[fd->buffer->position]; +- a = &(*fd->buffer->contents).array[fd->buffer->position+1]; +- a = libc_memcpy (a, b, (size_t) n); +- fd->buffer->filled += 1; +- (*fd->buffer->contents).array[fd->buffer->position] = ch; +- } ++ { ++ /* if possible make room and store ch */ ++ if (fd->buffer->filled == fd->buffer->size) ++ { ++ FormatError1 ((char *) "performing too many UnReadChar calls on file (%d)\\n", 51, (unsigned char *) &f, (sizeof (f)-1)); ++ } ++ else ++ { ++ n = fd->buffer->filled-fd->buffer->position; ++ b = &(*fd->buffer->contents).array[fd->buffer->position]; ++ a = &(*fd->buffer->contents).array[fd->buffer->position+1]; ++ a = libc_memcpy (a, b, (size_t) n); ++ fd->buffer->filled += 1; ++ (*fd->buffer->contents).array[fd->buffer->position] = ch; ++ } ++ } + } + } + else +- FormatError1 ((char *) "UnReadChar can only be called if the previous read was successful or end of file, error on file (%d)\\n", 102, (unsigned char *) &f, (sizeof (f)-1)); ++ { ++ FormatError1 ((char *) "UnReadChar can only be called if the previous read was successful or end of file, error on file (%d)\\n", 102, (unsigned char *) &f, (sizeof (f)-1)); ++ } + } + } + +@@ -1826,7 +1973,9 @@ int FIO_GetUnixFileDescriptor (FIO_File f) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- return fd->unixfd; ++ { ++ return fd->unixfd; ++ } + } + FormatError1 ((char *) "file %d has not been opened or is out of range\\n", 48, (unsigned char *) &f, (sizeof (f)-1)); + return -1; +@@ -1846,34 +1995,42 @@ void FIO_SetPositionFromBeginning (FIO_File f, long int pos) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- /* always force the lseek, until we are confident that abspos is always correct, ++ { ++ /* always force the lseek, until we are confident that abspos is always correct, + basically it needs some hard testing before we should remove the OR TRUE. */ +- if ((fd->abspos != pos) || TRUE) +- { +- FIO_FlushBuffer (f); +- if (fd->buffer != NULL) +- { +- if (fd->output) +- fd->buffer->left = fd->buffer->size; +- else +- fd->buffer->left = 0; +- fd->buffer->position = 0; +- fd->buffer->filled = 0; +- } +- offset = libc_lseek (fd->unixfd, pos, SEEK_SET); +- if ((offset >= 0) && (pos == offset)) +- fd->abspos = pos; +- else +- { +- fd->state = failed; +- fd->abspos = 0; +- } +- if (fd->buffer != NULL) +- { +- fd->buffer->valid = FALSE; +- fd->buffer->bufstart = fd->abspos; +- } +- } ++ if ((fd->abspos != pos) || TRUE) ++ { ++ FIO_FlushBuffer (f); ++ if (fd->buffer != NULL) ++ { ++ if (fd->output) ++ { ++ fd->buffer->left = fd->buffer->size; ++ } ++ else ++ { ++ fd->buffer->left = 0; ++ } ++ fd->buffer->position = 0; ++ fd->buffer->filled = 0; ++ } ++ offset = libc_lseek (fd->unixfd, pos, SEEK_SET); ++ if ((offset >= 0) && (pos == offset)) ++ { ++ fd->abspos = pos; ++ } ++ else ++ { ++ fd->state = failed; ++ fd->abspos = 0; ++ } ++ if (fd->buffer != NULL) ++ { ++ fd->buffer->valid = FALSE; ++ fd->buffer->bufstart = fd->abspos; ++ } ++ } ++ } + } + } + +@@ -1896,15 +2053,21 @@ void FIO_SetPositionFromEnd (FIO_File f, long int pos) + if (fd->buffer != NULL) + { + if (fd->output) +- fd->buffer->left = fd->buffer->size; ++ { ++ fd->buffer->left = fd->buffer->size; ++ } + else +- fd->buffer->left = 0; ++ { ++ fd->buffer->left = 0; ++ } + fd->buffer->position = 0; + fd->buffer->filled = 0; + } + offset = libc_lseek (fd->unixfd, pos, SEEK_END); + if (offset >= 0) +- fd->abspos = offset; ++ { ++ fd->abspos = offset; ++ } + else + { + fd->state = failed; +@@ -1933,10 +2096,16 @@ long int FIO_FindPosition (FIO_File f) + { + fd = Indexing_GetIndice (FileInfo, (unsigned int) f); + if (fd != NULL) +- if ((fd->buffer == NULL) || ! fd->buffer->valid) +- return fd->abspos; +- else +- return fd->buffer->bufstart+((long int ) (fd->buffer->position)); ++ { ++ if ((fd->buffer == NULL) || ! fd->buffer->valid) ++ { ++ return fd->abspos; ++ } ++ else ++ { ++ return fd->buffer->bufstart+((long int ) (fd->buffer->position)); ++ } ++ } + } + return 0; + } +@@ -1961,19 +2130,23 @@ void FIO_GetFileName (FIO_File f, char *a, unsigned int _a_high) + M2RTS_HALT (-1); + } + else +- if (fd->name.address == NULL) +- StrLib_StrCopy ((char *) "", 0, (char *) a, _a_high); +- else +- { +- p = fd->name.address; +- i = 0; +- while (((*p) != ASCII_nul) && (i <= (_a_high))) +- { +- a[i] = (*p); +- p += 1; +- i += 1; +- } +- } ++ { ++ if (fd->name.address == NULL) ++ { ++ StrLib_StrCopy ((char *) "", 0, (char *) a, _a_high); ++ } ++ else ++ { ++ p = fd->name.address; ++ i = 0; ++ while (((*p) != ASCII_nul) && (i <= _a_high)) ++ { ++ a[i] = (*p); ++ p += 1; ++ i += 1; ++ } ++ } ++ } + } + } + +@@ -1995,7 +2168,9 @@ void * FIO_getFileName (FIO_File f) + M2RTS_HALT (-1); + } + else +- return fd->name.address; ++ { ++ return fd->name.address; ++ } + } + } + +@@ -2017,7 +2192,9 @@ unsigned int FIO_getFileNameLength (FIO_File f) + M2RTS_HALT (-1); + } + else +- return fd->name.size; ++ { ++ return fd->name.size; ++ } + } + } + +@@ -2032,9 +2209,13 @@ unsigned int FIO_getFileNameLength (FIO_File f) + void FIO_FlushOutErr (void) + { + if (FIO_IsNoError (FIO_StdOut)) +- FIO_FlushBuffer (FIO_StdOut); ++ { ++ FIO_FlushBuffer (FIO_StdOut); ++ } + if (FIO_IsNoError (FIO_StdErr)) +- FIO_FlushBuffer (FIO_StdErr); ++ { ++ FIO_FlushBuffer (FIO_StdErr); ++ } + } + + void _M2_FIO_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GFormatStrings.c ++++ b/src/gcc/gm2/mc-boot/GFormatStrings.c +@@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * + # define FALSE (1==0) + # endif + ++#include + #include + #include + #define _FormatStrings_H +@@ -45,32 +46,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * + escape sequences translated. + */ + +-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s); ++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt); + + /* + Sprintf1 - returns a String containing, s, together with encapsulated + entity, w. It only formats the first %s or %d with n. + */ + +-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high); ++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high); + + /* + Sprintf2 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); ++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); + + /* + Sprintf3 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); ++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); + + /* + Sprintf4 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); ++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); + + /* + doDSdbEnter - +@@ -121,7 +122,29 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s); + A new string is returned. + */ + +-static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high); ++static DynamicStrings_String FormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high); ++ ++/* ++ FormatString - returns a String containing, s, together with encapsulated ++ entity, w. It only formats the first %s or %d or %u with n. ++ A new string is returned. ++*/ ++ ++static DynamicStrings_String PerformFormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high); ++ ++/* ++ Copy - copies, fmt[start:end] -> in and returns in. Providing that start >= 0. ++*/ ++ ++static DynamicStrings_String Copy (DynamicStrings_String fmt, DynamicStrings_String in, int start, int end); ++ ++/* ++ HandlePercent - pre-condition: s, is a string. ++ Post-condition: a new string is returned which is a copy of, ++ s, except %% is transformed into %. ++*/ ++ ++static DynamicStrings_String HandlePercent (DynamicStrings_String fmt, DynamicStrings_String s, int startpos); + + + /* +@@ -184,11 +207,17 @@ static void Cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns + /* make a local copy of each unbounded array. */ + memcpy (b, b_, _b_high+1); + +- if ((_a_high) == (_b_high)) +- for (i=0; i<=_a_high; i++) +- a[i] = b[i]; ++ if (_a_high == _b_high) ++ { ++ for (i=0; i<=_a_high; i++) ++ { ++ a[i] = b[i]; ++ } ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -211,18 +240,28 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s) + while (i >= 0) + { + if (i > 0) +- /* initially i might be zero which means the end of the string, which is not what we want */ +- d = DynamicStrings_ConCat (d, DynamicStrings_Slice (s, j, i)); ++ { ++ /* initially i might be zero which means the end of the string, which is not what we want */ ++ d = DynamicStrings_ConCat (d, DynamicStrings_Slice (s, j, i)); ++ } + ch = DynamicStrings_char (s, i+1); + if (ch == 'n') +- /* requires a newline */ +- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_nl))); ++ { ++ /* requires a newline */ ++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_nl))); ++ } + else if (ch == 't') +- /* requires a tab (yuck) */ +- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_tab))); ++ { ++ /* avoid dangling else. */ ++ /* requires a tab (yuck) */ ++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_tab))); ++ } + else +- /* copy escaped character */ +- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch))); ++ { ++ /* avoid dangling else. */ ++ /* copy escaped character */ ++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch))); ++ } + i += 2; + j = i; + i = DynamicStrings_Index (s, '\\', (unsigned int ) (i)); +@@ -240,15 +279,43 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s) + A new string is returned. + */ + +-static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high) ++static DynamicStrings_String FormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high) ++{ ++ DynamicStrings_String s; ++ unsigned char w[_w_high+1]; ++ ++ /* make a local copy of each unbounded array. */ ++ memcpy (w, w_, _w_high+1); ++ ++ DSdbEnter (); ++ if ((*startpos) >= 0) ++ { ++ s = PerformFormatString (fmt, startpos, in, (unsigned char *) w, _w_high); ++ } ++ else ++ { ++ s = DynamicStrings_Dup (in); ++ } ++ DSdbExit (s); ++ return s; ++} ++ ++ ++/* ++ FormatString - returns a String containing, s, together with encapsulated ++ entity, w. It only formats the first %s or %d or %u with n. ++ A new string is returned. ++*/ ++ ++static DynamicStrings_String PerformFormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high) + { + unsigned int left; + unsigned int u; + int c; + int width; +- int i; +- int j; +- int k; ++ int nextperc; ++ int afterperc; ++ int endpos; + char leader; + char ch; + char ch2; +@@ -258,81 +325,199 @@ static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned cha + /* make a local copy of each unbounded array. */ + memcpy (w, w_, _w_high+1); + +- DSdbEnter (); +- i = 0; +- j = DynamicStrings_Index (s, '%', 0); +- if (j == 0) +- k = -(DynamicStrings_Length (s)); +- else +- k = j; +- if (j >= 0) ++ while ((*startpos) >= 0) + { +- if ((DynamicStrings_char (s, j+1)) == '-') ++ nextperc = DynamicStrings_Index (fmt, '%', (unsigned int) (*startpos)); ++ afterperc = nextperc; ++ if (nextperc >= 0) + { +- left = TRUE; +- j += 1; +- } +- else +- left = FALSE; +- ch = DynamicStrings_char (s, j+1); +- if (ch == '0') +- leader = '0'; +- else +- leader = ' '; +- width = 0; +- while (IsDigit (ch)) +- { +- width = (width*10)+((int ) (((unsigned int) (ch))-((unsigned int) ('0')))); +- j += 1; +- ch = DynamicStrings_char (s, j+1); +- } +- if ((ch == 'c') || (ch == 's')) +- { +- if (ch == 'c') ++ afterperc += 1; ++ if ((DynamicStrings_char (fmt, afterperc)) == '-') ++ { ++ left = TRUE; ++ afterperc += 1; ++ } ++ else ++ { ++ left = FALSE; ++ } ++ ch = DynamicStrings_char (fmt, afterperc); ++ if (ch == '0') + { +- ch2 = w[0]; +- p = DynamicStrings_ConCatChar (DynamicStrings_InitString ((char *) "", 0), ch2); ++ leader = '0'; + } + else + { +- Cast ((unsigned char *) &p, (sizeof (p)-1), (unsigned char *) w, _w_high); +- p = DynamicStrings_Dup (p); ++ leader = ' '; + } +- if ((width > 0) && (((int ) (DynamicStrings_Length (p))) < width)) ++ width = 0; ++ while (IsDigit (ch)) + { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if (left) +- /* place trailing spaces after, p */ +- p = DynamicStrings_ConCat (p, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))))); ++ width = (width*10)+((int ) ( ((unsigned int) (ch))- ((unsigned int) ('0')))); ++ afterperc += 1; ++ ch = DynamicStrings_char (fmt, afterperc); ++ } ++ if ((ch == 'c') || (ch == 's')) ++ { ++ afterperc += 1; ++ if (ch == 'c') ++ { ++ ch2 = w[0]; ++ p = DynamicStrings_ConCatChar (DynamicStrings_InitString ((char *) "", 0), ch2); ++ } + else +- /* padd string, p, with leading spaces */ +- p = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))), DynamicStrings_Mark (p)); ++ { ++ Cast ((unsigned char *) &p, (sizeof (p)-1), (unsigned char *) w, _w_high); ++ p = DynamicStrings_Dup (p); ++ } ++ if ((width > 0) && (((int ) (DynamicStrings_Length (p))) < width)) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if (left) ++ { ++ /* place trailing spaces after, p. */ ++ p = DynamicStrings_ConCat (p, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))))); ++ } ++ else ++ { ++ /* padd string, p, with leading spaces. */ ++ p = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))), DynamicStrings_Mark (p)); ++ } ++ } ++ /* include string, p, into, in. */ ++ if (nextperc > 0) ++ { ++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc)); ++ } ++ in = DynamicStrings_ConCat (in, p); ++ (*startpos) = afterperc; ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; ++ } ++ else if (ch == 'd') ++ { ++ /* avoid dangling else. */ ++ afterperc += 1; ++ Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high); ++ in = Copy (fmt, in, (*startpos), nextperc); ++ in = DynamicStrings_ConCat (in, StringConvert_IntegerToString (c, (unsigned int) width, leader, FALSE, 10, FALSE)); ++ (*startpos) = afterperc; ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; ++ } ++ else if (ch == 'x') ++ { ++ /* avoid dangling else. */ ++ afterperc += 1; ++ Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high); ++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc)); ++ in = DynamicStrings_ConCat (in, StringConvert_CardinalToString (u, (unsigned int) width, leader, 16, TRUE)); ++ (*startpos) = afterperc; ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; ++ } ++ else if (ch == 'u') ++ { ++ /* avoid dangling else. */ ++ afterperc += 1; ++ Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high); ++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc)); ++ in = DynamicStrings_ConCat (in, StringConvert_CardinalToString (u, (unsigned int) width, leader, 10, FALSE)); ++ (*startpos) = afterperc; ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ afterperc += 1; ++ /* copy format string. */ ++ if (nextperc > 0) ++ { ++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc)); ++ } ++ /* and the character after the %. */ ++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch))); + } +- /* include string, p, into s */ +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), DynamicStrings_Mark (p)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0))); ++ (*startpos) = afterperc; + } +- else if (ch == 'd') ++ else + { +- Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high); +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_IntegerToString (c, (unsigned int) width, leader, FALSE, 10, FALSE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0))); ++ /* nothing to do. */ ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; + } +- else if (ch == 'x') ++ } ++ DSdbExit ((DynamicStrings_String) NULL); ++ return in; ++} ++ ++ ++/* ++ Copy - copies, fmt[start:end] -> in and returns in. Providing that start >= 0. ++*/ ++ ++static DynamicStrings_String Copy (DynamicStrings_String fmt, DynamicStrings_String in, int start, int end) ++{ ++ if (start >= 0) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if (end > 0) + { +- Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high); +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_CardinalToString (u, (unsigned int) width, leader, 16, TRUE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0))); ++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_Slice (fmt, start, end))); + } +- else if (ch == 'u') ++ else if (end < 0) + { +- Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high); +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_CardinalToString (u, (unsigned int) width, leader, 10, FALSE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0))); ++ /* avoid dangling else. */ ++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_Slice (fmt, start, 0))); + } +- else +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), DynamicStrings_Mark (DynamicStrings_InitStringChar (ch))), DynamicStrings_Mark (DynamicStrings_Slice (s, j+1, 0))); ++ } ++ return in; ++} ++ ++ ++/* ++ HandlePercent - pre-condition: s, is a string. ++ Post-condition: a new string is returned which is a copy of, ++ s, except %% is transformed into %. ++*/ ++ ++static DynamicStrings_String HandlePercent (DynamicStrings_String fmt, DynamicStrings_String s, int startpos) ++{ ++ int prevpos; ++ DynamicStrings_String result; ++ ++ if ((startpos == (DynamicStrings_Length (fmt))) || (startpos < 0)) ++ { ++ return s; + } + else +- s = DynamicStrings_Dup (s); +- DSdbExit (s); +- return s; ++ { ++ prevpos = startpos; ++ while ((startpos >= 0) && (prevpos < ((int ) (DynamicStrings_Length (fmt))))) ++ { ++ startpos = DynamicStrings_Index (fmt, '%', (unsigned int) startpos); ++ if (startpos >= prevpos) ++ { ++ if (startpos > 0) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Slice (fmt, prevpos, startpos))); ++ } ++ startpos += 1; ++ if ((DynamicStrings_char (fmt, startpos)) == '%') ++ { ++ s = DynamicStrings_ConCatChar (s, '%'); ++ startpos += 1; ++ } ++ prevpos = startpos; ++ } ++ } ++ if (prevpos < ((int ) (DynamicStrings_Length (fmt)))) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Slice (fmt, prevpos, 0))); ++ } ++ return s; ++ } + } + + +@@ -341,10 +526,13 @@ static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned cha + escape sequences translated. + */ + +-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s) ++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt) + { ++ DynamicStrings_String s; ++ + DSdbEnter (); +- s = HandleEscape (s); ++ fmt = HandleEscape (fmt); ++ s = HandlePercent (fmt, DynamicStrings_InitString ((char *) "", 0), 0); + DSdbExit (s); + return s; + } +@@ -355,15 +543,20 @@ DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s) + entity, w. It only formats the first %s or %d with n. + */ + +-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high) ++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high) + { ++ int i; ++ DynamicStrings_String s; + unsigned char w[_w_high+1]; + + /* make a local copy of each unbounded array. */ + memcpy (w, w_, _w_high+1); + + DSdbEnter (); +- s = FormatString (HandleEscape (s), (unsigned char *) w, _w_high); ++ fmt = HandleEscape (fmt); ++ i = 0; ++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w, _w_high); ++ s = HandlePercent (fmt, s, i); + DSdbExit (s); + return s; + } +@@ -373,8 +566,10 @@ DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned + Sprintf2 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high) ++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high) + { ++ int i; ++ DynamicStrings_String s; + unsigned char w1[_w1_high+1]; + unsigned char w2[_w2_high+1]; + +@@ -383,7 +578,11 @@ DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned + memcpy (w2, w2_, _w2_high+1); + + DSdbEnter (); +- s = FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high); ++ fmt = HandleEscape (fmt); ++ i = 0; ++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high); ++ s = HandlePercent (fmt, s, i); + DSdbExit (s); + return s; + } +@@ -393,8 +592,10 @@ DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned + Sprintf3 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high) ++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high) + { ++ int i; ++ DynamicStrings_String s; + unsigned char w1[_w1_high+1]; + unsigned char w2[_w2_high+1]; + unsigned char w3[_w3_high+1]; +@@ -405,7 +606,12 @@ DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned + memcpy (w3, w3_, _w3_high+1); + + DSdbEnter (); +- s = FormatString (FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high), (unsigned char *) w3, _w3_high); ++ fmt = HandleEscape (fmt); ++ i = 0; ++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w3, _w3_high); ++ s = HandlePercent (fmt, s, i); + DSdbExit (s); + return s; + } +@@ -415,8 +621,10 @@ DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned + Sprintf4 - returns a string, s, which has been formatted. + */ + +-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high) ++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high) + { ++ int i; ++ DynamicStrings_String s; + unsigned char w1[_w1_high+1]; + unsigned char w2[_w2_high+1]; + unsigned char w3[_w3_high+1]; +@@ -429,7 +637,13 @@ DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned + memcpy (w4, w4_, _w4_high+1); + + DSdbEnter (); +- s = FormatString (FormatString (FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high), (unsigned char *) w3, _w3_high), (unsigned char *) w4, _w4_high); ++ fmt = HandleEscape (fmt); ++ i = 0; ++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w3, _w3_high); ++ s = FormatString (fmt, &i, s, (unsigned char *) w4, _w4_high); ++ s = HandlePercent (fmt, s, i); + DSdbExit (s); + return s; + } +--- a/src/gcc/gm2/mc-boot/GFormatStrings.h ++++ b/src/gcc/gm2/mc-boot/GFormatStrings.h +@@ -23,36 +23,36 @@ extern "C" { + + + /* +- Sprintf0 - returns a String containing, s, after it has had its ++ Sprintf0 - returns a String containing, fmt, after it has had its + escape sequences translated. + */ + +-EXTERN DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s); ++EXTERN DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt); + + /* +- Sprintf1 - returns a String containing, s, together with encapsulated ++ Sprintf1 - returns a String containing, fmt, together with encapsulated + entity, w. It only formats the first %s or %d with n. + */ + +-EXTERN DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high); ++EXTERN DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high); + + /* +- Sprintf2 - returns a string, s, which has been formatted. ++ Sprintf2 - returns a string, fmt, which has been formatted. + */ + +-EXTERN DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); ++EXTERN DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); + + /* +- Sprintf3 - returns a string, s, which has been formatted. ++ Sprintf3 - returns a string, fmt, which has been formatted. + */ + +-EXTERN DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); ++EXTERN DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); + + /* +- Sprintf4 - returns a string, s, which has been formatted. ++ Sprintf4 - returns a string, fmt, which has been formatted. + */ + +-EXTERN DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); ++EXTERN DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); + # ifdef __cplusplus + } + # endif +--- a/src/gcc/gm2/mc-boot/GIO.c ++++ b/src/gcc/gm2/mc-boot/GIO.c +@@ -157,24 +157,31 @@ static void doWrite (int fd, FIO_File f, char ch) + { + /* avoid dangling else. */ + if (! fdState.array[fd].IsEof) +- for (;;) + { +- r = libc_write (FIO_GetUnixFileDescriptor (f), &ch, (size_t) 1); +- if (r == 1) +- return; +- else if (r == -1) +- { +- r = errno_geterrno (); +- if ((r != errno_EAGAIN) && (r != errno_EINTR)) +- { +- fdState.array[fd].IsEof = TRUE; +- return; +- } +- } ++ for (;;) ++ { ++ r = libc_write (FIO_GetUnixFileDescriptor (f), &ch, (size_t) 1); ++ if (r == 1) ++ { ++ return; ++ } ++ else if (r == -1) ++ { ++ /* avoid dangling else. */ ++ r = errno_geterrno (); ++ if ((r != errno_EAGAIN) && (r != errno_EINTR)) ++ { ++ fdState.array[fd].IsEof = TRUE; ++ return; ++ } ++ } ++ } + } + } + else +- FIO_WriteChar (f, ch); ++ { ++ FIO_WriteChar (f, ch); ++ } + } + + +@@ -285,27 +292,38 @@ void IO_Read (char *ch) + FIO_FlushBuffer (FIO_StdOut); + FIO_FlushBuffer (FIO_StdErr); + if (fdState.array[0].IsRaw) +- if (fdState.array[0].IsEof) +- (*ch) = ASCII_eof; +- else +- for (;;) +- { +- r = libc_read (FIO_GetUnixFileDescriptor (FIO_StdIn), ch, (size_t) 1); +- if (r == 1) +- return; +- else if (r == -1) ++ { ++ if (fdState.array[0].IsEof) ++ { ++ (*ch) = ASCII_eof; ++ } ++ else ++ { ++ for (;;) + { +- r = errno_geterrno (); +- if (r != errno_EAGAIN) ++ r = libc_read (FIO_GetUnixFileDescriptor (FIO_StdIn), ch, (size_t) 1); ++ if (r == 1) + { +- fdState.array[0].IsEof = TRUE; +- (*ch) = ASCII_eof; + return; + } ++ else if (r == -1) ++ { ++ /* avoid dangling else. */ ++ r = errno_geterrno (); ++ if (r != errno_EAGAIN) ++ { ++ fdState.array[0].IsEof = TRUE; ++ (*ch) = ASCII_eof; ++ return; ++ } ++ } + } +- } ++ } ++ } + else +- (*ch) = FIO_ReadChar (FIO_StdIn); ++ { ++ (*ch) = FIO_ReadChar (FIO_StdIn); ++ } + } + + +@@ -336,15 +354,21 @@ void IO_UnBufferedMode (int fd, unsigned int input) + int r; + + if (IsDefaultFd (fd)) +- fdState.array[fd].IsRaw = TRUE; ++ { ++ fdState.array[fd].IsRaw = TRUE; ++ } + term = termios_InitTermios (); + if ((termios_tcgetattr (fd, term)) == 0) + { + doraw (term); + if (input) +- r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ } + else +- r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ } + } + term = termios_KillTermios (term); + } +@@ -355,15 +379,21 @@ void IO_BufferedMode (int fd, unsigned int input) + int r; + + if (IsDefaultFd (fd)) +- fdState.array[fd].IsRaw = FALSE; ++ { ++ fdState.array[fd].IsRaw = FALSE; ++ } + term = termios_InitTermios (); + if ((termios_tcgetattr (fd, term)) == 0) + { + dononraw (term); + if (input) +- r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ } + else +- r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ } + } + term = termios_KillTermios (term); + } +@@ -387,9 +417,13 @@ void IO_EchoOn (int fd, unsigned int input) + { + setFlag (term, (termios_Flag) termios_lecho, TRUE); + if (input) +- r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ } + else +- r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ } + } + term = termios_KillTermios (term); + } +@@ -413,9 +447,13 @@ void IO_EchoOff (int fd, unsigned int input) + { + setFlag (term, (termios_Flag) termios_lecho, FALSE); + if (input) +- r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsflush (), term); ++ } + else +- r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ { ++ r = termios_tcsetattr (fd, termios_tcsdrain (), term); ++ } + } + term = termios_KillTermios (term); + } +--- a/src/gcc/gm2/mc-boot/GIndexing.c ++++ b/src/gcc/gm2/mc-boot/GIndexing.c +@@ -202,9 +202,13 @@ Indexing_Index Indexing_DebugIndex (Indexing_Index i) + unsigned int Indexing_InBounds (Indexing_Index i, unsigned int n) + { + if (i == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- return (n >= i->Low) && (n <= i->High); ++ { ++ return (n >= i->Low) && (n <= i->High); ++ } + } + + +@@ -215,9 +219,13 @@ unsigned int Indexing_InBounds (Indexing_Index i, unsigned int n) + unsigned int Indexing_HighIndice (Indexing_Index i) + { + if (i == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- return i->High; ++ { ++ return i->High; ++ } + } + + +@@ -228,9 +236,13 @@ unsigned int Indexing_HighIndice (Indexing_Index i) + unsigned int Indexing_LowIndice (Indexing_Index i) + { + if (i == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- return i->Low; ++ { ++ return i->Low; ++ } + } + + +@@ -248,12 +260,16 @@ void Indexing_PutIndice (Indexing_Index i, unsigned int n, void * a) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (n < i->Low) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + oldSize = i->ArraySize; +- while (((n-i->Low)*(sizeof (void *))) >= i->ArraySize) +- i->ArraySize = i->ArraySize*2; ++ while (((n-i->Low)*sizeof (void *)) >= i->ArraySize) ++ { ++ i->ArraySize = i->ArraySize*2; ++ } + if (oldSize != i->ArraySize) + { + /* +@@ -274,13 +290,17 @@ void Indexing_PutIndice (Indexing_Index i, unsigned int n, void * a) + } + } + b = i->ArrayStart; +- b += (n-i->Low)*(sizeof (void *)); ++ b += (n-i->Low)*sizeof (void *); + p = b; + (*p) = a; + i->Used += 1; + if (i->Debug) +- if (n < 32) +- i->Map |= (1 << (n )); ++ { ++ if (n < 32) ++ { ++ i->Map |= (1 << (n )); ++ } ++ } + } + + +@@ -294,13 +314,19 @@ void * Indexing_GetIndice (Indexing_Index i, unsigned int n) + PtrToAddress p; + + if (! (Indexing_InBounds (i, n))) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + b = i->ArrayStart; +- b += (n-i->Low)*(sizeof (void *)); ++ b += (n-i->Low)*sizeof (void *); + p = (PtrToAddress) (b); + if (i->Debug) +- if (((n < 32) && (! ((((1 << (n)) & (i->Map)) != 0)))) && ((*p) != NULL)) +- M2RTS_HALT (-1); ++ { ++ if (((n < 32) && (! ((((1 << (n)) & (i->Map)) != 0)))) && ((*p) != NULL)) ++ { ++ M2RTS_HALT (-1); ++ } ++ } + return (*p); + } + +@@ -321,7 +347,9 @@ unsigned int Indexing_IsIndiceInIndex (Indexing_Index i, void * a) + { + p = (PtrToAddress) (b); + if ((*p) == a) +- return TRUE; ++ { ++ return TRUE; ++ } + /* we must not INC(p, ..) as p2c gets confused */ + b += sizeof (void *); + j += 1; +@@ -348,7 +376,9 @@ void Indexing_RemoveIndiceFromIndex (Indexing_Index i, void * a) + p = (PtrToAddress) (b); + b += sizeof (void *); + if ((*p) == a) +- Indexing_DeleteIndice (i, j); ++ { ++ Indexing_DeleteIndice (i, j); ++ } + j += 1; + } + } +@@ -366,15 +396,17 @@ void Indexing_DeleteIndice (Indexing_Index i, unsigned int j) + if (Indexing_InBounds (i, j)) + { + b = i->ArrayStart; +- b += (sizeof (void *))*(j-i->Low); ++ b += sizeof (void *)*(j-i->Low); + p = (PtrToAddress) (b); + b += sizeof (void *); +- p = libc_memmove ((void *) p, (void *) b, (size_t) (i->High-j)*(sizeof (void *))); ++ p = libc_memmove ((void *) p, (void *) b, (size_t) (i->High-j)*sizeof (void *)); + i->High -= 1; + i->Used -= 1; + } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -389,9 +421,13 @@ void Indexing_IncludeIndiceIntoIndex (Indexing_Index i, void * a) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (i->Used == 0) +- Indexing_PutIndice (i, Indexing_LowIndice (i), a); ++ { ++ Indexing_PutIndice (i, Indexing_LowIndice (i), a); ++ } + else +- Indexing_PutIndice (i, (Indexing_HighIndice (i))+1, a); ++ { ++ Indexing_PutIndice (i, (Indexing_HighIndice (i))+1, a); ++ } + } + } + +--- a/src/gcc/gm2/mc-boot/GM2EXCEPTION.c ++++ b/src/gcc/gm2/mc-boot/GM2EXCEPTION.c +@@ -45,9 +45,13 @@ M2EXCEPTION_M2Exceptions M2EXCEPTION_M2Exception (void) + e = RTExceptions_GetExceptionBlock (); + n = RTExceptions_GetNumber (e); + if (n == (UINT_MAX)) +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), "../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.mod", 39, 6, "M2Exception", "current coroutine is not in the exceptional execution state"); ++ { ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), "../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.mod", 39, 6, "M2Exception", "current coroutine is not in the exceptional execution state"); ++ } + else +- return (M2EXCEPTION_M2Exceptions) (n); ++ { ++ return (M2EXCEPTION_M2Exceptions) (n); ++ } + ReturnException ("../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.def", 8, 1); + } + +--- a/src/gcc/gm2/mc-boot/GM2RTS.c ++++ b/src/gcc/gm2/mc-boot/GM2RTS.c +@@ -209,7 +209,9 @@ void M2RTS_ExecuteTerminationProcedures (void) + unsigned int M2RTS_InstallTerminationProcedure (PROC p) + { + if (tPtr > MaxProcedures) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + TerminateProc.array[tPtr] = p; +@@ -245,7 +247,9 @@ void M2RTS_ExecuteInitialProcedures (void) + unsigned int M2RTS_InstallInitialProcedure (PROC p) + { + if (iPtr > MaxProcedures) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + InitialProc.array[iPtr] = p; +@@ -287,17 +291,23 @@ void M2RTS_HALT (int exitcode) + ExitValue = exitcode; + } + if (isHalting) +- /* double HALT found */ +- libc_exit (-1); ++ { ++ /* double HALT found */ ++ libc_exit (-1); ++ } + else + { + isHalting = TRUE; + M2RTS_ExecuteTerminationProcedures (); + } + if (CallExit) +- libc_exit (ExitValue); ++ { ++ libc_exit (ExitValue); ++ } + else +- libc_abort (); ++ { ++ libc_abort (); ++ } + } + + +@@ -389,7 +399,9 @@ unsigned int M2RTS_Length (char *a_, unsigned int _a_high) + l = 0; + h = _a_high; + while ((l <= h) && (a[l] != ASCII_nul)) +- l += 1; ++ { ++ l += 1; ++ } + return l; + } + +@@ -398,117 +410,117 @@ void M2RTS_AssignmentException (void * filename, unsigned int line, unsigned int + /* + The following are the runtime exception handler routines. + */ +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during assignment"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during assignment"); + } + + void M2RTS_ReturnException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "return value from procedure function exceeds range"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "return value from procedure function exceeds range"); + } + + void M2RTS_IncException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during INC statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during INC statement"); + } + + void M2RTS_DecException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during DEC statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during DEC statement"); + } + + void M2RTS_InclException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during INCL statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during INCL statement"); + } + + void M2RTS_ExclException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during EXCL statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during EXCL statement"); + } + + void M2RTS_ShiftException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during SHIFT statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during SHIFT statement"); + } + + void M2RTS_RotateException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during ROTATE statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during ROTATE statement"); + } + + void M2RTS_StaticArraySubscriptException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), filename, line, column, scope, "array index out of bounds during static array access"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), filename, line, column, scope, "array index out of bounds during static array access"); + } + + void M2RTS_DynamicArraySubscriptException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), filename, line, column, scope, "array index out of bounds during dynamic array access"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), filename, line, column, scope, "array index out of bounds during dynamic array access"); + } + + void M2RTS_ForLoopBeginException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable exceeds range during FOR loop initial assignment"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable exceeds range during FOR loop initial assignment"); + } + + void M2RTS_ForLoopToException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable will exceed range when calculating final value in FOR loop"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable will exceed range when calculating final value in FOR loop"); + } + + void M2RTS_ForLoopEndException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable exceeds range during increment at the end of a FOR loop"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable exceeds range during increment at the end of a FOR loop"); + } + + void M2RTS_PointerNilException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_invalidLocation), filename, line, column, scope, "attempting to dereference a NIL valued pointer"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_invalidLocation)), filename, line, column, scope, "attempting to dereference a NIL valued pointer"); + } + + void M2RTS_NoReturnException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_functionException), filename, line, column, scope, "about to finish a PROCEDURE without executing a RETURN statement"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_functionException)), filename, line, column, scope, "about to finish a PROCEDURE without executing a RETURN statement"); + } + + void M2RTS_CaseException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_caseSelectException), filename, line, column, scope, "the expression in the CASE statement cannot be selected"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_caseSelectException)), filename, line, column, scope, "the expression in the CASE statement cannot be selected"); + } + + void M2RTS_WholeNonPosDivException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the division expression has a divisor which is less than or equal to zero"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the division expression has a divisor which is less than or equal to zero"); + } + + void M2RTS_WholeNonPosModException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the modulus expression has a divisor which is less than or equal to zero"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the modulus expression has a divisor which is less than or equal to zero"); + } + + void M2RTS_WholeZeroDivException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the division expression has a divisor which is equal to zero"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the division expression has a divisor which is equal to zero"); + } + + void M2RTS_WholeZeroRemException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the remainder expression has a divisor which is equal to zero"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the remainder expression has a divisor which is equal to zero"); + } + + void M2RTS_WholeValueException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeValueException), filename, line, column, scope, "the whole value is about to overflow"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeValueException)), filename, line, column, scope, "the whole value is about to overflow"); + } + + void M2RTS_RealValueException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realValueException), filename, line, column, scope, "the floating point value is about to overflow"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realValueException)), filename, line, column, scope, "the floating point value is about to overflow"); + } + + void M2RTS_NoException (void * filename, unsigned int line, unsigned int column, void * scope) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), filename, line, column, scope, "M2Expection was called when no there was no outstanding exception to be returned"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), filename, line, column, scope, "M2Expection was called when no there was no outstanding exception to be returned"); + } + + void _M2_M2RTS_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GMemUtils.c ++++ b/src/gcc/gm2/mc-boot/GMemUtils.c +@@ -50,23 +50,23 @@ void MemUtils_MemCopy (void * from, unsigned int length, void * to) + unsigned char * pbb; + unsigned char * pba; + +- while (length >= (sizeof (unsigned int))) ++ while (length >= sizeof (unsigned int )) + { + pwa = from; + pwb = to; + (*pwb) = (*pwa); +- from += sizeof (unsigned int); +- to += sizeof (unsigned int); +- length -= sizeof (unsigned int); ++ from += sizeof (unsigned int ); ++ to += sizeof (unsigned int ); ++ length -= sizeof (unsigned int ); + } + while (length > 0) + { + pba = from; + pbb = to; + (*pbb) = (*pba); +- from += sizeof (unsigned char); +- to += sizeof (unsigned char); +- length -= sizeof (unsigned char); ++ from += sizeof (unsigned char ); ++ to += sizeof (unsigned char ); ++ length -= sizeof (unsigned char ); + } + } + +@@ -81,18 +81,18 @@ void MemUtils_MemZero (void * a, unsigned int length) + unsigned char * pba; + + pwa = a; +- while (length >= (sizeof (unsigned int))) ++ while (length >= sizeof (unsigned int )) + { + (*pwa) = (unsigned int ) (0); +- pwa += sizeof (unsigned int); +- length -= sizeof (unsigned int); ++ pwa += sizeof (unsigned int ); ++ length -= sizeof (unsigned int ); + } + pba = (void *) (pwa); +- while (length >= (sizeof (unsigned char))) ++ while (length >= sizeof (unsigned char )) + { + (*pba) = (unsigned char ) (0); +- pba += sizeof (unsigned char); +- length -= sizeof (unsigned char); ++ pba += sizeof (unsigned char ); ++ length -= sizeof (unsigned char ); + } + } + +--- a/src/gcc/gm2/mc-boot/GNumberIO.c ++++ b/src/gcc/gm2/mc-boot/GNumberIO.c +@@ -166,12 +166,14 @@ void NumberIO_CardToStr (unsigned int x, unsigned int n, char *a, unsigned int _ + } + while ((i > 0) && (j <= Higha)) + { +- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0'))); ++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0')))); + j += 1; + i -= 1; + } + if (j <= Higha) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + } + + void NumberIO_StrToCard (char *a_, unsigned int _a_high, unsigned int *x) +@@ -189,28 +191,42 @@ void NumberIO_StrToCard (char *a_, unsigned int _a_high, unsigned int *x) + i = 0; + ok = TRUE; + while (ok) +- if (i < higha) +- if ((a[i] < '0') || (a[i] > '9')) +- i += 1; ++ { ++ if (i < higha) ++ { ++ if ((a[i] < '0') || (a[i] > '9')) ++ { ++ i += 1; ++ } ++ else ++ { ++ ok = FALSE; ++ } ++ } + else +- ok = FALSE; +- else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } ++ } + (*x) = 0; + if (i < higha) + { + ok = TRUE; + do { +- (*x) = (10*(*x))+(((unsigned int) (a[i]))-((unsigned int) ('0'))); ++ (*x) = (10*(*x))+( ((unsigned int) (a[i]))- ((unsigned int) ('0'))); + if (i < higha) + { + /* avoid dangling else. */ + i += 1; + if ((a[i] < '0') || (a[i] > '9')) +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } + else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } while (! (! ok)); + } + } +@@ -248,14 +264,20 @@ void NumberIO_HexToStr (unsigned int x, unsigned int n, char *a, unsigned int _a + while ((i != 0) && (j <= Higha)) + { + if (buf.array[i-1] < 10) +- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0'))); ++ { ++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0')))); ++ } + else +- a[j] = (char) ((buf.array[i-1]+((unsigned int) ('A')))-10); ++ { ++ a[j] = ((char) ((buf.array[i-1]+ ((unsigned int) ('A')))-10)); ++ } + j += 1; + i -= 1; + } + if (j <= Higha) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + } + + void NumberIO_StrToHex (char *a_, unsigned int _a_high, unsigned int *x) +@@ -288,7 +310,9 @@ void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int _a_high) + Negative = TRUE; + c = ((unsigned int ) (abs (x+1)))+1; + if (n > 0) +- n -= 1; ++ { ++ n -= 1; ++ } + } + else + { +@@ -322,12 +346,14 @@ void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int _a_high) + } + while ((i != 0) && (j <= Higha)) + { +- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0'))); ++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0')))); + j += 1; + i -= 1; + } + if (j <= Higha) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + } + + void NumberIO_StrToInt (char *a_, unsigned int _a_high, int *x) +@@ -347,36 +373,56 @@ void NumberIO_StrToInt (char *a_, unsigned int _a_high, int *x) + Negative = FALSE; + ok = TRUE; + while (ok) +- if (i < higha) +- if (a[i] == '-') ++ { ++ if (i < higha) + { +- i += 1; +- Negative = ! Negative; ++ if (a[i] == '-') ++ { ++ i += 1; ++ Negative = ! Negative; ++ } ++ else if ((a[i] < '0') || (a[i] > '9')) ++ { ++ /* avoid dangling else. */ ++ i += 1; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ ok = FALSE; ++ } + } +- else if ((a[i] < '0') || (a[i] > '9')) +- i += 1; + else +- ok = FALSE; +- else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } ++ } + (*x) = 0; + if (i < higha) + { + ok = TRUE; + do { + if (Negative) +- (*x) = (10*(*x))-((int ) (((unsigned int) (a[i]))-((unsigned int) ('0')))); ++ { ++ (*x) = (10*(*x))-((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))); ++ } + else +- (*x) = (10*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0')))); ++ { ++ (*x) = (10*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))); ++ } + if (i < higha) + { + /* avoid dangling else. */ + i += 1; + if ((a[i] < '0') || (a[i] > '9')) +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } + else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } while (! (! ok)); + } + } +@@ -435,12 +481,14 @@ void NumberIO_OctToStr (unsigned int x, unsigned int n, char *a, unsigned int _a + } + while ((i > 0) && (j <= Higha)) + { +- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0'))); ++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0')))); + j += 1; + i -= 1; + } + if (j <= Higha) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + } + + void NumberIO_StrToOct (char *a_, unsigned int _a_high, unsigned int *x) +@@ -509,12 +557,14 @@ void NumberIO_BinToStr (unsigned int x, unsigned int n, char *a, unsigned int _a + } + while ((i > 0) && (j <= Higha)) + { +- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0'))); ++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0')))); + j += 1; + i -= 1; + } + if (j <= Higha) +- a[j] = ASCII_nul; ++ { ++ a[j] = ASCII_nul; ++ } + } + + void NumberIO_StrToBin (char *a_, unsigned int _a_high, unsigned int *x) +@@ -544,28 +594,42 @@ void NumberIO_StrToBinInt (char *a_, unsigned int _a_high, int *x) + i = 0; + ok = TRUE; + while (ok) +- if (i < higha) +- if ((a[i] < '0') || (a[i] > '1')) +- i += 1; ++ { ++ if (i < higha) ++ { ++ if ((a[i] < '0') || (a[i] > '1')) ++ { ++ i += 1; ++ } ++ else ++ { ++ ok = FALSE; ++ } ++ } + else +- ok = FALSE; +- else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } ++ } + (*x) = 0; + if (i < higha) + { + ok = TRUE; + do { +- (*x) = (2*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0')))); ++ (*x) = (2*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))); + if (i < higha) + { + /* avoid dangling else. */ + i += 1; + if ((a[i] < '0') || (a[i] > '1')) +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } + else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } while (! (! ok)); + } + } +@@ -585,31 +649,50 @@ void NumberIO_StrToHexInt (char *a_, unsigned int _a_high, int *x) + i = 0; + ok = TRUE; + while (ok) +- if (i < higha) +- if (((a[i] >= '0') && (a[i] <= '9')) || ((a[i] >= 'A') && (a[i] <= 'F'))) +- ok = FALSE; ++ { ++ if (i < higha) ++ { ++ if (((a[i] >= '0') && (a[i] <= '9')) || ((a[i] >= 'A') && (a[i] <= 'F'))) ++ { ++ ok = FALSE; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + else +- i += 1; +- else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } ++ } + (*x) = 0; + if (i < higha) + { + ok = TRUE; + do { + if ((a[i] >= '0') && (a[i] <= '9')) +- (*x) = (0x010*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0')))); ++ { ++ (*x) = (0x010*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))); ++ } + else if ((a[i] >= 'A') && (a[i] <= 'F')) +- (*x) = (0x010*(*x))+((int ) ((((unsigned int) (a[i]))-((unsigned int) ('A')))+10)); ++ { ++ /* avoid dangling else. */ ++ (*x) = (0x010*(*x))+((int ) (( ((unsigned int) (a[i]))- ((unsigned int) ('A')))+10)); ++ } + if (i < higha) + { + /* avoid dangling else. */ + i += 1; + if (((a[i] < '0') || (a[i] > '9')) && ((a[i] < 'A') || (a[i] > 'F'))) +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } + else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } while (! (! ok)); + } + } +@@ -629,28 +712,42 @@ void NumberIO_StrToOctInt (char *a_, unsigned int _a_high, int *x) + i = 0; + ok = TRUE; + while (ok) +- if (i < higha) +- if ((a[i] < '0') || (a[i] > '7')) +- i += 1; ++ { ++ if (i < higha) ++ { ++ if ((a[i] < '0') || (a[i] > '7')) ++ { ++ i += 1; ++ } ++ else ++ { ++ ok = FALSE; ++ } ++ } + else +- ok = FALSE; +- else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } ++ } + (*x) = 0; + if (i < higha) + { + ok = TRUE; + do { +- (*x) = (8*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0')))); ++ (*x) = (8*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))); + if (i < higha) + { + /* avoid dangling else. */ + i += 1; + if ((a[i] < '0') || (a[i] > '7')) +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } + else +- ok = FALSE; ++ { ++ ok = FALSE; ++ } + } while (! (! ok)); + } + } +--- a/src/gcc/gm2/mc-boot/GPushBackInput.c ++++ b/src/gcc/gm2/mc-boot/GPushBackInput.c +@@ -200,13 +200,17 @@ char PushBackInput_GetCh (FIO_File f) + { + StackPtr -= 1; + if (Debugging) +- StdIO_Write (CharStack.array[StackPtr]); ++ { ++ StdIO_Write (CharStack.array[StackPtr]); ++ } + return CharStack.array[StackPtr]; + } + else + { + if ((FIO_EOF (f)) || (! (FIO_IsNoError (f)))) +- ch = ASCII_nul; ++ { ++ ch = ASCII_nul; ++ } + else + { + do { +@@ -218,10 +222,14 @@ char PushBackInput_GetCh (FIO_File f) + LineNo += 1; + } + else +- Column += 1; ++ { ++ Column += 1; ++ } + } + if (Debugging) +- StdIO_Write (ch); ++ { ++ StdIO_Write (ch); ++ } + return ch; + } + } +@@ -240,7 +248,9 @@ char PushBackInput_PutCh (FIO_File f, char ch) + StackPtr += 1; + } + else +- Debug_Halt ((char *) "max push back stack exceeded, increase MaxPushBackStack", 55, 122, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54); ++ { ++ Debug_Halt ((char *) "max push back stack exceeded, increase MaxPushBackStack", 55, 122, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54); ++ } + return ch; + } + +@@ -262,7 +272,9 @@ void PushBackInput_PutString (FIO_File f, char *a_, unsigned int _a_high) + { + l -= 1; + if ((PushBackInput_PutCh (f, a[l])) != a[l]) +- Debug_Halt ((char *) "assert failed", 13, 104, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54); ++ { ++ Debug_Halt ((char *) "assert failed", 13, 104, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54); ++ } + } + } + +@@ -343,7 +355,9 @@ void PushBackInput_WarnString (DynamicStrings_String s) + StdIO_Write (':'); + } + else +- StdIO_Write ((*p)); ++ { ++ StdIO_Write ((*p)); ++ } + p += 1; + } + } while (! ((p == NULL) || ((*p) == ASCII_nul))); +@@ -388,9 +402,13 @@ void PushBackInput_SetDebug (unsigned int d) + unsigned int PushBackInput_GetColumnPosition (void) + { + if (StackPtr > Column) +- return 0; ++ { ++ return 0; ++ } + else +- return Column-StackPtr; ++ { ++ return Column-StackPtr; ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GRTExceptions.c ++++ b/src/gcc/gm2/mc-boot/GRTExceptions.c +@@ -436,11 +436,17 @@ static Handler findHandler (RTExceptions_EHBlock e, unsigned int number) + + h = e->handlers->right; + while ((h != e->handlers) && (number != h->n)) +- h = h->right; ++ { ++ h = h->right; ++ } + if (h == e->handlers) +- return NULL; ++ { ++ return NULL; ++ } + else +- return h; ++ { ++ return h; ++ } + } + + +@@ -455,9 +461,13 @@ static void InvokeHandler (void) + + h = findHandler (currentEHB, currentEHB->number); + if (h == NULL) +- throw (RTExceptions_GetNumber (RTExceptions_GetExceptionBlock ())); ++ { ++ throw (RTExceptions_GetNumber (RTExceptions_GetExceptionBlock ())); ++ } + else +- (*h->p.proc) (); ++ { ++ (*h->p.proc) (); ++ } + } + + +@@ -498,13 +508,17 @@ static void * stripPath (void * s) + p = s; + f = s; + while ((*p) != ASCII_nul) +- if ((*p) == '/') +- { +- p += 1; +- f = p; +- } +- else +- p += 1; ++ { ++ if ((*p) == '/') ++ { ++ p += 1; ++ f = p; ++ } ++ else ++ { ++ p += 1; ++ } ++ } + return f; + } + +@@ -553,7 +567,9 @@ static void addStr (void * s, unsigned int *i) + static void addNum (unsigned int n, unsigned int *i) + { + if (n < 10) +- addChar ((char) ((n % 10)+((unsigned int) ('0'))), i); ++ { ++ addChar ( ((char) ((n % 10)+ ((unsigned int) ('0')))), i); ++ } + else + { + addNum (n / 10, i); +@@ -571,7 +587,9 @@ static RTExceptions_EHBlock New (void) + RTExceptions_EHBlock e; + + if (freeEHB == NULL) +- Storage_ALLOCATE ((void **) &e, sizeof (_T1)); ++ { ++ Storage_ALLOCATE ((void **) &e, sizeof (_T1)); ++ } + else + { + e = freeEHB; +@@ -590,7 +608,9 @@ static Handler NewHandler (void) + Handler h; + + if (freeHandler == NULL) +- Storage_ALLOCATE ((void **) &h, sizeof (_T3)); ++ { ++ Storage_ALLOCATE ((void **) &h, sizeof (_T3)); ++ } + else + { + h = freeHandler; +@@ -669,7 +689,7 @@ static void AddHandler (RTExceptions_EHBlock e, Handler h) + + static void indexf (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 597, 9, "indexf", "array index out of bounds"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 597, 9, "indexf", "array index out of bounds"); + } + + +@@ -679,7 +699,7 @@ static void indexf (void * a) + + static void range (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 609, 9, "range", "assignment out of range"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 609, 9, "range", "assignment out of range"); + } + + +@@ -689,7 +709,7 @@ static void range (void * a) + + static void casef (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_caseSelectException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 621, 9, "casef", "case selector out of range"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_caseSelectException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 621, 9, "casef", "case selector out of range"); + } + + +@@ -699,7 +719,7 @@ static void casef (void * a) + + static void invalidloc (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_invalidLocation), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 633, 9, "invalidloc", "invalid address referenced"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_invalidLocation)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 633, 9, "invalidloc", "invalid address referenced"); + } + + +@@ -709,7 +729,7 @@ static void invalidloc (void * a) + + static void function (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_functionException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 645, 9, "function", "... function ... "); /* --fixme-- what has happened ? */ ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_functionException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 645, 9, "function", "... function ... "); /* --fixme-- what has happened ? */ + } + + +@@ -719,7 +739,7 @@ static void function (void * a) + + static void wholevalue (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 657, 9, "wholevalue", "illegal whole value exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 657, 9, "wholevalue", "illegal whole value exception"); + } + + +@@ -729,7 +749,7 @@ static void wholevalue (void * a) + + static void wholediv (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 669, 9, "wholediv", "illegal whole value exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 669, 9, "wholediv", "illegal whole value exception"); + } + + +@@ -739,7 +759,7 @@ static void wholediv (void * a) + + static void realvalue (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 681, 9, "realvalue", "illegal real value exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 681, 9, "realvalue", "illegal real value exception"); + } + + +@@ -749,7 +769,7 @@ static void realvalue (void * a) + + static void realdiv (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 693, 9, "realdiv", "real number division by zero exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 693, 9, "realdiv", "real number division by zero exception"); + } + + +@@ -759,7 +779,7 @@ static void realdiv (void * a) + + static void complexvalue (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_complexValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 705, 9, "complexvalue", "illegal complex value exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_complexValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 705, 9, "complexvalue", "illegal complex value exception"); + } + + +@@ -769,7 +789,7 @@ static void complexvalue (void * a) + + static void complexdiv (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_complexDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 717, 9, "complexdiv", "complex number division by zero exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_complexDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 717, 9, "complexdiv", "complex number division by zero exception"); + } + + +@@ -779,7 +799,7 @@ static void complexdiv (void * a) + + static void protection (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_protException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 729, 9, "protection", "protection exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_protException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 729, 9, "protection", "protection exception"); + } + + +@@ -789,7 +809,7 @@ static void protection (void * a) + + static void systemf (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_sysException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 741, 9, "systemf", "system exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_sysException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 741, 9, "systemf", "system exception"); + } + + +@@ -799,7 +819,7 @@ static void systemf (void * a) + + static void coroutine (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_coException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 753, 9, "coroutine", "coroutine exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_coException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 753, 9, "coroutine", "coroutine exception"); + } + + +@@ -809,7 +829,7 @@ static void coroutine (void * a) + + static void exception (void * a) + { +- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 765, 9, "exception", "exception exception"); ++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 765, 9, "exception", "exception exception"); + } + + +@@ -839,7 +859,9 @@ static void TidyUp (void) + RTExceptions_EHBlock e; + + if (currentEHB != NULL) +- currentEHB = RTExceptions_KillExceptionBlock (currentEHB); ++ { ++ currentEHB = RTExceptions_KillExceptionBlock (currentEHB); ++ } + while (freeHandler != NULL) + { + f = freeHandler; +@@ -978,7 +1000,9 @@ void RTExceptions_PushHandler (RTExceptions_EHBlock e, unsigned int number, RTEx + + h = findHandler (e, number); + if (h == NULL) +- i = InitHandler (NewHandler (), (Handler) NULL, (Handler) NULL, (Handler) NULL, number, p); ++ { ++ i = InitHandler (NewHandler (), (Handler) NULL, (Handler) NULL, (Handler) NULL, number, p); ++ } + else + { + /* remove, h, */ +@@ -1007,7 +1031,9 @@ void RTExceptions_PopHandler (RTExceptions_EHBlock e, unsigned int number) + /* remove, h, */ + SubHandler (h); + if (h->stack != NULL) +- AddHandler (e, h->stack); ++ { ++ AddHandler (e, h->stack); ++ } + h = KillHandler (h); + } + } +@@ -1043,7 +1069,9 @@ void RTExceptions_BaseExceptionsThrow (void) + M2EXCEPTION_M2Exceptions i; + + for (i=M2EXCEPTION_indexException; i<=M2EXCEPTION_exException; i++) +- RTExceptions_PushHandler (RTExceptions_GetExceptionBlock (), (unsigned int ) (i), (RTExceptions_ProcedureHandler) {(RTExceptions_ProcedureHandler_t) DoThrow}); ++ { ++ RTExceptions_PushHandler (RTExceptions_GetExceptionBlock (), (unsigned int ) (i), (RTExceptions_ProcedureHandler) {(RTExceptions_ProcedureHandler_t) DoThrow}); ++ } + } + + +@@ -1095,9 +1123,13 @@ void RTExceptions_SwitchExceptionState (unsigned int *from, unsigned int to) + RTExceptions_EHBlock RTExceptions_GetBaseExceptionBlock (void) + { + if (currentEHB == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 53, 583, (char *) "GetBaseExceptionBlock", 21, (char *) "currentEHB has not been initialized yet", 39); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 53, 583, (char *) "GetBaseExceptionBlock", 21, (char *) "currentEHB has not been initialized yet", 39); ++ } + else +- return currentEHB; ++ { ++ return currentEHB; ++ } + ReturnException ("../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.def", 19, 1); + } + +--- a/src/gcc/gm2/mc-boot/GRTint.c ++++ b/src/gcc/gm2/mc-boot/GRTint.c +@@ -223,9 +223,13 @@ static void Init (void); + static int Max (int i, int j) + { + if (i > j) +- return i; ++ { ++ return i; ++ } + else +- return j; ++ { ++ return j; ++ } + } + + static int Min (int i, int j) +@@ -234,9 +238,13 @@ static int Min (int i, int j) + Max - returns the minimum: i or j. + */ + if (i < j) +- return i; ++ { ++ return i; ++ } + else +- return j; ++ { ++ return j; ++ } + } + + +@@ -253,7 +261,9 @@ static Vector FindVector (int fd, VectorType t) + while (v != NULL) + { + if ((v->type == t) && (v->File == fd)) +- return v; ++ { ++ return v; ++ } + v = v->exists; + } + return NULL; +@@ -270,7 +280,9 @@ static Vector FindVectorNo (unsigned int vec) + + v = Exists; + while ((v != NULL) && (v->no != vec)) +- v = v->exists; ++ { ++ v = v->exists; ++ } + return v; + } + +@@ -288,9 +300,13 @@ static Vector FindPendingVector (unsigned int vec) + { + v = Pending.array[i-(COROUTINES_UnassignedPriority)]; + while ((v != NULL) && (v->no != vec)) +- v = v->pending; ++ { ++ v = v->pending; ++ } + if ((v != NULL) && (v->no == vec)) +- return v; ++ { ++ return v; ++ } + } + return NULL; + } +@@ -332,9 +348,12 @@ static void DumpPendingQueue (void) + while (v != NULL) + { + if ((v->type == input) || (v->type == output)) +- libc_printf ((char *) "(fd=%d) (vec=%d)", 16, v->File, v->no); ++ { ++ libc_printf ((char *) "(fd=%d) (vec=%d)", 16, v->File, v->no); ++ } + else if (v->type == time) + { ++ /* avoid dangling else. */ + Selective_GetTime (v->rel, &s, &m); + Assertion_Assert (m < Microseconds); + libc_printf ((char *) "time (%d.%6d secs)\\n", 20, s, m); +@@ -449,7 +468,9 @@ static void Init (void) + + Exists = NULL; + for (p=COROUTINES_UnassignedPriority; p<=7; p++) +- Pending.array[p-(COROUTINES_UnassignedPriority)] = NULL; ++ { ++ Pending.array[p-(COROUTINES_UnassignedPriority)] = NULL; ++ } + } + + +@@ -463,7 +484,9 @@ unsigned int RTint_InitInputVector (int fd, unsigned int pri) + Vector v; + + if (Debugging) +- libc_printf ((char *) "InitInputVector fd = %d priority = %d\\n", 39, fd, pri); ++ { ++ libc_printf ((char *) "InitInputVector fd = %d priority = %d\\n", 39, fd, pri); ++ } + v = FindVector (fd, (VectorType) input); + if (v == NULL) + { +@@ -480,7 +503,9 @@ unsigned int RTint_InitInputVector (int fd, unsigned int pri) + return VecNo; + } + else +- return v->no; ++ { ++ return v->no; ++ } + } + + +@@ -509,7 +534,9 @@ unsigned int RTint_InitOutputVector (int fd, unsigned int pri) + return VecNo; + } + else +- return v->no; ++ { ++ return v->no; ++ } + } + + +@@ -551,9 +578,13 @@ void RTint_ReArmTimeVector (unsigned int vec, unsigned int micro, unsigned int s + Assertion_Assert (micro < Microseconds); + v = FindVectorNo (vec); + if (v == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 256, (char *) "ReArmTimeVector", 15, (char *) "cannot find vector supplied", 27); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 256, (char *) "ReArmTimeVector", 15, (char *) "cannot find vector supplied", 27); ++ } + else +- Selective_SetTime (v->rel, secs+DebugTime, micro); ++ { ++ Selective_SetTime (v->rel, secs+DebugTime, micro); ++ } + } + + +@@ -570,7 +601,9 @@ void RTint_GetTimeVector (unsigned int vec, unsigned int *micro, unsigned int *s + + v = FindVectorNo (vec); + if (v == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 280, (char *) "GetTimeVector", 13, (char *) "cannot find vector supplied", 27); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 280, (char *) "GetTimeVector", 13, (char *) "cannot find vector supplied", 27); ++ } + else + { + Selective_GetTime (v->rel, secs, micro); +@@ -592,7 +625,9 @@ void * RTint_AttachVector (unsigned int vec, void * p) + + v = FindVectorNo (vec); + if (v == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 305, (char *) "AttachVector", 12, (char *) "cannot find vector supplied", 27); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 305, (char *) "AttachVector", 12, (char *) "cannot find vector supplied", 27); ++ } + else + { + l = v->arg; +@@ -621,7 +656,9 @@ void RTint_IncludeVector (unsigned int vec) + /* avoid dangling else. */ + v = FindVectorNo (vec); + if (v == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 331, (char *) "IncludeVector", 13, (char *) "cannot find vector supplied", 27); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 331, (char *) "IncludeVector", 13, (char *) "cannot find vector supplied", 27); ++ } + else + { + /* printf('including vector %d (fd = %d) +@@ -644,7 +681,9 @@ void RTint_IncludeVector (unsigned int vec) + else + { + if (Debugging) +- libc_printf ((char *) "odd vector %d (fd %d) is already attached to the pending queue\\n", 64, vec, v->File); ++ { ++ libc_printf ((char *) "odd vector %d (fd %d) is already attached to the pending queue\\n", 64, vec, v->File); ++ } + stop (); + } + } +@@ -662,22 +701,30 @@ void RTint_ExcludeVector (unsigned int vec) + + v = FindPendingVector (vec); + if (v == NULL) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 372, (char *) "ExcludeVector", 13, (char *) "cannot find pending vector supplied", 35); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 372, (char *) "ExcludeVector", 13, (char *) "cannot find pending vector supplied", 35); ++ } + else + { + /* printf('excluding vector %d + ', vec) ; */ + if (Pending.array[v->priority-(COROUTINES_UnassignedPriority)] == v) +- Pending.array[v->priority-(COROUTINES_UnassignedPriority)] = Pending.array[v->priority-(COROUTINES_UnassignedPriority)]->pending; ++ { ++ Pending.array[v->priority-(COROUTINES_UnassignedPriority)] = Pending.array[v->priority-(COROUTINES_UnassignedPriority)]->pending; ++ } + else + { + u = Pending.array[v->priority-(COROUTINES_UnassignedPriority)]; + while (u->pending != v) +- u = u->pending; ++ { ++ u = u->pending; ++ } + u->pending = v->pending; + } + if (v->type == time) +- v->queued = FALSE; ++ { ++ v->queued = FALSE; ++ } + } + } + +@@ -713,7 +760,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + if (pri < (7)) + { + if (Debugging) +- DumpPendingQueue (); ++ { ++ DumpPendingQueue (); ++ } + maxFd = -1; + t = NULL; + i = NULL; +@@ -742,7 +791,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + Selective_GetTime (v->abs_, &s, &m); + Assertion_Assert (m < Microseconds); + if (Debugging) +- libc_printf ((char *) "shortest delay is %d.%d\\n", 25, s, m); ++ { ++ libc_printf ((char *) "shortest delay is %d.%d\\n", 25, s, m); ++ } + Selective_SetTime (t, s, m); + found = TRUE; + } +@@ -757,9 +808,13 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + p -= 1; + } + if (! untilInterrupt) +- Selective_SetTime (t, 0, 0); ++ { ++ Selective_SetTime (t, 0, 0); ++ } + if (((untilInterrupt && (i == NULL)) && (o == NULL)) && ! found) +- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 592, (char *) "Listen", 6, (char *) "deadlock found, no more processes to run and no interrupts active", 65); ++ { ++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 592, (char *) "Listen", 6, (char *) "deadlock found, no more processes to run and no interrupts active", 65); ++ } + /* printf('} + ') ; */ + if (((! found && (maxFd == -1)) && (i == NULL)) && (o == NULL)) +@@ -778,7 +833,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + SubTime (&s, &m, t, b4); + Selective_SetTime (t, s, m); + if (Debugging) +- libc_printf ((char *) "select waiting for %u.%u seconds\\n", 34, s, m); ++ { ++ libc_printf ((char *) "select waiting for %u.%u seconds\\n", 34, s, m); ++ } + do { + r = pth_pth_select (maxFd+1, (void *) i, (void *) o, NULL, (void *) t); + if (r == -1) +@@ -786,15 +843,23 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + libc_perror ((char *) "pth_select", 10); + r = pth_pth_select (maxFd+1, (void *) i, (void *) o, NULL, NULL); + if (r == -1) +- libc_perror ((char *) "pth_select timeout argument is faulty", 37); ++ { ++ libc_perror ((char *) "pth_select timeout argument is faulty", 37); ++ } + r = pth_pth_select (maxFd+1, (void *) i, NULL, NULL, (void *) t); + if (r == -1) +- libc_perror ((char *) "pth_select output fd argument is faulty", 39); ++ { ++ libc_perror ((char *) "pth_select output fd argument is faulty", 39); ++ } + r = pth_pth_select (maxFd+1, NULL, (void *) o, NULL, (void *) t); + if (r == -1) +- libc_perror ((char *) "pth_select input fd argument is faulty", 38); ++ { ++ libc_perror ((char *) "pth_select input fd argument is faulty", 38); ++ } + else +- libc_perror ((char *) "pth_select maxFD+1 argument is faulty", 37); ++ { ++ libc_perror ((char *) "pth_select maxFD+1 argument is faulty", 37); ++ } + } + } while (! (r != -1)); + } +@@ -855,7 +920,10 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + (*call.proc) (v->no, v->priority, v->arg); + } + else if (Debugging) +- libc_printf ((char *) "must wait longer as time has not expired\\n", 42); ++ { ++ /* avoid dangling else. */ ++ libc_printf ((char *) "must wait longer as time has not expired\\n", 42); ++ } + } + break; + +@@ -868,15 +936,25 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig + p -= 1; + } + if (t != NULL) +- t = Selective_KillTime (t); ++ { ++ t = Selective_KillTime (t); ++ } + if (b4 != NULL) +- t = Selective_KillTime (b4); ++ { ++ t = Selective_KillTime (b4); ++ } + if (after != NULL) +- t = Selective_KillTime (after); ++ { ++ t = Selective_KillTime (after); ++ } + if (i != NULL) +- i = Selective_KillSet (i); ++ { ++ i = Selective_KillSet (i); ++ } + if (o != NULL) +- o = Selective_KillSet (o); ++ { ++ o = Selective_KillSet (o); ++ } + } + } + +--- a/src/gcc/gm2/mc-boot/GSArgs.c ++++ b/src/gcc/gm2/mc-boot/GSArgs.c +@@ -72,7 +72,7 @@ unsigned int SArgs_GetArg (DynamicStrings_String *s, unsigned int i) + + if (i < UnixArgs_ArgC) + { +- ppc = (void *) (UnixArgs_ArgV+(i*(sizeof (PtrToChar)))); ++ ppc = (void *) (UnixArgs_ArgV+(i*sizeof (PtrToChar))); + (*s) = DynamicStrings_InitStringCharStar ((void *) (*ppc)); + return TRUE; + } +--- a/src/gcc/gm2/mc-boot/GSFIO.c ++++ b/src/gcc/gm2/mc-boot/GSFIO.c +@@ -146,7 +146,9 @@ DynamicStrings_String SFIO_WriteS (FIO_File file, DynamicStrings_String s) + unsigned int nBytes; + + if (s != NULL) +- nBytes = FIO_WriteNBytes (file, DynamicStrings_Length (s), DynamicStrings_string (s)); ++ { ++ nBytes = FIO_WriteNBytes (file, DynamicStrings_Length (s), DynamicStrings_string (s)); ++ } + return s; + } + +@@ -165,11 +167,15 @@ DynamicStrings_String SFIO_ReadS (FIO_File file) + + s = DynamicStrings_InitString ((char *) "", 0); + while (((! (FIO_EOLN (file))) && (! (FIO_EOF (file)))) && (FIO_IsNoError (file))) +- s = DynamicStrings_ConCatChar (s, FIO_ReadChar (file)); ++ { ++ s = DynamicStrings_ConCatChar (s, FIO_ReadChar (file)); ++ } + if (FIO_EOLN (file)) +- /* consume nl */ +- if ((FIO_ReadChar (file)) == ASCII_nul) +- {} /* empty. */ ++ { ++ /* consume nl */ ++ if ((FIO_ReadChar (file)) == ASCII_nul) ++ {} /* empty. */ ++ } + return s; + } + +--- a/src/gcc/gm2/mc-boot/GStdIO.c ++++ b/src/gcc/gm2/mc-boot/GStdIO.c +@@ -134,7 +134,9 @@ void StdIO_Write (char ch) + void StdIO_PushOutput (StdIO_ProcWrite p) + { + if (StackWPtr == MaxStack) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + StackWPtr += 1; +@@ -150,9 +152,13 @@ void StdIO_PushOutput (StdIO_ProcWrite p) + void StdIO_PopOutput (void) + { + if (StackWPtr == 1) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- StackWPtr -= 1; ++ { ++ StackWPtr -= 1; ++ } + } + + +@@ -163,9 +169,13 @@ void StdIO_PopOutput (void) + StdIO_ProcWrite StdIO_GetCurrentOutput (void) + { + if (StackWPtr > 0) +- return StackW.array[StackWPtr]; ++ { ++ return StackW.array[StackWPtr]; ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -178,7 +188,9 @@ StdIO_ProcWrite StdIO_GetCurrentOutput (void) + void StdIO_PushInput (StdIO_ProcRead p) + { + if (StackRPtr == MaxStack) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + StackRPtr += 1; +@@ -194,9 +206,13 @@ void StdIO_PushInput (StdIO_ProcRead p) + void StdIO_PopInput (void) + { + if (StackRPtr == 1) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- StackRPtr -= 1; ++ { ++ StackRPtr -= 1; ++ } + } + + +@@ -207,9 +223,13 @@ void StdIO_PopInput (void) + StdIO_ProcRead StdIO_GetCurrentInput (void) + { + if (StackRPtr > 0) +- return StackR.array[StackRPtr]; ++ { ++ return StackR.array[StackRPtr]; ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + void _M2_StdIO_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GStrCase.c ++++ b/src/gcc/gm2/mc-boot/GStrCase.c +@@ -84,7 +84,9 @@ void StrCase_StrToUpperCase (char *a_, unsigned int _a_high, char *b, unsigned i + i += 1; + } + if (i < highb) +- b[i] = ASCII_nul; ++ { ++ b[i] = ASCII_nul; ++ } + } + + +@@ -112,7 +114,9 @@ void StrCase_StrToLowerCase (char *a_, unsigned int _a_high, char *b, unsigned i + i += 1; + } + if (i < highb) +- b[i] = ASCII_nul; ++ { ++ b[i] = ASCII_nul; ++ } + } + + +@@ -125,7 +129,9 @@ void StrCase_StrToLowerCase (char *a_, unsigned int _a_high, char *b, unsigned i + char StrCase_Cap (char ch) + { + if ((ch >= 'a') && (ch <= 'z')) +- ch = (char) ((((unsigned int) (ch))-((unsigned int) ('a')))+((unsigned int) ('A'))); ++ { ++ ch = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('a')))+ ((unsigned int) ('A')))); ++ } + return ch; + } + +@@ -139,7 +145,9 @@ char StrCase_Cap (char ch) + char StrCase_Lower (char ch) + { + if ((ch >= 'A') && (ch <= 'Z')) +- ch = (char) ((((unsigned int) (ch))-((unsigned int) ('A')))+((unsigned int) ('a'))); ++ { ++ ch = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('A')))+ ((unsigned int) ('a')))); ++ } + return ch; + } + +--- a/src/gcc/gm2/mc-boot/GStrIO.c ++++ b/src/gcc/gm2/mc-boot/GStrIO.c +@@ -98,7 +98,9 @@ static void Erase (void) + static void Echo (char ch) + { + if (IsATTY) +- StdIO_Write (ch); ++ { ++ StdIO_Write (ch); ++ } + } + + +@@ -141,32 +143,48 @@ void StrIO_ReadString (char *a, unsigned int _a_high) + do { + StdIO_Read (&ch); + if ((ch == ASCII_del) || (ch == ASCII_bs)) +- if (n == 0) +- StdIO_Write (ASCII_bel); +- else +- { +- Erase (); +- n -= 1; +- } ++ { ++ if (n == 0) ++ { ++ StdIO_Write (ASCII_bel); ++ } ++ else ++ { ++ Erase (); ++ n -= 1; ++ } ++ } + else if (ch == ASCII_nak) +- while (n > 0) +- { +- Erase (); +- n -= 1; +- } ++ { ++ /* avoid dangling else. */ ++ while (n > 0) ++ { ++ Erase (); ++ n -= 1; ++ } ++ } + else if (ch == ASCII_etb) +- if (n == 0) +- Echo (ASCII_bel); +- else if (AlphaNum (a[n-1])) +- do { +- Erase (); +- n -= 1; +- } while (! ((n == 0) || (! (AlphaNum (a[n-1]))))); +- else +- { +- Erase (); +- n -= 1; +- } ++ { ++ /* avoid dangling else. */ ++ if (n == 0) ++ { ++ Echo (ASCII_bel); ++ } ++ else if (AlphaNum (a[n-1])) ++ { ++ /* avoid dangling else. */ ++ do { ++ Erase (); ++ n -= 1; ++ } while (! ((n == 0) || (! (AlphaNum (a[n-1]))))); ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ Erase (); ++ n -= 1; ++ } ++ } + else if (n <= high) + { + /* avoid dangling else. */ +@@ -177,28 +195,38 @@ void StrIO_ReadString (char *a, unsigned int _a_high) + } + else if (ch == ASCII_ff) + { ++ /* avoid dangling else. */ + a[0] = ch; + if (high > 0) +- a[1] = ASCII_nul; ++ { ++ a[1] = ASCII_nul; ++ } + ch = ASCII_cr; + } + else if (ch >= ' ') + { ++ /* avoid dangling else. */ + Echo (ch); + a[n] = ch; + n += 1; + } + else if (ch == ASCII_eof) + { ++ /* avoid dangling else. */ + a[n] = ch; + n += 1; + ch = ASCII_cr; + if (n <= high) +- a[n] = ASCII_nul; ++ { ++ a[n] = ASCII_nul; ++ } + } + } + else if (ch != ASCII_cr) +- Echo (ASCII_bel); ++ { ++ /* avoid dangling else. */ ++ Echo (ASCII_bel); ++ } + } while (! ((ch == ASCII_cr) || (ch == ASCII_lf))); + } + +--- a/src/gcc/gm2/mc-boot/GStrLib.c ++++ b/src/gcc/gm2/mc-boot/GStrLib.c +@@ -111,7 +111,9 @@ void StrLib_StrConCat (char *a_, unsigned int _a_high, char *b_, unsigned int _b + j += 1; + } + if (i <= Highc) +- c[i] = ASCII_nul; ++ { ++ c[i] = ASCII_nul; ++ } + } + + +@@ -138,9 +140,14 @@ unsigned int StrLib_StrLess (char *a_, unsigned int _a_high, char *b_, unsigned + while ((i < Higha) && (i < Highb)) + { + if (a[i] < b[i]) +- return TRUE; ++ { ++ return TRUE; ++ } + else if (a[i] > b[i]) +- return FALSE; ++ { ++ /* avoid dangling else. */ ++ return FALSE; ++ } + /* must be equal, move on to next character */ + i += 1; + } +@@ -165,7 +172,9 @@ unsigned int StrLib_StrEqual (char *a_, unsigned int _a_high, char *b_, unsigned + while ((((i <= higha) && (i <= highb)) && (a[i] != ASCII_nul)) && (b[i] != ASCII_nul)) + { + if (a[i] != b[i]) +- return FALSE; ++ { ++ return FALSE; ++ } + i += 1; + } + return ! (((i <= higha) && (a[i] != ASCII_nul)) || ((i <= highb) && (b[i] != ASCII_nul))); +@@ -183,7 +192,9 @@ unsigned int StrLib_StrLen (char *a_, unsigned int _a_high) + Len = 0; + High = _a_high; + while ((Len <= High) && (a[Len] != ASCII_nul)) +- Len += 1; ++ { ++ Len += 1; ++ } + return Len; + } + +@@ -206,7 +217,9 @@ void StrLib_StrCopy (char *a_, unsigned int _a_high, char *b, unsigned int _b_hi + n += 1; + } + if (n <= Highb) +- b[n] = ASCII_nul; ++ { ++ b[n] = ASCII_nul; ++ } + } + + +@@ -231,16 +244,24 @@ unsigned int StrLib_IsSubString (char *a_, unsigned int _a_high, char *b_, unsig + LengthB = StrLib_StrLen ((char *) b, _b_high); + i = 0; + if (LengthA > LengthB) +- while (i <= (LengthA-LengthB)) +- { +- j = 0; +- while ((j < LengthB) && (a[i+j] == b[j])) +- j += 1; +- if (j == LengthB) +- return TRUE; +- else +- i += 1; +- } ++ { ++ while (i <= (LengthA-LengthB)) ++ { ++ j = 0; ++ while ((j < LengthB) && (a[i+j] == b[j])) ++ { ++ j += 1; ++ } ++ if (j == LengthB) ++ { ++ return TRUE; ++ } ++ else ++ { ++ i += 1; ++ } ++ } ++ } + return FALSE; + } + +@@ -266,7 +287,9 @@ void StrLib_StrRemoveWhitePrefix (char *a_, unsigned int _a_high, char *b, unsig + higha = StrLib_StrLen ((char *) a, _a_high); + highb = _b_high; + while ((i < higha) && (IsWhite (a[i]))) +- i += 1; ++ { ++ i += 1; ++ } + while ((i < higha) && (j <= highb)) + { + b[j] = a[i]; +@@ -274,7 +297,9 @@ void StrLib_StrRemoveWhitePrefix (char *a_, unsigned int _a_high, char *b, unsig + j += 1; + } + if (j <= highb) +- b[j] = ASCII_nul; ++ { ++ b[j] = ASCII_nul; ++ } + } + + void _M2_StrLib_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GStringConvert.c ++++ b/src/gcc/gm2/mc-boot/GStringConvert.c +@@ -438,7 +438,9 @@ static void Assert (unsigned int b, char *file_, unsigned int _file_high, unsign + memcpy (func, func_, _func_high+1); + + if (! b) +- M2RTS_ErrorMessage ((char *) "assert failed", 13, (char *) file, _file_high, line, (char *) func, _func_high); ++ { ++ M2RTS_ErrorMessage ((char *) "assert failed", 13, (char *) file, _file_high, line, (char *) func, _func_high); ++ } + } + + +@@ -449,9 +451,13 @@ static void Assert (unsigned int b, char *file_, unsigned int _file_high, unsign + static unsigned int Max (unsigned int a, unsigned int b) + { + if (a > b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -462,9 +468,13 @@ static unsigned int Max (unsigned int a, unsigned int b) + static unsigned int Min (unsigned int a, unsigned int b) + { + if (a < b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -475,9 +485,13 @@ static unsigned int Min (unsigned int a, unsigned int b) + static long unsigned int LongMin (long unsigned int a, long unsigned int b) + { + if (a < b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -498,13 +512,15 @@ static unsigned int IsDigit (char ch) + + static unsigned int IsDecimalDigitValid (char ch, unsigned int base, unsigned int *c) + { +- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base)) ++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base)) + { +- (*c) = ((*c)*base)+(((unsigned int) (ch))-((unsigned int) ('0'))); ++ (*c) = ((*c)*base)+( ((unsigned int) (ch))- ((unsigned int) ('0'))); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -515,18 +531,22 @@ static unsigned int IsDecimalDigitValid (char ch, unsigned int base, unsigned in + + static unsigned int IsHexidecimalDigitValid (char ch, unsigned int base, unsigned int *c) + { +- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base)) ++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base)) + { +- (*c) = ((*c)*base)+((((unsigned int) (ch))-((unsigned int) ('a')))+10); ++ (*c) = ((*c)*base)+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10); + return TRUE; + } +- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base)) ++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base)) + { +- (*c) = ((*c)*base)+((((unsigned int) (ch))-((unsigned int) ('A')))+10); ++ /* avoid dangling else. */ ++ (*c) = ((*c)*base)+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10); + return TRUE; + } + else +- return FALSE; ++ { ++ /* avoid dangling else. */ ++ return FALSE; ++ } + } + + +@@ -537,13 +557,15 @@ static unsigned int IsHexidecimalDigitValid (char ch, unsigned int base, unsigne + + static unsigned int IsDecimalDigitValidLong (char ch, unsigned int base, long unsigned int *c) + { +- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base)) ++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base)) + { +- (*c) = (*c)*((long unsigned int ) (base+(((unsigned int) (ch))-((unsigned int) ('0'))))); ++ (*c) = (*c)*((long unsigned int ) (base+( ((unsigned int) (ch))- ((unsigned int) ('0'))))); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -554,18 +576,22 @@ static unsigned int IsDecimalDigitValidLong (char ch, unsigned int base, long un + + static unsigned int IsHexidecimalDigitValidLong (char ch, unsigned int base, long unsigned int *c) + { +- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base)) ++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base)) + { +- (*c) = (*c)*((long unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('a')))+10))); ++ (*c) = (*c)*((long unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10))); + return TRUE; + } +- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base)) ++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base)) + { +- (*c) = (*c)*((long unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('A')))+10))); ++ /* avoid dangling else. */ ++ (*c) = (*c)*((long unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10))); + return TRUE; + } + else +- return FALSE; ++ { ++ /* avoid dangling else. */ ++ return FALSE; ++ } + } + + +@@ -576,13 +602,15 @@ static unsigned int IsHexidecimalDigitValidLong (char ch, unsigned int base, lon + + static unsigned int IsDecimalDigitValidShort (char ch, unsigned int base, short unsigned int *c) + { +- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base)) ++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base)) + { +- (*c) = (*c)*((short unsigned int ) (base+(((unsigned int) (ch))-((unsigned int) ('0'))))); ++ (*c) = (*c)*((short unsigned int ) (base+( ((unsigned int) (ch))- ((unsigned int) ('0'))))); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -593,18 +621,22 @@ static unsigned int IsDecimalDigitValidShort (char ch, unsigned int base, short + + static unsigned int IsHexidecimalDigitValidShort (char ch, unsigned int base, short unsigned int *c) + { +- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base)) ++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base)) + { +- (*c) = (*c)*((short unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('a')))+10))); ++ (*c) = (*c)*((short unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10))); + return TRUE; + } +- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base)) ++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base)) + { +- (*c) = (*c)*((short unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('A')))+10))); ++ /* avoid dangling else. */ ++ (*c) = (*c)*((short unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10))); + return TRUE; + } + else +- return FALSE; ++ { ++ /* avoid dangling else. */ ++ return FALSE; ++ } + } + + +@@ -618,17 +650,21 @@ static long double ToThePower10 (long double v, int power) + + i = 0; + if (power > 0) +- while (i < power) +- { +- v = v*10.0; +- i += 1; +- } ++ { ++ while (i < power) ++ { ++ v = v*10.0; ++ i += 1; ++ } ++ } + else +- while (i > power) +- { +- v = v/10.0; +- i -= 1; +- } ++ { ++ while (i > power) ++ { ++ v = v/10.0; ++ i -= 1; ++ } ++ } + return v; + } + +@@ -700,18 +736,28 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned + /* remove '.' */ + point = DynamicStrings_Index (s, '.', 0); + if (point == 0) +- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0); ++ { ++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0); ++ } + else if (point < l) +- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0))); ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0))); ++ } + else +- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point); ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point); ++ } + l = DynamicStrings_Length (s); + i = 0; + if (l > 0) + { + /* skip over leading zeros */ + while ((i < l) && ((DynamicStrings_char (s, i)) == '0')) +- i += 1; ++ { ++ i += 1; ++ } + /* was the string full of zeros? */ + if ((i == l) && ((DynamicStrings_char (s, i-1)) == '0')) + { +@@ -736,16 +782,21 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned + hundreths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+3); + s = t; + if ((StringConvert_stoc (hundreths)) >= 50) +- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ { ++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ } + hundreths = DynamicStrings_KillString (hundreths); + } + else if ((i+2) <= l) + { ++ /* avoid dangling else. */ + t = DynamicStrings_Dup (s); + tenths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+2); + s = t; + if ((StringConvert_stoc (tenths)) >= 5) +- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ { ++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ } + tenths = DynamicStrings_KillString (tenths); + } + /* check whether we need to remove the leading zero */ +@@ -760,16 +811,22 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i); + l = DynamicStrings_Length (s); + if (l < point) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l)); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l)); ++ } + } + /* re-insert the point */ + if (point >= 0) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (point == 0) +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s)); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ } + } + return s; + } +@@ -796,21 +853,35 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n) + /* remove '.' */ + point = DynamicStrings_Index (s, '.', 0); + if (point >= 0) +- if (point == 0) +- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0); +- else if (point < l) +- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0))); +- else +- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point); ++ { ++ if (point == 0) ++ { ++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0); ++ } ++ else if (point < l) ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0))); ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point); ++ } ++ } + else +- s = DynamicStrings_Dup (DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_Dup (DynamicStrings_Mark (s)); ++ } + l = DynamicStrings_Length (s); + i = 0; + if (l > 0) + { + /* skip over leading zeros */ + while ((i < l) && ((DynamicStrings_char (s, i)) == '0')) +- i += 1; ++ { ++ i += 1; ++ } + /* was the string full of zeros? */ + if ((i == l) && ((DynamicStrings_char (s, i-1)) == '0')) + { +@@ -822,9 +893,13 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n) + /* add a leading zero in case we need to overflow the carry */ + z = i; /* remember where we inserted zero */ + if (z == 0) /* remember where we inserted zero */ +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('0'), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('0'), DynamicStrings_Mark (s)); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), i, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), i, 0))); ++ } + n += 1; /* and increase the number of sig figs needed */ + l = DynamicStrings_Length (s); /* and increase the number of sig figs needed */ + while ((n > 1) && (i < l)) +@@ -838,44 +913,61 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n) + hundreths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+3); + s = t; + if ((StringConvert_stoc (hundreths)) >= 50) +- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ { ++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ } + hundreths = DynamicStrings_KillString (hundreths); + } + else if ((i+2) <= l) + { ++ /* avoid dangling else. */ + t = DynamicStrings_Dup (s); + tenths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+2); + s = t; + if ((StringConvert_stoc (tenths)) >= 5) +- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ { ++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i); ++ } + tenths = DynamicStrings_KillString (tenths); + } + /* check whether we need to remove the leading zero */ + if ((DynamicStrings_char (s, z)) == '0') + { + if (z == 0) +- s = DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0); ++ { ++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, z), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, z), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0))); ++ } + l = DynamicStrings_Length (s); + } + else +- point += 1; ++ { ++ point += 1; ++ } + if (i < l) + { + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i); + l = DynamicStrings_Length (s); + if (l < point) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l)); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l)); ++ } + } + /* re-insert the point */ + if (point >= 0) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (point == 0) +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s)); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ } + } + return s; + } +@@ -888,26 +980,36 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n) + static DynamicStrings_String carryOne (DynamicStrings_String s, unsigned int i) + { + if (i >= 0) +- if (IsDigit (DynamicStrings_char (s, (int) i))) +- { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if ((DynamicStrings_char (s, (int) i)) == '9') +- if (i == 0) ++ { ++ if (IsDigit (DynamicStrings_char (s, (int) i))) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if ((DynamicStrings_char (s, (int) i)) == '9') + { +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('1'), DynamicStrings_Mark (s)); +- return s; ++ if (i == 0) ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('1'), DynamicStrings_Mark (s)); ++ return s; ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); ++ return carryOne (s, i-1); ++ } + } + else + { +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); +- return carryOne (s, i-1); ++ if (i == 0) ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ( ((char) ( ((unsigned int) (DynamicStrings_char (s, (int) i)))+1))), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), ((char) ( ((unsigned int) (DynamicStrings_char (s, (int) i)))+1))), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); ++ } + } +- else +- if (i == 0) +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ((char) (((unsigned int) (DynamicStrings_char (s, (int) i)))+1)), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); +- else +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), (char) (((unsigned int) (DynamicStrings_char (s, (int) i)))+1)), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0))); +- } ++ } ++ } + return s; + } + +@@ -934,31 +1036,57 @@ DynamicStrings_String StringConvert_IntegerToString (int i, unsigned int width, + /* remember that -15 MOD 4 = 1 in Modula-2 */ + c = ((unsigned int ) (abs (i+1)))+1; + if (width > 0) +- return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower))); ++ { ++ return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower))); ++ } + else +- return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower))); ++ { ++ return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower))); ++ } + } + else +- s = DynamicStrings_InitString ((char *) "-", 1); ++ { ++ s = DynamicStrings_InitString ((char *) "-", 1); ++ } + i = -i; + } + else +- if (sign) +- s = DynamicStrings_InitString ((char *) "+", 1); +- else +- s = DynamicStrings_InitString ((char *) "", 0); ++ { ++ if (sign) ++ { ++ s = DynamicStrings_InitString ((char *) "+", 1); ++ } ++ else ++ { ++ s = DynamicStrings_InitString ((char *) "", 0); ++ } ++ } + if (i > (((int ) (base))-1)) +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) / base, 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) % base, 0, ' ', FALSE, base, lower))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) / base, 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) % base, 0, ' ', FALSE, base, lower))); ++ } + else +- if (i <= 9) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (((unsigned int ) (i))+((unsigned int) ('0')))))); +- else +- if (lower) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('a')))-10)))); ++ { ++ if (i <= 9) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (i))+ ((unsigned int) ('0'))))))); ++ } + else +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('A')))-10)))); ++ { ++ if (lower) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('a')))-10))))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('A')))-10))))); ++ } ++ } ++ } + if (width > (DynamicStrings_Length (s))) +- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), DynamicStrings_Mark (s)); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), DynamicStrings_Mark (s)); ++ } + return s; + } + +@@ -978,17 +1106,31 @@ DynamicStrings_String StringConvert_CardinalToString (unsigned int c, unsigned i + + s = DynamicStrings_InitString ((char *) "", 0); + if (c > (base-1)) +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_CardinalToString (c / base, 0, ' ', base, lower))), DynamicStrings_Mark (StringConvert_CardinalToString (c % base, 0, ' ', base, lower))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_CardinalToString (c / base, 0, ' ', base, lower))), DynamicStrings_Mark (StringConvert_CardinalToString (c % base, 0, ' ', base, lower))); ++ } + else +- if (c <= 9) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (c+((unsigned int) ('0')))))); +- else +- if (lower) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((c+((unsigned int) ('a')))-10)))); ++ { ++ if (c <= 9) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (c+ ((unsigned int) ('0'))))))); ++ } + else +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((c+((unsigned int) ('A')))-10)))); ++ { ++ if (lower) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((c+ ((unsigned int) ('a')))-10))))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((c+ ((unsigned int) ('A')))-10))))); ++ } ++ } ++ } + if (width > (DynamicStrings_Length (s))) +- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ } + return s; + } + +@@ -1019,7 +1161,9 @@ int StringConvert_StringToInteger (DynamicStrings_String s, unsigned int base, u + while (((DynamicStrings_char (s, (int) n)) == '-') || ((DynamicStrings_char (s, (int) n)) == '+')) + { + if ((DynamicStrings_char (s, (int) n)) == '-') +- negative = ! negative; ++ { ++ negative = ! negative; ++ } + n += 1; + } + while ((n < l) && ((IsDecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)))) +@@ -1030,9 +1174,13 @@ int StringConvert_StringToInteger (DynamicStrings_String s, unsigned int base, u + } + s = DynamicStrings_KillString (s); + if (negative) +- return -((int ) (Min (((unsigned int ) (INT_MAX))+1, c))); ++ { ++ return -((int ) (Min (((unsigned int ) (INT_MAX))+1, c))); ++ } + else +- return (int ) (Min ((unsigned int) INT_MAX, c)); ++ { ++ return (int ) (Min ((unsigned int) INT_MAX, c)); ++ } + } + + +@@ -1058,7 +1206,9 @@ unsigned int StringConvert_StringToCardinal (DynamicStrings_String s, unsigned i + { + /* parse leading + */ + while ((DynamicStrings_char (s, (int) n)) == '+') +- n += 1; ++ { ++ n += 1; ++ } + while ((n < l) && ((IsDecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)))) + { + (*found) = TRUE; +@@ -1095,31 +1245,57 @@ DynamicStrings_String StringConvert_LongIntegerToString (long int i, unsigned in + is very likely MAX(LONGINT), it is safer not to assume this is the case */ + c = ((long unsigned int ) (labs (i+1)))+1; + if (width > 0) +- return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower))); ++ { ++ return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower))); ++ } + else +- return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower))); ++ { ++ return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower))); ++ } + } + else +- s = DynamicStrings_InitString ((char *) "-", 1); ++ { ++ s = DynamicStrings_InitString ((char *) "-", 1); ++ } + i = -i; + } + else +- if (sign) +- s = DynamicStrings_InitString ((char *) "+", 1); +- else +- s = DynamicStrings_InitString ((char *) "", 0); ++ { ++ if (sign) ++ { ++ s = DynamicStrings_InitString ((char *) "+", 1); ++ } ++ else ++ { ++ s = DynamicStrings_InitString ((char *) "", 0); ++ } ++ } + if (i > ((long int ) (base-1))) +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_LongIntegerToString (i / ((long int ) (base)), 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_LongIntegerToString (i % ((long int ) (base)), 0, ' ', FALSE, base, lower))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_LongIntegerToString (i / ((long int ) (base)), 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_LongIntegerToString (i % ((long int ) (base)), 0, ' ', FALSE, base, lower))); ++ } + else +- if (i <= 9) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (((unsigned int ) (i))+((unsigned int) ('0')))))); +- else +- if (lower) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('a')))-10)))); ++ { ++ if (i <= 9) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (i))+ ((unsigned int) ('0'))))))); ++ } + else +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('A')))-10)))); ++ { ++ if (lower) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('a')))-10))))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('A')))-10))))); ++ } ++ } ++ } + if (width > (DynamicStrings_Length (s))) +- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ } + return s; + } + +@@ -1150,7 +1326,9 @@ long int StringConvert_StringToLongInteger (DynamicStrings_String s, unsigned in + while (((DynamicStrings_char (s, (int) n)) == '-') || ((DynamicStrings_char (s, (int) n)) == '+')) + { + if ((DynamicStrings_char (s, (int) n)) == '-') +- negative = ! negative; ++ { ++ negative = ! negative; ++ } + n += 1; + } + while ((n < l) && ((IsDecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)))) +@@ -1161,9 +1339,13 @@ long int StringConvert_StringToLongInteger (DynamicStrings_String s, unsigned in + } + s = DynamicStrings_KillString (s); + if (negative) +- return -((long int ) (LongMin (((long unsigned int ) (LONG_MAX))+1, c))); ++ { ++ return -((long int ) (LongMin (((long unsigned int ) (LONG_MAX))+1, c))); ++ } + else +- return (long int ) (LongMin ((long unsigned int) LONG_MAX, c)); ++ { ++ return (long int ) (LongMin ((long unsigned int) LONG_MAX, c)); ++ } + } + + +@@ -1184,17 +1366,31 @@ DynamicStrings_String StringConvert_LongCardinalToString (long unsigned int c, u + + s = DynamicStrings_InitString ((char *) "", 0); + if (c > ((long unsigned int ) (base-1))) +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_LongCardinalToString (c / ((long unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_LongCardinalToString (c % ((long unsigned int ) (base)), 0, ' ', base, lower)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_LongCardinalToString (c / ((long unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_LongCardinalToString (c % ((long unsigned int ) (base)), 0, ' ', base, lower)); ++ } + else +- if (c <= 9) +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) (((unsigned int ) (c))+((unsigned int) ('0'))))); +- else +- if (lower) +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('a')))-10))); ++ { ++ if (c <= 9) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (c))+ ((unsigned int) ('0')))))); ++ } + else +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('A')))-10))); ++ { ++ if (lower) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('a')))-10)))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('A')))-10)))); ++ } ++ } ++ } + if (width > (DynamicStrings_Length (s))) +- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ } + return s; + } + +@@ -1221,7 +1417,9 @@ long unsigned int StringConvert_StringToLongCardinal (DynamicStrings_String s, u + { + /* parse leading + */ + while ((DynamicStrings_char (s, (int) n)) == '+') +- n += 1; ++ { ++ n += 1; ++ } + while ((n < l) && ((IsDecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)))) + { + (*found) = TRUE; +@@ -1250,17 +1448,31 @@ DynamicStrings_String StringConvert_ShortCardinalToString (short unsigned int c, + + s = DynamicStrings_InitString ((char *) "", 0); + if (((unsigned int ) (c)) > (base-1)) +- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_ShortCardinalToString (c / ((short unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_ShortCardinalToString (c % ((short unsigned int ) (base)), 0, ' ', base, lower)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_ShortCardinalToString (c / ((short unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_ShortCardinalToString (c % ((short unsigned int ) (base)), 0, ' ', base, lower)); ++ } + else +- if (c <= 9) +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) (((unsigned int ) (c))+((unsigned int) ('0'))))); +- else +- if (lower) +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('a')))-10))); ++ { ++ if (c <= 9) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (c))+ ((unsigned int) ('0')))))); ++ } + else +- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('A')))-10))); ++ { ++ if (lower) ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('a')))-10)))); ++ } ++ else ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('A')))-10)))); ++ } ++ } ++ } + if (width > (DynamicStrings_Length (s))) +- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s); ++ } + return s; + } + +@@ -1287,7 +1499,9 @@ short unsigned int StringConvert_StringToShortCardinal (DynamicStrings_String s, + { + /* parse leading + */ + while ((DynamicStrings_char (s, (int) n)) == '+') +- n += 1; ++ { ++ n += 1; ++ } + while ((n < l) && ((IsDecimalDigitValidShort (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidShort (DynamicStrings_char (s, (int) n), base, &c)))) + { + (*found) = TRUE; +@@ -1471,7 +1685,9 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in + r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign); + } + else +- r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign); ++ { ++ r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign); ++ } + s = DynamicStrings_InitStringCharStar (r); + libc_free (r); + l = DynamicStrings_Length (s); +@@ -1484,7 +1700,9 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in + { + FractionWidth -= 1; + if (((int ) (FractionWidth)) > (point-l)) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), FractionWidth))); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), FractionWidth))); ++ } + } + } + else if (point < 0) +@@ -1494,43 +1712,62 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in + l = DynamicStrings_Length (s); + s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (s)); + if (! maxprecision && (l < ((int ) (FractionWidth)))) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-l))); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-l))); ++ } + } + else + { ++ /* avoid dangling else. */ + if (point == 0) +- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ } + else +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0))); ++ } + if (! maxprecision && ((l-point) < ((int ) (FractionWidth)))) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-(l-point)))); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-(l-point)))); ++ } + } + if ((DynamicStrings_Length (s)) > TotalWidth) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (TotalWidth > 0) +- if (sign) +- { +- s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth-1); +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s)); +- sign = FALSE; +- } +- else +- /* minus 1 because all results will include a '.' */ +- s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth); ++ { ++ if (sign) ++ { ++ s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth-1); ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s)); ++ sign = FALSE; ++ } ++ else ++ { ++ /* minus 1 because all results will include a '.' */ ++ s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth); ++ } ++ } + else +- if (sign) +- { +- s = StringConvert_ToDecimalPlaces (s, FractionWidth); +- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s)); +- sign = FALSE; +- } +- else +- /* minus 1 because all results will include a '.' */ +- s = StringConvert_ToDecimalPlaces (s, FractionWidth); ++ { ++ if (sign) ++ { ++ s = StringConvert_ToDecimalPlaces (s, FractionWidth); ++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s)); ++ sign = FALSE; ++ } ++ else ++ { ++ /* minus 1 because all results will include a '.' */ ++ s = StringConvert_ToDecimalPlaces (s, FractionWidth); ++ } ++ } + } + if ((DynamicStrings_Length (s)) < TotalWidth) +- s = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (' ')), TotalWidth-(DynamicStrings_Length (s))), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (' ')), TotalWidth-(DynamicStrings_Length (s))), DynamicStrings_Mark (s)); ++ } + return s; + } + +@@ -1585,17 +1822,25 @@ DynamicStrings_String StringConvert_ToSigFig (DynamicStrings_String s, unsigned + Assert ((IsDigit (DynamicStrings_char (s, 0))) || ((DynamicStrings_char (s, 0)) == '.'), (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/StringConvert.mod", 54, 1215, (char *) "ToSigFig", 8); + point = DynamicStrings_Index (s, '.', 0); + if (point < 0) +- poTen = DynamicStrings_Length (s); ++ { ++ poTen = DynamicStrings_Length (s); ++ } + else +- poTen = point; ++ { ++ poTen = point; ++ } + s = doSigFig (s, n); + /* if the last character is '.' remove it */ + if (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, -1)) == '.')) +- return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); ++ { ++ return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); ++ } + else + { + if (poTen > (DynamicStrings_Length (s))) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), poTen-(DynamicStrings_Length (s))))); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), poTen-(DynamicStrings_Length (s))))); ++ } + return s; + } + } +@@ -1630,16 +1875,24 @@ DynamicStrings_String StringConvert_ToDecimalPlaces (DynamicStrings_String s, un + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (n > 0) +- return DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ('.'))), DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), n)); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ('.'))), DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), n)); ++ } + else +- return s; ++ { ++ return s; ++ } + } + s = doDecimalPlaces (s, n); + /* if the last character is '.' remove it */ + if (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, -1)) == '.')) +- return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); ++ { ++ return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); ++ } + else +- return s; ++ { ++ return s; ++ } + } + + void _M2_StringConvert_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GSysStorage.c ++++ b/src/gcc/gm2/mc-boot/GSysStorage.c +@@ -69,7 +69,9 @@ void SysStorage_ALLOCATE (void * *a, unsigned int Size) + { + (*a) = libc_malloc ((size_t) Size); + if ((*a) == NULL) +- Debug_Halt ((char *) "out of memory error", 19, 31, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51); ++ { ++ Debug_Halt ((char *) "out of memory error", 19, 31, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51); ++ } + } + + void SysStorage_DEALLOCATE (void * *a, unsigned int Size) +@@ -90,12 +92,16 @@ void SysStorage_DEALLOCATE (void * *a, unsigned int Size) + void SysStorage_REALLOCATE (void * *a, unsigned int Size) + { + if ((*a) == NULL) +- SysStorage_ALLOCATE (a, Size); ++ { ++ SysStorage_ALLOCATE (a, Size); ++ } + else + { + (*a) = libc_realloc ((*a), (size_t) Size); + if ((*a) == NULL) +- Debug_Halt ((char *) "out of memory error", 19, 60, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51); ++ { ++ Debug_Halt ((char *) "out of memory error", 19, 60, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51); ++ } + } + } + +@@ -114,7 +120,9 @@ unsigned int SysStorage_Available (unsigned int Size) + + a = libc_malloc ((size_t) Size); + if (a == NULL) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + libc_free (a); +--- a/src/gcc/gm2/mc-boot/GTimeString.c ++++ b/src/gcc/gm2/mc-boot/GTimeString.c +@@ -50,14 +50,18 @@ void TimeString_GetTimeString (char *a, unsigned int _a_high) + Addr = wrapc_strtime (); + i = 0; + if (Addr != NULL) +- while ((i < (_a_high)) && ((*Addr) != ASCII_nul)) +- { +- a[i] = (*Addr); +- i += 1; +- Addr += 1; +- } +- if (i < (_a_high)) +- a[i] = ASCII_nul; ++ { ++ while ((i < _a_high) && ((*Addr) != ASCII_nul)) ++ { ++ a[i] = (*Addr); ++ i += 1; ++ Addr += 1; ++ } ++ } ++ if (i < _a_high) ++ { ++ a[i] = ASCII_nul; ++ } + } + + void _M2_TimeString_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/Galists.c ++++ b/src/gcc/gm2/mc-boot/Galists.c +@@ -181,7 +181,9 @@ void alists_killList (alists_alist *l) + if ((*l) != NULL) + { + if ((*l)->next != NULL) +- alists_killList (&(*l)->next); ++ { ++ alists_killList (&(*l)->next); ++ } + Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1)); + } + } +@@ -199,9 +201,13 @@ void alists_putItemIntoList (alists_alist l, void * c) + l->elements.array[l->noOfelements-1] = c; + } + else if (l->next != NULL) +- alists_putItemIntoList (l->next, c); ++ { ++ /* avoid dangling else. */ ++ alists_putItemIntoList (l->next, c); ++ } + else + { ++ /* avoid dangling else. */ + l->next = alists_initList (); + alists_putItemIntoList (l->next, c); + } +@@ -217,9 +223,13 @@ void * alists_getItemFromList (alists_alist l, unsigned int n) + while (l != NULL) + { + if (n <= l->noOfelements) +- return l->elements.array[n-1]; ++ { ++ return l->elements.array[n-1]; ++ } + else +- n -= l->noOfelements; ++ { ++ n -= l->noOfelements; ++ } + l = l->next; + } + return 0; +@@ -237,15 +247,23 @@ unsigned int alists_getIndexOfList (alists_alist l, void * c) + unsigned int i; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + i = 1; + while (i <= l->noOfelements) +- if (l->elements.array[i-1] == c) +- return i; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return i; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + return l->noOfelements+(alists_getIndexOfList (l->next, c)); + } + } +@@ -260,7 +278,9 @@ unsigned int alists_noOfItemsInList (alists_alist l) + unsigned int t; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + t = 0; +@@ -281,7 +301,9 @@ unsigned int alists_noOfItemsInList (alists_alist l) + void alists_includeItemIntoList (alists_alist l, void * c) + { + if (! (alists_isItemInList (l, c))) +- alists_putItemIntoList (l, c); ++ { ++ alists_putItemIntoList (l, c); ++ } + } + + +@@ -303,9 +325,13 @@ void alists_removeItemFromList (alists_alist l, void * c) + do { + i = 1; + while ((i <= l->noOfelements) && (l->elements.array[i-1] != c)) +- i += 1; ++ { ++ i += 1; ++ } + if ((i <= l->noOfelements) && (l->elements.array[i-1] == c)) +- found = TRUE; ++ { ++ found = TRUE; ++ } + else + { + p = l; +@@ -313,7 +339,9 @@ void alists_removeItemFromList (alists_alist l, void * c) + } + } while (! ((l == NULL) || found)); + if (found) +- removeItem (p, l, i); ++ { ++ removeItem (p, l, i); ++ } + } + } + +@@ -329,10 +357,16 @@ unsigned int alists_isItemInList (alists_alist l, void * c) + do { + i = 1; + while (i <= l->noOfelements) +- if (l->elements.array[i-1] == c) +- return TRUE; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return TRUE; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + l = l->next; + } while (! (l == NULL)); + return FALSE; +--- a/src/gcc/gm2/mc-boot/Gdecl.c ++++ b/src/gcc/gm2/mc-boot/Gdecl.c +@@ -5,20 +5,19 @@ Contributed by Gaius Mulley . + + This file is part of GNU Modula-2. + +-GNU Modula-2 is free software; you can redistribute it and/or modify it under +-the terms of the GNU General Public License as published by the Free +-Software Foundation; either version 3, or (at your option) any later +-version. ++GNU Modula-2 is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. + +-GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +-WARRANTY; without even the implied warranty of MERCHANTABILITY or +-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +-for more details. ++GNU Modula-2 is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. + +-You should have received a copy of the GNU General Public License along +-with gm2; see the file COPYING. If not, write to the Free Software +-Foundation, 51 Franklin Street, Fifth Floor, +-Boston, MA 02110-1301, USA. */ ++You should have received a copy of the GNU General Public License ++along with GNU Modula-2; see the file COPYING3. If not see ++. */ + + # if !defined (PROC_D) + # define PROC_D +@@ -141,6 +140,9 @@ typedef struct StdIO_ProcRead_p StdIO_ProcRead; + # define debugDecl FALSE + # define caseException TRUE + # define returnException TRUE ++# define forceCompoundStatement TRUE ++typedef struct intrinsicT_r intrinsicT; ++ + typedef struct fixupInfo_r fixupInfo; + + typedef struct explistT_r explistT; +@@ -649,6 +651,13 @@ struct _T10_r { + alists_alist next; + }; + ++struct intrinsicT_r { ++ decl_node args; ++ unsigned int noArgs; ++ decl_node type; ++ commentPair intrinsicComment; ++ }; ++ + struct funccallT_r { + decl_node function; + decl_node args; +@@ -844,6 +853,7 @@ struct DebugInfo_r { + struct _T1_r { + nodeT kind; /* case tag */ + union { ++ intrinsicT intrinsicF; + explistT explistF; + exitT exitF; + returnT returnF; +@@ -2692,11 +2702,11 @@ unsigned int mcOptions_getDebugTopological (void); + DynamicStrings_String mcOptions_getHPrefix (void); + unsigned int mcOptions_getIgnoreFQ (void); + void mcOptions_writeGPLheader (FIO_File f); +-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s); +-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high); +-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); +-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); +-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); ++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt); ++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high); ++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high); ++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high); ++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high); + ssize_t libc_write (int d, void * buf, size_t nbytes); + ssize_t libc_read (int d, void * buf, size_t nbytes); + int libc_system (void * a); +@@ -3667,10 +3677,38 @@ static decl_node doMakeConstExp (void); + static unsigned int isAnyType (decl_node n); + + /* +- makeCast - ++ makeVal - creates a VAL (type, expression) node. ++*/ ++ ++static decl_node makeVal (decl_node params); ++ ++/* ++ makeCast - creates a cast node TYPENAME (expr). + */ + + static decl_node makeCast (decl_node c, decl_node p); ++static decl_node makeIntrinsicProc (nodeT k, unsigned int noArgs, decl_node p); ++ ++/* ++ makeIntrinsicUnaryType - ++*/ ++ ++static decl_node makeIntrinsicUnaryType (nodeT k, decl_node paramList, decl_node returnType); ++ ++/* ++ makeIntrinsicBinaryType - ++*/ ++ ++static decl_node makeIntrinsicBinaryType (nodeT k, decl_node paramList, decl_node returnType); ++ ++/* ++ checkIntrinsic - checks to see if the function call to, c, with ++ parameter list, n, is really an intrinic. If it ++ is an intrinic then an intrinic node is created ++ and returned. Otherwise NIL is returned. ++*/ ++ ++static decl_node checkIntrinsic (decl_node c, decl_node n); + + /* + isFuncCall - returns TRUE if, n, is a function/procedure call. +@@ -3732,6 +3770,12 @@ static void out3 (char *a_, unsigned int _a_high, unsigned int l, nameKey_Name n + + static unsigned int isUnary (decl_node n); + ++/* ++ isBinary - returns TRUE if, n, is an binary node. ++*/ ++ ++static unsigned int isBinary (decl_node n); ++ + /* + makeUnary - create a unary expression node with, e, as the argument + and res as the return type. +@@ -3770,10 +3814,10 @@ static decl_node resolveString (decl_node n); + static decl_node foldBinary (nodeT k, decl_node l, decl_node r, decl_node res); + + /* +- makeBinary - create a binary node with left/right/result type: l, r and res. ++ makeBinary - create a binary node with left/right/result type: l, r and resultType. + */ + +-static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node res); ++static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node resultType); + + /* + doMakeBinary - returns a binary node containing left/right/result values +@@ -5097,7 +5141,8 @@ static void doMinC (mcPretty_pretty p, decl_node n); + static void doMaxC (mcPretty_pretty p, decl_node n); + + /* +- isIntrinsic - returns if, n, is an instrinsic procedure. ++ isIntrinsic - returns if, n, is an intrinsic procedure. ++ The intrinsic functions are represented as unary and binary nodes. + */ + + static unsigned int isIntrinsic (decl_node n); +@@ -5132,6 +5177,24 @@ static void doCmplx (mcPretty_pretty p, decl_node n); + + static void doIntrinsicC (mcPretty_pretty p, decl_node n); + ++/* ++ isIntrinsicFunction - returns true if, n, is an instrinsic function. ++*/ ++ ++static unsigned int isIntrinsicFunction (decl_node n); ++ ++/* ++ doSizeC - ++*/ ++ ++static void doSizeC (mcPretty_pretty p, decl_node n); ++ ++/* ++ doConvertC - ++*/ ++ ++static void doConvertC (mcPretty_pretty p, decl_node n, char *conversion_, unsigned int _conversion_high); ++ + /* + getFuncFromExpr - + */ +@@ -5869,6 +5932,12 @@ static void visitVarargs (alists_alist v, decl_node n, nodeProcedure p); + + static void visitSetValue (alists_alist v, decl_node n, nodeProcedure p); + ++/* ++ visitIntrinsic - ++*/ ++ ++static void visitIntrinsic (alists_alist v, decl_node n, nodeProcedure p); ++ + /* + visitDependants - helper procedure function called from visitNode. + node n has just been visited, this procedure will +@@ -6419,7 +6488,9 @@ static decl_node newNode (nodeT k) + + Storage_ALLOCATE ((void **) &d, sizeof (_T1)); + if (d == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + d->kind = k; +@@ -6452,7 +6523,9 @@ static unsigned int isLocal (decl_node n) + + s = decl_getScope (n); + if (s != NULL) +- return decl_isProcedure (s); ++ { ++ return decl_isProcedure (s); ++ } + return FALSE; + } + +@@ -6479,7 +6552,9 @@ static void importEnumFields (decl_node m, decl_node n) + e = Indexing_GetIndice (n->enumerationF.listOfSons, i); + r = decl_import (m, e); + if (e != r) +- mcMetaError_metaError2 ((char *) "enumeration field {%1ad} cannot be imported implicitly into {%2d} due to a name clash", 85, (unsigned char *) &e, (sizeof (e)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "enumeration field {%1ad} cannot be imported implicitly into {%2d} due to a name clash", 85, (unsigned char *) &e, (sizeof (e)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ } + i += 1; + } + } +@@ -6656,7 +6731,9 @@ static decl_node addTo (scopeT *decls, decl_node d) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if ((symbolKey_getSymKey ((*decls).symbols, n)) == NULL) +- symbolKey_putSymKey ((*decls).symbols, n, (void *) d); ++ { ++ symbolKey_putSymKey ((*decls).symbols, n, (void *) d); ++ } + else + { + mcMetaError_metaError1 ((char *) "{%1DMad} was declared", 21, (unsigned char *) &d, (sizeof (d)-1)); +@@ -6664,16 +6741,27 @@ static decl_node addTo (scopeT *decls, decl_node d) + } + } + if (decl_isConst (d)) +- Indexing_IncludeIndiceIntoIndex ((*decls).constants, (void *) d); ++ { ++ Indexing_IncludeIndiceIntoIndex ((*decls).constants, (void *) d); ++ } + else if (decl_isVar (d)) +- Indexing_IncludeIndiceIntoIndex ((*decls).variables, (void *) d); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex ((*decls).variables, (void *) d); ++ } + else if (decl_isType (d)) +- Indexing_IncludeIndiceIntoIndex ((*decls).types, (void *) d); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex ((*decls).types, (void *) d); ++ } + else if (decl_isProcedure (d)) + { ++ /* avoid dangling else. */ + Indexing_IncludeIndiceIntoIndex ((*decls).procedures, (void *) d); + if (debugDecl) +- libc_printf ((char *) "%d procedures on the dynamic array\\n", 36, Indexing_HighIndice ((*decls).procedures)); ++ { ++ libc_printf ((char *) "%d procedures on the dynamic array\\n", 36, Indexing_HighIndice ((*decls).procedures)); ++ } + } + return d; + } +@@ -6713,6 +6801,7 @@ static decl_node addToScope (decl_node n) + } + else if (decl_isModule (s)) + { ++ /* avoid dangling else. */ + if (debugDecl) + { + outText (doP, (char *) "adding ", 7); +@@ -6723,6 +6812,7 @@ static decl_node addToScope (decl_node n) + } + else if (decl_isDef (s)) + { ++ /* avoid dangling else. */ + if (debugDecl) + { + outText (doP, (char *) "adding ", 7); +@@ -6734,6 +6824,7 @@ static decl_node addToScope (decl_node n) + } + else if (decl_isImp (s)) + { ++ /* avoid dangling else. */ + if (debugDecl) + { + outText (doP, (char *) "adding ", 7); +@@ -6754,7 +6845,9 @@ static void addModuleToScope (decl_node m, decl_node i) + { + mcDebug_assert ((decl_getDeclScope ()) == m); + if ((decl_lookupSym (decl_getSymName (i))) == NULL) +- i = addToScope (i); ++ { ++ i = addToScope (i); ++ } + } + + +@@ -6766,11 +6859,19 @@ static void completedEnum (decl_node n) + { + mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n))); + if (decl_isDef (n)) +- n->defF.enumsComplete = TRUE; ++ { ++ n->defF.enumsComplete = TRUE; ++ } + else if (decl_isImp (n)) +- n->impF.enumsComplete = TRUE; ++ { ++ /* avoid dangling else. */ ++ n->impF.enumsComplete = TRUE; ++ } + else if (decl_isModule (n)) +- n->moduleF.enumsComplete = TRUE; ++ { ++ /* avoid dangling else. */ ++ n->moduleF.enumsComplete = TRUE; ++ } + } + + +@@ -6837,14 +6938,16 @@ static decl_node checkPtr (decl_node n) + decl_node p; + + if (lang == ansiCP) +- if (decl_isPointer (n)) +- { +- s = tempName (); +- p = decl_makeType (nameKey_makekey (DynamicStrings_string (s))); +- decl_putType (p, n); +- s = DynamicStrings_KillString (s); +- return p; +- } ++ { ++ if (decl_isPointer (n)) ++ { ++ s = tempName (); ++ p = decl_makeType (nameKey_makekey (DynamicStrings_string (s))); ++ decl_putType (p, n); ++ s = DynamicStrings_KillString (s); ++ return p; ++ } ++ } + return n; + } + +@@ -6993,7 +7096,9 @@ static unsigned int isIdentList (decl_node n) + static unsigned int identListLen (decl_node n) + { + if (n == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + mcDebug_assert (isIdentList (n)); +@@ -7020,7 +7125,9 @@ static void checkParameters (decl_node p, decl_node i, decl_node type, unsigned + static void checkMakeVariables (decl_node n, decl_node i, decl_node type, unsigned int isvar) + { + if (((decl_isImp (currentModule)) || (decl_isModule (currentModule))) && ! n->procedureF.built) +- makeVariablesFromParameters (n, i, type, isvar); ++ { ++ makeVariablesFromParameters (n, i, type, isvar); ++ } + } + + +@@ -7097,7 +7204,9 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type, + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if ((symbolKey_getSymKey (r->recordF.localSymbols, tag)) == nameKey_NulName) +- symbolKey_putSymKey (r->recordF.localSymbols, tag, (void *) n); ++ { ++ symbolKey_putSymKey (r->recordF.localSymbols, tag, (void *) n); ++ } + else + { + f = symbolKey_getSymKey (r->recordF.localSymbols, tag); +@@ -7111,7 +7220,9 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type, + p = getParent (r); + mcDebug_assert (p->kind == record); + if (tag != nameKey_NulName) +- symbolKey_putSymKey (p->recordF.localSymbols, tag, (void *) n); ++ { ++ symbolKey_putSymKey (p->recordF.localSymbols, tag, (void *) n); ++ } + break; + + +@@ -7246,11 +7357,19 @@ static void addEnumToModule (decl_node m, decl_node e) + mcDebug_assert ((decl_isEnumeration (e)) || (decl_isEnumerationField (e))); + mcDebug_assert (((decl_isModule (m)) || (decl_isDef (m))) || (decl_isImp (m))); + if (decl_isModule (m)) +- Indexing_IncludeIndiceIntoIndex (m->moduleF.enumFixup.info, (void *) e); ++ { ++ Indexing_IncludeIndiceIntoIndex (m->moduleF.enumFixup.info, (void *) e); ++ } + else if (decl_isDef (m)) +- Indexing_IncludeIndiceIntoIndex (m->defF.enumFixup.info, (void *) e); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->defF.enumFixup.info, (void *) e); ++ } + else if (decl_isImp (m)) +- Indexing_IncludeIndiceIntoIndex (m->impF.enumFixup.info, (void *) e); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->impF.enumFixup.info, (void *) e); ++ } + } + + +@@ -7309,12 +7428,16 @@ static decl_node doMakeEnumField (decl_node e, nameKey_Name n) + mcDebug_assert ((Indexing_GetIndice (e->enumerationF.listOfSons, e->enumerationF.noOfElements)) == f); + addEnumToModule (currentModule, f); + if (e->enumerationF.low == NULL) +- e->enumerationF.low = f; ++ { ++ e->enumerationF.low = f; ++ } + e->enumerationF.high = f; + return addToScope (f); + } + else +- mcMetaError_metaErrors2 ((char *) "cannot create enumeration field {%1k} as the name is already in use", 67, (char *) "{%2DMad} was declared elsewhere", 31, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &f, (sizeof (f)-1)); ++ { ++ mcMetaError_metaErrors2 ((char *) "cannot create enumeration field {%1k} as the name is already in use", 67, (char *) "{%2DMad} was declared elsewhere", 31, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &f, (sizeof (f)-1)); ++ } + ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); + } + +@@ -7338,9 +7461,15 @@ static decl_node getExpList (decl_node p, unsigned int n) + + static unsigned int expListLen (decl_node p) + { +- mcDebug_assert (p != NULL); +- mcDebug_assert (decl_isExpList (p)); +- return Indexing_HighIndice (p->explistF.exp); ++ if (p == NULL) ++ { ++ return 0; ++ } ++ else ++ { ++ mcDebug_assert (decl_isExpList (p)); ++ return Indexing_HighIndice (p->explistF.exp); ++ } + } + + +@@ -7380,11 +7509,19 @@ static void addConstToModule (decl_node m, decl_node e) + { + mcDebug_assert (((decl_isModule (m)) || (decl_isDef (m))) || (decl_isImp (m))); + if (decl_isModule (m)) +- Indexing_IncludeIndiceIntoIndex (m->moduleF.constFixup.info, (void *) e); ++ { ++ Indexing_IncludeIndiceIntoIndex (m->moduleF.constFixup.info, (void *) e); ++ } + else if (decl_isDef (m)) +- Indexing_IncludeIndiceIntoIndex (m->defF.constFixup.info, (void *) e); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->defF.constFixup.info, (void *) e); ++ } + else if (decl_isImp (m)) +- Indexing_IncludeIndiceIntoIndex (m->impF.constFixup.info, (void *) e); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->impF.constFixup.info, (void *) e); ++ } + } + + +@@ -7441,16 +7578,215 @@ static unsigned int isAnyType (decl_node n) + + + /* +- makeCast - ++ makeVal - creates a VAL (type, expression) node. ++*/ ++ ++static decl_node makeVal (decl_node params) ++{ ++ mcDebug_assert (decl_isExpList (params)); ++ if ((expListLen (params)) == 2) ++ { ++ return makeBinary ((nodeT) val, getExpList (params, 1), getExpList (params, 2), getExpList (params, 1)); ++ } ++ else ++ { ++ M2RTS_HALT (-1); ++ } ++} ++ ++ ++/* ++ makeCast - creates a cast node TYPENAME (expr). + */ + + static decl_node makeCast (decl_node c, decl_node p) + { + mcDebug_assert (decl_isExpList (p)); + if ((expListLen (p)) == 1) +- return makeBinary ((nodeT) cast, c, getExpList (p, 1), c); ++ { ++ return makeBinary ((nodeT) cast, c, getExpList (p, 1), c); ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } ++} ++ ++static decl_node makeIntrinsicProc (nodeT k, unsigned int noArgs, decl_node p) ++{ ++ decl_node f; ++ ++ /* ++ makeIntrisicProc - ++ */ ++ f = newNode (k); ++ f->intrinsicF.args = p; ++ f->intrinsicF.noArgs = noArgs; ++ f->intrinsicF.type = NULL; ++ initPair (&f->intrinsicF.intrinsicComment); ++ return f; ++} ++ ++ ++/* ++ makeIntrinsicUnaryType - ++*/ ++ ++static decl_node makeIntrinsicUnaryType (nodeT k, decl_node paramList, decl_node returnType) ++{ ++ return makeUnary (k, getExpList (paramList, 1), returnType); ++} ++ ++ ++/* ++ makeIntrinsicBinaryType - ++*/ ++ ++static decl_node makeIntrinsicBinaryType (nodeT k, decl_node paramList, decl_node returnType) ++{ ++ return makeBinary (k, getExpList (paramList, 1), getExpList (paramList, 2), returnType); ++} ++ ++ ++/* ++ checkIntrinsic - checks to see if the function call to, c, with ++ parameter list, n, is really an intrinic. If it ++ is an intrinic then an intrinic node is created ++ and returned. Otherwise NIL is returned. ++*/ ++ ++static decl_node checkIntrinsic (decl_node c, decl_node n) ++{ ++ if (isAnyType (c)) ++ { ++ return makeCast (c, n); ++ } ++ else if (c == maxN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) max, n, (decl_node) NULL); ++ } ++ else if (c == minN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) min, n, (decl_node) NULL); ++ } ++ else if (c == haltN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) halt, expListLen (n), n); ++ } ++ else if (c == valN) ++ { ++ /* avoid dangling else. */ ++ return makeVal (n); ++ } ++ else if (c == adrN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) adr, n, addressN); ++ } ++ else if (c == sizeN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) size, n, cardinalN); ++ } ++ else if (c == tsizeN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) tsize, n, cardinalN); ++ } ++ else if (c == floatN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) float_, n, realN); ++ } ++ else if (c == truncN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) trunc, n, integerN); ++ } ++ else if (c == ordN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) ord, n, cardinalN); ++ } ++ else if (c == chrN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) chr, n, charN); ++ } ++ else if (c == capN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) cap, n, charN); ++ } ++ else if (c == absN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) abs_, n, (decl_node) NULL); ++ } ++ else if (c == imN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) im, n, (decl_node) NULL); ++ } ++ else if (c == reN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) re, n, (decl_node) NULL); ++ } ++ else if (c == cmplxN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicBinaryType ((nodeT) cmplx, n, (decl_node) NULL); ++ } ++ else if (c == highN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) high, n, cardinalN); ++ } ++ else if (c == incN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) inc, expListLen (n), n); ++ } ++ else if (c == decN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) dec, expListLen (n), n); ++ } ++ else if (c == inclN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) incl, expListLen (n), n); ++ } ++ else if (c == exclN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) excl, expListLen (n), n); ++ } ++ else if (c == newN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) new, 1, n); ++ } ++ else if (c == disposeN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) dispose, 1, n); ++ } ++ else if (c == lengthN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicUnaryType ((nodeT) length, n, cardinalN); ++ } ++ else if (c == throwN) ++ { ++ /* avoid dangling else. */ ++ return makeIntrinsicProc ((nodeT) throw, 1, n); ++ } ++ return NULL; + } + + +@@ -7499,9 +7835,14 @@ static decl_node lookupBase (nameKey_Name n) + + m = symbolKey_getSymKey (baseSymbols, n); + if (m == procN) +- keyc_useProc (); ++ { ++ keyc_useProc (); ++ } + else if (((m == complexN) || (m == longcomplexN)) || (m == shortcomplexN)) +- keyc_useComplex (); ++ { ++ /* avoid dangling else. */ ++ keyc_useComplex (); ++ } + return m; + } + +@@ -7620,7 +7961,6 @@ static unsigned int isUnary (decl_node n) + mcDebug_assert (n != NULL); + switch (n->kind) + { +- case throw: + case re: + case im: + case deref: +@@ -7651,22 +7991,64 @@ static unsigned int isUnary (decl_node n) + + + /* +- makeUnary - create a unary expression node with, e, as the argument +- and res as the return type. ++ isBinary - returns TRUE if, n, is an binary node. + */ + +-static decl_node makeUnary (nodeT k, decl_node e, decl_node res) ++static unsigned int isBinary (decl_node n) + { +- decl_node n; +- +- if (k == plus) +- return e; +- else +- { ++ mcDebug_assert (n != NULL); ++ switch (n->kind) ++ { ++ case cmplx: ++ case and: ++ case or: ++ case equal: ++ case notequal: ++ case less: ++ case greater: ++ case greequal: ++ case lessequal: ++ case val: ++ case cast: ++ case plus: ++ case sub: ++ case div_: ++ case mod: ++ case mult: ++ case divide: ++ case in: ++ return TRUE; ++ break; ++ ++ ++ default: ++ return FALSE; ++ break; ++ } ++} ++ ++ ++/* ++ makeUnary - create a unary expression node with, e, as the argument ++ and res as the return type. ++*/ ++ ++static decl_node makeUnary (nodeT k, decl_node e, decl_node res) ++{ ++ decl_node n; ++ ++ if (k == plus) ++ { ++ return e; ++ } ++ else ++ { + Storage_ALLOCATE ((void **) &n, sizeof (_T1)); + n->kind = k; + switch (n->kind) + { ++ case min: ++ case max: + case throw: + case re: + case im: +@@ -7714,16 +8096,25 @@ static unsigned int isLeafString (decl_node n) + static DynamicStrings_String getStringContents (decl_node n) + { + if (decl_isConst (n)) +- return getStringContents (n->constF.value); ++ { ++ return getStringContents (n->constF.value); ++ } + else if (decl_isLiteral (n)) + { ++ /* avoid dangling else. */ + M2RTS_HALT (-1); /* --fixme-- finish this. */ + return NULL; /* --fixme-- finish this. */ + } + else if (isString (n)) +- return getString (n); ++ { ++ /* avoid dangling else. */ ++ return getString (n); ++ } + else if (isConstExp (n)) +- return getStringContents (n->unaryF.arg); ++ { ++ /* avoid dangling else. */ ++ return getStringContents (n->unaryF.arg); ++ } + M2RTS_HALT (-1); + } + +@@ -7755,12 +8146,20 @@ static nameKey_Name addNames (decl_node a, decl_node b) + static decl_node resolveString (decl_node n) + { + while ((decl_isConst (n)) || (isConstExp (n))) +- if (decl_isConst (n)) +- n = n->constF.value; +- else +- n = n->unaryF.arg; ++ { ++ if (decl_isConst (n)) ++ { ++ n = n->constF.value; ++ } ++ else ++ { ++ n = n->unaryF.arg; ++ } ++ } + if (n->kind == plus) +- n = decl_makeString (addNames (resolveString (n->binaryF.left), resolveString (n->binaryF.right))); ++ { ++ n = decl_makeString (addNames (resolveString (n->binaryF.left), resolveString (n->binaryF.right))); ++ } + return n; + } + +@@ -7790,16 +8189,18 @@ static decl_node foldBinary (nodeT k, decl_node l, decl_node r, decl_node res) + + + /* +- makeBinary - create a binary node with left/right/result type: l, r and res. ++ makeBinary - create a binary node with left/right/result type: l, r and resultType. + */ + +-static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node res) ++static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node resultType) + { + decl_node n; + +- n = foldBinary (k, l, r, res); ++ n = foldBinary (k, l, r, resultType); + if (n == NULL) +- n = doMakeBinary (k, l, r, res); ++ { ++ n = doMakeBinary (k, l, r, resultType); ++ } + return n; + } + +@@ -8013,7 +8414,9 @@ static unsigned int isOrdinal (decl_node n) + static decl_node mixTypes (decl_node a, decl_node b) + { + if ((a == addressN) || (b == addressN)) +- return addressN; ++ { ++ return addressN; ++ } + return a; + } + +@@ -8025,7 +8428,9 @@ static decl_node mixTypes (decl_node a, decl_node b) + static decl_node doSetExprType (decl_node *t, decl_node n) + { + if ((*t) == NULL) +- (*t) = n; ++ { ++ (*t) = n; ++ } + return (*t); + } + +@@ -8037,17 +8442,27 @@ static decl_node doSetExprType (decl_node *t, decl_node n) + static decl_node getMaxMinType (decl_node n) + { + if ((decl_isVar (n)) || (decl_isConst (n))) +- return decl_getType (n); ++ { ++ return decl_getType (n); ++ } + else if (isConstExp (n)) + { ++ /* avoid dangling else. */ + n = getExprType (n->unaryF.arg); + if (n == bitsetN) +- return ztypeN; ++ { ++ return ztypeN; ++ } + else +- return n; ++ { ++ return n; ++ } + } + else +- return n; ++ { ++ /* avoid dangling else. */ ++ return n; ++ } + } + + +@@ -8058,82 +8473,7 @@ static decl_node getMaxMinType (decl_node n) + static decl_node doGetFuncType (decl_node n) + { + mcDebug_assert (isFuncCall (n)); +- if (isIntrinsic (n)) +- switch (n->funccallF.function->kind) +- { +- case max: +- case min: +- return getMaxMinType (getExpList (n->funccallF.args, 1)); +- break; +- +- case cast: +- case val: +- return getExpList (n->funccallF.args, 1); +- break; +- +- case adr: +- return addressN; +- break; +- +- case size: +- case tsize: +- case float_: +- return realN; +- break; +- +- case trunc: +- return integerN; +- break; +- +- case ord: +- return cardinalN; +- break; +- +- case chr: +- return charN; +- break; +- +- case cap: +- return charN; +- break; +- +- case re: +- case im: +- return realN; +- break; +- +- case cmplx: +- return complexN; +- break; +- +- case abs_: +- return getExprType (getExpList (n->funccallF.args, 1)); +- break; +- +- case high: +- return cardinalN; +- break; +- +- case halt: +- case inc: +- case dec: +- case incl: +- case excl: +- case new: +- case dispose: +- M2RTS_HALT (-1); +- break; +- +- case length: +- return cardinalN; +- break; +- +- +- default: +- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); +- } +- else +- return doSetExprType (&n->funccallF.type, decl_getType (n->funccallF.function)); ++ return doSetExprType (&n->funccallF.type, decl_getType (n->funccallF.function)); + } + + +@@ -8145,16 +8485,22 @@ static decl_node doGetExprType (decl_node n) + { + switch (n->kind) + { ++ case max: ++ case min: ++ return getMaxMinType (n->unaryF.arg); ++ break; ++ ++ case cast: ++ case val: ++ return doSetExprType (&n->binaryF.resultType, n->binaryF.left); ++ break; ++ + case halt: + case new: + case dispose: + return NULL; + break; + +- case length: +- return cardinalN; +- break; +- + case inc: + case dec: + case incl: +@@ -8372,18 +8718,13 @@ static decl_node doGetExprType (decl_node n) + M2RTS_HALT (-1); + break; + +- case cast: +- case val: +- /* expressions. */ +- return doSetExprType (&n->binaryF.resultType, n->binaryF.left); +- break; +- + case plus: + case sub: + case div_: + case mod: + case mult: + case divide: ++ /* expressions. */ + return doSetExprType (&n->binaryF.resultType, mixTypes (getExprType (n->binaryF.left), getExprType (n->binaryF.right))); + break; + +@@ -8489,10 +8830,14 @@ static decl_node getExprType (decl_node n) + decl_node t; + + if (((isFuncCall (n)) && ((decl_getType (n)) != NULL)) && (decl_isProcType (decl_skipType (decl_getType (n))))) +- return decl_getType (decl_skipType (decl_getType (n))); ++ { ++ return decl_getType (decl_skipType (decl_getType (n))); ++ } + t = decl_getType (n); + if (t == NULL) +- t = doGetExprType (n); ++ { ++ t = doGetExprType (n); ++ } + return t; + } + +@@ -8507,9 +8852,13 @@ static void openOutput (void) + + s = mcOptions_getOutputFile (); + if (DynamicStrings_EqualArray (s, (char *) "-", 1)) +- outputFile = FIO_StdOut; ++ { ++ outputFile = FIO_StdOut; ++ } + else +- outputFile = SFIO_OpenToWrite (s); ++ { ++ outputFile = SFIO_OpenToWrite (s); ++ } + mcStream_setDest (outputFile); + } + +@@ -8525,7 +8874,9 @@ static void closeOutput (void) + s = mcOptions_getOutputFile (); + outputFile = mcStream_combine (); + if (! (DynamicStrings_EqualArray (s, (char *) "-", 1))) +- FIO_Close (outputFile); ++ { ++ FIO_Close (outputFile); ++ } + } + + +@@ -8569,9 +8920,12 @@ static void doIncludeC (decl_node n) + } + /* no include in this case. */ + else if (mcOptions_getExtendedOpaque ()) +- {} /* empty. */ ++ { ++ /* avoid dangling else. */ ++ } + else if (decl_isDef (n)) + { ++ /* avoid dangling else. */ + mcPretty_print (doP, (char *) "# include \"", 13); + mcPretty_prints (doP, mcOptions_getHPrefix ()); + mcPretty_prints (doP, s); +@@ -8624,7 +8978,9 @@ static DynamicStrings_String getFQstring (decl_node n) + DynamicStrings_String s; + + if (((! (decl_isExported (n))) || (mcOptions_getIgnoreFQ ())) || (isDefForC (decl_getScope (n)))) +- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))); ++ { ++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))); ++ } + else + { + i = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))); +@@ -8644,7 +9000,9 @@ static DynamicStrings_String getFQDstring (decl_node n, unsigned int scopes) + DynamicStrings_String s; + + if ((! (decl_isExported (n))) || (mcOptions_getIgnoreFQ ())) +- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (getDName (n, scopes))); ++ { ++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (getDName (n, scopes))); ++ } + else + { + /* we assume a qualified name will never conflict. */ +@@ -8662,9 +9020,13 @@ static DynamicStrings_String getFQDstring (decl_node n, unsigned int scopes) + static DynamicStrings_String getString (decl_node n) + { + if ((decl_getSymName (n)) == nameKey_NulName) +- return DynamicStrings_InitString ((char *) "", 0); ++ { ++ return DynamicStrings_InitString ((char *) "", 0); ++ } + else +- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))); ++ { ++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))); ++ } + } + + +@@ -8773,6 +9135,10 @@ static unsigned int needsParen (decl_node n) + return TRUE; + break; + ++ case abs_: ++ return FALSE; ++ break; ++ + case plus: + case sub: + case div_: +@@ -8819,6 +9185,9 @@ static unsigned int needsParen (decl_node n) + return FALSE; + break; + ++ case loc: ++ case byte: ++ case word: + case type: + case char_: + case cardinal: +@@ -8871,10 +9240,14 @@ static void doUnary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_n + memcpy (op, op_, _op_high+1); + + if (l) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + mcPretty_print (p, (char *) op, _op_high); + if (r) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + if (needsParen (expr)) + { + outText (p, (char *) "(", 1); +@@ -8882,7 +9255,9 @@ static void doUnary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_n + outText (p, (char *) ")", 1); + } + else +- doExprC (p, expr); ++ { ++ doExprC (p, expr); ++ } + } + + +@@ -8899,7 +9274,9 @@ static void doSetSub (mcPretty_pretty p, decl_node left, decl_node right) + outText (p, (char *) ")", 1); + } + else +- doExprC (p, left); ++ { ++ doExprC (p, left); ++ } + mcPretty_setNeedSpace (p); + outText (p, (char *) "&", 1); + mcPretty_setNeedSpace (p); +@@ -8930,51 +9307,55 @@ static void doPolyBinary (mcPretty_pretty p, nodeT op, decl_node left, decl_node + lt = decl_skipType (getExprType (left)); + rt = decl_skipType (getExprType (right)); + if (((lt != NULL) && ((decl_isSet (lt)) || (isBitset (lt)))) || ((rt != NULL) && ((decl_isSet (rt)) || (isBitset (rt))))) +- switch (op) +- { +- case plus: +- doBinary (p, (char *) "|", 1, left, right, l, r, FALSE); +- break; ++ { ++ switch (op) ++ { ++ case plus: ++ doBinary (p, (char *) "|", 1, left, right, l, r, FALSE); ++ break; + +- case sub: +- doSetSub (p, left, right); +- break; ++ case sub: ++ doSetSub (p, left, right); ++ break; + +- case mult: +- doBinary (p, (char *) "&", 1, left, right, l, r, FALSE); +- break; ++ case mult: ++ doBinary (p, (char *) "&", 1, left, right, l, r, FALSE); ++ break; + +- case divide: +- doBinary (p, (char *) "^", 1, left, right, l, r, FALSE); +- break; ++ case divide: ++ doBinary (p, (char *) "^", 1, left, right, l, r, FALSE); ++ break; + + +- default: +- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); +- } ++ default: ++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); ++ } ++ } + else +- switch (op) +- { +- case plus: +- doBinary (p, (char *) "+", 1, left, right, l, r, FALSE); +- break; ++ { ++ switch (op) ++ { ++ case plus: ++ doBinary (p, (char *) "+", 1, left, right, l, r, FALSE); ++ break; + +- case sub: +- doBinary (p, (char *) "-", 1, left, right, l, r, FALSE); +- break; ++ case sub: ++ doBinary (p, (char *) "-", 1, left, right, l, r, FALSE); ++ break; + +- case mult: +- doBinary (p, (char *) "*", 1, left, right, l, r, FALSE); +- break; ++ case mult: ++ doBinary (p, (char *) "*", 1, left, right, l, r, FALSE); ++ break; + +- case divide: +- doBinary (p, (char *) "/", 1, left, right, l, r, FALSE); +- break; ++ case divide: ++ doBinary (p, (char *) "/", 1, left, right, l, r, FALSE); ++ break; + + +- default: +- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); +- } ++ default: ++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); ++ } ++ } + } + + +@@ -8996,12 +9377,18 @@ static void doBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_ + outText (p, (char *) ")", 1); + } + else +- doExprCup (p, left, unpackProc); ++ { ++ doExprCup (p, left, unpackProc); ++ } + if (l) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + outText (p, (char *) op, _op_high); + if (r) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + if (needsParen (right)) + { + outText (p, (char *) "(", 1); +@@ -9009,7 +9396,9 @@ static void doBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_ + outText (p, (char *) ")", 1); + } + else +- doExprCup (p, right, unpackProc); ++ { ++ doExprCup (p, right, unpackProc); ++ } + } + + +@@ -9282,10 +9671,14 @@ static void doPreBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, de + memcpy (op, op_, _op_high+1); + + if (l) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + outText (p, (char *) op, _op_high); + if (r) +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + outText (p, (char *) "(", 1); + doExprC (p, left); + outText (p, (char *) ",", 1); +@@ -9322,7 +9715,9 @@ static void doEnumerationField (mcPretty_pretty p, decl_node n) + static unsigned int isZero (decl_node n) + { + if (isConstExp (n)) +- return isZero (n->unaryF.arg); ++ { ++ return isZero (n->unaryF.arg); ++ } + return (decl_getSymName (n)) == (nameKey_makeKey ((char *) "0", 1)); + } + +@@ -9341,7 +9736,9 @@ static void doArrayRef (mcPretty_pretty p, decl_node n) + mcDebug_assert (isArrayRef (n)); + t = decl_skipType (decl_getType (n->arrayrefF.array)); + if (decl_isUnbounded (t)) +- outTextN (p, decl_getSymName (n->arrayrefF.array)); ++ { ++ outTextN (p, decl_getSymName (n->arrayrefF.array)); ++ } + else + { + doExprC (p, n->arrayrefF.array); +@@ -9355,7 +9752,9 @@ static void doArrayRef (mcPretty_pretty p, decl_node n) + { + doExprC (p, getExpList (n->arrayrefF.index, i)); + if (decl_isUnbounded (t)) +- mcDebug_assert (c == 1); ++ { ++ mcDebug_assert (c == 1); ++ } + else + { + doSubtractC (p, getMin (t->arrayF.subr)); +@@ -9445,7 +9844,9 @@ static void doSetValueC (mcPretty_pretty p, decl_node n) + mcPretty_setNeedSpace (p); + } + if ((Indexing_HighIndice (n->setvalueF.values)) == 0) +- outText (p, (char *) "0", 1); ++ { ++ outText (p, (char *) "0", 1); ++ } + else + { + i = Indexing_LowIndice (n->setvalueF.values); +@@ -9485,14 +9886,20 @@ static decl_node getSetLow (decl_node n) + decl_node type; + + if ((decl_getType (n)) == NULL) +- return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1)); ++ { ++ return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1)); ++ } + else + { + type = decl_skipType (decl_getType (n)); + if (decl_isSet (type)) +- return getMin (decl_skipType (decl_getType (type))); ++ { ++ return getMin (decl_skipType (decl_getType (type))); ++ } + else +- return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1)); ++ { ++ return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1)); ++ } + } + } + +@@ -9533,20 +9940,15 @@ static void doInC (mcPretty_pretty p, decl_node l, decl_node r) + + static void doThrowC (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- outText (p, (char *) "throw", 5); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ")", 1); +- } +- else +- M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to THROW') */ ++ mcDebug_assert (isIntrinsic (n)); ++ outText (p, (char *) "throw", 5); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); ++ } ++ outText (p, (char *) ")", 1); + } + + +@@ -9619,46 +10021,73 @@ static void doExprC (mcPretty_pretty p, decl_node n) + doUnary (p, (char *) "!", 1, n->unaryF.arg, n->unaryF.resultType, FALSE, TRUE); + break; + +- case adr: +- doUnary (p, (char *) "&", 1, n->unaryF.arg, n->unaryF.resultType, TRUE, FALSE); ++ case val: ++ doValC (p, n); + break; + +- case size: +- doUnary (p, (char *) "sizeof", 6, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ case adr: ++ doAdrC (p, n); + break; + ++ case size: + case tsize: +- doUnary (p, (char *) "sizeof", 6, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ doSizeC (p, n); + break; + +- case trunc: +- doUnary (p, (char *) "TRUNC", 5, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ case float_: ++ doConvertC (p, n, (char *) "(double)", 8); + break; + +- case float_: +- doUnary (p, (char *) "FLOAT", 5, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ case trunc: ++ doConvertC (p, n, (char *) "(int)", 5); + break; + + case ord: +- doUnary (p, (char *) "ORD", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ doConvertC (p, n, (char *) "(unsigned int)", 14); + break; + + case chr: +- doUnary (p, (char *) "CHR", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ doConvertC (p, n, (char *) "(char)", 6); + break; + + case cap: +- doUnary (p, (char *) "CAP", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ doCapC (p, n); ++ break; ++ ++ case abs_: ++ doAbsC (p, n); + break; + + case high: +- doUnary (p, (char *) "HIGH", 4, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); ++ doFuncHighC (p, n->unaryF.arg); ++ break; ++ ++ case length: ++ doLengthC (p, n); ++ break; ++ ++ case min: ++ doMinC (p, n); ++ break; ++ ++ case max: ++ doMaxC (p, n); ++ break; ++ ++ case throw: ++ doThrowC (p, n); + break; + + case re: ++ doReC (p, n); ++ break; ++ + case im: ++ doImC (p, n); ++ break; ++ + case cmplx: +- M2RTS_HALT (-1); /* should all be function calls. */ ++ doCmplx (p, n); + break; + + case deref: +@@ -9701,10 +10130,6 @@ static void doExprC (mcPretty_pretty p, decl_node n) + doCastC (p, n->binaryF.left, n->binaryF.right); + break; + +- case val: +- doPreBinary (p, (char *) "VAL", 3, n->binaryF.left, n->binaryF.right, TRUE, TRUE); +- break; +- + case plus: + doPolyBinary (p, (nodeT) plus, n->binaryF.left, n->binaryF.right, FALSE, FALSE); + break; +@@ -9757,14 +10182,6 @@ static void doExprC (mcPretty_pretty p, decl_node n) + doStringC (p, n); + break; + +- case max: +- doUnary (p, (char *) "MAX", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); +- break; +- +- case min: +- doUnary (p, (char *) "MIN", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE); +- break; +- + case var: + doVar (p, n); + break; +@@ -9845,7 +10262,9 @@ static void doExprCup (mcPretty_pretty p, decl_node n, unsigned int unpackProc) + { + t = decl_skipType (getExprType (n)); + if ((t != NULL) && (isAProcType (t))) +- outText (p, (char *) ".proc", 5); ++ { ++ outText (p, (char *) ".proc", 5); ++ } + } + } + +@@ -10048,7 +10467,9 @@ static void doVar (mcPretty_pretty p, decl_node n) + outText (p, (char *) ")", 1); + } + else +- doFQDNameC (p, n, TRUE); ++ { ++ doFQDNameC (p, n, TRUE); ++ } + } + + +@@ -10068,18 +10489,22 @@ static void doLiteralC (mcPretty_pretty p, decl_node n) + { + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); + if ((DynamicStrings_char (s, 0)) != '0') +- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s)); ++ } + } + outText (p, (char *) "(char)", 6); + mcPretty_setNeedSpace (p); + } + else if ((DynamicStrings_char (s, -1)) == 'H') + { ++ /* avoid dangling else. */ + outText (p, (char *) "0x", 2); + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); + } + else if ((DynamicStrings_char (s, -1)) == 'B') + { ++ /* avoid dangling else. */ + outText (p, (char *) "0", 1); + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); + } +@@ -10104,7 +10529,9 @@ static void doLiteral (mcPretty_pretty p, decl_node n) + { + s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1); + if ((DynamicStrings_char (s, 0)) != '0') +- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s)); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s)); ++ } + } + outText (p, (char *) "(char)", 6); + mcPretty_setNeedSpace (p); +@@ -10179,11 +10606,15 @@ static DynamicStrings_String replaceChar (DynamicStrings_String s, char ch, char + } + else if (i > 0) + { ++ /* avoid dangling else. */ + s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, 0, i), DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))), DynamicStrings_Slice (s, i+1, 0)); + i += StrLib_StrLen ((char *) a, _a_high); + } + else +- return s; ++ { ++ /* avoid dangling else. */ ++ return s; ++ } + } + ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); + } +@@ -10236,7 +10667,9 @@ static unsigned int countChar (DynamicStrings_String s, char ch) + c += 1; + } + else +- return c; ++ { ++ return c; ++ } + } + ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); + } +@@ -10396,6 +10829,7 @@ static mcPretty_pretty outKm2 (mcPretty_pretty p, char *a_, unsigned int _a_high + } + else if (StrLib_StrEqual ((char *) a, _a_high, (char *) "END", 3)) + { ++ /* avoid dangling else. */ + p = mcPretty_popPretty (p); + outText (p, (char *) a, _a_high); + p = mcPretty_popPretty (p); +@@ -10422,7 +10856,9 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high) + s = DynamicStrings_InitString ((char *) a, _a_high); + i = DynamicStrings_Index (s, '\\', 0); + if (i == -1) +- t = NULL; ++ { ++ t = NULL; ++ } + else + { + t = DynamicStrings_Slice (s, i, 0); +@@ -10439,6 +10875,7 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high) + } + else if ((DynamicStrings_char (s, 0)) == '}') + { ++ /* avoid dangling else. */ + p = mcPretty_popPretty (p); + outTextS (p, s); + p = mcPretty_popPretty (p); +@@ -10457,7 +10894,9 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high) + static void outTextS (mcPretty_pretty p, DynamicStrings_String s) + { + if (s != NULL) +- mcPretty_prints (p, s); ++ { ++ mcPretty_prints (p, s); ++ } + } + + +@@ -10498,11 +10937,17 @@ static void doTypeAliasC (mcPretty_pretty p, decl_node n, decl_node *m) + mcPretty_print (p, (char *) "typedef", 7); + mcPretty_setNeedSpace (p); + if ((decl_isTypeHidden (n)) && ((decl_isDef (decl_getMainModule ())) || ((decl_getScope (n)) != (decl_getMainModule ())))) +- outText (p, (char *) "void *", 6); ++ { ++ outText (p, (char *) "void *", 6); ++ } + else +- doTypeC (p, decl_getType (n), m); ++ { ++ doTypeC (p, decl_getType (n), m); ++ } + if ((*m) != NULL) +- doFQNameC (p, (*m)); ++ { ++ doFQNameC (p, (*m)); ++ } + mcPretty_print (p, (char *) ";\\n\\n", 5); + } + +@@ -10557,7 +11002,9 @@ static void doNamesC (mcPretty_pretty p, nameKey_Name n) + static void doNameC (mcPretty_pretty p, decl_node n) + { + if ((n != NULL) && ((decl_getSymName (n)) != nameKey_NulName)) +- doNamesC (p, decl_getSymName (n)); ++ { ++ doNamesC (p, decl_getSymName (n)); ++ } + } + + +@@ -10580,13 +11027,17 @@ static nameKey_Name doCname (nameKey_Name n, cnameT *c, unsigned int scopes) + DynamicStrings_String s; + + if ((*c).init) +- return (*c).name; ++ { ++ return (*c).name; ++ } + else + { + (*c).init = TRUE; + s = keyc_cname (n, scopes); + if (s == NULL) +- (*c).name = n; ++ { ++ (*c).name = n; ++ } + else + { + (*c).name = nameKey_makekey (DynamicStrings_string (s)); +@@ -10639,7 +11090,9 @@ static nameKey_Name getDName (decl_node n, unsigned int scopes) + static void doDNameC (mcPretty_pretty p, decl_node n, unsigned int scopes) + { + if ((n != NULL) && ((decl_getSymName (n)) != nameKey_NulName)) +- doNamesC (p, getDName (n, scopes)); ++ { ++ doNamesC (p, getDName (n, scopes)); ++ } + } + + +@@ -10729,9 +11182,13 @@ static decl_node getParameterVariable (decl_node n, nameKey_Name m) + + mcDebug_assert ((decl_isParam (n)) || (decl_isVarParam (n))); + if (decl_isParam (n)) +- p = n->paramF.scope; ++ { ++ p = n->paramF.scope; ++ } + else +- p = n->varparamF.scope; ++ { ++ p = n->varparamF.scope; ++ } + mcDebug_assert (decl_isProcedure (p)); + return decl_lookupInScope (p, m); + } +@@ -10790,16 +11247,26 @@ static void doParamC (mcPretty_pretty p, decl_node n) + doTypeNameC (p, ptype); + i = wlists_getItemFromList (l, c); + if ((decl_isArray (ptype)) && (decl_isUnbounded (ptype))) +- mcPretty_noSpace (p); ++ { ++ mcPretty_noSpace (p); ++ } + else +- mcPretty_setNeedSpace (p); ++ { ++ mcPretty_setNeedSpace (p); ++ } + v = getParameterVariable (n, i); + if (v == NULL) +- doNamesC (p, keyc_cnamen (i, TRUE)); ++ { ++ doNamesC (p, keyc_cnamen (i, TRUE)); ++ } + else +- doFQDNameC (p, v, TRUE); ++ { ++ doFQDNameC (p, v, TRUE); ++ } + if ((decl_isArray (ptype)) && (decl_isUnbounded (ptype))) +- outText (p, (char *) "_", 1); ++ { ++ outText (p, (char *) "_", 1); ++ } + doHighC (p, ptype, i); + if (c < t) + { +@@ -10850,7 +11317,9 @@ static void doVarParamC (mcPretty_pretty p, decl_node n) + mcDebug_assert (isIdentList (n->varparamF.namelist)); + l = n->varparamF.namelist->identlistF.names; + if (l == NULL) +- doTypeNameC (p, ptype); ++ { ++ doTypeNameC (p, ptype); ++ } + else + { + t = wlists_noOfItemsInList (l); +@@ -10866,9 +11335,13 @@ static void doVarParamC (mcPretty_pretty p, decl_node n) + i = wlists_getItemFromList (l, c); + v = getParameterVariable (n, i); + if (v == NULL) +- doNamesC (p, keyc_cnamen (i, TRUE)); ++ { ++ doNamesC (p, keyc_cnamen (i, TRUE)); ++ } + else +- doFQDNameC (p, v, TRUE); ++ { ++ doFQDNameC (p, v, TRUE); ++ } + doHighC (p, ptype, i); + if (c < t) + { +@@ -10915,13 +11388,24 @@ static void doOptargC (mcPretty_pretty p, decl_node n) + static void doParameterC (mcPretty_pretty p, decl_node n) + { + if (decl_isParam (n)) +- doParamC (p, n); ++ { ++ doParamC (p, n); ++ } + else if (decl_isVarParam (n)) +- doVarParamC (p, n); ++ { ++ /* avoid dangling else. */ ++ doVarParamC (p, n); ++ } + else if (decl_isVarargs (n)) +- mcPretty_print (p, (char *) "...", 3); ++ { ++ /* avoid dangling else. */ ++ mcPretty_print (p, (char *) "...", 3); ++ } + else if (decl_isOptarg (n)) +- doOptargC (p, n); ++ { ++ /* avoid dangling else. */ ++ doOptargC (p, n); ++ } + } + + +@@ -10949,19 +11433,25 @@ static void doTypesC (decl_node n) + { + m = decl_getType (n); + if (decl_isProcType (m)) +- doProcTypeC (doP, n, m); ++ { ++ doProcTypeC (doP, n, m); ++ } + else if ((decl_isType (m)) || (decl_isPointer (m))) + { ++ /* avoid dangling else. */ + outText (doP, (char *) "typedef", 7); + mcPretty_setNeedSpace (doP); + doTypeC (doP, m, &m); + if (decl_isType (m)) +- mcPretty_setNeedSpace (doP); ++ { ++ mcPretty_setNeedSpace (doP); ++ } + doTypeNameC (doP, n); + outText (doP, (char *) ";\\n\\n", 5); + } + else if (decl_isEnumeration (m)) + { ++ /* avoid dangling else. */ + outText (doP, (char *) "typedef", 7); + mcPretty_setNeedSpace (doP); + doTypeC (doP, m, &m); +@@ -10971,11 +11461,14 @@ static void doTypesC (decl_node n) + } + else + { ++ /* avoid dangling else. */ + outText (doP, (char *) "typedef", 7); + mcPretty_setNeedSpace (doP); + doTypeC (doP, m, &m); + if (decl_isType (m)) +- mcPretty_setNeedSpace (doP); ++ { ++ mcPretty_setNeedSpace (doP); ++ } + doTypeNameC (doP, n); + outText (doP, (char *) ";\\n\\n", 5); + } +@@ -10995,11 +11488,19 @@ static void doCompletePartialC (decl_node n) + { + m = decl_getType (n); + if (decl_isRecord (m)) +- doCompletePartialRecord (doP, n, m); ++ { ++ doCompletePartialRecord (doP, n, m); ++ } + else if (decl_isArray (m)) +- doCompletePartialArray (doP, n, m); ++ { ++ /* avoid dangling else. */ ++ doCompletePartialArray (doP, n, m); ++ } + else if (decl_isProcType (m)) +- doCompletePartialProcType (doP, n, m); ++ { ++ /* avoid dangling else. */ ++ doCompletePartialProcType (doP, n, m); ++ } + } + } + +@@ -11039,11 +11540,15 @@ static void doCompletePartialRecord (mcPretty_pretty p, decl_node t, decl_node r + } + else if (decl_isVarient (f)) + { ++ /* avoid dangling else. */ + doVarientC (p, f); + outText (p, (char *) ";\\n", 3); + } + else if (decl_isVarientField (f)) +- doVarientFieldC (p, f); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldC (p, f); ++ } + i += 1; + } + p = outKc (p, (char *) "};\\n\\n", 6); +@@ -11094,56 +11599,73 @@ static decl_node lookupConst (decl_node type, nameKey_Name n) + static decl_node doMin (decl_node n) + { + if (n == booleanN) +- return falseN; ++ { ++ return falseN; ++ } + else if (n == integerN) + { ++ /* avoid dangling else. */ + keyc_useIntMin (); + return lookupConst (integerN, nameKey_makeKey ((char *) "INT_MIN", 7)); + } + else if (n == cardinalN) + { ++ /* avoid dangling else. */ + keyc_useUIntMin (); + return lookupConst (cardinalN, nameKey_makeKey ((char *) "UINT_MIN", 8)); + } + else if (n == longintN) + { ++ /* avoid dangling else. */ + keyc_useLongMin (); + return lookupConst (longintN, nameKey_makeKey ((char *) "LONG_MIN", 8)); + } + else if (n == longcardN) + { ++ /* avoid dangling else. */ + keyc_useULongMin (); + return lookupConst (longcardN, nameKey_makeKey ((char *) "LONG_MIN", 8)); + } + else if (n == charN) + { ++ /* avoid dangling else. */ + keyc_useCharMin (); + return lookupConst (charN, nameKey_makeKey ((char *) "CHAR_MIN", 8)); + } + else if (n == bitsetN) + { ++ /* avoid dangling else. */ + mcDebug_assert (decl_isSubrange (bitnumN)); + return bitnumN->subrangeF.low; + } + else if (n == locN) + { ++ /* avoid dangling else. */ + keyc_useUCharMin (); + return lookupConst (locN, nameKey_makeKey ((char *) "UCHAR_MIN", 9)); + } + else if (n == byteN) + { ++ /* avoid dangling else. */ + keyc_useUCharMin (); + return lookupConst (byteN, nameKey_makeKey ((char *) "UCHAR_MIN", 9)); + } + else if (n == wordN) + { ++ /* avoid dangling else. */ + keyc_useUIntMin (); + return lookupConst (wordN, nameKey_makeKey ((char *) "UCHAR_MIN", 9)); + } + else if (n == addressN) +- return lookupConst (addressN, nameKey_makeKey ((char *) "((void *) 0)", 12)); ++ { ++ /* avoid dangling else. */ ++ return lookupConst (addressN, nameKey_makeKey ((char *) "((void *) 0)", 12)); ++ } + else +- M2RTS_HALT (-1); /* finish the cacading elsif statement. */ ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); /* finish the cacading elsif statement. */ ++ } + } + + +@@ -11154,59 +11676,74 @@ static decl_node doMin (decl_node n) + static decl_node doMax (decl_node n) + { + if (n == booleanN) +- return trueN; ++ { ++ return trueN; ++ } + else if (n == integerN) + { ++ /* avoid dangling else. */ + keyc_useIntMax (); + return lookupConst (integerN, nameKey_makeKey ((char *) "INT_MAX", 7)); + } + else if (n == cardinalN) + { ++ /* avoid dangling else. */ + keyc_useUIntMax (); + return lookupConst (cardinalN, nameKey_makeKey ((char *) "UINT_MAX", 8)); + } + else if (n == longintN) + { ++ /* avoid dangling else. */ + keyc_useLongMax (); + return lookupConst (longintN, nameKey_makeKey ((char *) "LONG_MAX", 8)); + } + else if (n == longcardN) + { ++ /* avoid dangling else. */ + keyc_useULongMax (); + return lookupConst (longcardN, nameKey_makeKey ((char *) "ULONG_MAX", 9)); + } + else if (n == charN) + { ++ /* avoid dangling else. */ + keyc_useCharMax (); + return lookupConst (charN, nameKey_makeKey ((char *) "CHAR_MAX", 8)); + } + else if (n == bitsetN) + { ++ /* avoid dangling else. */ + mcDebug_assert (decl_isSubrange (bitnumN)); + return bitnumN->subrangeF.high; + } + else if (n == locN) + { ++ /* avoid dangling else. */ + keyc_useUCharMax (); + return lookupConst (locN, nameKey_makeKey ((char *) "UCHAR_MAX", 9)); + } + else if (n == byteN) + { ++ /* avoid dangling else. */ + keyc_useUCharMax (); + return lookupConst (byteN, nameKey_makeKey ((char *) "UCHAR_MAX", 9)); + } + else if (n == wordN) + { ++ /* avoid dangling else. */ + keyc_useUIntMax (); + return lookupConst (wordN, nameKey_makeKey ((char *) "UINT_MAX", 8)); + } + else if (n == addressN) + { ++ /* avoid dangling else. */ + mcMetaError_metaError1 ((char *) "trying to obtain MAX ({%1ad}) is illegal", 40, (unsigned char *) &n, (sizeof (n)-1)); + return NULL; + } + else +- M2RTS_HALT (-1); /* finish the cacading elsif statement. */ ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); /* finish the cacading elsif statement. */ ++ } + } + + +@@ -11218,11 +11755,17 @@ static decl_node getMax (decl_node n) + { + n = decl_skipType (n); + if (decl_isSubrange (n)) +- return n->subrangeF.high; ++ { ++ return n->subrangeF.high; ++ } + else if (decl_isEnumeration (n)) +- return n->enumerationF.high; ++ { ++ /* avoid dangling else. */ ++ return n->enumerationF.high; ++ } + else + { ++ /* avoid dangling else. */ + mcDebug_assert (isOrdinal (n)); + return doMax (n); + } +@@ -11237,11 +11780,17 @@ static decl_node getMin (decl_node n) + { + n = decl_skipType (n); + if (decl_isSubrange (n)) +- return n->subrangeF.low; ++ { ++ return n->subrangeF.low; ++ } + else if (decl_isEnumeration (n)) +- return n->enumerationF.low; ++ { ++ /* avoid dangling else. */ ++ return n->enumerationF.low; ++ } + else + { ++ /* avoid dangling else. */ + mcDebug_assert (isOrdinal (n)); + return doMin (n); + } +@@ -11282,6 +11831,7 @@ static void doSubrC (mcPretty_pretty p, decl_node s) + } + else if (decl_isEnumeration (s)) + { ++ /* avoid dangling else. */ + low = getMin (s); + high = getMax (s); + doExprC (p, high); +@@ -11290,9 +11840,12 @@ static void doSubrC (mcPretty_pretty p, decl_node s) + } + else + { ++ /* avoid dangling else. */ + mcDebug_assert (decl_isSubrange (s)); + if ((s->subrangeF.high == NULL) || (s->subrangeF.low == NULL)) +- doSubrC (p, decl_getType (s)); ++ { ++ doSubrC (p, decl_getType (s)); ++ } + else + { + doExprC (p, s->subrangeF.high); +@@ -11338,7 +11891,9 @@ static void doCompletePartialProcType (mcPretty_pretty p, decl_node t, decl_node + i += 1; + } + if (h == 0) +- outText (p, (char *) "void", 4); ++ { ++ outText (p, (char *) "void", 4); ++ } + outText (p, (char *) ");\\n", 4); + outText (p, (char *) "struct", 6); + mcPretty_setNeedSpace (p); +@@ -11581,7 +12136,9 @@ static void doArrayC (mcPretty_pretty p, decl_node n) + mcPretty_setNeedSpace (p); + outText (p, (char *) "array[", 6); + if (isZero (getMin (s))) +- doExprC (p, getMax (s)); ++ { ++ doExprC (p, getMax (s)); ++ } + else + { + doExprC (p, getMax (s)); +@@ -11660,15 +12217,21 @@ static void doVarientFieldC (mcPretty_pretty p, decl_node n) + } + else if (decl_isVarient (q)) + { ++ /* avoid dangling else. */ + doVarientC (p, q); + outText (p, (char *) ";\\n", 3); + } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + i += 1; + } + if (! n->varientfieldF.simple) +- p = outKc (p, (char *) "};\\n", 4); ++ { ++ p = outKc (p, (char *) "};\\n", 4); ++ } + } + + +@@ -11692,10 +12255,16 @@ static void doVarientC (mcPretty_pretty p, decl_node n) + outText (p, (char *) "; /* case tag */\\n", 19); + } + else if (decl_isVarientField (n->varientF.tag)) +- /* doVarientFieldC (p, n^.varientF.tag) */ +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ /* doVarientFieldC (p, n^.varientF.tag) */ ++ M2RTS_HALT (-1); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + } + outText (p, (char *) "union", 5); + mcPretty_setNeedSpace (p); +@@ -11715,9 +12284,15 @@ static void doVarientC (mcPretty_pretty p, decl_node n) + } + } + else if (decl_isVarientField (q)) +- doVarientFieldC (p, q); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldC (p, q); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + i += 1; + } + p = outKc (p, (char *) "}", 1); +@@ -11756,11 +12331,15 @@ static void doRecordC (mcPretty_pretty p, decl_node n, decl_node *m) + } + else if (decl_isVarient (f)) + { ++ /* avoid dangling else. */ + doVarientC (p, f); + outText (p, (char *) ";\\n", 3); + } + else if (decl_isVarientField (f)) +- doVarientFieldC (p, f); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldC (p, f); ++ } + i += 1; + } + p = outKc (p, (char *) "}", 1); +@@ -11829,15 +12408,27 @@ static void doSetC (mcPretty_pretty p, decl_node n) + static void doTypeC (mcPretty_pretty p, decl_node n, decl_node *m) + { + if (n == NULL) +- outText (p, (char *) "void", 4); ++ { ++ outText (p, (char *) "void", 4); ++ } + else if (isBase (n)) +- doBaseC (p, n); ++ { ++ /* avoid dangling else. */ ++ doBaseC (p, n); ++ } + else if (isSystem (n)) +- doSystemC (p, n); ++ { ++ /* avoid dangling else. */ ++ doSystemC (p, n); ++ } + else if (decl_isEnumeration (n)) +- doEnumerationC (p, n); ++ { ++ /* avoid dangling else. */ ++ doEnumerationC (p, n); ++ } + else if (decl_isType (n)) + { ++ /* avoid dangling else. */ + doFQNameC (p, n); + /* + ELSIF isProcType (n) OR isArray (n) OR isRecord (n) +@@ -11847,19 +12438,38 @@ static void doTypeC (mcPretty_pretty p, decl_node n, decl_node *m) + mcPretty_setNeedSpace (p); + } + else if (decl_isProcType (n)) +- doProcTypeC (p, n, (*m)); ++ { ++ /* avoid dangling else. */ ++ doProcTypeC (p, n, (*m)); ++ } + else if (decl_isArray (n)) +- doArrayC (p, n); ++ { ++ /* avoid dangling else. */ ++ doArrayC (p, n); ++ } + else if (decl_isRecord (n)) +- doRecordC (p, n, m); ++ { ++ /* avoid dangling else. */ ++ doRecordC (p, n, m); ++ } + else if (decl_isPointer (n)) +- doPointerC (p, n, m); ++ { ++ /* avoid dangling else. */ ++ doPointerC (p, n, m); ++ } + else if (decl_isSubrange (n)) +- doSubrangeC (p, n); ++ { ++ /* avoid dangling else. */ ++ doSubrangeC (p, n); ++ } + else if (decl_isSet (n)) +- doSetC (p, n); ++ { ++ /* avoid dangling else. */ ++ doSetC (p, n); ++ } + else + { ++ /* avoid dangling else. */ + /* --fixme-- */ + mcPretty_print (p, (char *) "to do ... typedef etc etc ", 27); + doFQNameC (p, n); +@@ -11922,28 +12532,54 @@ static void doTypeNameC (mcPretty_pretty p, decl_node n) + mcPretty_setNeedSpace (p); + } + else if (isBase (n)) +- doBaseC (p, n); ++ { ++ /* avoid dangling else. */ ++ doBaseC (p, n); ++ } + else if (isSystem (n)) +- doSystemC (p, n); ++ { ++ /* avoid dangling else. */ ++ doSystemC (p, n); ++ } + else if (decl_isEnumeration (n)) +- mcPretty_print (p, (char *) "is enumeration type name required\\n", 35); ++ { ++ /* avoid dangling else. */ ++ mcPretty_print (p, (char *) "is enumeration type name required\\n", 35); ++ } + else if (decl_isType (n)) +- doFQNameC (p, n); ++ { ++ /* avoid dangling else. */ ++ doFQNameC (p, n); ++ } + else if (decl_isProcType (n)) + { ++ /* avoid dangling else. */ + mcPretty_print (p, (char *) "is proc type name required\\n", 28); + stop (); + } + else if (decl_isArray (n)) +- doArrayNameC (p, n); ++ { ++ /* avoid dangling else. */ ++ doArrayNameC (p, n); ++ } + else if (decl_isRecord (n)) +- doRecordNameC (p, n); ++ { ++ /* avoid dangling else. */ ++ doRecordNameC (p, n); ++ } + else if (decl_isPointer (n)) +- doPointerNameC (p, n); ++ { ++ /* avoid dangling else. */ ++ doPointerNameC (p, n); ++ } + else if (decl_isSubrange (n)) +- doSubrangeC (p, n); ++ { ++ /* avoid dangling else. */ ++ doSubrangeC (p, n); ++ } + else + { ++ /* avoid dangling else. */ + mcPretty_print (p, (char *) "is type unknown required\\n", 26); + stop (); + } +@@ -11978,16 +12614,20 @@ static void doVarC (decl_node n) + } + else if ((! (decl_isExported (n))) && (! (isLocal (n)))) + { ++ /* avoid dangling else. */ + mcPretty_print (doP, (char *) "static", 6); + mcPretty_setNeedSpace (doP); + } + else if (mcOptions_getExtendedOpaque ()) +- if (isExternal (n)) +- { +- /* different module declared this variable, therefore it is extern. */ +- mcPretty_print (doP, (char *) "extern", 6); +- mcPretty_setNeedSpace (doP); +- } ++ { ++ /* avoid dangling else. */ ++ if (isExternal (n)) ++ { ++ /* different module declared this variable, therefore it is extern. */ ++ mcPretty_print (doP, (char *) "extern", 6); ++ mcPretty_setNeedSpace (doP); ++ } ++ } + s = NULL; + doTypeC (doP, decl_getType (n), &s); + mcPretty_setNeedSpace (doP); +@@ -12019,8 +12659,10 @@ static void doProcedureCommentText (mcPretty_pretty p, DynamicStrings_String s) + /* remove + from the start of the comment. */ + while (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, 0)) == ASCII_lf)) +- s = DynamicStrings_Slice (s, 1, 0); +- outTextS (p, s); ++ { ++ s = DynamicStrings_Slice (s, 1, 0); ++ } ++ outTextS (p, s); + } + + +@@ -12060,11 +12702,13 @@ static void doProcedureHeadingC (decl_node n) + } + else if (decl_isExported (n)) + { ++ /* avoid dangling else. */ + doProcedureComment (doP, mcComment_getContent (n->procedureF.modComment)); + doExternCP (doP); + } + else + { ++ /* avoid dangling else. */ + doProcedureComment (doP, mcComment_getContent (n->procedureF.modComment)); + outText (doP, (char *) "static", 6); + mcPretty_setNeedSpace (doP); +@@ -12090,7 +12734,9 @@ static void doProcedureHeadingC (decl_node n) + i += 1; + } + if (h == 0) +- outText (doP, (char *) "void", 4); ++ { ++ outText (doP, (char *) "void", 4); ++ } + mcPretty_print (doP, (char *) ")", 1); + } + +@@ -12200,7 +12846,9 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n) + { + q = Indexing_GetIndice (n->procedureF.parameters, i); + if (decl_isParam (q)) +- seen = (checkDeclareUnboundedParamCopyC (p, q)) || seen; ++ { ++ seen = (checkDeclareUnboundedParamCopyC (p, q)) || seen; ++ } + i += 1; + } + if (seen) +@@ -12212,7 +12860,9 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n) + { + q = Indexing_GetIndice (n->procedureF.parameters, i); + if (decl_isParam (q)) +- checkUnboundedParamCopyC (p, q); ++ { ++ checkUnboundedParamCopyC (p, q); ++ } + i += 1; + } + } +@@ -12226,13 +12876,15 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n) + static void doPrototypeC (decl_node n) + { + if (! (decl_isExported (n))) +- if (! ((mcOptions_getExtendedOpaque ()) && (isDefForC (decl_getScope (n))))) +- { +- keyc_enterScope (n); +- doProcedureHeadingC (n); +- mcPretty_print (doP, (char *) ";\\n", 3); +- keyc_leaveScope (n); +- } ++ { ++ if (! ((mcOptions_getExtendedOpaque ()) && (isDefForC (decl_getScope (n))))) ++ { ++ keyc_enterScope (n); ++ doProcedureHeadingC (n); ++ mcPretty_print (doP, (char *) ";\\n", 3); ++ keyc_leaveScope (n); ++ } ++ } + } + + +@@ -12267,7 +12919,9 @@ static void addVariablesTodo (decl_node n) + addTodo (decl_getType (n)); + } + else +- addTodo (n); ++ { ++ addTodo (n); ++ } + } + } + +@@ -12279,9 +12933,13 @@ static void addVariablesTodo (decl_node n) + static void addTypesTodo (decl_node n) + { + if (decl_isUnbounded (n)) +- addDone (n); ++ { ++ addDone (n); ++ } + else +- addTodo (n); ++ { ++ addTodo (n); ++ } + } + + +@@ -12442,22 +13100,46 @@ static void doSimplifyNode (alists_alist l, decl_node n) + if (n == NULL) + {} /* empty. */ + else if (decl_isType (n)) +- /* no need to simplify a type. */ +- simplifyNode (l, decl_getType (n)); ++ { ++ /* avoid dangling else. */ ++ /* no need to simplify a type. */ ++ simplifyNode (l, decl_getType (n)); ++ } + else if (decl_isVar (n)) +- simplifyVar (l, n); ++ { ++ /* avoid dangling else. */ ++ simplifyVar (l, n); ++ } + else if (decl_isRecord (n)) +- simplifyRecord (l, n); ++ { ++ /* avoid dangling else. */ ++ simplifyRecord (l, n); ++ } + else if (decl_isRecordField (n)) +- simplifyType (l, &n->recordfieldF.type); ++ { ++ /* avoid dangling else. */ ++ simplifyType (l, &n->recordfieldF.type); ++ } + else if (decl_isArray (n)) +- simplifyType (l, &n->arrayF.type); ++ { ++ /* avoid dangling else. */ ++ simplifyType (l, &n->arrayF.type); ++ } + else if (decl_isVarient (n)) +- simplifyVarient (l, n); ++ { ++ /* avoid dangling else. */ ++ simplifyVarient (l, n); ++ } + else if (decl_isVarientField (n)) +- simplifyVarientField (l, n); ++ { ++ /* avoid dangling else. */ ++ simplifyVarientField (l, n); ++ } + else if (decl_isPointer (n)) +- simplifyType (l, &n->pointerF.type); ++ { ++ /* avoid dangling else. */ ++ simplifyType (l, &n->pointerF.type); ++ } + } + + +@@ -12588,8 +13270,12 @@ static void addExported (decl_node n) + + s = decl_getScope (n); + if (((s != NULL) && (decl_isDef (s))) && (s != defModule)) +- if (((decl_isType (n)) || (decl_isVar (n))) || (decl_isConst (n))) +- addTodo (n); ++ { ++ if (((decl_isType (n)) || (decl_isVar (n))) || (decl_isConst (n))) ++ { ++ addTodo (n); ++ } ++ } + } + + +@@ -12604,7 +13290,10 @@ static void addExternal (decl_node n) + {} /* empty. */ + /* do nothing. */ + else if (! (decl_isDef (n))) +- addTodo (n); ++ { ++ /* avoid dangling else. */ ++ addTodo (n); ++ } + } + + +@@ -12681,14 +13370,17 @@ static void includeDefVarProcedure (decl_node n) + /* avoid dangling else. */ + defModule = decl_lookupDef (decl_getSymName (n)); + if (defModule != NULL) +- /* ++ { ++ /* + includeVar (defModule^.defF.decls) ; + simplifyTypes (defModule^.defF.decls) ; + */ +- joinProcedures (n, defModule); ++ joinProcedures (n, defModule); ++ } + } + else if (decl_isDef (n)) + { ++ /* avoid dangling else. */ + includeVar (n->defF.decls); + simplifyTypes (n->defF.decls); + } +@@ -12765,7 +13457,9 @@ static unsigned int isSingleStatement (decl_node s) + mcDebug_assert (decl_isStatementSequence (s)); + h = Indexing_HighIndice (s->stmtF.statements); + if ((h == 0) || (h > 1)) +- return FALSE; ++ { ++ return FALSE; ++ } + s = Indexing_GetIndice (s->stmtF.statements, 1); + return (! (decl_isStatementSequence (s))) || (isSingleStatement (s)); + } +@@ -12790,7 +13484,9 @@ static void doCommentC (mcPretty_pretty p, decl_node s) + outText (p, (char *) " /* ", 4); + } + else +- outText (p, (char *) "/* ", 3); ++ { ++ outText (p, (char *) "/* ", 3); ++ } + c = mcComment_getContent (s->commentF.content); + c = DynamicStrings_RemoveWhitePrefix (DynamicStrings_RemoveWhitePostfix (c)); + outTextS (p, c); +@@ -12807,9 +13503,13 @@ static void doCommentC (mcPretty_pretty p, decl_node s) + static void doAfterCommentC (mcPretty_pretty p, decl_node c) + { + if (c == NULL) +- outText (p, (char *) "\\n", 2); ++ { ++ outText (p, (char *) "\\n", 2); ++ } + else +- doCommentC (p, c); ++ { ++ doCommentC (p, c); ++ } + } + + +@@ -12839,31 +13539,33 @@ static void doReturnC (mcPretty_pretty p, decl_node s) + static void doExprCastC (mcPretty_pretty p, decl_node e, decl_node type) + { + if ((decl_skipType (type)) != (decl_skipType (decl_getType (e)))) +- if (lang == ansiCP) +- { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- /* potentially a cast is required. */ +- if ((decl_isPointer (type)) || (type == addressN)) +- { +- outText (p, (char *) "reinterpret_cast<", 17); +- doTypeNameC (p, type); +- mcPretty_noSpace (p); +- outText (p, (char *) "> (", 3); +- doExprC (p, e); +- outText (p, (char *) ")", 1); +- return; +- } +- else +- { +- outText (p, (char *) "static_cast<", 12); +- doTypeNameC (p, type); +- mcPretty_noSpace (p); +- outText (p, (char *) "> (", 3); +- doExprC (p, e); +- outText (p, (char *) ")", 1); +- return; +- } +- } ++ { ++ if (lang == ansiCP) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ /* potentially a cast is required. */ ++ if ((decl_isPointer (type)) || (type == addressN)) ++ { ++ outText (p, (char *) "reinterpret_cast<", 17); ++ doTypeNameC (p, type); ++ mcPretty_noSpace (p); ++ outText (p, (char *) "> (", 3); ++ doExprC (p, e); ++ outText (p, (char *) ")", 1); ++ return; ++ } ++ else ++ { ++ outText (p, (char *) "static_cast<", 12); ++ doTypeNameC (p, type); ++ mcPretty_noSpace (p); ++ outText (p, (char *) "> (", 3); ++ doExprC (p, e); ++ outText (p, (char *) ")", 1); ++ return; ++ } ++ } ++ } + doExprC (p, e); + } + +@@ -12920,8 +13622,9 @@ static void doCompoundStmt (mcPretty_pretty p, decl_node s) + outText (p, (char *) "{} /* empty. */\\n", 19); + p = mcPretty_popPretty (p); + } +- else if ((decl_isStatementSequence (s)) && (isSingleStatement (s))) ++ else if (((decl_isStatementSequence (s)) && (isSingleStatement (s))) && ! forceCompoundStatement) + { ++ /* avoid dangling else. */ + p = mcPretty_pushPretty (p); + mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); + doStatementSequenceC (p, s); +@@ -12929,6 +13632,7 @@ static void doCompoundStmt (mcPretty_pretty p, decl_node s) + } + else + { ++ /* avoid dangling else. */ + p = mcPretty_pushPretty (p); + mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); + outText (p, (char *) "{\\n", 3); +@@ -12955,7 +13659,7 @@ static void doElsifC (mcPretty_pretty p, decl_node s) + doExprC (p, s->elsifF.expr); + outText (p, (char *) ")\\n", 3); + mcDebug_assert ((s->elsifF.else_ == NULL) || (s->elsifF.elsif == NULL)); +- if ((hasIfAndNoElse (s->elsifF.then)) && ((s->elsifF.else_ != NULL) || (s->elsifF.elsif != NULL))) ++ if (forceCompoundStatement || ((hasIfAndNoElse (s->elsifF.then)) && ((s->elsifF.else_ != NULL) || (s->elsifF.elsif != NULL)))) + { + /* avoid dangling else. */ + p = mcPretty_pushPretty (p); +@@ -12970,14 +13674,36 @@ static void doElsifC (mcPretty_pretty p, decl_node s) + p = mcPretty_popPretty (p); + } + else +- doCompoundStmt (p, s->elsifF.then); ++ { ++ doCompoundStmt (p, s->elsifF.then); ++ } + if (containsStatement (s->elsifF.else_)) + { + outText (p, (char *) "else\\n", 6); +- doCompoundStmt (p, s->elsifF.else_); ++ if (forceCompoundStatement) ++ { ++ /* avoid dangling else. */ ++ p = mcPretty_pushPretty (p); ++ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); ++ outText (p, (char *) "{\\n", 3); ++ p = mcPretty_pushPretty (p); ++ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); ++ outText (p, (char *) "/* avoid dangling else. */\\n", 29); ++ doStatementSequenceC (p, s->elsifF.else_); ++ p = mcPretty_popPretty (p); ++ outText (p, (char *) "}\\n", 3); ++ p = mcPretty_popPretty (p); ++ } ++ else ++ { ++ doCompoundStmt (p, s->elsifF.else_); ++ } + } + else if ((s->elsifF.elsif != NULL) && (decl_isElsif (s->elsifF.elsif))) +- doElsifC (p, s->elsifF.elsif); ++ { ++ /* avoid dangling else. */ ++ doElsifC (p, s->elsifF.elsif); ++ } + } + + +@@ -13006,33 +13732,50 @@ static unsigned int noIfElseChained (decl_node n) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (decl_isIf (n)) +- if (n->ifF.else_ != NULL) +- /* we do have an else, continue to check this statement. */ +- return hasIfAndNoElse (n->ifF.else_); +- else if (n->ifF.elsif == NULL) +- /* neither else or elsif. */ +- return TRUE; +- else +- { +- /* test elsif for lack of else. */ +- e = n->ifF.elsif; +- mcDebug_assert (decl_isElsif (e)); +- return noIfElseChained (e); +- } ++ { ++ if (n->ifF.else_ != NULL) ++ { ++ /* we do have an else, continue to check this statement. */ ++ return hasIfAndNoElse (n->ifF.else_); ++ } ++ else if (n->ifF.elsif == NULL) ++ { ++ /* avoid dangling else. */ ++ /* neither else or elsif. */ ++ return TRUE; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ /* test elsif for lack of else. */ ++ e = n->ifF.elsif; ++ mcDebug_assert (decl_isElsif (e)); ++ return noIfElseChained (e); ++ } ++ } + else if (decl_isElsif (n)) +- if (n->elsifF.else_ != NULL) +- /* we do have an else, continue to check this statement. */ +- return hasIfAndNoElse (n->elsifF.else_); +- else if (n->elsifF.elsif == NULL) +- /* neither else or elsif. */ +- return TRUE; +- else +- { +- /* test elsif for lack of else. */ +- e = n->elsifF.elsif; +- mcDebug_assert (decl_isElsif (e)); +- return noIfElseChained (e); +- } ++ { ++ /* avoid dangling else. */ ++ if (n->elsifF.else_ != NULL) ++ { ++ /* we do have an else, continue to check this statement. */ ++ return hasIfAndNoElse (n->elsifF.else_); ++ } ++ else if (n->elsifF.elsif == NULL) ++ { ++ /* avoid dangling else. */ ++ /* neither else or elsif. */ ++ return TRUE; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ /* test elsif for lack of else. */ ++ e = n->elsifF.elsif; ++ mcDebug_assert (decl_isElsif (e)); ++ return noIfElseChained (e); ++ } ++ } + } + return FALSE; + } +@@ -13045,17 +13788,22 @@ static unsigned int noIfElseChained (decl_node n) + static unsigned int hasIfElse (decl_node n) + { + if (n != NULL) +- if (decl_isStatementSequence (n)) +- { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if (isStatementSequenceEmpty (n)) +- return FALSE; +- else if (isSingleStatement (n)) +- { +- n = Indexing_GetIndice (n->stmtF.statements, 1); +- return isIfElse (n); +- } +- } ++ { ++ if (decl_isStatementSequence (n)) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if (isStatementSequenceEmpty (n)) ++ { ++ return FALSE; ++ } ++ else if (isSingleStatement (n)) ++ { ++ /* avoid dangling else. */ ++ n = Indexing_GetIndice (n->stmtF.statements, 1); ++ return isIfElse (n); ++ } ++ } ++ } + return FALSE; + } + +@@ -13081,20 +13829,29 @@ static unsigned int hasIfAndNoElse (decl_node n) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (decl_isStatementSequence (n)) +- if (isStatementSequenceEmpty (n)) +- return FALSE; +- else if (isSingleStatement (n)) +- { +- n = Indexing_GetIndice (n->stmtF.statements, 1); +- return hasIfAndNoElse (n); +- } +- else +- { +- n = Indexing_GetIndice (n->stmtF.statements, Indexing_HighIndice (n->stmtF.statements)); +- return hasIfAndNoElse (n); +- } ++ { ++ if (isStatementSequenceEmpty (n)) ++ { ++ return FALSE; ++ } ++ else if (isSingleStatement (n)) ++ { ++ /* avoid dangling else. */ ++ n = Indexing_GetIndice (n->stmtF.statements, 1); ++ return hasIfAndNoElse (n); ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ n = Indexing_GetIndice (n->stmtF.statements, Indexing_HighIndice (n->stmtF.statements)); ++ return hasIfAndNoElse (n); ++ } ++ } + else if ((decl_isElsif (n)) || (decl_isIf (n))) +- return noIfElseChained (n); ++ { ++ /* avoid dangling else. */ ++ return noIfElseChained (n); ++ } + } + return FALSE; + } +@@ -13131,6 +13888,7 @@ static void doIfC (mcPretty_pretty p, decl_node s) + } + else if ((noIfElse (s)) && (hasIfElse (s->ifF.then))) + { ++ /* avoid dangling else. */ + /* gcc does not like legal non dangling else, as it is poor style. + So we will avoid getting a warning. */ + p = mcPretty_pushPretty (p); +@@ -13145,7 +13903,10 @@ static void doIfC (mcPretty_pretty p, decl_node s) + p = mcPretty_popPretty (p); + } + else +- doCompoundStmt (p, s->ifF.then); ++ { ++ /* avoid dangling else. */ ++ doCompoundStmt (p, s->ifF.then); ++ } + mcDebug_assert ((s->ifF.else_ == NULL) || (s->ifF.elsif == NULL)); + if (containsStatement (s->ifF.else_)) + { +@@ -13156,6 +13917,7 @@ static void doIfC (mcPretty_pretty p, decl_node s) + } + else if ((s->ifF.elsif != NULL) && (decl_isElsif (s->ifF.elsif))) + { ++ /* avoid dangling else. */ + doCommentC (p, s->ifF.elseComment.body); + doCommentC (p, s->ifF.elseComment.after); + doElsifC (p, s->ifF.elsif); +@@ -13176,30 +13938,34 @@ static void doForIncCP (mcPretty_pretty p, decl_node s) + mcDebug_assert (decl_isFor (s)); + t = decl_skipType (decl_getType (s->forF.des)); + if (decl_isEnumeration (t)) +- if (s->forF.increment == NULL) +- { +- doExprC (p, s->forF.des); +- outText (p, (char *) "= static_cast<", 14); +- doTypeNameC (p, decl_getType (s->forF.des)); +- mcPretty_noSpace (p); +- outText (p, (char *) ">(static_cast(", 19); +- doExprC (p, s->forF.des); +- outText (p, (char *) "+1))", 4); +- } +- else +- { +- doExprC (p, s->forF.des); +- outText (p, (char *) "= static_cast<", 14); +- doTypeNameC (p, decl_getType (s->forF.des)); +- mcPretty_noSpace (p); +- outText (p, (char *) ">(static_cast(", 19); +- doExprC (p, s->forF.des); +- outText (p, (char *) "+", 1); +- doExprC (p, s->forF.increment); +- outText (p, (char *) "))", 2); +- } ++ { ++ if (s->forF.increment == NULL) ++ { ++ doExprC (p, s->forF.des); ++ outText (p, (char *) "= static_cast<", 14); ++ doTypeNameC (p, decl_getType (s->forF.des)); ++ mcPretty_noSpace (p); ++ outText (p, (char *) ">(static_cast(", 19); ++ doExprC (p, s->forF.des); ++ outText (p, (char *) "+1))", 4); ++ } ++ else ++ { ++ doExprC (p, s->forF.des); ++ outText (p, (char *) "= static_cast<", 14); ++ doTypeNameC (p, decl_getType (s->forF.des)); ++ mcPretty_noSpace (p); ++ outText (p, (char *) ">(static_cast(", 19); ++ doExprC (p, s->forF.des); ++ outText (p, (char *) "+", 1); ++ doExprC (p, s->forF.increment); ++ outText (p, (char *) "))", 2); ++ } ++ } + else +- doForIncC (p, s); ++ { ++ doForIncC (p, s); ++ } + } + + +@@ -13232,9 +13998,13 @@ static void doForIncC (mcPretty_pretty p, decl_node s) + static void doForInc (mcPretty_pretty p, decl_node s) + { + if (lang == ansiCP) +- doForIncCP (p, s); ++ { ++ doForIncCP (p, s); ++ } + else +- doForIncC (p, s); ++ { ++ doForIncC (p, s); ++ } + } + + +@@ -13312,23 +14082,35 @@ static void doFuncHighC (mcPretty_pretty p, decl_node a) + decl_node n; + + if ((decl_isLiteral (a)) && ((decl_getType (a)) == charN)) +- outCard (p, 0); ++ { ++ outCard (p, 0); ++ } + else if (isString (a)) +- outCard (p, a->stringF.length-2); ++ { ++ /* avoid dangling else. */ ++ outCard (p, a->stringF.length-2); ++ } + else if ((decl_isConst (a)) && (isString (a->constF.value))) +- doFuncHighC (p, a->constF.value); ++ { ++ /* avoid dangling else. */ ++ doFuncHighC (p, a->constF.value); ++ } + else if (decl_isUnbounded (decl_getType (a))) + { ++ /* avoid dangling else. */ + outText (p, (char *) "_", 1); + outTextN (p, decl_getSymName (a)); + outText (p, (char *) "_high", 5); + } + else if (decl_isArray (decl_skipType (decl_getType (a)))) + { ++ /* avoid dangling else. */ + n = decl_skipType (decl_getType (a)); + s = n->arrayF.subr; + if (isZero (getMin (s))) +- doExprC (p, getMax (s)); ++ { ++ doExprC (p, getMax (s)); ++ } + else + { + outText (p, (char *) "(", 1); +@@ -13339,6 +14121,7 @@ static void doFuncHighC (mcPretty_pretty p, decl_node a) + } + else + { ++ /* avoid dangling else. */ + /* output sizeof (a) in bytes for the high. */ + outText (p, (char *) "(sizeof", 7); + mcPretty_setNeedSpace (p); +@@ -13373,15 +14156,21 @@ static void doMultiplyBySize (mcPretty_pretty p, decl_node a) + static void doTotype (mcPretty_pretty p, decl_node a, decl_node t) + { + if ((! (isString (a))) && (! (decl_isLiteral (a)))) +- if (decl_isVar (a)) +- { +- if (((a->varF.isParameter || a->varF.isVarParameter) && (decl_isUnbounded (decl_getType (a)))) && ((decl_skipType (decl_getType (decl_getType (a)))) == (decl_skipType (decl_getType (t))))) +- /* do not multiply by size as the existing high value is correct. */ +- return; +- a = decl_getType (a); +- if (decl_isArray (a)) +- doMultiplyBySize (p, decl_skipType (decl_getType (a))); +- } ++ { ++ if (decl_isVar (a)) ++ { ++ if (((a->varF.isParameter || a->varF.isVarParameter) && (decl_isUnbounded (decl_getType (a)))) && ((decl_skipType (decl_getType (decl_getType (a)))) == (decl_skipType (decl_getType (t))))) ++ { ++ /* do not multiply by size as the existing high value is correct. */ ++ return; ++ } ++ a = decl_getType (a); ++ if (decl_isArray (a)) ++ { ++ doMultiplyBySize (p, decl_skipType (decl_getType (a))); ++ } ++ } ++ } + if (t == wordN) + { + mcPretty_setNeedSpace (p); +@@ -13423,30 +14212,45 @@ static void doFuncUnbounded (mcPretty_pretty p, decl_node actual, decl_node form + s = DynamicStrings_KillString (s); + } + else if (isString (actual)) +- outCstring (p, actual, TRUE); ++ { ++ /* avoid dangling else. */ ++ outCstring (p, actual, TRUE); ++ } + else if (decl_isConst (actual)) + { ++ /* avoid dangling else. */ + actual = resolveString (actual); + mcDebug_assert (isString (actual)); + outCstring (p, actual, TRUE); + } + else if (isFuncCall (actual)) +- if ((getExprType (actual)) == NULL) +- mcMetaError_metaError3 ((char *) "there is no return type to the procedure function {%3ad} which is being passed as the parameter {%1ad} to {%2ad}", 112, (unsigned char *) &formal, (sizeof (formal)-1), (unsigned char *) &func, (sizeof (func)-1), (unsigned char *) &actual, (sizeof (actual)-1)); +- else +- { +- outText (p, (char *) "&", 1); +- doExprC (p, actual); +- } ++ { ++ /* avoid dangling else. */ ++ if ((getExprType (actual)) == NULL) ++ { ++ mcMetaError_metaError3 ((char *) "there is no return type to the procedure function {%3ad} which is being passed as the parameter {%1ad} to {%2ad}", 112, (unsigned char *) &formal, (sizeof (formal)-1), (unsigned char *) &func, (sizeof (func)-1), (unsigned char *) &actual, (sizeof (actual)-1)); ++ } ++ else ++ { ++ outText (p, (char *) "&", 1); ++ doExprC (p, actual); ++ } ++ } + else if (decl_isUnbounded (decl_getType (actual))) +- /* doExprC (p, actual). */ +- doFQNameC (p, actual); ++ { ++ /* avoid dangling else. */ ++ /* doExprC (p, actual). */ ++ doFQNameC (p, actual); ++ } + else + { ++ /* avoid dangling else. */ + outText (p, (char *) "&", 1); + doExprC (p, actual); + if (decl_isArray (decl_skipType (decl_getType (actual)))) +- outText (p, (char *) ".array[0]", 9); ++ { ++ outText (p, (char *) ".array[0]", 9); ++ } + } + /* --fixme-- isDefForC is not implemented yet. + IF NOT isDefForC (getScope (func)) +@@ -13489,13 +14293,19 @@ static void doProcedureParamC (mcPretty_pretty p, decl_node actual, decl_node fo + static void doAdrExprC (mcPretty_pretty p, decl_node n) + { + if (isDeref (n)) +- /* no point in issuing & ( * n ) */ +- doExprC (p, n->unaryF.arg); ++ { ++ /* no point in issuing & ( * n ) */ ++ doExprC (p, n->unaryF.arg); ++ } + else if ((decl_isVar (n)) && n->varF.isVarParameter) +- /* no point in issuing & ( * n ) */ +- doFQNameC (p, n); ++ { ++ /* avoid dangling else. */ ++ /* no point in issuing & ( * n ) */ ++ doFQNameC (p, n); ++ } + else + { ++ /* avoid dangling else. */ + outText (p, (char *) "&", 1); + doExprC (p, n); + } +@@ -13519,10 +14329,14 @@ static unsigned int typePair (decl_node a, decl_node b, decl_node x, decl_node y + static unsigned int needsCast (decl_node at, decl_node ft) + { + if ((((((((((((at == nilN) || (at == ft)) || (typePair (at, ft, cardinalN, wordN))) || (typePair (at, ft, cardinalN, ztypeN))) || (typePair (at, ft, integerN, ztypeN))) || (typePair (at, ft, longcardN, ztypeN))) || (typePair (at, ft, shortcardN, ztypeN))) || (typePair (at, ft, longintN, ztypeN))) || (typePair (at, ft, shortintN, ztypeN))) || (typePair (at, ft, realN, rtypeN))) || (typePair (at, ft, longrealN, rtypeN))) || (typePair (at, ft, shortrealN, rtypeN))) +- return FALSE; ++ { ++ return FALSE; ++ } + else +- return TRUE; +-} ++ { ++ return TRUE; ++ } ++} + + + /* +@@ -13550,19 +14364,25 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n + } + else if ((decl_isPointer (decl_skipType (ft))) || ((decl_skipType (ft)) == addressN)) + { ++ /* avoid dangling else. */ + outText (p, (char *) "reinterpret_cast<", 17); + doTypeNameC (p, ft); + if (decl_isVarParam (formal)) +- outText (p, (char *) "*", 1); ++ { ++ outText (p, (char *) "*", 1); ++ } + mcPretty_noSpace (p); + outText (p, (char *) "> (", 3); + } + else + { ++ /* avoid dangling else. */ + outText (p, (char *) "static_cast<", 12); + doTypeNameC (p, ft); + if (decl_isVarParam (formal)) +- outText (p, (char *) "*", 1); ++ { ++ outText (p, (char *) "*", 1); ++ } + mcPretty_noSpace (p); + outText (p, (char *) "> (", 3); + } +@@ -13573,7 +14393,9 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n + outText (p, (char *) "(", 1); + doTypeNameC (p, ft); + if (decl_isVarParam (formal)) +- outText (p, (char *) "*", 1); ++ { ++ outText (p, (char *) "*", 1); ++ } + mcPretty_noSpace (p); + outText (p, (char *) ")", 1); + mcPretty_setNeedSpace (p); +@@ -13613,32 +14435,56 @@ static void doFuncParamC (mcPretty_pretty p, decl_node actual, decl_node formal, + unsigned int lbr; + + if (formal == NULL) +- doExprC (p, actual); ++ { ++ doExprC (p, actual); ++ } + else + { + ft = decl_skipType (decl_getType (formal)); + if (decl_isUnbounded (ft)) +- doFuncUnbounded (p, actual, formal, ft, func); ++ { ++ doFuncUnbounded (p, actual, formal, ft, func); ++ } + else +- if ((isAProcType (ft)) && (decl_isProcedure (actual))) +- if (decl_isVarParam (formal)) +- mcMetaError_metaError1 ((char *) "{%1MDad} cannot be passed as a VAR parameter", 44, (unsigned char *) &actual, (sizeof (actual)-1)); +- else +- doProcedureParamC (p, actual, formal); +- else if ((((decl_getType (actual)) != NULL) && (decl_isProcType (decl_skipType (decl_getType (actual))))) && ((decl_getType (actual)) != (decl_getType (formal)))) +- if (decl_isVarParam (formal)) +- mcMetaError_metaError2 ((char *) "{%1MDad} cannot be passed as a VAR parameter as the parameter requires a cast to the formal type {%2MDtad}", 106, (unsigned char *) &actual, (sizeof (actual)-1), (unsigned char *) &formal, (sizeof (formal)-1)); ++ { ++ if ((isAProcType (ft)) && (decl_isProcedure (actual))) ++ { ++ if (decl_isVarParam (formal)) ++ { ++ mcMetaError_metaError1 ((char *) "{%1MDad} cannot be passed as a VAR parameter", 44, (unsigned char *) &actual, (sizeof (actual)-1)); ++ } ++ else ++ { ++ doProcedureParamC (p, actual, formal); ++ } ++ } ++ else if ((((decl_getType (actual)) != NULL) && (decl_isProcType (decl_skipType (decl_getType (actual))))) && ((decl_getType (actual)) != (decl_getType (formal)))) ++ { ++ /* avoid dangling else. */ ++ if (decl_isVarParam (formal)) ++ { ++ mcMetaError_metaError2 ((char *) "{%1MDad} cannot be passed as a VAR parameter as the parameter requires a cast to the formal type {%2MDtad}", 106, (unsigned char *) &actual, (sizeof (actual)-1), (unsigned char *) &formal, (sizeof (formal)-1)); ++ } ++ else ++ { ++ doCastC (p, decl_getType (formal), actual); ++ } ++ } + else +- doCastC (p, decl_getType (formal), actual); +- else +- { +- lbr = checkSystemCast (p, actual, formal); +- if (decl_isVarParam (formal)) +- doAdrExprC (p, actual); +- else +- doExprC (p, actual); +- emitN (p, (char *) ")", 1, lbr); +- } ++ { ++ /* avoid dangling else. */ ++ lbr = checkSystemCast (p, actual, formal); ++ if (decl_isVarParam (formal)) ++ { ++ doAdrExprC (p, actual); ++ } ++ else ++ { ++ doExprC (p, actual); ++ } ++ emitN (p, (char *) ")", 1, lbr); ++ } ++ } + } + } + +@@ -13654,7 +14500,9 @@ static decl_node getNthParamType (Indexing_Index l, unsigned int i) + + p = getNthParam (l, i); + if (p != NULL) +- return decl_getType (p); ++ { ++ return decl_getType (p); ++ } + return NULL; + } + +@@ -13679,16 +14527,24 @@ static decl_node getNthParam (Indexing_Index l, unsigned int i) + { + p = Indexing_GetIndice (l, j); + if (decl_isParam (p)) +- k = identListLen (p->paramF.namelist); ++ { ++ k = identListLen (p->paramF.namelist); ++ } + else if (decl_isVarParam (p)) +- k = identListLen (p->varparamF.namelist); ++ { ++ /* avoid dangling else. */ ++ k = identListLen (p->varparamF.namelist); ++ } + else + { ++ /* avoid dangling else. */ + mcDebug_assert (decl_isVarargs (p)); + return NULL; + } + if (i <= k) +- return p; ++ { ++ return p; ++ } + else + { + i -= k; +@@ -13712,7 +14568,9 @@ static void doFuncArgsC (mcPretty_pretty p, decl_node s, Indexing_Index l, unsig + unsigned int n; + + if (needParen) +- outText (p, (char *) "(", 1); ++ { ++ outText (p, (char *) "(", 1); ++ } + if (s->funccallF.args != NULL) + { + i = 1; +@@ -13750,7 +14608,9 @@ static void doProcTypeArgsC (mcPretty_pretty p, decl_node s, Indexing_Index args + unsigned int n; + + if (needParen) +- outText (p, (char *) "(", 1); ++ { ++ outText (p, (char *) "(", 1); ++ } + if (s->funccallF.args != NULL) + { + i = 1; +@@ -13783,26 +14643,38 @@ static void doProcTypeArgsC (mcPretty_pretty p, decl_node s, Indexing_Index args + static void doAdrArgC (mcPretty_pretty p, decl_node n) + { + if (isDeref (n)) +- /* & and * cancel each other out. */ +- doExprC (p, n->unaryF.arg); ++ { ++ /* & and * cancel each other out. */ ++ doExprC (p, n->unaryF.arg); ++ } + else if ((decl_isVar (n)) && n->varF.isVarParameter) +- outTextN (p, decl_getSymName (n)); /* --fixme-- does the caller need to cast it? */ ++ { ++ /* avoid dangling else. */ ++ outTextN (p, decl_getSymName (n)); /* --fixme-- does the caller need to cast it? */ ++ } + else +- if (isString (n)) +- if (lang == ansiCP) ++ { ++ /* avoid dangling else. */ ++ if (isString (n)) + { +- outText (p, (char *) "const_cast (reinterpret_cast", 48); +- outText (p, (char *) "(", 1); +- doExprC (p, n); +- outText (p, (char *) "))", 2); ++ if (lang == ansiCP) ++ { ++ outText (p, (char *) "const_cast (reinterpret_cast", 48); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n); ++ outText (p, (char *) "))", 2); ++ } ++ else ++ { ++ doExprC (p, n); ++ } + } + else +- doExprC (p, n); +- else +- { +- outText (p, (char *) "&", 1); +- doExprC (p, n); +- } ++ { ++ outText (p, (char *) "&", 1); ++ doExprC (p, n); ++ } ++ } + } + + +@@ -13812,13 +14684,8 @@ static void doAdrArgC (mcPretty_pretty p, decl_node n) + + static void doAdrC (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) +- { +- /* avoid dangling else. */ +- if ((expListLen (n->funccallF.args)) == 1) +- doAdrArgC (p, getExpList (n->funccallF.args, 1)); +- } ++ mcDebug_assert (isUnary (n)); ++ doAdrArgC (p, n->unaryF.arg); + } + + +@@ -13828,11 +14695,15 @@ static void doAdrC (mcPretty_pretty p, decl_node n) + + static void doInc (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); ++ mcDebug_assert (isIntrinsic (n)); + if (lang == ansiCP) +- doIncDecCP (p, n, (char *) "+", 1); ++ { ++ doIncDecCP (p, n, (char *) "+", 1); ++ } + else +- doIncDecC (p, n, (char *) "+=", 2); ++ { ++ doIncDecC (p, n, (char *) "+=", 2); ++ } + } + + +@@ -13842,11 +14713,15 @@ static void doInc (mcPretty_pretty p, decl_node n) + + static void doDec (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); ++ mcDebug_assert (isIntrinsic (n)); + if (lang == ansiCP) +- doIncDecCP (p, n, (char *) "-", 1); ++ { ++ doIncDecCP (p, n, (char *) "-", 1); ++ } + else +- doIncDecC (p, n, (char *) "-=", 2); ++ { ++ doIncDecC (p, n, (char *) "-=", 2); ++ } + } + + +@@ -13861,17 +14736,21 @@ static void doIncDecC (mcPretty_pretty p, decl_node n, char *op_, unsigned int _ + /* make a local copy of each unbounded array. */ + memcpy (op, op_, _op_high+1); + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args != NULL) + { +- doExprC (p, getExpList (n->funccallF.args, 1)); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); + mcPretty_setNeedSpace (p); + outText (p, (char *) op, _op_high); + mcPretty_setNeedSpace (p); +- if ((expListLen (n->funccallF.args)) == 1) +- outText (p, (char *) "1", 1); ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ outText (p, (char *) "1", 1); ++ } + else +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ { ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); ++ } + } + } + +@@ -13882,18 +14761,20 @@ static void doIncDecC (mcPretty_pretty p, decl_node n, char *op_, unsigned int _ + + static void doIncDecCP (mcPretty_pretty p, decl_node n, char *op_, unsigned int _op_high) + { ++ decl_node lhs; + decl_node type; + char op[_op_high+1]; + + /* make a local copy of each unbounded array. */ + memcpy (op, op_, _op_high+1); + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args != NULL) + { +- doExprC (p, getExpList (n->funccallF.args, 1)); ++ lhs = getExpList (n->intrinsicF.args, 1); ++ doExprC (p, lhs); + mcPretty_setNeedSpace (p); +- type = decl_getType (getExpList (n->funccallF.args, 1)); ++ type = decl_getType (lhs); + if ((decl_isPointer (type)) || (type == addressN)) + { + /* cast to (char * ) and then back again after the arithmetic is complete. */ +@@ -13903,40 +14784,54 @@ static void doIncDecCP (mcPretty_pretty p, decl_node n, char *op_, unsigned int + doTypeNameC (p, type); + mcPretty_noSpace (p); + outText (p, (char *) "> (reinterpret_cast (", 29); +- doExprC (p, getExpList (n->funccallF.args, 1)); ++ doExprC (p, lhs); + mcPretty_noSpace (p); + outText (p, (char *) ")", 1); + outText (p, (char *) op, _op_high); +- if ((expListLen (n->funccallF.args)) == 1) +- outText (p, (char *) "1", 1); ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ outText (p, (char *) "1", 1); ++ } + else +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ { ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); ++ } + outText (p, (char *) ")", 1); + } + else if (decl_isEnumeration (decl_skipType (type))) + { ++ /* avoid dangling else. */ + outText (p, (char *) "= static_cast<", 14); + doTypeNameC (p, type); + mcPretty_noSpace (p); + outText (p, (char *) ">(static_cast(", 19); +- doExprC (p, getExpList (n->funccallF.args, 1)); ++ doExprC (p, lhs); + outText (p, (char *) ")", 1); + outText (p, (char *) op, _op_high); +- if ((expListLen (n->funccallF.args)) == 1) +- outText (p, (char *) "1", 1); ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ outText (p, (char *) "1", 1); ++ } + else +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ { ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); ++ } + outText (p, (char *) ")", 1); + } + else + { ++ /* avoid dangling else. */ + outText (p, (char *) op, _op_high); + outText (p, (char *) "=", 1); + mcPretty_setNeedSpace (p); +- if ((expListLen (n->funccallF.args)) == 1) +- outText (p, (char *) "1", 1); ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ outText (p, (char *) "1", 1); ++ } + else +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ { ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); ++ } + } + } + } +@@ -13950,14 +14845,14 @@ static void doInclC (mcPretty_pretty p, decl_node n) + { + decl_node lo; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args != NULL) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if ((expListLen (n->funccallF.args)) == 2) ++ if ((expListLen (n->intrinsicF.args)) == 2) + { +- doExprC (p, getExpList (n->funccallF.args, 1)); +- lo = getSetLow (getExpList (n->funccallF.args, 1)); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); ++ lo = getSetLow (getExpList (n->intrinsicF.args, 1)); + mcPretty_setNeedSpace (p); + outText (p, (char *) "|=", 2); + mcPretty_setNeedSpace (p); +@@ -13966,13 +14861,15 @@ static void doInclC (mcPretty_pretty p, decl_node n) + outText (p, (char *) "<<", 2); + mcPretty_setNeedSpace (p); + outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); + doSubtractC (p, lo); + mcPretty_setNeedSpace (p); + outText (p, (char *) "))", 2); + } + else +- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to INCL') */ ++ { ++ M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to INCL') */ ++ } + } + } + +@@ -13985,14 +14882,14 @@ static void doExclC (mcPretty_pretty p, decl_node n) + { + decl_node lo; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args != NULL) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if ((expListLen (n->funccallF.args)) == 2) ++ if ((expListLen (n->intrinsicF.args)) == 2) + { +- doExprC (p, getExpList (n->funccallF.args, 1)); +- lo = getSetLow (getExpList (n->funccallF.args, 1)); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); ++ lo = getSetLow (getExpList (n->intrinsicF.args, 1)); + mcPretty_setNeedSpace (p); + outText (p, (char *) "&=", 2); + mcPretty_setNeedSpace (p); +@@ -14001,13 +14898,15 @@ static void doExclC (mcPretty_pretty p, decl_node n) + outText (p, (char *) "<<", 2); + mcPretty_setNeedSpace (p); + outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 2)); ++ doExprC (p, getExpList (n->intrinsicF.args, 2)); + doSubtractC (p, lo); + mcPretty_setNeedSpace (p); + outText (p, (char *) ")))", 3); + } + else +- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to EXCL') */ ++ { ++ M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to EXCL') */ ++ } + } + } + +@@ -14020,35 +14919,41 @@ static void doNewC (mcPretty_pretty p, decl_node n) + { + decl_node t; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args == NULL) ++ { ++ M2RTS_HALT (-1); ++ } + else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- keyc_useStorage (); +- outText (p, (char *) "Storage_ALLOCATE", 16); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "((void **)", 10); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "&", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ",", 1); +- mcPretty_setNeedSpace (p); +- t = decl_skipType (decl_getType (getExpList (n->funccallF.args, 1))); +- if (decl_isPointer (t)) +- { +- t = decl_getType (t); +- outText (p, (char *) "sizeof", 6); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doTypeNameC (p, t); +- mcPretty_noSpace (p); +- outText (p, (char *) "))", 2); +- } +- else +- mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to NEW, rather than {%1ad}", 76, (unsigned char *) &t, (sizeof (t)-1)); +- } ++ { ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ keyc_useStorage (); ++ outText (p, (char *) "Storage_ALLOCATE", 16); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "((void **)", 10); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "&", 1); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); ++ outText (p, (char *) ",", 1); ++ mcPretty_setNeedSpace (p); ++ t = decl_skipType (decl_getType (getExpList (n->intrinsicF.args, 1))); ++ if (decl_isPointer (t)) ++ { ++ t = decl_getType (t); ++ outText (p, (char *) "sizeof", 6); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doTypeNameC (p, t); ++ mcPretty_noSpace (p); ++ outText (p, (char *) "))", 2); ++ } ++ else ++ { ++ mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to NEW, rather than {%1ad}", 76, (unsigned char *) &t, (sizeof (t)-1)); ++ } ++ } ++ } + } + + +@@ -14060,37 +14965,45 @@ static void doDisposeC (mcPretty_pretty p, decl_node n) + { + decl_node t; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); ++ mcDebug_assert (isIntrinsic (n)); ++ if (n->intrinsicF.args == NULL) ++ { ++ M2RTS_HALT (-1); ++ } + else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- keyc_useStorage (); +- outText (p, (char *) "Storage_DEALLOCATE", 18); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "((void **)", 10); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "&", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ",", 1); +- mcPretty_setNeedSpace (p); +- t = decl_skipType (decl_getType (getExpList (n->funccallF.args, 1))); +- if (decl_isPointer (t)) +- { +- t = decl_getType (t); +- outText (p, (char *) "sizeof", 6); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doTypeNameC (p, t); +- mcPretty_noSpace (p); +- outText (p, (char *) "))", 2); +- } +- else +- mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to DISPOSE, rather than {%1ad}", 80, (unsigned char *) &t, (sizeof (t)-1)); +- } +- else +- M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to DISPOSE') */ ++ { ++ if ((expListLen (n->intrinsicF.args)) == 1) ++ { ++ keyc_useStorage (); ++ outText (p, (char *) "Storage_DEALLOCATE", 18); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "((void **)", 10); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "&", 1); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); ++ outText (p, (char *) ",", 1); ++ mcPretty_setNeedSpace (p); ++ t = decl_skipType (decl_getType (getExpList (n->intrinsicF.args, 1))); ++ if (decl_isPointer (t)) ++ { ++ t = decl_getType (t); ++ outText (p, (char *) "sizeof", 6); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doTypeNameC (p, t); ++ mcPretty_noSpace (p); ++ outText (p, (char *) "))", 2); ++ } ++ else ++ { ++ mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to DISPOSE, rather than {%1ad}", 80, (unsigned char *) &t, (sizeof (t)-1)); ++ } ++ } ++ else ++ { ++ M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to DISPOSE') */ ++ } ++ } + } + + +@@ -14100,21 +15013,20 @@ static void doDisposeC (mcPretty_pretty p, decl_node n) + + static void doCapC (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- keyc_useCtype (); +- outText (p, (char *) "toupper", 7); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ")", 1); +- } +- else ++ mcDebug_assert (isUnary (n)); ++ if (n->unaryF.arg == NULL) ++ { + M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to CAP') */ ++ } ++ else ++ { ++ keyc_useCtype (); ++ outText (p, (char *) "toupper", 7); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); ++ } + } + + +@@ -14124,27 +15036,23 @@ static void doCapC (mcPretty_pretty p, decl_node n) + + static void doLengthC (mcPretty_pretty p, decl_node n) + { +- decl_node v; +- +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- keyc_useM2RTS (); +- outText (p, (char *) "M2RTS_Length", 12); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- v = getExpList (n->funccallF.args, 1); +- doExprC (p, v); +- outText (p, (char *) ",", 1); +- mcPretty_setNeedSpace (p); +- doFuncHighC (p, v); +- outText (p, (char *) ")", 1); +- } +- else ++ mcDebug_assert (isUnary (n)); ++ if (n->unaryF.arg == NULL) ++ { + M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to LENGTH') */ ++ } ++ else ++ { ++ keyc_useM2RTS (); ++ outText (p, (char *) "M2RTS_Length", 12); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ",", 1); ++ mcPretty_setNeedSpace (p); ++ doFuncHighC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); ++ } + } + + +@@ -14156,11 +15064,15 @@ static void doAbsC (mcPretty_pretty p, decl_node n) + { + decl_node t; + +- mcDebug_assert (isFuncCall (n)); +- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1)) +- t = getExprType (n); ++ mcDebug_assert (isUnary (n)); ++ if (n->unaryF.arg == NULL) ++ { ++ M2RTS_HALT (-1); ++ } + else +- M2RTS_HALT (-1); ++ { ++ t = getExprType (n); ++ } + if (t == longintN) + { + keyc_useLabs (); +@@ -14168,26 +15080,36 @@ static void doAbsC (mcPretty_pretty p, decl_node n) + } + else if (t == integerN) + { ++ /* avoid dangling else. */ + keyc_useAbs (); + outText (p, (char *) "abs", 3); + } + else if (t == realN) + { ++ /* avoid dangling else. */ + keyc_useFabs (); + outText (p, (char *) "fabs", 4); + } + else if (t == longrealN) + { ++ /* avoid dangling else. */ + keyc_useFabsl (); + outText (p, (char *) "fabsl", 5); + } + else if (t == cardinalN) +- {} /* empty. */ ++ { ++ /* avoid dangling else. */ ++ } + else +- /* do nothing. */ +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ /* do nothing. */ ++ M2RTS_HALT (-1); ++ } + mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); + } + + +@@ -14197,22 +15119,14 @@ static void doAbsC (mcPretty_pretty p, decl_node n) + + static void doValC (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 2) +- { +- outText (p, (char *) "(", 1); +- doTypeNameC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ")", 1); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 2)); +- outText (p, (char *) ")", 1); +- } +- else +- M2RTS_HALT (-1); ++ mcDebug_assert (isBinary (n)); ++ outText (p, (char *) "(", 1); ++ doTypeNameC (p, n->binaryF.left); ++ outText (p, (char *) ")", 1); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->binaryF.right); ++ outText (p, (char *) ")", 1); + } + + +@@ -14223,20 +15137,10 @@ static void doValC (mcPretty_pretty p, decl_node n) + static void doMinC (mcPretty_pretty p, decl_node n) + { + decl_node t; +- decl_node a; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- a = getExpList (n->funccallF.args, 1); +- t = getExprType (a); +- doExprC (p, getMin (t)); +- } +- else +- M2RTS_HALT (-1); ++ mcDebug_assert (isUnary (n)); ++ t = getExprType (n->unaryF.arg); ++ doExprC (p, getMin (t)); + } + + +@@ -14247,63 +15151,36 @@ static void doMinC (mcPretty_pretty p, decl_node n) + static void doMaxC (mcPretty_pretty p, decl_node n) + { + decl_node t; +- decl_node a; + +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args == NULL) +- M2RTS_HALT (-1); +- else +- if ((expListLen (n->funccallF.args)) == 1) +- { +- a = getExpList (n->funccallF.args, 1); +- t = getExprType (a); +- doExprC (p, getMax (t)); +- } +- else +- M2RTS_HALT (-1); ++ mcDebug_assert (isUnary (n)); ++ t = getExprType (n->unaryF.arg); ++ doExprC (p, getMax (t)); + } + + + /* +- isIntrinsic - returns if, n, is an instrinsic procedure. ++ isIntrinsic - returns if, n, is an intrinsic procedure. ++ The intrinsic functions are represented as unary and binary nodes. + */ + + static unsigned int isIntrinsic (decl_node n) + { +- switch (n->funccallF.function->kind) ++ switch (n->kind) + { +- case halt: +- case max: +- case min: +- case cast: +- case val: +- case adr: +- case size: +- case tsize: +- case float_: +- case trunc: +- case ord: +- case chr: +- case cap: +- case abs_: +- case im: +- case re: +- case cmplx: +- case high: ++ case throw: + case inc: + case dec: + case incl: + case excl: + case new: + case dispose: +- case length: +- case throw: ++ case halt: + return TRUE; + break; + + + default: +- return (isFuncCall (n)) && (n->funccallF.function == haltN); ++ return FALSE; + break; + } + } +@@ -14315,19 +15192,20 @@ static unsigned int isIntrinsic (decl_node n) + + static void doHalt (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if ((n->funccallF.args == NULL) || ((expListLen (n->funccallF.args)) == 0)) ++ mcDebug_assert (n->kind == halt); ++ if ((n->intrinsicF.args == NULL) || ((expListLen (n->intrinsicF.args)) == 0)) + { + outText (p, (char *) "M2RTS_HALT", 10); + mcPretty_setNeedSpace (p); + outText (p, (char *) "(-1)", 4); + } +- else if ((expListLen (n->funccallF.args)) == 1) ++ else if ((expListLen (n->intrinsicF.args)) == 1) + { ++ /* avoid dangling else. */ + outText (p, (char *) "M2RTS_HALT", 10); + mcPretty_setNeedSpace (p); + outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); ++ doExprC (p, getExpList (n->intrinsicF.args, 1)); + outText (p, (char *) ")", 1); + } + } +@@ -14341,20 +15219,28 @@ static void doReC (mcPretty_pretty p, decl_node n) + { + decl_node t; + +- mcDebug_assert (isFuncCall (n)); +- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1)) +- t = getExprType (n); ++ mcDebug_assert (n->kind == re); ++ if (n->unaryF.arg != NULL) ++ { ++ t = getExprType (n->unaryF.arg); ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + if (t == realN) + { + keyc_useComplex (); + outText (p, (char *) "creal", 5); + } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); + } + + +@@ -14366,20 +15252,28 @@ static void doImC (mcPretty_pretty p, decl_node n) + { + decl_node t; + +- mcDebug_assert (isFuncCall (n)); +- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1)) +- t = getExprType (n); ++ mcDebug_assert (n->kind == im); ++ if (n->unaryF.arg != NULL) ++ { ++ t = getExprType (n->unaryF.arg); ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + if (t == realN) + { + keyc_useComplex (); + outText (p, (char *) "cimag", 5); + } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); + } + + +@@ -14389,30 +15283,22 @@ static void doImC (mcPretty_pretty p, decl_node n) + + static void doCmplx (mcPretty_pretty p, decl_node n) + { +- mcDebug_assert (isFuncCall (n)); +- if (n->funccallF.args != NULL) +- if ((expListLen (n->funccallF.args)) == 2) +- { +- keyc_useComplex (); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 1)); +- outText (p, (char *) ")", 1); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "+", 1); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "(", 1); +- doExprC (p, getExpList (n->funccallF.args, 2)); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "*", 1); +- mcPretty_setNeedSpace (p); +- outText (p, (char *) "I", 1); +- outText (p, (char *) ")", 1); +- } +- else +- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to CMPLX') */ +- else +- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to CMPLX') */ ++ mcDebug_assert (isBinary (n)); ++ keyc_useComplex (); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->binaryF.left); ++ outText (p, (char *) ")", 1); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "+", 1); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->binaryF.right); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "*", 1); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "I", 1); ++ outText (p, (char *) ")", 1); + } + + +@@ -14422,122 +15308,120 @@ static void doCmplx (mcPretty_pretty p, decl_node n) + + static void doIntrinsicC (mcPretty_pretty p, decl_node n) + { +- if (n->funccallF.function == haltN) +- doHalt (p, n); +- else +- switch (n->funccallF.function->kind) +- { +- case halt: +- doHalt (p, n); +- break; +- +- case val: +- doValC (p, n); +- break; +- +- case adr: +- doAdrC (p, n); +- break; +- +- case size: +- case tsize: +- outText (p, (char *) "sizeof", 6); +- mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); +- break; ++ mcDebug_assert (isIntrinsic (n)); ++ doCommentC (p, n->intrinsicF.intrinsicComment.body); ++ switch (n->kind) ++ { ++ case throw: ++ doThrowC (p, n); ++ break; + +- case float_: +- outText (p, (char *) "(double)", 8); +- mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); +- break; ++ case halt: ++ doHalt (p, n); ++ break; + +- case trunc: +- outText (p, (char *) "(int)", 5); +- mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); +- break; ++ case inc: ++ doInc (p, n); ++ break; + +- case ord: +- outText (p, (char *) "(unsigned int)", 14); +- mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); +- break; ++ case dec: ++ doDec (p, n); ++ break; + +- case chr: +- outText (p, (char *) "(char)", 6); +- mcPretty_setNeedSpace (p); +- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE); +- break; ++ case incl: ++ doInclC (p, n); ++ break; + +- case cap: +- doCapC (p, n); +- break; ++ case excl: ++ doExclC (p, n); ++ break; + +- case abs_: +- doAbsC (p, n); +- break; ++ case new: ++ doNewC (p, n); ++ break; + +- case high: +- doFuncHighC (p, getExpList (n->funccallF.args, 1)); +- break; ++ case dispose: ++ doDisposeC (p, n); ++ break; + +- case inc: +- doInc (p, n); +- break; + +- case dec: +- doDec (p, n); +- break; ++ default: ++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); ++ } ++ outText (p, (char *) ";", 1); ++ doAfterCommentC (p, n->intrinsicF.intrinsicComment.after); ++} + +- case incl: +- doInclC (p, n); +- break; + +- case excl: +- doExclC (p, n); +- break; ++/* ++ isIntrinsicFunction - returns true if, n, is an instrinsic function. ++*/ + +- case new: +- doNewC (p, n); +- break; ++static unsigned int isIntrinsicFunction (decl_node n) ++{ ++ switch (n->kind) ++ { ++ case val: ++ case adr: ++ case size: ++ case tsize: ++ case float_: ++ case trunc: ++ case ord: ++ case chr: ++ case cap: ++ case abs_: ++ case high: ++ case length: ++ case min: ++ case max: ++ case throw: ++ case re: ++ case im: ++ case cmplx: ++ return TRUE; ++ break; + +- case dispose: +- doDisposeC (p, n); +- break; + +- case length: +- doLengthC (p, n); +- break; ++ default: ++ return FALSE; ++ break; ++ } ++} + +- case min: +- doMinC (p, n); +- break; + +- case max: +- doMaxC (p, n); +- break; ++/* ++ doSizeC - ++*/ + +- case throw: +- doThrowC (p, n); +- break; ++static void doSizeC (mcPretty_pretty p, decl_node n) ++{ ++ mcDebug_assert (isUnary (n)); ++ outText (p, (char *) "sizeof (", 8); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) ")", 1); ++} + +- case re: +- doReC (p, n); +- break; + +- case im: +- doImC (p, n); +- break; ++/* ++ doConvertC - ++*/ + +- case cmplx: +- doCmplx (p, n); +- break; ++static void doConvertC (mcPretty_pretty p, decl_node n, char *conversion_, unsigned int _conversion_high) ++{ ++ char conversion[_conversion_high+1]; + ++ /* make a local copy of each unbounded array. */ ++ memcpy (conversion, conversion_, _conversion_high+1); + +- default: +- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); +- } ++ mcDebug_assert (isUnary (n)); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ outText (p, (char *) conversion, _conversion_high); ++ mcPretty_setNeedSpace (p); ++ outText (p, (char *) "(", 1); ++ doExprC (p, n->unaryF.arg); ++ outText (p, (char *) "))", 2); + } + + +@@ -14549,7 +15433,9 @@ static decl_node getFuncFromExpr (decl_node n) + { + n = decl_skipType (decl_getType (n)); + while ((n != procN) && (! (decl_isProcType (n)))) +- n = decl_skipType (decl_getType (n)); ++ { ++ n = decl_skipType (decl_getType (n)); ++ } + return n; + } + +@@ -14563,9 +15449,7 @@ static void doFuncExprC (mcPretty_pretty p, decl_node n) + decl_node t; + + mcDebug_assert (isFuncCall (n)); +- if (isIntrinsic (n)) +- doIntrinsicC (p, n); +- else if (decl_isProcedure (n->funccallF.function)) ++ if (decl_isProcedure (n->funccallF.function)) + { + doFQDNameC (p, n->funccallF.function, TRUE); + mcPretty_setNeedSpace (p); +@@ -14579,7 +15463,9 @@ static void doFuncExprC (mcPretty_pretty p, decl_node n) + mcPretty_setNeedSpace (p); + t = getFuncFromExpr (n->funccallF.function); + if (t == procN) +- doProcTypeArgsC (p, n, (Indexing_Index) NULL, TRUE); ++ { ++ doProcTypeArgsC (p, n, (Indexing_Index) NULL, TRUE); ++ } + else + { + mcDebug_assert (decl_isProcType (t)); +@@ -14612,7 +15498,9 @@ static void doCaseStatementC (mcPretty_pretty p, decl_node n, unsigned int needB + mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); + doStatementSequenceC (p, n); + if (needBreak) +- outText (p, (char *) "break;\\n", 8); ++ { ++ outText (p, (char *) "break;\\n", 8); ++ } + p = mcPretty_popPretty (p); + } + +@@ -14684,9 +15572,13 @@ static void doException (mcPretty_pretty p, char *a_, unsigned int _a_high, decl + + keyc_useException (); + if (lang == ansiCP) +- doExceptionCP (p, (char *) a, _a_high, n); ++ { ++ doExceptionCP (p, (char *) a, _a_high, n); ++ } + else +- doExceptionC (p, (char *) a, _a_high, n); ++ { ++ doExceptionC (p, (char *) a, _a_high, n); ++ } + } + + +@@ -14788,7 +15680,9 @@ static void doCaseLabels (mcPretty_pretty p, decl_node n, unsigned int needBreak + mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC); + doStatementSequenceC (p, n->caselabellistF.statements); + if (needBreak) +- outText (p, (char *) "break;\\n\\n", 10); ++ { ++ outText (p, (char *) "break;\\n\\n", 10); ++ } + p = mcPretty_popPretty (p); + } + +@@ -14833,7 +15727,9 @@ static void doCaseIfLabels (mcPretty_pretty p, decl_node e, decl_node n, unsigne + doRangeIfListC (p, e, n->caselabellistF.caseList); + outText (p, (char *) ")\\n", 3); + if (h == 1) +- doCompoundStmt (p, n->caselabellistF.statements); ++ { ++ doCompoundStmt (p, n->caselabellistF.statements); ++ } + else + { + outText (p, (char *) "{\\n", 3); +@@ -14943,7 +15839,9 @@ static unsigned int canUseSwitchCaseLabels (decl_node n) + { + r = Indexing_GetIndice (l->caselistF.rangePairs, i); + if ((r->rangeF.hi != NULL) && (r->rangeF.lo != r->rangeF.hi)) +- return FALSE; ++ { ++ return FALSE; ++ } + i += 1; + } + return TRUE; +@@ -14969,7 +15867,9 @@ static unsigned int canUseSwitch (decl_node n) + { + c = Indexing_GetIndice (n->caseF.caseLabelList, i); + if (! (canUseSwitchCaseLabels (c))) +- return FALSE; ++ { ++ return FALSE; ++ } + i += 1; + } + return TRUE; +@@ -15049,33 +15949,80 @@ static void doStatementsC (mcPretty_pretty p, decl_node s) + if (s == NULL) + {} /* empty. */ + else if (decl_isStatementSequence (s)) +- doStatementSequenceC (p, s); ++ { ++ /* avoid dangling else. */ ++ doStatementSequenceC (p, s); ++ } + else if (isComment (s)) +- doCommentC (p, s); ++ { ++ /* avoid dangling else. */ ++ doCommentC (p, s); ++ } + else if (decl_isExit (s)) +- doExitC (p, s); ++ { ++ /* avoid dangling else. */ ++ doExitC (p, s); ++ } + else if (decl_isReturn (s)) +- doReturnC (p, s); ++ { ++ /* avoid dangling else. */ ++ doReturnC (p, s); ++ } + else if (isAssignment (s)) +- doAssignmentC (p, s); ++ { ++ /* avoid dangling else. */ ++ doAssignmentC (p, s); ++ } + else if (decl_isIf (s)) +- doIfC (p, s); ++ { ++ /* avoid dangling else. */ ++ doIfC (p, s); ++ } + else if (decl_isFor (s)) +- doForC (p, s); ++ { ++ /* avoid dangling else. */ ++ doForC (p, s); ++ } + else if (decl_isRepeat (s)) +- doRepeatC (p, s); ++ { ++ /* avoid dangling else. */ ++ doRepeatC (p, s); ++ } + else if (decl_isWhile (s)) +- doWhileC (p, s); ++ { ++ /* avoid dangling else. */ ++ doWhileC (p, s); ++ } ++ else if (isIntrinsic (s)) ++ { ++ /* avoid dangling else. */ ++ doIntrinsicC (p, s); ++ } + else if (isFuncCall (s)) +- doFuncCallC (p, s); ++ { ++ /* avoid dangling else. */ ++ doFuncCallC (p, s); ++ } + else if (decl_isCase (s)) +- doCaseC (p, s); ++ { ++ /* avoid dangling else. */ ++ doCaseC (p, s); ++ } + else if (decl_isLoop (s)) +- doLoopC (p, s); ++ { ++ /* avoid dangling else. */ ++ doLoopC (p, s); ++ } + else if (decl_isExit (s)) +- doExitC (p, s); ++ { ++ /* avoid dangling else. */ ++ doExitC (p, s); ++ } + else +- M2RTS_HALT (-1); /* need to handle another s^.kind. */ ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); /* need to handle another s^.kind. */ ++ } + } + + static void stop (void) +@@ -15139,7 +16086,7 @@ static void includeParameters (decl_node n) + + static unsigned int isHalt (decl_node n) + { +- return (n->funccallF.function == haltN) || (n->funccallF.function->kind == halt); ++ return n->kind == halt; + } + + +@@ -15174,7 +16121,9 @@ static unsigned int isLastStatementSequence (decl_node n, decl_isNodeF q) + mcDebug_assert (decl_isStatementSequence (n)); + h = Indexing_HighIndice (n->stmtF.statements); + if (h > 0) +- return isLastStatement ((decl_node) Indexing_GetIndice (n->stmtF.statements, h), q); ++ { ++ return isLastStatement ((decl_node) Indexing_GetIndice (n->stmtF.statements, h), q); ++ } + return FALSE; + } + +@@ -15190,11 +16139,17 @@ static unsigned int isLastStatementIf (decl_node n, decl_isNodeF q) + mcDebug_assert (decl_isIf (n)); + ret = TRUE; + if ((n->ifF.elsif != NULL) && ret) +- ret = isLastStatement (n->ifF.elsif, q); ++ { ++ ret = isLastStatement (n->ifF.elsif, q); ++ } + if ((n->ifF.then != NULL) && ret) +- ret = isLastStatement (n->ifF.then, q); ++ { ++ ret = isLastStatement (n->ifF.then, q); ++ } + if ((n->ifF.else_ != NULL) && ret) +- ret = isLastStatement (n->ifF.else_, q); ++ { ++ ret = isLastStatement (n->ifF.else_, q); ++ } + return ret; + } + +@@ -15210,11 +16165,17 @@ static unsigned int isLastStatementElsif (decl_node n, decl_isNodeF q) + mcDebug_assert (decl_isElsif (n)); + ret = TRUE; + if ((n->elsifF.elsif != NULL) && ret) +- ret = isLastStatement (n->elsifF.elsif, q); ++ { ++ ret = isLastStatement (n->elsifF.elsif, q); ++ } + if ((n->elsifF.then != NULL) && ret) +- ret = isLastStatement (n->elsifF.then, q); ++ { ++ ret = isLastStatement (n->elsifF.then, q); ++ } + if ((n->elsifF.else_ != NULL) && ret) +- ret = isLastStatement (n->elsifF.else_, q); ++ { ++ ret = isLastStatement (n->elsifF.else_, q); ++ } + return ret; + } + +@@ -15242,7 +16203,9 @@ static unsigned int isLastStatementCase (decl_node n, decl_isNodeF q) + i += 1; + } + if (n->caseF.else_ != NULL) +- ret = ret && (isLastStatement (n->caseF.else_, q)); ++ { ++ ret = ret && (isLastStatement (n->caseF.else_, q)); ++ } + return ret; + } + +@@ -15256,20 +16219,35 @@ static unsigned int isLastStatement (decl_node n, decl_isNodeF q) + unsigned int ret; + + if (decl_isStatementSequence (n)) +- return isLastStatementSequence (n, q); ++ { ++ return isLastStatementSequence (n, q); ++ } + else if (decl_isProcedure (n)) + { ++ /* avoid dangling else. */ + mcDebug_assert (decl_isProcedure (n)); + return isLastStatement (n->procedureF.beginStatements, q); + } + else if (decl_isIf (n)) +- return isLastStatementIf (n, q); ++ { ++ /* avoid dangling else. */ ++ return isLastStatementIf (n, q); ++ } + else if (decl_isElsif (n)) +- return isLastStatementElsif (n, q); ++ { ++ /* avoid dangling else. */ ++ return isLastStatementElsif (n, q); ++ } + else if (decl_isCase (n)) +- return isLastStatementCase (n, q); ++ { ++ /* avoid dangling else. */ ++ return isLastStatementCase (n, q); ++ } + else if ((*q.proc) (n)) +- return TRUE; ++ { ++ /* avoid dangling else. */ ++ return TRUE; ++ } + return FALSE; + } + +@@ -15293,11 +16271,17 @@ static void doProcedureC (decl_node n) + doLocalVarC (doP, n->procedureF.decls); + doUnboundedParamCopyC (doP, n); + if (s != (mcPretty_getcurline (doP))) +- outText (doP, (char *) "\\n", 2); ++ { ++ outText (doP, (char *) "\\n", 2); ++ } + doStatementsC (doP, n->procedureF.beginStatements); + if (n->procedureF.returnType != NULL) +- if (returnException && (! (isLastStatementReturn (n)))) +- doException (doP, (char *) "ReturnException", 15, n); ++ { ++ if (returnException && (! (isLastStatementReturn (n)))) ++ { ++ doException (doP, (char *) "ReturnException", 15, n); ++ } ++ } + doP = outKc (doP, (char *) "}\\n", 3); + keyc_leaveScope (n); + } +@@ -15311,7 +16295,9 @@ static void outProceduresC (mcPretty_pretty p, scopeT s) + { + doP = p; + if (debugDecl) +- libc_printf ((char *) "seen %d procedures\\n", 20, Indexing_HighIndice (s.procedures)); ++ { ++ libc_printf ((char *) "seen %d procedures\\n", 20, Indexing_HighIndice (s.procedures)); ++ } + Indexing_ForeachIndiceInIndexDo (s.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) doProcedureC}); + } + +@@ -15323,11 +16309,19 @@ static void outProceduresC (mcPretty_pretty p, scopeT s) + static void output (decl_node n, nodeProcedure c, nodeProcedure t, nodeProcedure v) + { + if (decl_isConst (n)) +- (*c.proc) (n); ++ { ++ (*c.proc) (n); ++ } + else if (decl_isVar (n)) +- (*v.proc) (n); ++ { ++ /* avoid dangling else. */ ++ (*v.proc) (n); ++ } + else +- (*t.proc) (n); ++ { ++ /* avoid dangling else. */ ++ (*t.proc) (n); ++ } + } + + +@@ -15354,11 +16348,17 @@ static dependentState allDependants (decl_node n) + static dependentState walkDependants (alists_alist l, decl_node n) + { + if ((n == NULL) || (alists_isItemInList (doneQ, (void *) n))) +- return completed; ++ { ++ return completed; ++ } + else if (alists_isItemInList (l, (void *) n)) +- return recursive; ++ { ++ /* avoid dangling else. */ ++ return recursive; ++ } + else + { ++ /* avoid dangling else. */ + alists_includeItemIntoList (l, (void *) n); + return doDependants (l, n); + } +@@ -15375,11 +16375,17 @@ static dependentState walkType (alists_alist l, decl_node n) + + t = decl_getType (n); + if (alists_isItemInList (doneQ, (void *) t)) +- return completed; ++ { ++ return completed; ++ } + else if (alists_isItemInList (partialQ, (void *) t)) +- return blocked; ++ { ++ /* avoid dangling else. */ ++ return blocked; ++ } + else + { ++ /* avoid dangling else. */ + queueBlocked (t); + return blocked; + } +@@ -15401,7 +16407,9 @@ static void db (char *a_, unsigned int _a_high, decl_node n) + { + outText (doP, (char *) a, _a_high); + if (n != NULL) +- outTextS (doP, gen (n)); ++ { ++ outTextS (doP, gen (n)); ++ } + } + } + +@@ -15418,7 +16426,9 @@ static void dbt (char *a_, unsigned int _a_high) + memcpy (a, a_, _a_high+1); + + if (mcOptions_getDebugTopological ()) +- outText (doP, (char *) a, _a_high); ++ { ++ outText (doP, (char *) a, _a_high); ++ } + } + + +@@ -15453,7 +16463,9 @@ static void dbs (dependentState s, decl_node n) + CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1); + } + if (n != NULL) +- outTextS (doP, gen (n)); ++ { ++ outTextS (doP, gen (n)); ++ } + outText (doP, (char *) "}\\n", 3); + } + } +@@ -15475,11 +16487,13 @@ static void dbq (decl_node n) + } + else if (alists_isItemInList (partialQ, (void *) n)) + { ++ /* avoid dangling else. */ + db ((char *) "{P", 2, n); + outText (doP, (char *) "}", 1); + } + else if (alists_isItemInList (doneQ, (void *) n)) + { ++ /* avoid dangling else. */ + db ((char *) "{D", 2, n); + outText (doP, (char *) "}", 1); + } +@@ -15582,7 +16596,9 @@ static dependentState walkVarient (alists_alist l, decl_node n) + static void queueBlocked (decl_node n) + { + if (! ((alists_isItemInList (doneQ, (void *) n)) || (alists_isItemInList (partialQ, (void *) n)))) +- addTodo (n); ++ { ++ addTodo (n); ++ } + } + + +@@ -15596,7 +16612,9 @@ static dependentState walkVar (alists_alist l, decl_node n) + + t = decl_getType (n); + if (alists_isItemInList (doneQ, (void *) t)) +- return completed; ++ { ++ return completed; ++ } + else + { + queueBlocked (t); +@@ -15624,7 +16642,9 @@ static dependentState walkEnumeration (alists_alist l, decl_node n) + q = Indexing_GetIndice (n->enumerationF.listOfSons, i); + s = walkDependants (l, q); + if (s != completed) +- return s; ++ { ++ return s; ++ } + i += 1; + } + return s; +@@ -15641,13 +16661,19 @@ static dependentState walkSubrange (alists_alist l, decl_node n) + + s = walkDependants (l, n->subrangeF.low); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->subrangeF.high); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->subrangeF.type); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return completed; + } + +@@ -15662,10 +16688,14 @@ static dependentState walkSubscript (alists_alist l, decl_node n) + + s = walkDependants (l, n->subscriptF.expr); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->subscriptF.type); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return completed; + } + +@@ -15681,8 +16711,10 @@ static dependentState walkPointer (alists_alist l, decl_node n) + /* if the type of, n, is done or partial then we can output pointer. */ + t = decl_getType (n); + if ((alists_isItemInList (partialQ, (void *) t)) || (alists_isItemInList (doneQ, (void *) t))) +- /* pointer to partial can always generate a complete type. */ +- return completed; ++ { ++ /* pointer to partial can always generate a complete type. */ ++ return completed; ++ } + return walkType (l, n); + } + +@@ -15701,10 +16733,14 @@ static dependentState walkArray (alists_alist l, decl_node n) + s = walkDependants (l, n->arrayF.type); + queueBlocked (n->arrayF.type); + if (s == completed) +- /* downgrade the completed to partial as it has not yet been written. */ +- return partial; ++ { ++ /* downgrade the completed to partial as it has not yet been written. */ ++ return partial; ++ } + else +- return s; ++ { ++ return s; ++ } + } + return walkDependants (l, n->arrayF.subr); + } +@@ -15720,10 +16756,14 @@ static dependentState walkConst (alists_alist l, decl_node n) + + s = walkDependants (l, n->constF.type); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->constF.value); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return completed; + } + +@@ -15738,8 +16778,10 @@ static dependentState walkVarParam (alists_alist l, decl_node n) + + t = decl_getType (n); + if (alists_isItemInList (partialQ, (void *) t)) +- /* parameter can be issued from a partial. */ +- return completed; ++ { ++ /* parameter can be issued from a partial. */ ++ return completed; ++ } + return walkDependants (l, t); + } + +@@ -15754,8 +16796,10 @@ static dependentState walkParam (alists_alist l, decl_node n) + + t = decl_getType (n); + if (alists_isItemInList (partialQ, (void *) t)) +- /* parameter can be issued from a partial. */ +- return completed; ++ { ++ /* parameter can be issued from a partial. */ ++ return completed; ++ } + return walkDependants (l, t); + } + +@@ -15770,8 +16814,10 @@ static dependentState walkOptarg (alists_alist l, decl_node n) + + t = decl_getType (n); + if (alists_isItemInList (partialQ, (void *) t)) +- /* parameter can be issued from a partial. */ +- return completed; ++ { ++ /* parameter can be issued from a partial. */ ++ return completed; ++ } + return walkDependants (l, t); + } + +@@ -15794,11 +16840,13 @@ static dependentState walkRecordField (alists_alist l, decl_node n) + } + else if (alists_isItemInList (doneQ, (void *) t)) + { ++ /* avoid dangling else. */ + dbs ((dependentState) completed, n); + return completed; + } + else + { ++ /* avoid dangling else. */ + addTodo (t); + dbs ((dependentState) blocked, n); + dbq (n); +@@ -15877,7 +16925,9 @@ static dependentState walkProcType (alists_alist l, decl_node n) + /* proctype can be generated from partial types. */ + s = walkDependants (l, t); + if (s != completed) +- return s; ++ { ++ return s; ++ } + } + return walkParameters (l, n->proctypeF.parameters); + } +@@ -15893,7 +16943,9 @@ static dependentState walkProcedure (alists_alist l, decl_node n) + + s = walkDependants (l, decl_getType (n)); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return walkParameters (l, n->procedureF.parameters); + } + +@@ -15916,7 +16968,9 @@ static dependentState walkParameters (alists_alist l, Indexing_Index p) + q = Indexing_GetIndice (p, i); + s = walkDependants (l, q); + if (s != completed) +- return s; ++ { ++ return s; ++ } + i += 1; + } + return completed; +@@ -15943,7 +16997,9 @@ static dependentState walkUnary (alists_alist l, decl_node n) + + s = walkDependants (l, n->unaryF.arg); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return walkDependants (l, n->unaryF.resultType); + } + +@@ -15958,10 +17014,14 @@ static dependentState walkBinary (alists_alist l, decl_node n) + + s = walkDependants (l, n->binaryF.left); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->binaryF.right); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return walkDependants (l, n->binaryF.resultType); + } + +@@ -15976,10 +17036,14 @@ static dependentState walkComponentRef (alists_alist l, decl_node n) + + s = walkDependants (l, n->componentrefF.rec); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->componentrefF.field); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return walkDependants (l, n->componentrefF.resultType); + } + +@@ -15994,10 +17058,14 @@ static dependentState walkPointerRef (alists_alist l, decl_node n) + + s = walkDependants (l, n->pointerrefF.ptr); + if (s != completed) +- return s; ++ { ++ return s; ++ } + s = walkDependants (l, n->pointerrefF.field); + if (s != completed) +- return s; ++ { ++ return s; ++ } + return walkDependants (l, n->pointerrefF.resultType); + } + +@@ -16015,14 +17083,18 @@ static dependentState walkSetValue (alists_alist l, decl_node n) + mcDebug_assert (decl_isSetValue (n)); + s = walkDependants (l, n->setvalueF.type); + if (s != completed) +- return s; ++ { ++ return s; ++ } + i = Indexing_LowIndice (n->setvalueF.values); + j = Indexing_HighIndice (n->setvalueF.values); + while (i <= j) + { + s = walkDependants (l, (decl_node) Indexing_GetIndice (n->setvalueF.values, i)); + if (s != completed) +- return s; ++ { ++ return s; ++ } + i += 1; + } + return completed; +@@ -16177,6 +17249,10 @@ static dependentState doDependants (alists_alist l, decl_node n) + return walkPointerRef (l, n); + break; + ++ case not: ++ case abs_: ++ case min: ++ case max: + case chr: + case cap: + case ord: +@@ -16244,12 +17320,14 @@ static unsigned int tryComplete (decl_node n, nodeProcedure c, nodeProcedure t, + } + else if (((decl_isType (n)) && (decl_isTypeHidden (n))) && ((decl_getType (n)) == NULL)) + { ++ /* avoid dangling else. */ + /* can always emit hidden types. */ + outputHidden (n); + return TRUE; + } + else if ((allDependants (n)) == completed) + { ++ /* avoid dangling else. */ + output (n, c, t, v); + return TRUE; + } +@@ -16271,6 +17349,7 @@ static unsigned int tryCompleteFromPartial (decl_node n, nodeProcedure t) + } + else if ((allDependants (n)) == completed) + { ++ /* avoid dangling else. */ + (*t.proc) (n); + return TRUE; + } +@@ -16284,6 +17363,7 @@ static unsigned int tryCompleteFromPartial (decl_node n, nodeProcedure t) + + static void visitUnary (alists_alist v, decl_node n, nodeProcedure p) + { ++ mcDebug_assert (isUnary (n)); + visitNode (v, n->unaryF.arg, p); + visitNode (v, n->unaryF.resultType, p); + } +@@ -16319,7 +17399,9 @@ static void visitBoolean (alists_alist v, decl_node n, nodeProcedure p) + static void visitScope (alists_alist v, decl_node n, nodeProcedure p) + { + if (mustVisitScope) +- visitNode (v, n, p); ++ { ++ visitNode (v, n, p); ++ } + } + + +@@ -16908,6 +17990,17 @@ static void visitSetValue (alists_alist v, decl_node n, nodeProcedure p) + } + + ++/* ++ visitIntrinsic - ++*/ ++ ++static void visitIntrinsic (alists_alist v, decl_node n, nodeProcedure p) ++{ ++ mcDebug_assert (isIntrinsic (n)); ++ visitNode (v, n->intrinsicF.args, p); ++} ++ ++ + /* + visitDependants - helper procedure function called from visitNode. + node n has just been visited, this procedure will +@@ -16943,32 +18036,20 @@ static void visitDependants (alists_alist v, decl_node n, nodeProcedure p) + case comment: + break; + ++ case throw: + case halt: +- break; +- + case new: +- break; +- + case dispose: +- break; +- + case length: +- break; +- + case inc: +- break; +- + case dec: +- break; +- + case incl: +- break; +- + case excl: ++ visitIntrinsic (v, n, p); + break; + + case boolean: +- visitBoolean (v, n, p); /* handled in funccall. */ ++ visitBoolean (v, n, p); + break; + + case nil: +@@ -17180,24 +18261,74 @@ static void visitDependants (alists_alist v, decl_node n, nodeProcedure p) + visitBinary (v, n, p); + break; + +- case re: ++ case re: ++ visitUnary (v, n, p); ++ break; ++ + case im: ++ visitUnary (v, n, p); ++ break; ++ + case abs_: ++ visitUnary (v, n, p); ++ break; ++ + case chr: ++ visitUnary (v, n, p); ++ break; ++ + case cap: ++ visitUnary (v, n, p); ++ break; ++ + case high: ++ visitUnary (v, n, p); ++ break; ++ + case ord: ++ visitUnary (v, n, p); ++ break; ++ + case float_: ++ visitUnary (v, n, p); ++ break; ++ + case trunc: ++ visitUnary (v, n, p); ++ break; ++ + case not: ++ visitUnary (v, n, p); ++ break; ++ + case neg: ++ visitUnary (v, n, p); ++ break; ++ + case adr: ++ visitUnary (v, n, p); ++ break; ++ + case size: ++ visitUnary (v, n, p); ++ break; ++ + case tsize: ++ visitUnary (v, n, p); ++ break; ++ + case min: ++ visitUnary (v, n, p); ++ break; ++ + case max: +- case throw: ++ visitUnary (v, n, p); ++ break; ++ + case constexp: ++ visitUnary (v, n, p); ++ break; ++ + case deref: + visitUnary (v, n, p); + break; +@@ -17698,7 +18829,9 @@ static unsigned int tryPartial (decl_node n, nodeProcedure pt) + { + q = decl_getType (n); + while (decl_isPointer (q)) +- q = decl_getType (q); ++ { ++ q = decl_getType (q); ++ } + if (q != NULL) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ +@@ -17710,6 +18843,7 @@ static unsigned int tryPartial (decl_node n, nodeProcedure pt) + } + else if (decl_isArray (q)) + { ++ /* avoid dangling else. */ + (*pt.proc) (n); + addTodo (q); + return TRUE; +@@ -17741,11 +18875,19 @@ static void outputPartial (decl_node n) + mcPretty_setNeedSpace (doP); + s = getFQstring (n); + if (decl_isRecord (q)) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_r", 2))); ++ { ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_r", 2))); ++ } + else if (decl_isArray (q)) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_a", 2))); ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_a", 2))); ++ } + else if (decl_isProcType (q)) +- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_p", 2))); ++ { ++ /* avoid dangling else. */ ++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_p", 2))); ++ } + outTextS (doP, s); + mcPretty_setNeedSpace (doP); + s = DynamicStrings_KillString (s); +@@ -17782,12 +18924,16 @@ static void tryOutputTodo (nodeProcedure c, nodeProcedure t, nodeProcedure v, no + } + else if (tryPartial (d, pt)) + { ++ /* avoid dangling else. */ + alists_removeItemFromList (todoQ, (void *) d); + alists_includeItemIntoList (partialQ, (void *) d); + i = 1; + } + else +- i += 1; ++ { ++ /* avoid dangling else. */ ++ i += 1; ++ } + n = alists_noOfItemsInList (todoQ); + } + } +@@ -17816,7 +18962,9 @@ static void tryOutputPartial (nodeProcedure t) + n -= 1; + } + else +- i += 1; ++ { ++ i += 1; ++ } + } + } + +@@ -17873,7 +19021,9 @@ static void addEnumConst (decl_node n) + DynamicStrings_String s; + + if ((decl_isConst (n)) || (decl_isEnumeration (n))) +- addTodo (n); ++ { ++ addTodo (n); ++ } + } + + +@@ -17974,11 +19124,19 @@ static void outImpInitC (mcPretty_pretty p, decl_node n) + static void runSimplifyTypes (decl_node n) + { + if (decl_isImp (n)) +- simplifyTypes (n->impF.decls); ++ { ++ simplifyTypes (n->impF.decls); ++ } + else if (decl_isModule (n)) +- simplifyTypes (n->moduleF.decls); ++ { ++ /* avoid dangling else. */ ++ simplifyTypes (n->moduleF.decls); ++ } + else if (decl_isDef (n)) +- simplifyTypes (n->defF.decls); ++ { ++ /* avoid dangling else. */ ++ simplifyTypes (n->defF.decls); ++ } + } + + +@@ -18052,7 +19210,9 @@ static void runPrototypeExported (decl_node n) + static void runPrototypeDefC (decl_node n) + { + if (decl_isDef (n)) +- Indexing_ForeachIndiceInIndexDo (n->defF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) runPrototypeExported}); ++ { ++ Indexing_ForeachIndiceInIndexDo (n->defF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) runPrototypeExported}); ++ } + } + + +@@ -18102,7 +19262,9 @@ static void outImpC (mcPretty_pretty p, decl_node n) + outDeclsImpC (p, n->impF.decls); + defModule = decl_lookupDef (decl_getSymName (n)); + if (defModule != NULL) +- runPrototypeDefC (defModule); ++ { ++ runPrototypeDefC (defModule); ++ } + } + Indexing_ForeachIndiceInIndexDo (n->impF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) doPrototypeC}); + outProceduresC (p, n->impF.decls); +@@ -18209,13 +19371,24 @@ static void outC (mcPretty_pretty p, decl_node n) + { + keyc_enterScope (n); + if (decl_isDef (n)) +- outDefC (p, n); ++ { ++ outDefC (p, n); ++ } + else if (decl_isImp (n)) +- outImpC (p, n); ++ { ++ /* avoid dangling else. */ ++ outImpC (p, n); ++ } + else if (decl_isModule (n)) +- outModuleC (p, n); ++ { ++ /* avoid dangling else. */ ++ outModuleC (p, n); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + keyc_leaveScope (n); + } + +@@ -18234,11 +19407,19 @@ static void doIncludeM2 (decl_node n) + mcPretty_print (doP, (char *) " ;\\n", 4); + s = DynamicStrings_KillString (s); + if (decl_isDef (n)) +- symbolKey_foreachNodeDo (n->defF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ { ++ symbolKey_foreachNodeDo (n->defF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ } + else if (decl_isImp (n)) +- symbolKey_foreachNodeDo (n->impF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ { ++ /* avoid dangling else. */ ++ symbolKey_foreachNodeDo (n->impF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ } + else if (decl_isModule (n)) +- symbolKey_foreachNodeDo (n->moduleF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ { ++ /* avoid dangling else. */ ++ symbolKey_foreachNodeDo (n->moduleF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone}); ++ } + } + + +@@ -18306,11 +19487,15 @@ static void doVarientFieldM2 (mcPretty_pretty p, decl_node n) + } + else if (decl_isVarient (q)) + { ++ /* avoid dangling else. */ + doVarientM2 (p, q); + outText (p, (char *) ";\\n", 3); + } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + i += 1; + } + } +@@ -18333,11 +19518,19 @@ static void doVarientM2 (mcPretty_pretty p, decl_node n) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if (decl_isRecordField (n->varientF.tag)) +- doRecordFieldM2 (p, n->varientF.tag); ++ { ++ doRecordFieldM2 (p, n->varientF.tag); ++ } + else if (decl_isVarientField (n->varientF.tag)) +- doVarientFieldM2 (p, n->varientF.tag); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldM2 (p, n->varientF.tag); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + } + mcPretty_setNeedSpace (p); + outText (p, (char *) "OF\\n", 4); +@@ -18356,9 +19549,15 @@ static void doVarientM2 (mcPretty_pretty p, decl_node n) + } + } + else if (decl_isVarientField (q)) +- doVarientFieldM2 (p, q); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldM2 (p, q); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + i += 1; + } + outText (p, (char *) "END", 3); +@@ -18395,11 +19594,15 @@ static void doRecordM2 (mcPretty_pretty p, decl_node n) + } + else if (decl_isVarient (f)) + { ++ /* avoid dangling else. */ + doVarientM2 (p, f); + outText (p, (char *) ";\\n", 3); + } + else if (decl_isVarientField (f)) +- doVarientFieldM2 (p, f); ++ { ++ /* avoid dangling else. */ ++ doVarientFieldM2 (p, f); ++ } + i += 1; + } + p = outKm2 (p, (char *) "END", 3); +@@ -18532,19 +19735,39 @@ static void doSystemM2 (mcPretty_pretty p, decl_node n) + static void doTypeM2 (mcPretty_pretty p, decl_node n) + { + if (isBase (n)) +- doBaseM2 (p, n); ++ { ++ doBaseM2 (p, n); ++ } + else if (isSystem (n)) +- doSystemM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doSystemM2 (p, n); ++ } + else if (decl_isType (n)) +- doTypeAliasM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doTypeAliasM2 (p, n); ++ } + else if (decl_isProcType (n)) +- doProcTypeM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doProcTypeM2 (p, n); ++ } + else if (decl_isPointer (n)) +- doPointerM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doPointerM2 (p, n); ++ } + else if (decl_isEnumeration (n)) +- doEnumerationM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doEnumerationM2 (p, n); ++ } + else if (decl_isRecord (n)) +- doRecordM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doRecordM2 (p, n); ++ } + } + + +@@ -18615,13 +19838,17 @@ static void doParamM2 (mcPretty_pretty p, decl_node n) + mcDebug_assert (decl_isParam (n)); + ptype = decl_getType (n); + if (n->paramF.namelist == NULL) +- doTypeNameM2 (p, ptype); ++ { ++ doTypeNameM2 (p, ptype); ++ } + else + { + mcDebug_assert (isIdentList (n->paramF.namelist)); + l = n->paramF.namelist->identlistF.names; + if (l == NULL) +- doTypeNameM2 (p, ptype); ++ { ++ doTypeNameM2 (p, ptype); ++ } + else + { + t = wlists_noOfItemsInList (l); +@@ -18663,13 +19890,17 @@ static void doVarParamM2 (mcPretty_pretty p, decl_node n) + mcPretty_setNeedSpace (p); + ptype = decl_getType (n); + if (n->varparamF.namelist == NULL) +- doTypeNameM2 (p, ptype); ++ { ++ doTypeNameM2 (p, ptype); ++ } + else + { + mcDebug_assert (isIdentList (n->varparamF.namelist)); + l = n->varparamF.namelist->identlistF.names; + if (l == NULL) +- doTypeNameM2 (p, ptype); ++ { ++ doTypeNameM2 (p, ptype); ++ } + else + { + t = wlists_noOfItemsInList (l); +@@ -18701,11 +19932,19 @@ static void doVarParamM2 (mcPretty_pretty p, decl_node n) + static void doParameterM2 (mcPretty_pretty p, decl_node n) + { + if (decl_isParam (n)) +- doParamM2 (p, n); ++ { ++ doParamM2 (p, n); ++ } + else if (decl_isVarParam (n)) +- doVarParamM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ doVarParamM2 (p, n); ++ } + else if (decl_isVarargs (n)) +- mcPretty_print (p, (char *) "...", 3); ++ { ++ /* avoid dangling else. */ ++ mcPretty_print (p, (char *) "...", 3); ++ } + } + + +@@ -18765,11 +20004,19 @@ static void outputPartialM2 (decl_node n) + + q = decl_getType (n); + if (decl_isRecord (q)) +- doTypeM2 (doP, n); ++ { ++ doTypeM2 (doP, n); ++ } + else if (decl_isArray (q)) +- doTypeM2 (doP, n); ++ { ++ /* avoid dangling else. */ ++ doTypeM2 (doP, n); ++ } + else if (decl_isProcType (q)) +- doTypeM2 (doP, n); ++ { ++ /* avoid dangling else. */ ++ doTypeM2 (doP, n); ++ } + } + + +@@ -18879,13 +20126,24 @@ static void outModuleM2 (mcPretty_pretty p, decl_node n) + static void outM2 (mcPretty_pretty p, decl_node n) + { + if (decl_isDef (n)) +- outDefM2 (p, n); ++ { ++ outDefM2 (p, n); ++ } + else if (decl_isImp (n)) +- outImpM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ outImpM2 (p, n); ++ } + else if (decl_isModule (n)) +- outModuleM2 (p, n); ++ { ++ /* avoid dangling else. */ ++ outModuleM2 (p, n); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + } + + +@@ -18918,7 +20176,9 @@ static void addDoneDef (decl_node n) + mcError_errorAbort0 ((char *) "terminating compilation", 23); + } + else +- addDone (n); ++ { ++ addDone (n); ++ } + } + + +@@ -18929,7 +20189,9 @@ static void addDoneDef (decl_node n) + static decl_node dbgAdd (alists_alist l, decl_node n) + { + if (n != NULL) +- alists_includeItemIntoList (l, (void *) n); ++ { ++ alists_includeItemIntoList (l, (void *) n); ++ } + return n; + } + +@@ -18945,9 +20207,13 @@ static void dbgType (alists_alist l, decl_node n) + t = dbgAdd (l, decl_getType (n)); + out1 ((char *) "<%s type", 8, n); + if (t == NULL) +- out0 ((char *) ", type = NIL\\n", 14); ++ { ++ out0 ((char *) ", type = NIL\\n", 14); ++ } + else +- out1 ((char *) ", type = %s>\\n", 14, t); ++ { ++ out1 ((char *) ", type = %s>\\n", 14, t); ++ } + } + + +@@ -18982,13 +20248,24 @@ static void dbgRecord (alists_alist l, decl_node n) + { + q = Indexing_GetIndice (n->recordF.listOfSons, i); + if (decl_isRecordField (q)) +- out1 ((char *) " \\n", 7, q); + i += 1; +@@ -19011,7 +20288,9 @@ static void dbgVarient (alists_alist l, decl_node n) + out1 ((char *) "tag %s", 6, n->varientF.tag); + q = decl_getType (n->varientF.tag); + if (q == NULL) +- outText (doP, (char *) "\\n", 2); ++ { ++ outText (doP, (char *) "\\n", 2); ++ } + else + { + out1 ((char *) ": %s\\n", 6, q); +@@ -19023,13 +20302,24 @@ static void dbgVarient (alists_alist l, decl_node n) + { + q = Indexing_GetIndice (n->varientF.listOfSons, i); + if (decl_isRecordField (q)) +- out1 ((char *) " \\n", 7, q); + i += 1; +@@ -19082,7 +20372,9 @@ static void dbgVar (alists_alist l, decl_node n) + static void dbgSubrange (alists_alist l, decl_node n) + { + if (n->subrangeF.low == NULL) +- out1 ((char *) "%s", 2, n->subrangeF.type); ++ { ++ out1 ((char *) "%s", 2, n->subrangeF.type); ++ } + else + { + out1 ((char *) "[%s", 3, n->subrangeF.low); +@@ -19102,7 +20394,9 @@ static void dbgArray (alists_alist l, decl_node n) + t = dbgAdd (l, decl_getType (n)); + out1 ((char *) "<%s array ", 10, n); + if (n->arrayF.subr != NULL) +- dbgSubrange (l, n->arrayF.subr); ++ { ++ dbgSubrange (l, n->arrayF.subr); ++ } + out1 ((char *) " of %s>\\n", 9, t); + } + +@@ -19116,21 +20410,45 @@ static void doDbg (alists_alist l, decl_node n) + if (n == NULL) + {} /* empty. */ + else if (decl_isSubrange (n)) +- dbgSubrange (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgSubrange (l, n); ++ } + else if (decl_isType (n)) +- dbgType (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgType (l, n); ++ } + else if (decl_isRecord (n)) +- dbgRecord (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgRecord (l, n); ++ } + else if (decl_isVarient (n)) +- dbgVarient (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgVarient (l, n); ++ } + else if (decl_isEnumeration (n)) +- dbgEnumeration (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgEnumeration (l, n); ++ } + else if (decl_isPointer (n)) +- dbgPointer (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgPointer (l, n); ++ } + else if (decl_isArray (n)) +- dbgArray (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgArray (l, n); ++ } + else if (decl_isVar (n)) +- dbgVar (l, n); ++ { ++ /* avoid dangling else. */ ++ dbgVar (l, n); ++ } + } + + +@@ -19173,6 +20491,17 @@ static void addGenericBody (decl_node n, decl_node c) + { + switch (n->kind) + { ++ case throw: ++ case halt: ++ case new: ++ case dispose: ++ case inc: ++ case dec: ++ case incl: ++ case excl: ++ n->intrinsicF.intrinsicComment.body = c; ++ break; ++ + case funccall: + n->funccallF.funccallComment.body = c; + break; +@@ -19213,6 +20542,17 @@ static void addGenericAfter (decl_node n, decl_node c) + { + switch (n->kind) + { ++ case throw: ++ case halt: ++ case new: ++ case dispose: ++ case inc: ++ case dec: ++ case incl: ++ case excl: ++ n->intrinsicF.intrinsicComment.after = c; ++ break; ++ + case funccall: + n->funccallF.funccallComment.after = c; + break; +@@ -19532,7 +20872,6 @@ static decl_node doDupExpr (decl_node n) + case float_: + case trunc: + case ord: +- case throw: + case not: + case neg: + case adr: +@@ -19999,11 +21338,19 @@ void decl_resetEnumPos (decl_node n) + { + mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n))); + if (decl_isDef (n)) +- n->defF.enumFixup.count = 0; ++ { ++ n->defF.enumFixup.count = 0; ++ } + else if (decl_isImp (n)) +- n->impF.enumFixup.count = 0; ++ { ++ /* avoid dangling else. */ ++ n->impF.enumFixup.count = 0; ++ } + else if (decl_isModule (n)) +- n->moduleF.enumFixup.count = 0; ++ { ++ /* avoid dangling else. */ ++ n->moduleF.enumFixup.count = 0; ++ } + } + + +@@ -20018,11 +21365,19 @@ decl_node decl_getNextEnum (void) + n = NULL; + mcDebug_assert (((decl_isDef (currentModule)) || (decl_isImp (currentModule))) || (decl_isModule (currentModule))); + if (decl_isDef (currentModule)) +- n = getNextFixup (¤tModule->defF.enumFixup); ++ { ++ n = getNextFixup (¤tModule->defF.enumFixup); ++ } + else if (decl_isImp (currentModule)) +- n = getNextFixup (¤tModule->impF.enumFixup); ++ { ++ /* avoid dangling else. */ ++ n = getNextFixup (¤tModule->impF.enumFixup); ++ } + else if (decl_isModule (currentModule)) +- n = getNextFixup (¤tModule->moduleF.enumFixup); ++ { ++ /* avoid dangling else. */ ++ n = getNextFixup (¤tModule->moduleF.enumFixup); ++ } + mcDebug_assert (n != NULL); + mcDebug_assert ((decl_isEnumeration (n)) || (decl_isEnumerationField (n))); + return n; +@@ -20466,6 +21821,8 @@ decl_node decl_getType (decl_node n) + return booleanN; + break; + ++ case max: ++ case min: + case re: + case im: + case abs_: +@@ -20551,8 +21908,10 @@ decl_node decl_skipType (decl_node n) + while ((n != NULL) && (decl_isType (n))) + { + if ((decl_getType (n)) == NULL) +- /* this will occur if, n, is an opaque type. */ +- return n; ++ { ++ /* this will occur if, n, is an opaque type. */ ++ return n; ++ } + n = decl_getType (n); + } + return n; +@@ -20632,17 +21991,19 @@ unsigned int decl_isExported (decl_node n) + + s = decl_getScope (n); + if (s != NULL) +- switch (s->kind) +- { +- case def: +- return Indexing_IsIndiceInIndex (s->defF.exported, (void *) n); +- break; ++ { ++ switch (s->kind) ++ { ++ case def: ++ return Indexing_IsIndiceInIndex (s->defF.exported, (void *) n); ++ break; + + +- default: +- return FALSE; +- break; +- } ++ default: ++ return FALSE; ++ break; ++ } ++ } + return FALSE; + } + +@@ -20933,7 +22294,9 @@ unsigned int decl_isConstSet (decl_node n) + { + mcDebug_assert (n != NULL); + if ((decl_isLiteral (n)) || (decl_isConst (n))) +- return decl_isSet (decl_skipType (decl_getType (n))); ++ { ++ return decl_isSet (decl_skipType (decl_getType (n))); ++ } + return FALSE; + } + +@@ -21321,9 +22684,13 @@ decl_node decl_makeVarDecl (decl_node i, decl_node type) + decl_node decl_makeEnum (void) + { + if ((currentModule != NULL) && (decl_getEnumsComplete (currentModule))) +- return decl_getNextEnum (); ++ { ++ return decl_getNextEnum (); ++ } + else +- return doMakeEnum (); ++ { ++ return doMakeEnum (); ++ } + } + + +@@ -21334,9 +22701,13 @@ decl_node decl_makeEnum (void) + decl_node decl_makeEnumField (decl_node e, nameKey_Name n) + { + if ((currentModule != NULL) && (decl_getEnumsComplete (currentModule))) +- return decl_getNextEnum (); ++ { ++ return decl_getNextEnum (); ++ } + else +- return doMakeEnumField (e, n); ++ { ++ return doMakeEnumField (e, n); ++ } + } + + +@@ -21458,9 +22829,13 @@ decl_node decl_makeVarient (decl_node r) + n->varientF.listOfSons = Indexing_InitIndex (1); + /* if so use this n^.varientF.parent := r */ + if (decl_isRecord (r)) +- n->varientF.varient = NULL; ++ { ++ n->varientF.varient = NULL; ++ } + else +- n->varientF.varient = r; ++ { ++ n->varientF.varient = r; ++ } + n->varientF.tag = NULL; + n->varientF.scope = decl_getDeclScope (); + switch (r->kind) +@@ -21514,9 +22889,13 @@ decl_node decl_addFieldsToRecord (decl_node r, decl_node v, decl_node i, decl_no + fn = wlists_getItemFromList (i->identlistF.names, j); + fj = symbolKey_getSymKey (p->recordF.localSymbols, (nameKey_Name) n); + if (fj == NULL) +- fj = putFieldRecord (r, fn, t, v); ++ { ++ fj = putFieldRecord (r, fn, t, v); ++ } + else +- mcMetaError_metaErrors2 ((char *) "record field {%1ad} has already been declared inside a {%2Dd} {%2a}", 67, (char *) "attempting to declare a duplicate record field", 46, (unsigned char *) &fj, (sizeof (fj)-1), (unsigned char *) &p, (sizeof (p)-1)); ++ { ++ mcMetaError_metaErrors2 ((char *) "record field {%1ad} has already been declared inside a {%2Dd} {%2a}", 67, (char *) "attempting to declare a duplicate record field", 46, (unsigned char *) &fj, (sizeof (fj)-1), (unsigned char *) &p, (sizeof (p)-1)); ++ } + j += 1; + } + return r; +@@ -21538,14 +22917,18 @@ void decl_buildVarientSelector (decl_node r, decl_node v, nameKey_Name tag, decl + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if ((type == NULL) && (tag == nameKey_NulName)) +- mcMetaError_metaError1 ((char *) "expecting a tag field in the declaration of a varient record {%1Ua}", 67, (unsigned char *) &r, (sizeof (r)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "expecting a tag field in the declaration of a varient record {%1Ua}", 67, (unsigned char *) &r, (sizeof (r)-1)); ++ } + else if (type == NULL) + { ++ /* avoid dangling else. */ + f = decl_lookupSym (tag); + putVarientTag (v, f); + } + else + { ++ /* avoid dangling else. */ + f = putFieldRecord (r, tag, type, v); + mcDebug_assert (decl_isRecordField (f)); + f->recordfieldF.tag = TRUE; +@@ -21981,7 +23364,9 @@ decl_node decl_lookupExported (decl_node n, nameKey_Name i) + mcDebug_assert (decl_isDef (n)); + r = symbolKey_getSymKey (n->defF.decls.symbols, i); + if ((r != NULL) && (decl_isExported (r))) +- return r; ++ { ++ return r; ++ } + return NULL; + } + +@@ -22004,11 +23389,15 @@ decl_node decl_lookupSym (nameKey_Name n) + s = Indexing_GetIndice (scopeStack, h); + m = decl_lookupInScope (s, n); + if (debugScopes && (m == NULL)) +- out3 ((char *) " [%d] search for symbol name %s in scope %s\\n", 45, h, n, s); ++ { ++ out3 ((char *) " [%d] search for symbol name %s in scope %s\\n", 45, h, n, s); ++ } + if (m != NULL) + { + if (debugScopes) +- out3 ((char *) " [%d] search for symbol name %s in scope %s (found)\\n", 53, h, n, s); ++ { ++ out3 ((char *) " [%d] search for symbol name %s in scope %s (found)\\n", 53, h, n, s); ++ } + return m; + } + h -= 1; +@@ -22027,15 +23416,28 @@ void decl_addImportedModule (decl_node m, decl_node i, unsigned int scoped) + { + mcDebug_assert ((decl_isDef (i)) || (decl_isModule (i))); + if (decl_isDef (m)) +- Indexing_IncludeIndiceIntoIndex (m->defF.importedModules, (void *) i); ++ { ++ Indexing_IncludeIndiceIntoIndex (m->defF.importedModules, (void *) i); ++ } + else if (decl_isImp (m)) +- Indexing_IncludeIndiceIntoIndex (m->impF.importedModules, (void *) i); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->impF.importedModules, (void *) i); ++ } + else if (decl_isModule (m)) +- Indexing_IncludeIndiceIntoIndex (m->moduleF.importedModules, (void *) i); ++ { ++ /* avoid dangling else. */ ++ Indexing_IncludeIndiceIntoIndex (m->moduleF.importedModules, (void *) i); ++ } + else +- M2RTS_HALT (-1); ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); ++ } + if (scoped) +- addModuleToScope (m, i); ++ { ++ addModuleToScope (m, i); ++ } + } + + +@@ -22142,9 +23544,13 @@ void decl_foreachModModuleDo (symbolKey_performOperation p) + void decl_enterScope (decl_node n) + { + if (Indexing_IsIndiceInIndex (scopeStack, (void *) n)) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- Indexing_IncludeIndiceIntoIndex (scopeStack, (void *) n); ++ { ++ Indexing_IncludeIndiceIntoIndex (scopeStack, (void *) n); ++ } + if (debugScopes) + { + libc_printf ((char *) "enter scope\\n", 13); +@@ -22215,7 +23621,9 @@ void decl_putCommentDefProcedure (decl_node n) + { + mcDebug_assert (decl_isProcedure (n)); + if (mcComment_isProcedureComment (mcLexBuf_lastcomment)) +- n->procedureF.defComment = mcLexBuf_lastcomment; ++ { ++ n->procedureF.defComment = mcLexBuf_lastcomment; ++ } + } + + +@@ -22229,7 +23637,9 @@ void decl_putCommentModProcedure (decl_node n) + { + mcDebug_assert (decl_isProcedure (n)); + if (mcComment_isProcedureComment (mcLexBuf_lastcomment)) +- n->procedureF.modComment = mcLexBuf_lastcomment; ++ { ++ n->procedureF.modComment = mcLexBuf_lastcomment; ++ } + } + + +@@ -22260,9 +23670,13 @@ void decl_putReturnType (decl_node proc, decl_node type) + { + mcDebug_assert ((decl_isProcedure (proc)) || (decl_isProcType (proc))); + if (decl_isProcedure (proc)) +- proc->procedureF.returnType = type; ++ { ++ proc->procedureF.returnType = type; ++ } + else +- proc->proctypeF.returnType = type; ++ { ++ proc->proctypeF.returnType = type; ++ } + } + + +@@ -22274,9 +23688,13 @@ void decl_putOptReturn (decl_node proc) + { + mcDebug_assert ((decl_isProcedure (proc)) || (decl_isProcType (proc))); + if (decl_isProcedure (proc)) +- proc->procedureF.returnopt = TRUE; ++ { ++ proc->procedureF.returnopt = TRUE; ++ } + else +- proc->proctypeF.returnopt = TRUE; ++ { ++ proc->proctypeF.returnopt = TRUE; ++ } + } + + +@@ -22336,7 +23754,9 @@ void decl_paramLeave (decl_node n) + mcDebug_assert (decl_isProcedure (n)); + n->procedureF.checking = TRUE; + if ((decl_isImp (currentModule)) || (decl_isModule (currentModule))) +- n->procedureF.built = TRUE; ++ { ++ n->procedureF.built = TRUE; ++ } + } + + +@@ -22364,7 +23784,9 @@ unsigned int decl_putIdent (decl_node n, nameKey_Name i) + { + mcDebug_assert (isIdentList (n)); + if (wlists_isItemInList (n->identlistF.names, (unsigned int) i)) +- return FALSE; ++ { ++ return FALSE; ++ } + else + { + wlists_putItemIntoList (n->identlistF.names, (unsigned int) i); +@@ -22386,7 +23808,9 @@ void decl_addVarParameters (decl_node n, decl_node i, decl_node type) + mcDebug_assert (decl_isProcedure (n)); + checkMakeVariables (n, i, type, TRUE); + if (n->procedureF.checking) +- checkParameters (n, i, type, TRUE); /* will destroy, i. */ ++ { ++ checkParameters (n, i, type, TRUE); /* will destroy, i. */ ++ } + else + { + p = decl_makeVarParameter (i, type, n); +@@ -22408,7 +23832,9 @@ void decl_addNonVarParameters (decl_node n, decl_node i, decl_node type) + mcDebug_assert (decl_isProcedure (n)); + checkMakeVariables (n, i, type, FALSE); + if (n->procedureF.checking) +- checkParameters (n, i, type, FALSE); /* will destroy, i. */ ++ { ++ checkParameters (n, i, type, FALSE); /* will destroy, i. */ ++ } + else + { + p = decl_makeNonVarParameter (i, type, n); +@@ -22453,17 +23879,25 @@ void decl_addParameter (decl_node proc, decl_node param) + case procedure: + Indexing_IncludeIndiceIntoIndex (proc->procedureF.parameters, (void *) param); + if (decl_isVarargs (param)) +- proc->procedureF.vararg = TRUE; ++ { ++ proc->procedureF.vararg = TRUE; ++ } + if (decl_isOptarg (param)) +- proc->procedureF.optarg_ = param; ++ { ++ proc->procedureF.optarg_ = param; ++ } + break; + + case proctype: + Indexing_IncludeIndiceIntoIndex (proc->proctypeF.parameters, (void *) param); + if (decl_isVarargs (param)) +- proc->proctypeF.vararg = TRUE; ++ { ++ proc->proctypeF.vararg = TRUE; ++ } + if (decl_isOptarg (param)) +- proc->proctypeF.optarg_ = param; ++ { ++ proc->proctypeF.optarg_ = param; ++ } + break; + + +@@ -22481,37 +23915,84 @@ void decl_addParameter (decl_node proc, decl_node param) + decl_node decl_makeBinaryTok (mcReserved_toktype op, decl_node l, decl_node r) + { + if (op == mcReserved_equaltok) +- return makeBinary ((nodeT) equal, l, r, booleanN); ++ { ++ return makeBinary ((nodeT) equal, l, r, booleanN); ++ } + else if ((op == mcReserved_hashtok) || (op == mcReserved_lessgreatertok)) +- return makeBinary ((nodeT) notequal, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) notequal, l, r, booleanN); ++ } + else if (op == mcReserved_lesstok) +- return makeBinary ((nodeT) less, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) less, l, r, booleanN); ++ } + else if (op == mcReserved_greatertok) +- return makeBinary ((nodeT) greater, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) greater, l, r, booleanN); ++ } + else if (op == mcReserved_greaterequaltok) +- return makeBinary ((nodeT) greequal, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) greequal, l, r, booleanN); ++ } + else if (op == mcReserved_lessequaltok) +- return makeBinary ((nodeT) lessequal, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) lessequal, l, r, booleanN); ++ } + else if (op == mcReserved_andtok) +- return makeBinary ((nodeT) and, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) and, l, r, booleanN); ++ } + else if (op == mcReserved_ortok) +- return makeBinary ((nodeT) or, l, r, booleanN); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) or, l, r, booleanN); ++ } + else if (op == mcReserved_plustok) +- return makeBinary ((nodeT) plus, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) plus, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_minustok) +- return makeBinary ((nodeT) sub, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) sub, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_divtok) +- return makeBinary ((nodeT) div_, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) div_, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_timestok) +- return makeBinary ((nodeT) mult, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) mult, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_modtok) +- return makeBinary ((nodeT) mod, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) mod, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_intok) +- return makeBinary ((nodeT) in, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) in, l, r, (decl_node) NULL); ++ } + else if (op == mcReserved_dividetok) +- return makeBinary ((nodeT) divide, l, r, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeBinary ((nodeT) divide, l, r, (decl_node) NULL); ++ } + else +- M2RTS_HALT (-1); /* most likely op needs a clause as above. */ ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); /* most likely op needs a clause as above. */ ++ } + } + + +@@ -22523,13 +24004,24 @@ decl_node decl_makeBinaryTok (mcReserved_toktype op, decl_node l, decl_node r) + decl_node decl_makeUnaryTok (mcReserved_toktype op, decl_node e) + { + if (op == mcReserved_nottok) +- return makeUnary ((nodeT) not, e, booleanN); ++ { ++ return makeUnary ((nodeT) not, e, booleanN); ++ } + else if (op == mcReserved_plustok) +- return makeUnary ((nodeT) plus, e, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeUnary ((nodeT) plus, e, (decl_node) NULL); ++ } + else if (op == mcReserved_minustok) +- return makeUnary ((nodeT) neg, e, (decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ return makeUnary ((nodeT) neg, e, (decl_node) NULL); ++ } + else +- M2RTS_HALT (-1); /* most likely op needs a clause as above. */ ++ { ++ /* avoid dangling else. */ ++ M2RTS_HALT (-1); /* most likely op needs a clause as above. */ ++ } + } + + +@@ -22568,7 +24060,9 @@ decl_node decl_makeComponentRef (decl_node rec, decl_node field) + return rec; + } + else +- return doMakeComponentRef (rec, field); ++ { ++ return doMakeComponentRef (rec, field); ++ } + } + + +@@ -22636,9 +24130,13 @@ decl_node decl_makeArrayRef (decl_node array, decl_node index) + t = decl_skipType (decl_getType (t)); + do { + if (decl_isArray (t)) +- t = decl_skipType (decl_getType (t)); ++ { ++ t = decl_skipType (decl_getType (t)); ++ } + else +- mcMetaError_metaError2 ((char *) "cannot access {%1N} dimension of array {%2a}", 44, (unsigned char *) &i, (sizeof (i)-1), (unsigned char *) &t, (sizeof (t)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "cannot access {%1N} dimension of array {%2a}", 44, (unsigned char *) &i, (sizeof (i)-1), (unsigned char *) &t, (sizeof (t)-1)); ++ } + i += 1; + } while (! (i > j)); + n->arrayrefF.resultType = t; +@@ -22679,9 +24177,13 @@ decl_node decl_makeLiteralInt (nameKey_Name n) + s = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n)); + m->literalF.name = n; + if ((DynamicStrings_char (s, -1)) == 'C') +- m->literalF.type = charN; ++ { ++ m->literalF.type = charN; ++ } + else +- m->literalF.type = ztypeN; ++ { ++ m->literalF.type = ztypeN; ++ } + s = DynamicStrings_KillString (s); + return m; + } +@@ -22717,9 +24219,13 @@ decl_node decl_makeString (nameKey_Name n) + m->stringF.cstring = toCstring (n); + m->stringF.clength = lenCstring (m->stringF.cstring); + if (m->stringF.isCharCompatible) +- m->stringF.cchar = toCchar (n); ++ { ++ m->stringF.cchar = toCchar (n); ++ } + else +- m->stringF.cchar = NULL; ++ { ++ m->stringF.cchar = NULL; ++ } + return m; + } + +@@ -22785,15 +24291,29 @@ decl_node decl_includeSetValue (decl_node n, decl_node l, decl_node h) + decl_node decl_getBuiltinConst (nameKey_Name n) + { + if (n == (nameKey_makeKey ((char *) "BITS_PER_UNIT", 13))) +- return bitsperunitN; ++ { ++ return bitsperunitN; ++ } + else if (n == (nameKey_makeKey ((char *) "BITS_PER_WORD", 13))) +- return bitsperwordN; ++ { ++ /* avoid dangling else. */ ++ return bitsperwordN; ++ } + else if (n == (nameKey_makeKey ((char *) "BITS_PER_CHAR", 13))) +- return bitspercharN; ++ { ++ /* avoid dangling else. */ ++ return bitspercharN; ++ } + else if (n == (nameKey_makeKey ((char *) "UNITS_PER_WORD", 14))) +- return unitsperwordN; ++ { ++ /* avoid dangling else. */ ++ return unitsperwordN; ++ } + else +- return NULL; ++ { ++ /* avoid dangling else. */ ++ return NULL; ++ } + } + + +@@ -22841,9 +24361,13 @@ void decl_putExpList (decl_node n, decl_node e) + decl_node decl_makeConstExp (void) + { + if ((currentModule != NULL) && (getConstExpComplete (currentModule))) +- return decl_getNextConstExp (); ++ { ++ return decl_getNextConstExp (); ++ } + else +- return doMakeConstExp (); ++ { ++ return doMakeConstExp (); ++ } + } + + +@@ -22857,11 +24381,19 @@ decl_node decl_getNextConstExp (void) + + mcDebug_assert (((decl_isDef (currentModule)) || (decl_isImp (currentModule))) || (decl_isModule (currentModule))); + if (decl_isDef (currentModule)) +- return getNextFixup (¤tModule->defF.constFixup); ++ { ++ return getNextFixup (¤tModule->defF.constFixup); ++ } + else if (decl_isImp (currentModule)) +- return getNextFixup (¤tModule->impF.constFixup); ++ { ++ /* avoid dangling else. */ ++ return getNextFixup (¤tModule->impF.constFixup); ++ } + else if (decl_isModule (currentModule)) +- return getNextFixup (¤tModule->moduleF.constFixup); ++ { ++ /* avoid dangling else. */ ++ return getNextFixup (¤tModule->moduleF.constFixup); ++ } + return n; + } + +@@ -22914,11 +24446,19 @@ void decl_resetConstExpPos (decl_node n) + { + mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n))); + if (decl_isDef (n)) +- n->defF.constFixup.count = 0; ++ { ++ n->defF.constFixup.count = 0; ++ } + else if (decl_isImp (n)) +- n->impF.constFixup.count = 0; ++ { ++ /* avoid dangling else. */ ++ n->impF.constFixup.count = 0; ++ } + else if (decl_isModule (n)) +- n->moduleF.constFixup.count = 0; ++ { ++ /* avoid dangling else. */ ++ n->moduleF.constFixup.count = 0; ++ } + } + + +@@ -22932,18 +24472,19 @@ decl_node decl_makeFuncCall (decl_node c, decl_node n) + + mcDebug_assert ((n == NULL) || (decl_isExpList (n))); + if (((c == haltN) && ((decl_getMainModule ()) != (decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5))))) && ((decl_getMainModule ()) != (decl_lookupImp (nameKey_makeKey ((char *) "M2RTS", 5))))) +- decl_addImportedModule (decl_getMainModule (), decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5)), FALSE); +- if (isAnyType (c)) +- return makeCast (c, n); +- else ++ { ++ decl_addImportedModule (decl_getMainModule (), decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5)), FALSE); ++ } ++ f = checkIntrinsic (c, n); ++ if (f == NULL) + { + f = newNode ((nodeT) funccall); + f->funccallF.function = c; + f->funccallF.args = n; + f->funccallF.type = NULL; + initPair (&f->funccallF.funccallComment); +- return f; + } ++ return f; + } + + +@@ -22997,7 +24538,9 @@ void decl_addCommentBody (decl_node n) + { + b = mcLexBuf_getBodyComment (); + if (b != NULL) +- addGenericBody (n, decl_makeCommentS (b)); ++ { ++ addGenericBody (n, decl_makeCommentS (b)); ++ } + } + } + +@@ -23014,7 +24557,9 @@ void decl_addCommentAfter (decl_node n) + { + a = mcLexBuf_getAfterComment (); + if (a != NULL) +- addGenericAfter (n, decl_makeCommentS (a)); ++ { ++ addGenericAfter (n, decl_makeCommentS (a)); ++ } + } + } + +@@ -23331,7 +24876,9 @@ decl_node decl_makeCommentS (mcComment_commentDesc c) + decl_node n; + + if (c == NULL) +- return NULL; ++ { ++ return NULL; ++ } + else + { + n = newNode ((nodeT) comment); +@@ -23716,9 +25263,13 @@ unsigned int decl_isRange (decl_node n) + decl_node decl_dupExpr (decl_node n) + { + if (n == NULL) +- return NULL; ++ { ++ return NULL; ++ } + else +- return doDupExpr (n); ++ { ++ return doDupExpr (n); ++ } + } + + +--- a/src/gcc/gm2/mc-boot/Gkeyc.c ++++ b/src/gcc/gm2/mc-boot/Gkeyc.c +@@ -485,7 +485,9 @@ static void init (void); + static void checkCtype (mcPretty_pretty p) + { + if (seenCtype) +- mcPretty_print (p, (char *) "#include \\n", 20); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 20); ++ } + } + + +@@ -496,7 +498,9 @@ static void checkCtype (mcPretty_pretty p) + static void checkAbs (mcPretty_pretty p) + { + if (((((seenLabs || seenAbs) || seenFabs) || seenFabsl) || seenSize_t) || seenSSize_t) +- mcPretty_print (p, (char *) "#include \\n", 21); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 21); ++ } + } + + +@@ -507,7 +511,9 @@ static void checkAbs (mcPretty_pretty p) + static void checkLimits (mcPretty_pretty p) + { + if ((((((((((((((seenMemcpy || seenIntMin) || seenUIntMin) || seenLongMin) || seenULongMin) || seenCharMin) || seenUCharMin) || seenUIntMin) || seenIntMax) || seenUIntMax) || seenLongMax) || seenULongMax) || seenCharMax) || seenUCharMax) || seenUIntMax) +- mcPretty_print (p, (char *) "#include \\n", 21); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 21); ++ } + } + + +@@ -518,7 +524,9 @@ static void checkLimits (mcPretty_pretty p) + static void checkFreeMalloc (mcPretty_pretty p) + { + if (seenFree || seenMalloc) +- mcPretty_print (p, (char *) "#include \\n", 21); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 21); ++ } + } + + +@@ -591,7 +599,9 @@ static void checkFalse (mcPretty_pretty p) + static void checkNull (mcPretty_pretty p) + { + if (seenNull) +- mcPretty_print (p, (char *) "#include \\n", 21); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 21); ++ } + } + + +@@ -602,7 +612,9 @@ static void checkNull (mcPretty_pretty p) + static void checkMemcpy (mcPretty_pretty p) + { + if (seenMemcpy || seenStrlen) +- mcPretty_print (p, (char *) "#include \\n", 21); ++ { ++ mcPretty_print (p, (char *) "#include \\n", 21); ++ } + } + + +@@ -628,7 +640,9 @@ static void checkM2RTS (mcPretty_pretty p) + static void checkException (mcPretty_pretty p) + { + if (seenException) +- mcPretty_print (p, (char *) "# include \"Gmcrts.h\"\\n", 24); ++ { ++ mcPretty_print (p, (char *) "# include \"Gmcrts.h\"\\n", 24); ++ } + } + + +@@ -639,7 +653,9 @@ static void checkException (mcPretty_pretty p) + static void checkComplex (mcPretty_pretty p) + { + if (seenComplex) +- mcPretty_print (p, (char *) "# include \\n", 25); ++ { ++ mcPretty_print (p, (char *) "# include \\n", 25); ++ } + } + + +@@ -652,7 +668,9 @@ static scope new (decl_node n) + scope s; + + if (freeList == NULL) +- Storage_ALLOCATE ((void **) &s, sizeof (_T1)); ++ { ++ Storage_ALLOCATE ((void **) &s, sizeof (_T1)); ++ } + else + { + s = freeList; +@@ -703,7 +721,9 @@ static unsigned int mangleN (nameKey_Name n, DynamicStrings_String *m, unsigned + { + (*m) = DynamicStrings_ConCatChar ((*m), '_'); + if (! (clash (nameKey_makekey (DynamicStrings_string ((*m))), scopes))) +- return TRUE; ++ { ++ return TRUE; ++ } + } + ReturnException ("../../gcc-versionno/gcc/gm2/mc/keyc.def", 20, 1); + } +@@ -717,7 +737,9 @@ static unsigned int mangleN (nameKey_Name n, DynamicStrings_String *m, unsigned + static unsigned int clash (nameKey_Name n, unsigned int scopes) + { + if (((symbolKey_getSymKey (macros, n)) != NULL) || ((symbolKey_getSymKey (keywords, n)) != NULL)) +- return TRUE; ++ { ++ return TRUE; ++ } + return scopes && ((symbolKey_getSymKey (stack->symbols, n)) != NULL); + } + +@@ -1240,7 +1262,9 @@ void keyc_leaveScope (decl_node n) + s->next = NULL; + } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -1260,22 +1284,29 @@ DynamicStrings_String keyc_cname (nameKey_Name n, unsigned int scopes) + + m = NULL; + if (clash (n, scopes)) +- if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes))) +- { +- /* avoid dangling else. */ +- if (scopes) +- { +- /* no longer a clash with, m, so add it to the current scope. */ +- n = nameKey_makekey (DynamicStrings_string (m)); +- symbolKey_putSymKey (stack->symbols, n, (void *) m); +- } +- } +- else +- /* mangleN must always succeed. */ +- M2RTS_HALT (-1); ++ { ++ if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes))) ++ { ++ /* avoid dangling else. */ ++ if (scopes) ++ { ++ /* no longer a clash with, m, so add it to the current scope. */ ++ n = nameKey_makekey (DynamicStrings_string (m)); ++ symbolKey_putSymKey (stack->symbols, n, (void *) m); ++ } ++ } ++ else ++ { ++ /* mangleN must always succeed. */ ++ M2RTS_HALT (-1); ++ } ++ } + else if (scopes) +- /* no clash, add it to the current scope. */ +- symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n))); ++ { ++ /* avoid dangling else. */ ++ /* no clash, add it to the current scope. */ ++ symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n))); ++ } + return m; + } + +@@ -1296,20 +1327,29 @@ nameKey_Name keyc_cnamen (nameKey_Name n, unsigned int scopes) + + m = NULL; + if (clash (n, scopes)) +- if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes))) +- { +- /* avoid dangling else. */ +- n = nameKey_makekey (DynamicStrings_string (m)); +- if (scopes) +- /* no longer a clash with, m, so add it to the current scope. */ +- symbolKey_putSymKey (stack->symbols, n, (void *) m); +- } +- else +- /* mangleN must always succeed. */ +- M2RTS_HALT (-1); ++ { ++ if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes))) ++ { ++ /* avoid dangling else. */ ++ n = nameKey_makekey (DynamicStrings_string (m)); ++ if (scopes) ++ { ++ /* no longer a clash with, m, so add it to the current scope. */ ++ symbolKey_putSymKey (stack->symbols, n, (void *) m); ++ } ++ } ++ else ++ { ++ /* mangleN must always succeed. */ ++ M2RTS_HALT (-1); ++ } ++ } + else if (scopes) +- /* no clash, add it to the current scope. */ +- symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n))); ++ { ++ /* avoid dangling else. */ ++ /* no clash, add it to the current scope. */ ++ symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n))); ++ } + m = DynamicStrings_KillString (m); + return n; + } +--- a/src/gcc/gm2/mc-boot/Glists.c ++++ b/src/gcc/gm2/mc-boot/Glists.c +@@ -180,7 +180,9 @@ void lists_killList (lists_list *l) + if ((*l) != NULL) + { + if ((*l)->next != NULL) +- lists_killList (&(*l)->next); ++ { ++ lists_killList (&(*l)->next); ++ } + Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1)); + } + } +@@ -198,9 +200,13 @@ void lists_putItemIntoList (lists_list l, void * c) + l->elements.array[l->noOfelements-1] = c; + } + else if (l->next != NULL) +- lists_putItemIntoList (l->next, c); ++ { ++ /* avoid dangling else. */ ++ lists_putItemIntoList (l->next, c); ++ } + else + { ++ /* avoid dangling else. */ + l->next = lists_initList (); + lists_putItemIntoList (l->next, c); + } +@@ -216,9 +222,13 @@ void * lists_getItemFromList (lists_list l, unsigned int n) + while (l != NULL) + { + if (n <= l->noOfelements) +- return l->elements.array[n-1]; ++ { ++ return l->elements.array[n-1]; ++ } + else +- n -= l->noOfelements; ++ { ++ n -= l->noOfelements; ++ } + l = l->next; + } + return 0; +@@ -236,15 +246,23 @@ unsigned int lists_getIndexOfList (lists_list l, void * c) + unsigned int i; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + i = 1; + while (i <= l->noOfelements) +- if (l->elements.array[i-1] == c) +- return i; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return i; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + return l->noOfelements+(lists_getIndexOfList (l->next, c)); + } + } +@@ -259,7 +277,9 @@ unsigned int lists_noOfItemsInList (lists_list l) + unsigned int t; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + t = 0; +@@ -280,7 +300,9 @@ unsigned int lists_noOfItemsInList (lists_list l) + void lists_includeItemIntoList (lists_list l, void * c) + { + if (! (lists_isItemInList (l, c))) +- lists_putItemIntoList (l, c); ++ { ++ lists_putItemIntoList (l, c); ++ } + } + + +@@ -302,9 +324,13 @@ void lists_removeItemFromList (lists_list l, void * c) + do { + i = 1; + while ((i <= l->noOfelements) && (l->elements.array[i-1] != c)) +- i += 1; ++ { ++ i += 1; ++ } + if ((i <= l->noOfelements) && (l->elements.array[i-1] == c)) +- found = TRUE; ++ { ++ found = TRUE; ++ } + else + { + p = l; +@@ -312,7 +338,9 @@ void lists_removeItemFromList (lists_list l, void * c) + } + } while (! ((l == NULL) || found)); + if (found) +- removeItem (p, l, i); ++ { ++ removeItem (p, l, i); ++ } + } + } + +@@ -328,10 +356,16 @@ unsigned int lists_isItemInList (lists_list l, void * c) + do { + i = 1; + while (i <= l->noOfelements) +- if (l->elements.array[i-1] == c) +- return TRUE; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return TRUE; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + l = l->next; + } while (! (l == NULL)); + return FALSE; +--- a/src/gcc/gm2/mc-boot/GmcComment.c ++++ b/src/gcc/gm2/mc-boot/GmcComment.c +@@ -165,9 +165,13 @@ static void dumpComment (mcComment_commentDesc cd); + static unsigned int Min (unsigned int a, unsigned int b) + { + if (a < b) +- return a; ++ { ++ return a; ++ } + else +- return b; ++ { ++ return b; ++ } + } + + +@@ -178,10 +182,16 @@ static unsigned int Min (unsigned int a, unsigned int b) + static DynamicStrings_String RemoveNewlines (DynamicStrings_String s) + { + while ((DynamicStrings_Length (s)) > 0) +- if ((DynamicStrings_char (s, 0)) == ASCII_nl) +- s = DynamicStrings_RemoveWhitePrefix (DynamicStrings_Slice (s, 1, 0)); +- else +- return DynamicStrings_RemoveWhitePrefix (s); ++ { ++ if ((DynamicStrings_char (s, 0)) == ASCII_nl) ++ { ++ s = DynamicStrings_RemoveWhitePrefix (DynamicStrings_Slice (s, 1, 0)); ++ } ++ else ++ { ++ return DynamicStrings_RemoveWhitePrefix (s); ++ } ++ } + return s; + } + +@@ -238,9 +248,13 @@ static void dumpComment (mcComment_commentDesc cd) + CaseException ("../../gcc-versionno/gcc/gm2/mc/mcComment.def", 20, 1); + } + if (cd->used) +- libc_printf ((char *) " used", 5); ++ { ++ libc_printf ((char *) " used", 5); ++ } + else +- libc_printf ((char *) " unused", 7); ++ { ++ libc_printf ((char *) " unused", 7); ++ } + libc_printf ((char *) " contents = %s\\n", 16, DynamicStrings_string (cd->content)); + } + +@@ -259,9 +273,13 @@ mcComment_commentDesc mcComment_initComment (unsigned int onlySpaces) + Storage_ALLOCATE ((void **) &cd, sizeof (_T1)); + mcDebug_assert (cd != NULL); + if (onlySpaces) +- cd->type = inBody; ++ { ++ cd->type = inBody; ++ } + else +- cd->type = afterStatement; ++ { ++ cd->type = afterStatement; ++ } + cd->content = DynamicStrings_InitString ((char *) "", 0); + cd->procName = nameKey_NulName; + cd->used = FALSE; +@@ -277,7 +295,9 @@ mcComment_commentDesc mcComment_initComment (unsigned int onlySpaces) + void mcComment_addText (mcComment_commentDesc cd, void * cs) + { + if (cd != NULL) +- cd->content = DynamicStrings_ConCat (cd->content, DynamicStrings_InitStringCharStar (cs)); ++ { ++ cd->content = DynamicStrings_ConCat (cd->content, DynamicStrings_InitStringCharStar (cs)); ++ } + } + + +@@ -288,7 +308,9 @@ void mcComment_addText (mcComment_commentDesc cd, void * cs) + DynamicStrings_String mcComment_getContent (mcComment_commentDesc cd) + { + if (cd != NULL) +- return cd->content; ++ { ++ return cd->content; ++ } + return NULL; + } + +@@ -303,9 +325,13 @@ void * mcComment_getCommentCharStar (mcComment_commentDesc cd) + + s = mcComment_getContent (cd); + if (s == NULL) +- return NULL; ++ { ++ return NULL; ++ } + else +- return DynamicStrings_string (s); ++ { ++ return DynamicStrings_string (s); ++ } + } + + +@@ -318,11 +344,13 @@ void * mcComment_getCommentCharStar (mcComment_commentDesc cd) + void mcComment_setProcedureComment (mcComment_commentDesc cd, nameKey_Name procname) + { + if (cd != NULL) +- if (seenProcedure (cd, procname)) +- { +- cd->type = procedureHeading; +- cd->procName = procname; +- } ++ { ++ if (seenProcedure (cd, procname)) ++ { ++ cd->type = procedureHeading; ++ cd->procName = procname; ++ } ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GmcComp.c ++++ b/src/gcc/gm2/mc-boot/GmcComp.c +@@ -239,7 +239,9 @@ static decl_node examineCompilationUnit (void) + { + mcLexBuf_getToken (); + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- mcLexBuf_getToken (); ++ { ++ mcLexBuf_getToken (); ++ } + else + { + mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "expecting language string after FOR keyword", 43))); +@@ -247,29 +249,41 @@ static decl_node examineCompilationUnit (void) + } + } + if (mcLexBuf_currenttoken == mcReserved_identtok) +- return decl_lookupDef (nameKey_makekey (mcLexBuf_currentstring)); ++ { ++ return decl_lookupDef (nameKey_makekey (mcLexBuf_currentstring)); ++ } + } + else +- mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after DEFINITION keyword", 39))); ++ { ++ mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after DEFINITION keyword", 39))); ++ } + } + else if (mcLexBuf_currenttoken == mcReserved_implementationtok) + { ++ /* avoid dangling else. */ + mcLexBuf_getToken (); + if (mcLexBuf_currenttoken == mcReserved_moduletok) + { + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (mcLexBuf_currenttoken == mcReserved_identtok) +- return decl_lookupImp (nameKey_makekey (mcLexBuf_currentstring)); ++ { ++ return decl_lookupImp (nameKey_makekey (mcLexBuf_currentstring)); ++ } + } + else +- mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after IMPLEMENTATION keyword", 43))); ++ { ++ mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after IMPLEMENTATION keyword", 43))); ++ } + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + mcLexBuf_getToken (); + if (mcLexBuf_currenttoken == mcReserved_identtok) +- return decl_lookupModule (nameKey_makekey (mcLexBuf_currentstring)); ++ { ++ return decl_lookupModule (nameKey_makekey (mcLexBuf_currentstring)); ++ } + } + mcLexBuf_getToken (); + } +@@ -330,10 +344,14 @@ static void p1 (decl_node n) + /* avoid dangling else. */ + pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef}); + if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ())) +- pass (1, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (1, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ } + } + else +- pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ } + } + + +@@ -348,10 +366,14 @@ static void p2 (decl_node n) + /* avoid dangling else. */ + pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef}); + if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ())) +- pass (2, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (2, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ } + } + else +- pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ } + } + + +@@ -366,10 +388,14 @@ static void p3 (decl_node n) + /* avoid dangling else. */ + pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef}); + if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ())) +- pass (3, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (3, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ } + } + else +- pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ } + } + + +@@ -384,10 +410,14 @@ static void p4 (decl_node n) + /* avoid dangling else. */ + pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef}); + if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ())) +- pass (4, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (4, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod}); ++ } + } + else +- pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ { ++ pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod}); ++ } + } + + +@@ -414,10 +444,14 @@ static unsigned int doOpen (decl_node n, DynamicStrings_String symName, DynamicS + decl_setSource (n, nameKey_makekey (DynamicStrings_string (postProcessed))); + decl_setCurrentModule (n); + if (mcLexBuf_openSource (postProcessed)) +- return TRUE; ++ { ++ return TRUE; ++ } + mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to open %s\\n", 19, (unsigned char *) &fileName, (sizeof (fileName)-1)); + if (exitOnFailure) +- libc_exit (1); ++ { ++ libc_exit (1); ++ } + return FALSE; + } + +@@ -443,11 +477,15 @@ static unsigned int openDef (decl_node n, unsigned int exitOnFailure) + { + mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find definition module %s.def\\n", 41, (unsigned char *) &symName, (sizeof (symName)-1)); + if (exitOnFailure) +- libc_exit (1); ++ { ++ libc_exit (1); ++ } + } + } + else +- fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName)); ++ { ++ fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName)); ++ } + return doOpen (n, symName, fileName, exitOnFailure); + } + +@@ -472,15 +510,23 @@ static unsigned int openMod (decl_node n, unsigned int exitOnFailure) + if (! (mcSearch_findSourceModFile (symName, &fileName))) + { + if (decl_isImp (n)) +- mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find implementation module %s.mod\\n", 45, (unsigned char *) &symName, (sizeof (symName)-1)); ++ { ++ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find implementation module %s.mod\\n", 45, (unsigned char *) &symName, (sizeof (symName)-1)); ++ } + else +- mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find program module %s.mod\\n", 38, (unsigned char *) &symName, (sizeof (symName)-1)); ++ { ++ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find program module %s.mod\\n", 38, (unsigned char *) &symName, (sizeof (symName)-1)); ++ } + if (exitOnFailure) +- libc_exit (1); ++ { ++ libc_exit (1); ++ } + } + } + else +- fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName)); ++ { ++ fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName)); ++ } + return doOpen (n, symName, fileName, exitOnFailure); + } + +@@ -529,12 +575,16 @@ static void doPass (unsigned int parseDefs, unsigned int parseMain, unsigned int + { + decl_unsetVisited (decl_getMainModule ()); + if (parseDefs && (decl_isImp (decl_getMainModule ()))) +- /* we need to parse the definition module of a corresponding implementation module. */ +- (*p.proc) ((void *) decl_lookupDef (decl_getSymName (decl_getMainModule ()))); ++ { ++ /* we need to parse the definition module of a corresponding implementation module. */ ++ (*p.proc) ((void *) decl_lookupDef (decl_getSymName (decl_getMainModule ()))); ++ } + (*p.proc) ((void *) decl_getMainModule ()); + } + if (parseDefs) +- decl_foreachDefModuleDo (p); ++ { ++ decl_foreachDefModuleDo (p); ++ } + mcError_flushWarnings (); + mcError_flushErrors (); + setToPassNo (0); +@@ -568,7 +618,9 @@ static void init (void) + void mcComp_compile (DynamicStrings_String s) + { + if (s != NULL) +- doCompile (s); ++ { ++ doCompile (s); ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GmcDebug.c ++++ b/src/gcc/gm2/mc-boot/GmcDebug.c +@@ -52,7 +52,9 @@ void mcDebug_writeDebug (char *a_, unsigned int _a_high); + void mcDebug_assert (unsigned int q) + { + if (! q) +- mcError_internalError ((char *) "assert failed", 13, (char *) "../../gcc-versionno/gcc/gm2/mc/mcDebug.mod", 42, 36); ++ { ++ mcError_internalError ((char *) "assert failed", 13, (char *) "../../gcc-versionno/gcc/gm2/mc/mcDebug.mod", 42, 36); ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GmcError.c ++++ b/src/gcc/gm2/mc-boot/GmcError.c +@@ -292,9 +292,13 @@ static void cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns + /* make a local copy of each unbounded array. */ + memcpy (b, b_, _b_high+1); + +- if ((_a_high) == (_b_high)) +- for (i=0; i<=_a_high; i++) +- a[i] = b[i]; ++ if (_a_high == _b_high) ++ { ++ for (i=0; i<=_a_high; i++) ++ { ++ a[i] = b[i]; ++ } ++ } + } + + static unsigned int translateNameToCharStar (char *a, unsigned int _a_high, unsigned int n) +@@ -322,8 +326,10 @@ static unsigned int translateNameToCharStar (char *a, unsigned int _a_high, unsi + } + argno += 1; + if (argno > n) +- /* all done */ +- return FALSE; ++ { ++ /* all done */ ++ return FALSE; ++ } + } + i += 1; + } +@@ -346,9 +352,13 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i + + col += 1; + if (Xcode) +- leader = FormatStrings_Sprintf2 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:", 6)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1)); ++ { ++ leader = FormatStrings_Sprintf2 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:", 6)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1)); ++ } + else +- leader = FormatStrings_Sprintf3 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:%d:", 9)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1), (unsigned char *) &col, (sizeof (col)-1)); ++ { ++ leader = FormatStrings_Sprintf3 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:%d:", 9)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1), (unsigned char *) &col, (sizeof (col)-1)); ++ } + p = DynamicStrings_string (s); + newline = TRUE; + space = FALSE; +@@ -366,7 +376,9 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i + newline = (*p) == ASCII_nl; + space = (*p) == ' '; + if (newline && Xcode) +- mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1)); ++ { ++ mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1)); ++ } + StdIO_Write ((*p)); + p += 1; + } +@@ -375,7 +387,9 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i + if (Xcode) + { + if (! space) +- StdIO_Write (' '); ++ { ++ StdIO_Write (' '); ++ } + mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1)); + } + StdIO_Write (ASCII_nl); +@@ -409,7 +423,9 @@ static DynamicStrings_String doFormat1 (char *a_, unsigned int _a_high, unsigned + s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) &s, (sizeof (s)-1)); + } + else +- s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) w, _w_high); ++ { ++ s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) w, _w_high); ++ } + return s; + } + +@@ -599,13 +615,21 @@ static void checkIncludes (unsigned int token, unsigned int depth) + { + lineno = mcLexBuf_tokenToLineNo (token, depth+1); + if (depth == 0) +- mcPrintf_printf2 ((char *) "In file included from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1)); ++ { ++ mcPrintf_printf2 ((char *) "In file included from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1)); ++ } + else +- mcPrintf_printf2 ((char *) " from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1)); ++ { ++ mcPrintf_printf2 ((char *) " from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1)); ++ } + if ((mcLexBuf_findFileNameFromToken (token, depth+2)) == NULL) +- mcPrintf_printf0 ((char *) ":\\n", 3); ++ { ++ mcPrintf_printf0 ((char *) ":\\n", 3); ++ } + else +- mcPrintf_printf0 ((char *) ",\\n", 3); ++ { ++ mcPrintf_printf0 ((char *) ",\\n", 3); ++ } + checkIncludes (token, depth+1); + } + } +@@ -622,28 +646,34 @@ static unsigned int flushAll (mcError_error e, unsigned int FatalStatus) + + written = FALSE; + if (e != NULL) +- do { +- if ((FatalStatus == e->fatal) && (e->s != NULL)) +- { +- checkIncludes (e->token, 0); +- if (e->fatal) +- e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " error: ", 8), DynamicStrings_Mark (e->s)); +- else +- e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " warning: ", 10), DynamicStrings_Mark (e->s)); +- outString (mcLexBuf_findFileNameFromToken (e->token, 0), mcLexBuf_tokenToLineNo (e->token, 0), mcLexBuf_tokenToColumnNo (e->token, 0), e->s); +- if ((e->child != NULL) && (flushAll (e->child, FatalStatus))) +- {} /* empty. */ +- e->s = NULL; +- written = TRUE; +- } +- f = e; +- e = e->next; +- if (! Debugging) +- { +- f->s = DynamicStrings_KillString (f->s); +- Storage_DEALLOCATE ((void **) &f, sizeof (_T1)); +- } +- } while (! (e == NULL)); ++ { ++ do { ++ if ((FatalStatus == e->fatal) && (e->s != NULL)) ++ { ++ checkIncludes (e->token, 0); ++ if (e->fatal) ++ { ++ e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " error: ", 8), DynamicStrings_Mark (e->s)); ++ } ++ else ++ { ++ e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " warning: ", 10), DynamicStrings_Mark (e->s)); ++ } ++ outString (mcLexBuf_findFileNameFromToken (e->token, 0), mcLexBuf_tokenToLineNo (e->token, 0), mcLexBuf_tokenToColumnNo (e->token, 0), e->s); ++ if ((e->child != NULL) && (flushAll (e->child, FatalStatus))) ++ {} /* empty. */ ++ e->s = NULL; ++ written = TRUE; ++ } ++ f = e; ++ e = e->next; ++ if (! Debugging) ++ { ++ f->s = DynamicStrings_KillString (f->s); ++ Storage_DEALLOCATE ((void **) &f, sizeof (_T1)); ++ } ++ } while (! (e == NULL)); ++ } + return written; + } + +@@ -789,7 +819,9 @@ mcError_error mcError_newError (unsigned int atTokenNo) + { + f = head; + while ((f->next != NULL) && (f->next->token < atTokenNo)) +- f = f->next; ++ { ++ f = f->next; ++ } + e->next = f->next; + f->next = e; + } +@@ -823,7 +855,9 @@ mcError_error mcError_chainError (unsigned int atTokenNo, mcError_error e) + mcError_error f; + + if (e == NULL) +- return mcError_newError (atTokenNo); ++ { ++ return mcError_newError (atTokenNo); ++ } + else + { + Storage_ALLOCATE ((void **) &f, sizeof (_T1)); +@@ -849,9 +883,13 @@ void mcError_errorFormat0 (mcError_error e, char *a_, unsigned int _a_high) + errorFormat routines provide a printf capability for the error handle. + */ + if (e->s == NULL) +- e->s = FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))); ++ { ++ e->s = FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))); ++ } + else +- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))))); ++ { ++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))))); ++ } + } + + void mcError_errorFormat1 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w_, unsigned int _w_high) +@@ -866,9 +904,13 @@ void mcError_errorFormat1 (mcError_error e, char *a_, unsigned int _a_high, unsi + + s1 = doFormat1 ((char *) a, _a_high, (unsigned char *) w, _w_high); + if (e->s == NULL) +- e->s = s1; ++ { ++ e->s = s1; ++ } + else +- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ { ++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ } + } + + void mcError_errorFormat2 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high) +@@ -885,9 +927,13 @@ void mcError_errorFormat2 (mcError_error e, char *a_, unsigned int _a_high, unsi + + s1 = doFormat2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high); + if (e->s == NULL) +- e->s = s1; ++ { ++ e->s = s1; ++ } + else +- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ { ++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ } + } + + void mcError_errorFormat3 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high) +@@ -906,9 +952,13 @@ void mcError_errorFormat3 (mcError_error e, char *a_, unsigned int _a_high, unsi + + s1 = doFormat3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high); + if (e->s == NULL) +- e->s = s1; ++ { ++ e->s = s1; ++ } + else +- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ { ++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1)); ++ } + } + + void mcError_errorString (mcError_error e, DynamicStrings_String str) +@@ -955,7 +1005,9 @@ void mcError_errorStringsAt2 (DynamicStrings_String s1, DynamicStrings_String s2 + mcError_error e; + + if (s1 == s2) +- s2 = DynamicStrings_Dup (s1); ++ { ++ s2 = DynamicStrings_Dup (s1); ++ } + e = mcError_newError (tok1); + mcError_errorString (e, s1); + mcError_errorString (mcError_chainError (tok2, e), s2); +@@ -1000,7 +1052,9 @@ void mcError_warnStringsAt2 (DynamicStrings_String s1, DynamicStrings_String s2, + mcError_error e; + + if (s1 == s2) +- s2 = DynamicStrings_Dup (s1); ++ { ++ s2 = DynamicStrings_Dup (s1); ++ } + e = mcError_newWarning (tok1); + mcError_errorString (e, s1); + mcError_errorString (mcError_chainError (tok2, e), s2); +@@ -1093,7 +1147,9 @@ void mcError_errorAbort0 (char *a_, unsigned int _a_high) + + mcError_flushWarnings (); + if (! (StrLib_StrEqual ((char *) a, _a_high, (char *) "", 0))) +- mcError_writeFormat0 ((char *) a, _a_high); ++ { ++ mcError_writeFormat0 ((char *) a, _a_high); ++ } + if (! (flushAll (head, TRUE))) + { + mcError_writeFormat0 ((char *) "unidentified error", 18); +--- a/src/gcc/gm2/mc-boot/GmcFileName.c ++++ b/src/gcc/gm2/mc-boot/GmcFileName.c +@@ -72,9 +72,13 @@ DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename); + DynamicStrings_String mcFileName_calculateFileName (DynamicStrings_String module, DynamicStrings_String extension) + { + if (MaxFileName == 0) +- return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, MaxFileName), '.'), extension); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, MaxFileName), '.'), extension); ++ } + else +- return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, (MaxFileName-(DynamicStrings_Length (extension)))-1), '.'), extension); ++ { ++ return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, (MaxFileName-(DynamicStrings_Length (extension)))-1), '.'), extension); ++ } + } + + +@@ -98,9 +102,13 @@ DynamicStrings_String mcFileName_calculateStemName (DynamicStrings_String module + DynamicStrings_String mcFileName_extractExtension (DynamicStrings_String filename, DynamicStrings_String ext) + { + if (DynamicStrings_Equal (ext, DynamicStrings_Mark (DynamicStrings_Slice (filename, (int) -(DynamicStrings_Length (ext)), 0)))) +- return DynamicStrings_Slice (filename, 0, (int) -(DynamicStrings_Length (ext))); ++ { ++ return DynamicStrings_Slice (filename, 0, (int) -(DynamicStrings_Length (ext))); ++ } + else +- return filename; ++ { ++ return filename; ++ } + } + + +@@ -115,9 +123,13 @@ DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename) + + i = DynamicStrings_Index (filename, Directory, 0); + if (i == -1) +- return DynamicStrings_Dup (filename); ++ { ++ return DynamicStrings_Dup (filename); ++ } + else +- return DynamicStrings_Slice (filename, i+1, 0); ++ { ++ return DynamicStrings_Slice (filename, i+1, 0); ++ } + } + + void _M2_mcFileName_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GmcLexBuf.c ++++ b/src/gcc/gm2/mc-boot/GmcLexBuf.c +@@ -421,14 +421,20 @@ static void debugLex (unsigned int n) + tokenBucket b; + + if (nextTokNo > n) +- o = nextTokNo-n; ++ { ++ o = nextTokNo-n; ++ } + else +- o = 0; ++ { ++ o = 0; ++ } + i = 0; + do { + t = o+i; + if (nextTokNo == t) +- mcPrintf_printf0 ((char *) "nextTokNo ", 10); ++ { ++ mcPrintf_printf0 ((char *) "nextTokNo ", 10); ++ } + b = findtokenBucket (&t); + if (b == NULL) + { +@@ -461,7 +467,9 @@ static void seekTo (unsigned int t) + t -= 1; + b = findtokenBucket (&t); + if (b == NULL) +- updateFromBucket (b, t); ++ { ++ updateFromBucket (b, t); ++ } + } + } + +@@ -480,7 +488,9 @@ static tokenBucket peeptokenBucket (unsigned int *t) + + ct = mcLexBuf_currenttoken; + if (Debugging) +- debugLex (5); ++ { ++ debugLex (5); ++ } + old = mcLexBuf_getTokenNo (); + do { + n = (*t); +@@ -503,14 +513,22 @@ static tokenBucket peeptokenBucket (unsigned int *t) + (*t) = n; + nextTokNo = old+1; + if (Debugging) +- mcPrintf_printf2 ((char *) "nextTokNo = %d, old = %d\\n", 26, (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1), (unsigned char *) &old, (sizeof (old)-1)); ++ { ++ mcPrintf_printf2 ((char *) "nextTokNo = %d, old = %d\\n", 26, (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1), (unsigned char *) &old, (sizeof (old)-1)); ++ } + b = findtokenBucket (&old); + if (Debugging) +- mcPrintf_printf1 ((char *) " adjusted old = %d\\n", 21, (unsigned char *) &old, (sizeof (old)-1)); ++ { ++ mcPrintf_printf1 ((char *) " adjusted old = %d\\n", 21, (unsigned char *) &old, (sizeof (old)-1)); ++ } + if (b != NULL) +- updateFromBucket (b, old); ++ { ++ updateFromBucket (b, old); ++ } + if (Debugging) +- debugLex (5); ++ { ++ debugLex (5); ++ } + mcDebug_assert (ct == mcLexBuf_currenttoken); + return b; + } +@@ -542,29 +560,37 @@ static void peepAfterComment (void) + t = cno+peep; + b = peeptokenBucket (&t); + if ((b == NULL) || (mcLexBuf_currenttoken == mcReserved_eoftok)) +- finished = TRUE; ++ { ++ finished = TRUE; ++ } + else + { + nextline = b->buf.array[t].line; + if (nextline == curline) +- switch (b->buf.array[t].token) +- { +- case mcReserved_eoftok: +- case mcReserved_endtok: +- finished = TRUE; +- break; +- +- case mcReserved_commenttok: +- if (mcComment_isAfterComment (b->buf.array[t].com)) +- afterComment = b->buf.array[t].com; +- break; +- +- +- default: +- break; +- } ++ { ++ switch (b->buf.array[t].token) ++ { ++ case mcReserved_eoftok: ++ case mcReserved_endtok: ++ finished = TRUE; ++ break; ++ ++ case mcReserved_commenttok: ++ if (mcComment_isAfterComment (b->buf.array[t].com)) ++ { ++ afterComment = b->buf.array[t].com; ++ } ++ break; ++ ++ ++ default: ++ break; ++ } ++ } + else +- finished = TRUE; ++ { ++ finished = TRUE; ++ } + } + peep += 1; + } while (! (finished)); +@@ -627,7 +653,9 @@ static sourceList newElement (void * s) + + Storage_ALLOCATE ((void **) &l, sizeof (_T1)); + if (l == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + l->name = DynamicStrings_InitStringCharStar (s); +@@ -1053,9 +1081,13 @@ static void updateFromBucket (tokenBucket b, unsigned int offset) + mcLexBuf_currentinteger = b->buf.array[offset].int_; + mcLexBuf_currentcomment = b->buf.array[offset].com; + if (mcLexBuf_currentcomment != NULL) +- mcLexBuf_lastcomment = mcLexBuf_currentcomment; ++ { ++ mcLexBuf_lastcomment = mcLexBuf_currentcomment; ++ } + if (Debugging) +- mcPrintf_printf3 ((char *) "line %d (# %d %d) ", 19, (unsigned char *) &b->buf.array[offset].line, (sizeof (b->buf.array[offset].line)-1), (unsigned char *) &offset, (sizeof (offset)-1), (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1)); ++ { ++ mcPrintf_printf3 ((char *) "line %d (# %d %d) ", 19, (unsigned char *) &b->buf.array[offset].line, (sizeof (b->buf.array[offset].line)-1), (unsigned char *) &offset, (sizeof (offset)-1), (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1)); ++ } + } + + +@@ -1081,36 +1113,48 @@ static void doGetToken (void) + { + a = mcflex_getToken (); + if (listOfTokens.tail == NULL) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + if (nextTokNo >= listOfTokens.lastBucketOffset) +- /* nextTokNo is in the last bucket or needs to be read. */ +- if ((nextTokNo-listOfTokens.lastBucketOffset) < listOfTokens.tail->len) +- { +- if (Debugging) +- mcPrintf_printf0 ((char *) "fetching token from buffer (updateFromBucket)\\n", 47); +- updateFromBucket (listOfTokens.tail, nextTokNo-listOfTokens.lastBucketOffset); +- } +- else +- { +- if (Debugging) +- mcPrintf_printf0 ((char *) "calling flex to place token into buffer\\n", 41); +- /* call the lexical phase to place a new token into the last bucket. */ +- a = mcflex_getToken (); +- mcLexBuf_getToken (); /* and call ourselves again to collect the token from bucket. */ +- return; /* and call ourselves again to collect the token from bucket. */ +- } ++ { ++ /* nextTokNo is in the last bucket or needs to be read. */ ++ if ((nextTokNo-listOfTokens.lastBucketOffset) < listOfTokens.tail->len) ++ { ++ if (Debugging) ++ { ++ mcPrintf_printf0 ((char *) "fetching token from buffer (updateFromBucket)\\n", 47); ++ } ++ updateFromBucket (listOfTokens.tail, nextTokNo-listOfTokens.lastBucketOffset); ++ } ++ else ++ { ++ if (Debugging) ++ { ++ mcPrintf_printf0 ((char *) "calling flex to place token into buffer\\n", 41); ++ } ++ /* call the lexical phase to place a new token into the last bucket. */ ++ a = mcflex_getToken (); ++ mcLexBuf_getToken (); /* and call ourselves again to collect the token from bucket. */ ++ return; /* and call ourselves again to collect the token from bucket. */ ++ } ++ } + else + { + if (Debugging) +- mcPrintf_printf0 ((char *) "fetching token from buffer\\n", 28); ++ { ++ mcPrintf_printf0 ((char *) "fetching token from buffer\\n", 28); ++ } + t = nextTokNo; + b = findtokenBucket (&t); + updateFromBucket (b, t); + } + } + if (Debugging) +- displayToken (mcLexBuf_currenttoken); ++ { ++ displayToken (mcLexBuf_currenttoken); ++ } + nextTokNo += 1; + } + +@@ -1123,7 +1167,9 @@ static void doGetToken (void) + static void syncOpenWithBuffer (void) + { + if (listOfTokens.tail != NULL) +- nextTokNo = listOfTokens.lastBucketOffset+listOfTokens.tail->len; ++ { ++ nextTokNo = listOfTokens.lastBucketOffset+listOfTokens.tail->len; ++ } + } + + +@@ -1139,9 +1185,13 @@ static tokenBucket findtokenBucket (unsigned int *tokenNo) + while (b != NULL) + { + if ((*tokenNo) < b->len) +- return b; ++ { ++ return b; ++ } + else +- (*tokenNo) -= b->len; ++ { ++ (*tokenNo) -= b->len; ++ } + b = b->next; + } + return NULL; +@@ -1176,6 +1226,7 @@ static void addTokToList (mcReserved_toktype t, nameKey_Name n, int i, mcComment + } + else if (listOfTokens.tail->len == MaxBucketSize) + { ++ /* avoid dangling else. */ + mcDebug_assert (listOfTokens.tail->next == NULL); + Storage_ALLOCATE ((void **) &listOfTokens.tail->next, sizeof (_T2)); + if (listOfTokens.tail->next == NULL) +@@ -1216,12 +1267,18 @@ static unsigned int isLastTokenEof (void) + { + b = listOfTokens.head; + if (b == listOfTokens.tail) +- return FALSE; ++ { ++ return FALSE; ++ } + while (b->next != listOfTokens.tail) +- b = b->next; ++ { ++ b = b->next; ++ } + } + else +- b = listOfTokens.tail; ++ { ++ b = listOfTokens.tail; ++ } + mcDebug_assert (b->len > 0); /* len should always be >0 */ + return b->buf.array[b->len-1].token == mcReserved_eoftok; /* len should always be >0 */ + } +@@ -1286,15 +1343,19 @@ unsigned int mcLexBuf_openSource (DynamicStrings_String s) + return TRUE; + } + else +- if (mcflex_openSource (DynamicStrings_string (s))) +- { +- mcLexBuf_setFile (DynamicStrings_string (s)); +- syncOpenWithBuffer (); +- mcLexBuf_getToken (); +- return TRUE; +- } +- else +- return FALSE; ++ { ++ if (mcflex_openSource (DynamicStrings_string (s))) ++ { ++ mcLexBuf_setFile (DynamicStrings_string (s)); ++ syncOpenWithBuffer (); ++ mcLexBuf_getToken (); ++ return TRUE; ++ } ++ else ++ { ++ return FALSE; ++ } ++ } + } + + +@@ -1305,8 +1366,12 @@ unsigned int mcLexBuf_openSource (DynamicStrings_String s) + void mcLexBuf_closeSource (void) + { + if (useBufferedTokens) +- while (mcLexBuf_currenttoken != mcReserved_eoftok) +- mcLexBuf_getToken (); ++ { ++ while (mcLexBuf_currenttoken != mcReserved_eoftok) ++ { ++ mcLexBuf_getToken (); ++ } ++ } + /* a subsequent call to mcflex.OpenSource will really close the file */ + } + +@@ -1366,11 +1431,13 @@ void mcLexBuf_getToken (void) + } + else if (mcComment_isBodyComment (mcLexBuf_currentcomment)) + { ++ /* avoid dangling else. */ + bodyComment = mcLexBuf_currentcomment; + afterComment = NULL; + } + else if (mcComment_isAfterComment (mcLexBuf_currentcomment)) + { ++ /* avoid dangling else. */ + procedureComment = NULL; + bodyComment = NULL; + afterComment = mcLexBuf_currentcomment; +@@ -1390,7 +1457,9 @@ void mcLexBuf_insertToken (mcReserved_toktype token) + if (listOfTokens.tail != NULL) + { + if (listOfTokens.tail->len > 0) +- listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token; ++ { ++ listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token; ++ } + addTokToList (mcLexBuf_currenttoken, (nameKey_Name) nameKey_NulName, 0, (mcComment_commentDesc) NULL, mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource); + mcLexBuf_getToken (); + } +@@ -1407,7 +1476,9 @@ void mcLexBuf_insertTokenAndRewind (mcReserved_toktype token) + if (listOfTokens.tail != NULL) + { + if (listOfTokens.tail->len > 0) +- listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token; ++ { ++ listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token; ++ } + addTokToList (mcLexBuf_currenttoken, (nameKey_Name) nameKey_NulName, 0, (mcComment_commentDesc) NULL, mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource); + mcLexBuf_currenttoken = token; + } +@@ -1432,9 +1503,13 @@ unsigned int mcLexBuf_getPreviousTokenLineNo (void) + unsigned int mcLexBuf_getLineNo (void) + { + if (nextTokNo == 0) +- return 0; ++ { ++ return 0; ++ } + else +- return mcLexBuf_tokenToLineNo (mcLexBuf_getTokenNo (), 0); ++ { ++ return mcLexBuf_tokenToLineNo (mcLexBuf_getTokenNo (), 0); ++ } + } + + +@@ -1445,9 +1520,13 @@ unsigned int mcLexBuf_getLineNo (void) + unsigned int mcLexBuf_getTokenNo (void) + { + if (nextTokNo == 0) +- return 0; ++ { ++ return 0; ++ } + else +- return nextTokNo-1; ++ { ++ return nextTokNo-1; ++ } + } + + +@@ -1466,22 +1545,30 @@ unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned int depth) + + b = findtokenBucket (&tokenNo); + if (b == NULL) +- return 0; ++ { ++ return 0; ++ } + else +- if (depth == 0) +- return b->buf.array[tokenNo].line; +- else +- { +- l = b->buf.array[tokenNo].file->left; +- while (depth > 0) +- { +- l = l->left; +- if (l == b->buf.array[tokenNo].file->left) +- return 0; +- depth -= 1; +- } +- return l->line; +- } ++ { ++ if (depth == 0) ++ { ++ return b->buf.array[tokenNo].line; ++ } ++ else ++ { ++ l = b->buf.array[tokenNo].file->left; ++ while (depth > 0) ++ { ++ l = l->left; ++ if (l == b->buf.array[tokenNo].file->left) ++ { ++ return 0; ++ } ++ depth -= 1; ++ } ++ return l->line; ++ } ++ } + } + + +@@ -1493,9 +1580,13 @@ unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned int depth) + unsigned int mcLexBuf_getColumnNo (void) + { + if (nextTokNo == 0) +- return 0; ++ { ++ return 0; ++ } + else +- return mcLexBuf_tokenToColumnNo (mcLexBuf_getTokenNo (), 0); ++ { ++ return mcLexBuf_tokenToColumnNo (mcLexBuf_getTokenNo (), 0); ++ } + } + + +@@ -1514,22 +1605,30 @@ unsigned int mcLexBuf_tokenToColumnNo (unsigned int tokenNo, unsigned int depth) + + b = findtokenBucket (&tokenNo); + if (b == NULL) +- return 0; ++ { ++ return 0; ++ } + else +- if (depth == 0) +- return b->buf.array[tokenNo].col; +- else +- { +- l = b->buf.array[tokenNo].file->left; +- while (depth > 0) +- { +- l = l->left; +- if (l == b->buf.array[tokenNo].file->left) +- return 0; +- depth -= 1; +- } +- return l->col; +- } ++ { ++ if (depth == 0) ++ { ++ return b->buf.array[tokenNo].col; ++ } ++ else ++ { ++ l = b->buf.array[tokenNo].file->left; ++ while (depth > 0) ++ { ++ l = l->left; ++ if (l == b->buf.array[tokenNo].file->left) ++ { ++ return 0; ++ } ++ depth -= 1; ++ } ++ return l->col; ++ } ++ } + } + + +@@ -1548,7 +1647,9 @@ DynamicStrings_String mcLexBuf_findFileNameFromToken (unsigned int tokenNo, unsi + + b = findtokenBucket (&tokenNo); + if (b == NULL) +- return NULL; ++ { ++ return NULL; ++ } + else + { + l = b->buf.array[tokenNo].file->left; +@@ -1556,7 +1657,9 @@ DynamicStrings_String mcLexBuf_findFileNameFromToken (unsigned int tokenNo, unsi + { + l = l->left; + if (l == b->buf.array[tokenNo].file->left) +- return NULL; ++ { ++ return NULL; ++ } + depth -= 1; + } + return l->name; +@@ -1596,7 +1699,9 @@ void mcLexBuf_addTok (mcReserved_toktype t) + void mcLexBuf_addTokCharStar (mcReserved_toktype t, void * s) + { + if ((libc_strlen (s)) > 80) +- stop (); ++ { ++ stop (); ++ } + addTokToList (t, nameKey_makekey (s), 0, (mcComment_commentDesc) NULL, mcflex_getLineNo (), mcflex_getColumnNo (), currentSource); + currentUsed = TRUE; + } +@@ -1656,14 +1761,16 @@ void mcLexBuf_pushFile (void * filename) + checkIfNeedToDuplicate (); + addTo (newElement (filename)); + if (Debugging) +- if (currentSource->right != currentSource) +- { +- l = currentSource; +- do { +- mcPrintf_printf3 ((char *) "name = %s, line = %d, col = %d\\n", 32, (unsigned char *) &l->name, (sizeof (l->name)-1), (unsigned char *) &l->line, (sizeof (l->line)-1), (unsigned char *) &l->col, (sizeof (l->col)-1)); +- l = l->right; +- } while (! (l == currentSource)); +- } ++ { ++ if (currentSource->right != currentSource) ++ { ++ l = currentSource; ++ do { ++ mcPrintf_printf3 ((char *) "name = %s, line = %d, col = %d\\n", 32, (unsigned char *) &l->name, (sizeof (l->name)-1), (unsigned char *) &l->line, (sizeof (l->line)-1), (unsigned char *) &l->col, (sizeof (l->col)-1)); ++ l = l->right; ++ } while (! (l == currentSource)); ++ } ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GmcMetaError.c ++++ b/src/gcc/gm2/mc-boot/GmcMetaError.c +@@ -397,7 +397,9 @@ static void internalFormat (DynamicStrings_String s, int i, char *m_, unsigned i + FIO_WriteLine (FIO_StdOut); + s = DynamicStrings_KillString (s); + if (i > 0) +- i -= 1; ++ { ++ i -= 1; ++ } + s = DynamicStrings_Mult (DynamicStrings_InitString ((char *) " ", 1), (unsigned int) i); + s = DynamicStrings_ConCatChar (s, '^'); + s = SFIO_WriteS (FIO_StdOut, s); +@@ -413,7 +415,9 @@ static void internalFormat (DynamicStrings_String s, int i, char *m_, unsigned i + static DynamicStrings_String x (DynamicStrings_String a, DynamicStrings_String b) + { + if (a != b) +- mcError_internalError ((char *) "different string returned", 25, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 110); ++ { ++ mcError_internalError ((char *) "different string returned", 25, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 110); ++ } + return a; + } + +@@ -439,7 +443,9 @@ static void then (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna + (*i) += 1; + ebnf (e, t, r, s, sym, i, l); + if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) +- internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ } + } + } + +@@ -453,7 +459,9 @@ static DynamicStrings_String doNumber (unsigned int bol, varargs_vararg sym, Dyn + unsigned int c; + + if ((DynamicStrings_Length (o)) > 0) +- return o; ++ { ++ return o; ++ } + else + { + (*quotes) = FALSE; +@@ -473,7 +481,9 @@ static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, Dyna + unsigned int c; + + if ((DynamicStrings_Length (o)) > 0) +- return o; ++ { ++ return o; ++ } + else + { + (*quotes) = FALSE; +@@ -481,7 +491,9 @@ static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, Dyna + varargs_arg (sym, (unsigned char *) &c, (sizeof (c)-1)); + o = DynamicStrings_ConCat (o, StringConvert_ctos (c, 0, ' ')); + if (((c % 100) >= 11) && ((c % 100) <= 13)) +- o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "th", 2))); ++ { ++ o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "th", 2))); ++ } + + else { + switch (c % 10) +@@ -520,9 +532,13 @@ static DynamicStrings_String doAscii (unsigned int bol, varargs_vararg sym, Dyna + varargs_next (sym, bol); + varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); + if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) +- return o; ++ { ++ return o; ++ } + else +- return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); ++ { ++ return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); ++ } + } + + +@@ -537,22 +553,33 @@ static DynamicStrings_String doName (unsigned int bol, varargs_vararg sym, Dynam + varargs_next (sym, bol); + varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); + if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) +- return o; +- else +- if (decl_isZtype (n)) +- { +- (*quotes) = FALSE; +- return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the ZType", 9))); +- } +- else if (decl_isRtype (n)) +- { +- (*quotes) = FALSE; +- return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the RType", 9))); +- } +- else if ((decl_getSymName (n)) != nameKey_NulName) +- return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); +- else ++ { + return o; ++ } ++ else ++ { ++ if (decl_isZtype (n)) ++ { ++ (*quotes) = FALSE; ++ return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the ZType", 9))); ++ } ++ else if (decl_isRtype (n)) ++ { ++ /* avoid dangling else. */ ++ (*quotes) = FALSE; ++ return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the RType", 9))); ++ } ++ else if ((decl_getSymName (n)) != nameKey_NulName) ++ { ++ /* avoid dangling else. */ ++ return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))); ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ return o; ++ } ++ } + } + + +@@ -569,7 +596,9 @@ static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym, + varargs_next (sym, bol); + varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); + if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n))) +- return o; ++ { ++ return o; ++ } + else + { + s = decl_getScope (n); +@@ -581,7 +610,9 @@ static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym, + o = x (o, DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))))); + } + else +- o = x (o, doAscii (bol, sym, o)); ++ { ++ o = x (o, doAscii (bol, sym, o)); ++ } + varargs_end (&mod); + return o; + } +@@ -601,7 +632,9 @@ static DynamicStrings_String doType (unsigned int bol, varargs_vararg *sym, Dyna + varargs_next ((*sym), bol); + varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1)); + if (((DynamicStrings_Length (o)) > 0) || ((decl_getType (n)) == NULL)) +- return o; ++ { ++ return o; ++ } + else + { + n = decl_skipType (decl_getType (n)); +@@ -624,16 +657,22 @@ static DynamicStrings_String doSkipType (unsigned int bol, varargs_vararg *sym, + varargs_next ((*sym), bol); + varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1)); + if ((DynamicStrings_Length (o)) > 0) +- return o; ++ { ++ return o; ++ } + else + { + n = decl_skipType (decl_getType (n)); + varargs_next ((*sym), bol); + varargs_replace ((*sym), (unsigned char *) &n, (sizeof (n)-1)); + if ((decl_getSymName (n)) == nameKey_NulName) +- return o; ++ { ++ return o; ++ } + else +- return x (o, doAscii (bol, (*sym), o)); ++ { ++ return x (o, doAscii (bol, (*sym), o)); ++ } + } + } + +@@ -648,7 +687,9 @@ static DynamicStrings_String doKey (unsigned int bol, varargs_vararg sym, Dynami + nameKey_Name n; + + if ((DynamicStrings_Length (o)) > 0) +- return o; ++ { ++ return o; ++ } + else + { + varargs_next (sym, bol); +@@ -668,19 +709,27 @@ static mcError_error doError (mcError_error e, errorType t, unsigned int tok) + { + case chained: + if (e == NULL) +- mcError_internalError ((char *) "should not be chaining an error onto an empty error note", 56, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 356); ++ { ++ mcError_internalError ((char *) "should not be chaining an error onto an empty error note", 56, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 356); ++ } + else +- e = mcError_chainError (tok, e); ++ { ++ e = mcError_chainError (tok, e); ++ } + break; + + case newerror: + if (e == NULL) +- e = mcError_newError (tok); ++ { ++ e = mcError_newError (tok); ++ } + break; + + case newwarning: + if (e == NULL) +- e = mcError_newWarning (tok); ++ { ++ e = mcError_newWarning (tok); ++ } + break; + + +@@ -753,11 +802,18 @@ static mcError_error doUsed (mcError_error e, errorType t, unsigned int bol, var + static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings_String b) + { + if (((DynamicStrings_Length (a)) == 1) && ((DynamicStrings_char (a, 0)) == 'a')) +- a = x (a, DynamicStrings_ConCatChar (a, 'n')); ++ { ++ a = x (a, DynamicStrings_ConCatChar (a, 'n')); ++ } + else if ((((DynamicStrings_Length (a)) > 1) && ((DynamicStrings_char (a, -1)) == 'a')) && (isWhite (DynamicStrings_char (a, -2)))) +- a = x (a, DynamicStrings_ConCatChar (a, 'n')); ++ { ++ /* avoid dangling else. */ ++ a = x (a, DynamicStrings_ConCatChar (a, 'n')); ++ } + if (((DynamicStrings_Length (a)) > 0) && (! (isWhite (DynamicStrings_char (a, -1))))) +- a = x (a, DynamicStrings_ConCatChar (a, ' ')); ++ { ++ a = x (a, DynamicStrings_ConCatChar (a, ' ')); ++ } + return x (a, DynamicStrings_ConCat (a, b)); + } + +@@ -769,57 +825,126 @@ static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings + static DynamicStrings_String symDesc (decl_node n, DynamicStrings_String o) + { + if (decl_isLiteral (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "literal", 7))); ++ { ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "literal", 7))); ++ } + else if (decl_isConstSet (n)) +- /* ++ { ++ /* avoid dangling else. */ ++ /* + ELSIF IsConstructor(n) + THEN + RETURN( ConCatWord (o, Mark (InitString ('constructor'))) ) + */ +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant set", 12))); ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant set", 12))); ++ } + else if (decl_isConst (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant", 8))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant", 8))); ++ } + else if (decl_isArray (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "array", 5))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "array", 5))); ++ } + else if (decl_isVar (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "variable", 8))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "variable", 8))); ++ } + else if (decl_isEnumeration (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration type", 16))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration type", 16))); ++ } + else if (decl_isEnumerationField (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration field", 17))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration field", 17))); ++ } + else if (decl_isUnbounded (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "unbounded parameter", 19))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "unbounded parameter", 19))); ++ } + else if (decl_isProcType (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure type", 14))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure type", 14))); ++ } + else if (decl_isProcedure (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure", 9))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure", 9))); ++ } + else if (decl_isPointer (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "pointer", 7))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "pointer", 7))); ++ } + else if (decl_isParameter (n)) +- if (decl_isVarParam (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "var parameter", 13))); +- else +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "parameter", 9))); ++ { ++ /* avoid dangling else. */ ++ if (decl_isVarParam (n)) ++ { ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "var parameter", 13))); ++ } ++ else ++ { ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "parameter", 9))); ++ } ++ } + else if (decl_isType (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "type", 4))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "type", 4))); ++ } + else if (decl_isRecord (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record", 6))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record", 6))); ++ } + else if (decl_isRecordField (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record field", 12))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record field", 12))); ++ } + else if (decl_isVarient (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "varient record", 14))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "varient record", 14))); ++ } + else if (decl_isModule (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "module", 6))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "module", 6))); ++ } + else if (decl_isDef (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "definition module", 17))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "definition module", 17))); ++ } + else if (decl_isImp (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "implementation module", 21))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "implementation module", 21))); ++ } + else if (decl_isSet (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "set", 3))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "set", 3))); ++ } + else if (decl_isSubrange (n)) +- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "subrange", 8))); ++ { ++ /* avoid dangling else. */ ++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "subrange", 8))); ++ } + else +- return o; ++ { ++ /* avoid dangling else. */ ++ return o; ++ } + } + + +@@ -837,7 +962,9 @@ static DynamicStrings_String doDesc (unsigned int bol, varargs_vararg sym, Dynam + varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1)); + o = symDesc (n, o); + if ((DynamicStrings_Length (o)) > 0) +- (*quotes) = FALSE; ++ { ++ (*quotes) = FALSE; ++ } + } + return o; + } +@@ -852,12 +979,18 @@ static DynamicStrings_String addQuoted (DynamicStrings_String r, DynamicStrings_ + if ((DynamicStrings_Length (o)) > 0) + { + if (! (isWhite (DynamicStrings_char (r, -1)))) +- r = x (r, DynamicStrings_ConCatChar (r, ' ')); ++ { ++ r = x (r, DynamicStrings_ConCatChar (r, ' ')); ++ } + if (quotes) +- r = x (r, DynamicStrings_ConCatChar (r, '\'')); ++ { ++ r = x (r, DynamicStrings_ConCatChar (r, '\'')); ++ } + r = x (r, DynamicStrings_ConCat (r, o)); + if (quotes) +- r = x (r, DynamicStrings_ConCatChar (r, '\'')); ++ { ++ r = x (r, DynamicStrings_ConCatChar (r, '\'')); ++ } + } + return r; + } +@@ -939,7 +1072,9 @@ static void op (mcError_error *e, errorType *t, DynamicStrings_String *r, Dynami + o = DynamicStrings_KillString (o); + o = DynamicStrings_InitString ((char *) "", 0); + if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) +- internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ } + (*i) -= 1; + break; + +@@ -1002,7 +1137,9 @@ static void percenttoken (mcError_error *e, errorType t, DynamicStrings_String * + break; + } + if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) +- internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ } + } + } + +@@ -1044,10 +1181,14 @@ static void lbra (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna + (*i) += 1; + } + if ((DynamicStrings_char (s, (*i))) != '%') +- internalFormat (s, (*i), (char *) "expecting to see %", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see %", 18); ++ } + percenttoken (e, (*t), r, s, sym, i, l, positive); + if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) +- internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ } + } + } + +@@ -1082,7 +1223,9 @@ static void ebnf (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna + case '{': + lbra (e, t, r, s, sym, i, l); + if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}')) +- internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ { ++ internalFormat (s, (*i), (char *) "expecting to see }", 18); ++ } + break; + + case '}': +@@ -1092,7 +1235,9 @@ static void ebnf (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna + + default: + if ((((isWhite (DynamicStrings_char (s, (*i)))) && ((DynamicStrings_Length ((*r))) > 0)) && (! (isWhite (DynamicStrings_char ((*r), -1))))) || (! (isWhite (DynamicStrings_char (s, (*i)))))) +- (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i)))); ++ { ++ (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i)))); ++ } + break; + } + (*i) += 1; +--- a/src/gcc/gm2/mc-boot/GmcOptions.c ++++ b/src/gcc/gm2/mc-boot/GmcOptions.c +@@ -279,7 +279,9 @@ static void displayVersion (unsigned int mustExit) + mcPrintf_printf0 ((char *) "This is free software: you are free to change and redistribute it.\\n", 68); + mcPrintf_printf0 ((char *) "There is NO WARRANTY, to the extent permitted by law.\\n", 55); + if (mustExit) +- libc_exit (0); ++ { ++ libc_exit (0); ++ } + } + + +@@ -329,9 +331,14 @@ static void displayHelp (void) + static void commentBegin (FIO_File f) + { + if (langC || langCPP) +- FIO_WriteString (f, (char *) "/* ", 3); ++ { ++ FIO_WriteString (f, (char *) "/* ", 3); ++ } + else if (langM2) +- FIO_WriteString (f, (char *) "(* ", 3); ++ { ++ /* avoid dangling else. */ ++ FIO_WriteString (f, (char *) "(* ", 3); ++ } + } + + +@@ -348,6 +355,7 @@ static void commentEnd (FIO_File f) + } + else if (langM2) + { ++ /* avoid dangling else. */ + FIO_WriteString (f, (char *) " *)", 3); + FIO_WriteLine (f); + } +@@ -476,9 +484,13 @@ static void issueGPL (FIO_File f) + FIO_WriteLine (f); + } + if (gplHeader) +- gplBody (f); ++ { ++ gplBody (f); ++ } + if (glplHeader) +- glplBody (f); ++ { ++ glplBody (f); ++ } + commentEnd (f); + FIO_WriteLine (f); + } +@@ -579,14 +591,20 @@ static unsigned int optionIs (char *left_, unsigned int _left_high, DynamicStrin + memcpy (left, left_, _left_high+1); + + if ((DynamicStrings_Length (right)) == (StrLib_StrLen ((char *) left, _left_high))) +- return DynamicStrings_EqualArray (right, (char *) left, _left_high); ++ { ++ return DynamicStrings_EqualArray (right, (char *) left, _left_high); ++ } + else if ((DynamicStrings_Length (right)) > (StrLib_StrLen ((char *) left, _left_high))) + { ++ /* avoid dangling else. */ + s = DynamicStrings_Mark (DynamicStrings_Slice (right, 0, (int) StrLib_StrLen ((char *) left, _left_high))); + return DynamicStrings_EqualArray (s, (char *) left, _left_high); + } + else +- return FALSE; ++ { ++ /* avoid dangling else. */ ++ return FALSE; ++ } + } + + +@@ -604,16 +622,21 @@ static void setLang (DynamicStrings_String arg) + } + else if (optionIs ((char *) "c", 1, arg)) + { ++ /* avoid dangling else. */ + decl_setLangC (); + langC = TRUE; + } + else if (optionIs ((char *) "m2", 2, arg)) + { ++ /* avoid dangling else. */ + decl_setLangM2 (); + langM2 = TRUE; + } + else +- displayHelp (); ++ { ++ /* avoid dangling else. */ ++ displayHelp (); ++ } + } + + +@@ -624,45 +647,91 @@ static void setLang (DynamicStrings_String arg) + static void handleOption (DynamicStrings_String arg) + { + if ((optionIs ((char *) "--quiet", 7, arg)) || (optionIs ((char *) "-q", 2, arg))) +- setQuiet (TRUE); ++ { ++ setQuiet (TRUE); ++ } + else if ((optionIs ((char *) "--verbose", 9, arg)) || (optionIs ((char *) "-v", 2, arg))) +- setVerbose (TRUE); ++ { ++ /* avoid dangling else. */ ++ setVerbose (TRUE); ++ } + else if (optionIs ((char *) "--version", 9, arg)) +- displayVersion (TRUE); ++ { ++ /* avoid dangling else. */ ++ displayVersion (TRUE); ++ } + else if (optionIs ((char *) "--olang=", 8, arg)) +- setLang (DynamicStrings_Slice (arg, 8, 0)); ++ { ++ /* avoid dangling else. */ ++ setLang (DynamicStrings_Slice (arg, 8, 0)); ++ } + else if (optionIs ((char *) "-I", 2, arg)) +- setSearchPath (DynamicStrings_Slice (arg, 2, 0)); ++ { ++ /* avoid dangling else. */ ++ setSearchPath (DynamicStrings_Slice (arg, 2, 0)); ++ } + else if ((optionIs ((char *) "--help", 6, arg)) || (optionIs ((char *) "-h", 2, arg))) +- displayHelp (); ++ { ++ /* avoid dangling else. */ ++ displayHelp (); ++ } + else if (optionIs ((char *) "--cpp", 5, arg)) +- cppProgram = DynamicStrings_InitString ((char *) "cpp", 3); ++ { ++ /* avoid dangling else. */ ++ cppProgram = DynamicStrings_InitString ((char *) "cpp", 3); ++ } + else if (optionIs ((char *) "-o=", 3, arg)) +- setOutputFile (DynamicStrings_Slice (arg, 3, 0)); ++ { ++ /* avoid dangling else. */ ++ setOutputFile (DynamicStrings_Slice (arg, 3, 0)); ++ } + else if (optionIs ((char *) "--extended-opaque", 17, arg)) +- setExtendedOpaque (TRUE); ++ { ++ /* avoid dangling else. */ ++ setExtendedOpaque (TRUE); ++ } + else if (optionIs ((char *) "--debug-top", 11, arg)) +- mcOptions_setDebugTopological (TRUE); ++ { ++ /* avoid dangling else. */ ++ mcOptions_setDebugTopological (TRUE); ++ } + else if (optionIs ((char *) "--h-file-prefix=", 16, arg)) +- setHPrefix (DynamicStrings_Slice (arg, 16, 0)); ++ { ++ /* avoid dangling else. */ ++ setHPrefix (DynamicStrings_Slice (arg, 16, 0)); ++ } + else if (optionIs ((char *) "--ignore-fq", 11, arg)) +- setIgnoreFQ (TRUE); ++ { ++ /* avoid dangling else. */ ++ setIgnoreFQ (TRUE); ++ } + else if (optionIs ((char *) "--gpl-header", 12, arg)) +- gplHeader = TRUE; ++ { ++ /* avoid dangling else. */ ++ gplHeader = TRUE; ++ } + else if (optionIs ((char *) "--glpl-header", 13, arg)) +- glplHeader = TRUE; ++ { ++ /* avoid dangling else. */ ++ glplHeader = TRUE; ++ } + else if (optionIs ((char *) "--summary=\"", 11, arg)) + { ++ /* avoid dangling else. */ + summary = TRUE; + summaryContents = DynamicStrings_Slice (arg, 11, -1); + } + else if (optionIs ((char *) "--contributed=\"", 15, arg)) + { ++ /* avoid dangling else. */ + contributed = TRUE; + contributedContents = DynamicStrings_Slice (arg, 13, -1); + } + else if (optionIs ((char *) "--project=\"", 11, arg)) +- projectContents = DynamicStrings_Slice (arg, 10, -1); ++ { ++ /* avoid dangling else. */ ++ projectContents = DynamicStrings_Slice (arg, 10, -1); ++ } + } + + +@@ -684,7 +753,9 @@ DynamicStrings_String mcOptions_handleOptions (void) + { + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + if ((DynamicStrings_char (arg, 0)) == '-') +- handleOption (arg); ++ { ++ handleOption (arg); ++ } + else + { + if (! summary) +@@ -740,13 +811,17 @@ DynamicStrings_String mcOptions_getCppCommandLine (void) + DynamicStrings_String s; + + if (DynamicStrings_EqualArray (cppProgram, (char *) "", 0)) +- return NULL; ++ { ++ return NULL; ++ } + else + { + s = DynamicStrings_Dup (cppProgram); + s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), cppArgs); + if (mcOptions_getQuiet ()) +- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((char *) "-quiet", 6))); ++ { ++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((char *) "-quiet", 6))); ++ } + return s; + } + } +--- a/src/gcc/gm2/mc-boot/GmcPreprocess.c ++++ b/src/gcc/gm2/mc-boot/GmcPreprocess.c +@@ -135,14 +135,18 @@ DynamicStrings_String mcPreprocess_preprocessModule (DynamicStrings_String filen + + command = mcOptions_getCppCommandLine (); + if (DynamicStrings_EqualArray (command, (char *) "", 0)) +- return filename; ++ { ++ return filename; ++ } + else + { + tempfile = DynamicStrings_InitStringCharStar ((void *) makeTempFile (DynamicStrings_InitString ((char *) "cpp", 3))); + commandLine = DynamicStrings_Dup (command); + commandLine = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (commandLine), ' '), filename), DynamicStrings_Mark (DynamicStrings_InitString ((char *) " -o ", 4))), tempfile); + if (mcOptions_getVerbose ()) +- mcPrintf_fprintf1 (FIO_StdOut, (char *) "%s\\n", 4, (unsigned char *) &commandLine, (sizeof (commandLine)-1)); ++ { ++ mcPrintf_fprintf1 (FIO_StdOut, (char *) "%s\\n", 4, (unsigned char *) &commandLine, (sizeof (commandLine)-1)); ++ } + if ((libc_system (DynamicStrings_string (commandLine))) != 0) + { + mcPrintf_fprintf1 (FIO_StdErr, (char *) "C preprocessor failed when preprocessing %s\\n", 45, (unsigned char *) &filename, (sizeof (filename)-1)); +@@ -157,7 +161,9 @@ void _M2_mcPreprocess_init (__attribute__((unused)) int argc, __attribute__((unu + { + listOfFiles = alists_initList (); + if (! (M2RTS_InstallTerminationProcedure ((PROC ) {(PROC_t) removeFiles}))) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + void _M2_mcPreprocess_finish (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GmcPretty.c ++++ b/src/gcc/gm2/mc-boot/GmcPretty.c +@@ -312,9 +312,13 @@ void mcPretty_setindent (mcPretty_pretty p, unsigned int n) + unsigned int mcPretty_getcurpos (mcPretty_pretty s) + { + if (s->needsSpace) +- return s->curPos+1; ++ { ++ return s->curPos+1; ++ } + else +- return s->curPos; ++ { ++ return s->curPos; ++ } + } + + +--- a/src/gcc/gm2/mc-boot/GmcPrintf.c ++++ b/src/gcc/gm2/mc-boot/GmcPrintf.c +@@ -156,11 +156,17 @@ static void cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns + /* make a local copy of each unbounded array. */ + memcpy (b, b_, _b_high+1); + +- if ((_a_high) == (_b_high)) +- for (i=0; i<=_a_high; i++) +- a[i] = b[i]; ++ if (_a_high == _b_high) ++ { ++ for (i=0; i<=_a_high; i++) ++ { ++ a[i] = b[i]; ++ } ++ } + else +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + } + + +@@ -190,8 +196,10 @@ static unsigned int TranslateNameToCharStar (char *a, unsigned int _a_high, unsi + } + argno += 1; + if (argno > n) +- /* all done */ +- return FALSE; ++ { ++ /* all done */ ++ return FALSE; ++ } + } + i += 1; + } +--- a/src/gcc/gm2/mc-boot/GmcQuiet.c ++++ b/src/gcc/gm2/mc-boot/GmcQuiet.c +@@ -42,7 +42,9 @@ void mcQuiet_qprintf0 (char *a_, unsigned int _a_high) + memcpy (a, a_, _a_high+1); + + if (! (mcOptions_getQuiet ())) +- mcPrintf_printf0 ((char *) a, _a_high); ++ { ++ mcPrintf_printf0 ((char *) a, _a_high); ++ } + } + + void mcQuiet_qprintf1 (char *a_, unsigned int _a_high, unsigned char *w_, unsigned int _w_high) +@@ -55,7 +57,9 @@ void mcQuiet_qprintf1 (char *a_, unsigned int _a_high, unsigned char *w_, unsign + memcpy (w, w_, _w_high+1); + + if (! (mcOptions_getQuiet ())) +- mcPrintf_printf1 ((char *) a, _a_high, (unsigned char *) w, _w_high); ++ { ++ mcPrintf_printf1 ((char *) a, _a_high, (unsigned char *) w, _w_high); ++ } + } + + void mcQuiet_qprintf2 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high) +@@ -70,7 +74,9 @@ void mcQuiet_qprintf2 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig + memcpy (w2, w2_, _w2_high+1); + + if (! (mcOptions_getQuiet ())) +- mcPrintf_printf2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high); ++ { ++ mcPrintf_printf2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high); ++ } + } + + void mcQuiet_qprintf3 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high) +@@ -87,7 +93,9 @@ void mcQuiet_qprintf3 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig + memcpy (w3, w3_, _w3_high+1); + + if (! (mcOptions_getQuiet ())) +- mcPrintf_printf3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high); ++ { ++ mcPrintf_printf3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high); ++ } + } + + void mcQuiet_qprintf4 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high) +@@ -106,7 +114,9 @@ void mcQuiet_qprintf4 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig + memcpy (w4, w4_, _w4_high+1); + + if (! (mcOptions_getQuiet ())) +- mcPrintf_printf4 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high, (unsigned char *) w4, _w4_high); ++ { ++ mcPrintf_printf4 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high, (unsigned char *) w4, _w4_high); ++ } + } + + void _M2_mcQuiet_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GmcSearch.c ++++ b/src/gcc/gm2/mc-boot/GmcSearch.c +@@ -209,7 +209,9 @@ static void Init (void) + void mcSearch_initSearchPath (DynamicStrings_String path) + { + if (InitialPath != NULL) +- InitialPath = DynamicStrings_KillString (InitialPath); ++ { ++ InitialPath = DynamicStrings_KillString (InitialPath); ++ } + InitialPath = path; + } + +@@ -227,7 +229,9 @@ void mcSearch_prependSearchPath (DynamicStrings_String path) + UserPath = DynamicStrings_Dup (path); + } + else +- UserPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (UserPath, ':'), path); ++ { ++ UserPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (UserPath, ':'), path); ++ } + DSdbExit (UserPath); + } + +@@ -254,17 +258,27 @@ unsigned int mcSearch_findSourceFile (DynamicStrings_String FileName, DynamicStr + DynamicStrings_String newpath; + + if (DynamicStrings_EqualArray (UserPath, (char *) "", 0)) +- if (DynamicStrings_EqualArray (InitialPath, (char *) "", 0)) +- completeSearchPath = DynamicStrings_InitString ((char *) ".", 1); +- else +- completeSearchPath = DynamicStrings_Dup (InitialPath); ++ { ++ if (DynamicStrings_EqualArray (InitialPath, (char *) "", 0)) ++ { ++ completeSearchPath = DynamicStrings_InitString ((char *) ".", 1); ++ } ++ else ++ { ++ completeSearchPath = DynamicStrings_Dup (InitialPath); ++ } ++ } + else +- completeSearchPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (UserPath), ':'), InitialPath); ++ { ++ completeSearchPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (UserPath), ':'), InitialPath); ++ } + start = 0; + end = DynamicStrings_Index (completeSearchPath, ':', (unsigned int ) (start)); + do { + if (end == -1) +- end = 0; ++ { ++ end = 0; ++ } + newpath = DynamicStrings_Slice (completeSearchPath, start, end); + if (DynamicStrings_EqualArray (newpath, (char *) ".", 1)) + { +@@ -272,7 +286,9 @@ unsigned int mcSearch_findSourceFile (DynamicStrings_String FileName, DynamicStr + newpath = DynamicStrings_Dup (FileName); + } + else +- newpath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (newpath, Directory), FileName); ++ { ++ newpath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (newpath, Directory), FileName); ++ } + if (SFIO_Exists (newpath)) + { + (*fullPath) = newpath; +@@ -308,7 +324,9 @@ unsigned int mcSearch_findSourceDefFile (DynamicStrings_String stem, DynamicStri + { + f = mcFileName_calculateFileName (stem, Def); + if (mcSearch_findSourceFile (f, fullPath)) +- return TRUE; ++ { ++ return TRUE; ++ } + f = DynamicStrings_KillString (f); + } + /* and try the GNU Modula-2 default extension */ +@@ -332,7 +350,9 @@ unsigned int mcSearch_findSourceModFile (DynamicStrings_String stem, DynamicStri + { + f = mcFileName_calculateFileName (stem, Mod); + if (mcSearch_findSourceFile (f, fullPath)) +- return TRUE; ++ { ++ return TRUE; ++ } + f = DynamicStrings_KillString (f); + } + /* and try the GNU Modula-2 default extension */ +--- a/src/gcc/gm2/mc-boot/GmcStack.c ++++ b/src/gcc/gm2/mc-boot/GmcStack.c +@@ -122,9 +122,13 @@ void mcStack_kill (mcStack_stack *s) + void * mcStack_push (mcStack_stack s, void * a) + { + if (s->count == 0) +- Indexing_PutIndice (s->list, Indexing_LowIndice (s->list), a); ++ { ++ Indexing_PutIndice (s->list, Indexing_LowIndice (s->list), a); ++ } + else +- Indexing_PutIndice (s->list, (Indexing_HighIndice (s->list))+1, a); ++ { ++ Indexing_PutIndice (s->list, (Indexing_HighIndice (s->list))+1, a); ++ } + s->count += 1; + return a; + } +@@ -139,7 +143,9 @@ void * mcStack_pop (mcStack_stack s) + void * a; + + if (s->count == 0) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else + { + s->count -= 1; +@@ -183,9 +189,13 @@ unsigned int mcStack_depth (mcStack_stack s) + void * mcStack_access (mcStack_stack s, unsigned int i) + { + if ((i > s->count) || (i == 0)) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + else +- return Indexing_GetIndice (s->list, i); ++ { ++ return Indexing_GetIndice (s->list, i); ++ } + } + + void _M2_mcStack_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GmcStream.c ++++ b/src/gcc/gm2/mc-boot/GmcStream.c +@@ -229,7 +229,9 @@ void mcStream_setDest (FIO_File f) + FIO_File mcStream_combine (void) + { + if (! seenDest) +- M2RTS_HALT (-1); ++ { ++ M2RTS_HALT (-1); ++ } + Indexing_ForeachIndiceInIndexDo (frag, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) copy}); + removeFiles (); + return destFile; +--- a/src/gcc/gm2/mc-boot/Gmcp1.c ++++ b/src/gcc/gm2/mc-boot/Gmcp1.c +@@ -2391,9 +2391,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops + message = DynamicStrings_KillString (message); + } + else if (n == 1) +- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ { ++ /* avoid dangling else. */ ++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ } + else + { ++ /* avoid dangling else. */ + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message); + message = DynamicStrings_KillString (message); + } +@@ -2789,17 +2793,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + DescribeError (stopset0, stopset1, stopset2); + if (Debugging) +- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ { ++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ } + /* + yes the ORD(currenttoken) looks ugly, but it is *much* safer than + using currenttoken= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- mcLexBuf_getToken (); ++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ mcLexBuf_getToken (); ++ } + if (Debugging) +- mcPrintf_printf0 ((char *) " ***\\n", 6); ++ { ++ mcPrintf_printf0 ((char *) " ***\\n", 6); ++ } + } + + +@@ -2811,8 +2821,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + /* and again (see above re: ORD) + */ +- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- SyntaxError (stopset0, stopset1, stopset2); ++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ SyntaxError (stopset0, stopset1, stopset2); ++ } + } + + +@@ -2830,12 +2842,20 @@ static void WarnMissingToken (mcReserved_toktype t) + s0 = (SetOfStop0) 0; + s1 = (SetOfStop1) 0; + s2 = (SetOfStop2) 0; +- if (((unsigned int) (t)) < 32) +- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); +- else if (((unsigned int) (t)) < 64) +- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ if ( ((unsigned int) (t)) < 32) ++ { ++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); ++ } ++ else if ( ((unsigned int) (t)) < 64) ++ { ++ /* avoid dangling else. */ ++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ } + else +- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ { ++ /* avoid dangling else. */ ++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ } + str = DescribeStop (s0, s1, s2); + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str)); + mcError_errorStringAt (str, mcLexBuf_getTokenNo ()); +@@ -2852,7 +2872,9 @@ static void MissingToken (mcReserved_toktype t) + if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok)) + { + if (Debugging) +- mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ { ++ mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ } + mcLexBuf_insertToken (t); + } + } +@@ -2864,14 +2886,16 @@ static void MissingToken (mcReserved_toktype t) + + static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) + { + WarnMissingToken (t); + mcLexBuf_insertTokenAndRewind (t); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -2881,10 +2905,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S + + static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) +- return TRUE; ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ { ++ return TRUE; ++ } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -2900,11 +2928,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + { + /* and again (see above re: ORD) + */ +- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) +- /* SyntaxCheck would fail since currentoken is not part of the stopset ++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) ++ { ++ /* SyntaxCheck would fail since currentoken is not part of the stopset + we check to see whether any of currenttoken might be a commonly omitted token */ +- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) +- {} /* empty. */ ++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) ++ {} /* empty. */ ++ } + } + + +@@ -2919,10 +2949,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (Pass1) +- PeepToken (stopset0, stopset1, stopset2); ++ { ++ PeepToken (stopset0, stopset1, stopset2); ++ } + } + else +- MissingToken (t); ++ { ++ MissingToken (t); ++ } + SyntaxCheck (stopset0, stopset1, stopset2); + } + +@@ -3008,11 +3042,19 @@ static void registerImport (nameKey_Name ident, unsigned int scoped) + static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_definitiontok) +- DefinitionModule (stopset0, stopset1, stopset2); ++ { ++ DefinitionModule (stopset0, stopset1, stopset2); ++ } + else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) +- ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ } + } + + +@@ -3040,10 +3082,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + curmodule = decl_lookupModule (curident); + decl_enterScope (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3081,10 +3127,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + decl_enterScope (decl_lookupDef (curident)); + decl_enterScope (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3107,11 +3157,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_implementationtok) +- ImplementationModule (stopset0, stopset1, stopset2); ++ { ++ ImplementationModule (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) +- ProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ } + } + + +@@ -3126,11 +3184,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops + static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- Integer (stopset0, stopset1, stopset2); ++ { ++ Integer (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- Real (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Real (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -3185,23 +3251,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -3243,13 +3335,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + ConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ } + } + + +@@ -3264,13 +3363,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -3306,21 +3416,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -3337,26 +3470,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- ConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstFactor (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ } + } + + +@@ -3444,7 +3593,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -3470,18 +3621,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ConstActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -3532,9 +3697,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -3542,7 +3710,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -3592,7 +3763,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- AlignmentExpression (stopset0, stopset1, stopset2); ++ { ++ AlignmentExpression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3623,7 +3796,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- ByteAlignment (stopset0, stopset1, stopset2); ++ { ++ ByteAlignment (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3663,19 +3838,39 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SimpleType (stopset0, stopset1, stopset2); ++ { ++ SimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -3695,14 +3890,25 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + /* avoid dangling else. */ + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- Enumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Enumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -3796,7 +4002,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } +@@ -3925,7 +4133,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FieldList (stopset0, stopset1, stopset2); ++ { ++ FieldList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3950,6 +4160,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + } + else if (mcLexBuf_currenttoken == mcReserved_casetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); +@@ -3968,7 +4179,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ } + } + + +@@ -3983,7 +4197,9 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4096,23 +4312,49 @@ static void SilentConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set + static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -4156,13 +4398,20 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + SilentConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88); ++ } + } + + +@@ -4177,13 +4426,24 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -4219,21 +4479,44 @@ static void SilentConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -4252,26 +4535,42 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- SilentConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + SilentConstFactor (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- SilentConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ } + } + + +@@ -4323,17 +4622,23 @@ static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + SilentConstString (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } +- else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ else ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -4407,7 +4712,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -4425,7 +4732,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- SilentConstructor (stopset0, stopset1, stopset2); ++ { ++ SilentConstructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_identtok) + { + /* avoid dangling else. */ +@@ -4435,16 +4744,27 @@ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- SilentConstructor (stopset0, stopset1, stopset2); ++ { ++ SilentConstructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- SilentActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else +- ErrorArray ((char *) "expecting one of: identifier {", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier {", 30); ++ } + } + + +@@ -4479,7 +4799,9 @@ static void SilentActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -4515,11 +4837,19 @@ static void SilentExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_settok) +- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_packedsettok) +- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ } + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + SimpleType (stopset0, stopset1, stopset2); + } +@@ -4553,7 +4883,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + { + Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalTypeList (stopset0, stopset1, stopset2); ++ { ++ FormalTypeList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4576,12 +4908,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { ++ /* avoid dangling else. */ + ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ } + } + + +@@ -4620,9 +4956,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- Qualident (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Qualident (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier [", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier [", 30); ++ } + } + + +@@ -4658,16 +5000,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + FormalType (stopset0, stopset1, stopset2); + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FormalType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ FormalType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ } + } + + +@@ -4747,7 +5098,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -4770,14 +5123,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_uparrowtok) +- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ } + } + + +@@ -4877,13 +5237,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Term (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Term (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Term (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ } + } + + +@@ -4919,29 +5286,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ string (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Factor (stopset0, stopset1, stopset2); ++ { ++ Factor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ } + } + else +- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ } + } + + +@@ -4966,23 +5354,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0))) + { + /* avoid dangling else. */ + SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + } + else +- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -4997,7 +5398,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5014,7 +5417,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -5045,7 +5450,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Expression (stopset0, stopset1, stopset2); ++ { ++ Expression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5070,31 +5477,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_identtok) +- AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ { ++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_iftok) +- IfStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IfStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_casetok) +- CaseStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ CaseStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_whiletok) +- WhileStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WhileStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_repeattok) +- RepeatStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RepeatStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_looptok) +- LoopStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ LoopStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_fortok) +- ForStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ForStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_withtok) +- WithStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_asmtok) +- AsmStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ AsmStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_exittok) +- ExitStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ExitStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_returntok) +- ReturnStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ReturnStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_retrytok) +- RetryStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RetryStatement (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5135,7 +5580,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expression (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + /* epsilon */ + } + +@@ -5229,15 +5677,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_endtok) +- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_elsetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)))); + StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ } + } + + +@@ -5461,7 +5915,9 @@ static void ProcedureIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Ident (stopset0, stopset1, stopset2); + curproc = decl_lookupSym (curident); + if (curproc == NULL) +- curproc = decl_makeProcedure (curident); ++ { ++ curproc = decl_makeProcedure (curident); ++ } + mcComment_setProcedureComment (mcLexBuf_lastcomment, curident); + decl_putCommentModProcedure (curproc); + } +@@ -5494,9 +5950,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5521,7 +5983,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + decl_enterScope (curproc); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalParameters (stopset0, stopset1, stopset2); ++ { ++ FormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5540,11 +6004,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_builtintok) +- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5565,7 +6037,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefFormalParameters (stopset0, stopset1, stopset2); ++ { ++ DefFormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5583,7 +6057,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_begintok) + { +@@ -5606,7 +6082,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2); + FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -5761,6 +6239,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -5771,6 +6250,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -5781,16 +6261,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ } + } + + +@@ -5806,7 +6291,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } +@@ -5823,7 +6310,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- DefExtendedFP (stopset0, stopset1, stopset2); ++ { ++ DefExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -5835,7 +6324,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -5851,7 +6343,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } +@@ -5868,7 +6362,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- ExtendedFP (stopset0, stopset1, stopset2); ++ { ++ ExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -5880,7 +6376,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -5895,11 +6394,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- NonVarFPSection (stopset0, stopset1, stopset2); ++ { ++ NonVarFPSection (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) +- VarFPSection (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ VarFPSection (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ } + } + + +@@ -5914,11 +6421,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- DefOptArg (stopset0, stopset1, stopset2); ++ { ++ DefOptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -5933,11 +6448,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- OptArg (stopset0, stopset1, stopset2); ++ { ++ OptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6053,13 +6576,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0, stopset1, stopset2); + } +@@ -6101,13 +6630,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + +@@ -6186,11 +6722,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_fromtok) +- FromImport (stopset0, stopset1, stopset2); ++ { ++ FromImport (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_importtok) +- WithoutFromImport (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithoutFromImport (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ } + } + + +@@ -6236,15 +6780,23 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); + curmodule = decl_lookupDef (curident); + if (c) +- decl_putDefForC (curmodule); ++ { ++ decl_putDefForC (curmodule); ++ } + decl_enterScope (curmodule); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -6283,13 +6835,17 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS + } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -6343,13 +6899,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6360,11 +6920,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ } + } + + +@@ -6380,7 +6944,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_volatiletok) +- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); +@@ -6399,7 +6965,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_colontok) +- AsmOperandSpec (stopset0, stopset1, stopset2); ++ { ++ AsmOperandSpec (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6442,7 +7010,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok)) +- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -6479,7 +7049,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- NamedOperand (stopset0, stopset1, stopset2); ++ { ++ NamedOperand (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6512,7 +7084,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +--- a/src/gcc/gm2/mc-boot/Gmcp2.c ++++ b/src/gcc/gm2/mc-boot/Gmcp2.c +@@ -2506,9 +2506,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops + message = DynamicStrings_KillString (message); + } + else if (n == 1) +- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ { ++ /* avoid dangling else. */ ++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ } + else + { ++ /* avoid dangling else. */ + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message); + message = DynamicStrings_KillString (message); + } +@@ -2904,17 +2908,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + DescribeError (stopset0, stopset1, stopset2); + if (Debugging) +- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ { ++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ } + /* + yes the ORD(currenttoken) looks ugly, but it is *much* safer than + using currenttoken= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- mcLexBuf_getToken (); ++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ mcLexBuf_getToken (); ++ } + if (Debugging) +- mcPrintf_printf0 ((char *) " ***\\n", 6); ++ { ++ mcPrintf_printf0 ((char *) " ***\\n", 6); ++ } + } + + +@@ -2926,8 +2936,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + /* and again (see above re: ORD) + */ +- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- SyntaxError (stopset0, stopset1, stopset2); ++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ SyntaxError (stopset0, stopset1, stopset2); ++ } + } + + +@@ -2945,12 +2957,20 @@ static void WarnMissingToken (mcReserved_toktype t) + s0 = (SetOfStop0) 0; + s1 = (SetOfStop1) 0; + s2 = (SetOfStop2) 0; +- if (((unsigned int) (t)) < 32) +- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); +- else if (((unsigned int) (t)) < 64) +- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ if ( ((unsigned int) (t)) < 32) ++ { ++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); ++ } ++ else if ( ((unsigned int) (t)) < 64) ++ { ++ /* avoid dangling else. */ ++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ } + else +- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ { ++ /* avoid dangling else. */ ++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ } + str = DescribeStop (s0, s1, s2); + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str)); + mcError_errorStringAt (str, mcLexBuf_getTokenNo ()); +@@ -2967,7 +2987,9 @@ static void MissingToken (mcReserved_toktype t) + if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok)) + { + if (Debugging) +- mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ { ++ mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ } + mcLexBuf_insertToken (t); + } + } +@@ -2979,14 +3001,16 @@ static void MissingToken (mcReserved_toktype t) + + static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) + { + WarnMissingToken (t); + mcLexBuf_insertTokenAndRewind (t); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -2996,10 +3020,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S + + static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) +- return TRUE; ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ { ++ return TRUE; ++ } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3015,11 +3043,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + { + /* and again (see above re: ORD) + */ +- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) +- /* SyntaxCheck would fail since currentoken is not part of the stopset ++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) ++ { ++ /* SyntaxCheck would fail since currentoken is not part of the stopset + we check to see whether any of currenttoken might be a commonly omitted token */ +- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) +- {} /* empty. */ ++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) ++ {} /* empty. */ ++ } + } + + +@@ -3034,10 +3064,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (Pass1) +- PeepToken (stopset0, stopset1, stopset2); ++ { ++ PeepToken (stopset0, stopset1, stopset2); ++ } + } + else +- MissingToken (t); ++ { ++ MissingToken (t); ++ } + SyntaxCheck (stopset0, stopset1, stopset2); + } + +@@ -3120,11 +3154,19 @@ static void registerImport (nameKey_Name ident, unsigned int scoped) + static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_definitiontok) +- DefinitionModule (stopset0, stopset1, stopset2); ++ { ++ DefinitionModule (stopset0, stopset1, stopset2); ++ } + else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) +- ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ } + } + + +@@ -3154,10 +3196,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + curmodule = decl_lookupModule (curident); + decl_enterScope (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3198,10 +3244,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + decl_enterScope (decl_lookupDef (curident)); + decl_enterScope (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3225,11 +3275,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_implementationtok) +- ImplementationModule (stopset0, stopset1, stopset2); ++ { ++ ImplementationModule (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) +- ProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ } + } + + +@@ -3244,11 +3302,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops + static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- Integer (stopset0, stopset1, stopset2); ++ { ++ Integer (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- Real (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Real (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -3319,23 +3385,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -3377,13 +3469,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + ConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ } + } + + +@@ -3398,13 +3497,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -3440,21 +3550,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -3471,26 +3604,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- ConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstFactor (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ } + } + + +@@ -3578,7 +3727,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -3604,18 +3755,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ConstActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -3666,9 +3831,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -3676,7 +3844,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -3726,7 +3897,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- AlignmentExpression (stopset0, stopset1, stopset2); ++ { ++ AlignmentExpression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3757,7 +3930,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- ByteAlignment (stopset0, stopset1, stopset2); ++ { ++ ByteAlignment (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3793,19 +3968,39 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- DefSimpleType (stopset0, stopset1, stopset2); ++ { ++ DefSimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -3825,14 +4020,25 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + /* avoid dangling else. */ + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- Enumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Enumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -3960,7 +4166,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } +@@ -4089,7 +4297,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FieldList (stopset0, stopset1, stopset2); ++ { ++ FieldList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4114,6 +4324,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + } + else if (mcLexBuf_currenttoken == mcReserved_casetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); +@@ -4132,7 +4343,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ } + } + + +@@ -4147,7 +4361,9 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4260,23 +4476,49 @@ static void SilentConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set + static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -4320,13 +4562,20 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + SilentConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88); ++ } + } + + +@@ -4341,13 +4590,24 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -4383,21 +4643,44 @@ static void SilentConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -4416,26 +4699,42 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- SilentConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + SilentConstFactor (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- SilentConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ } + } + + +@@ -4487,9 +4786,12 @@ static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -4497,7 +4799,10 @@ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stop + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -4571,7 +4876,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -4589,7 +4896,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- SilentConstructor (stopset0, stopset1, stopset2); ++ { ++ SilentConstructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_identtok) + { + /* avoid dangling else. */ +@@ -4599,16 +4908,27 @@ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- SilentConstructor (stopset0, stopset1, stopset2); ++ { ++ SilentConstructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- SilentActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SilentActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else +- ErrorArray ((char *) "expecting one of: identifier {", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier {", 30); ++ } + } + + +@@ -4643,7 +4963,9 @@ static void SilentActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -4679,11 +5001,19 @@ static void SilentExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_settok) +- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_packedsettok) +- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ } + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + SimpleType (stopset0, stopset1, stopset2); + } +@@ -4717,7 +5047,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + { + Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalTypeList (stopset0, stopset1, stopset2); ++ { ++ FormalTypeList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4740,12 +5072,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { ++ /* avoid dangling else. */ + ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ } + } + + +@@ -4784,9 +5120,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- Qualident (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Qualident (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier [", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier [", 30); ++ } + } + + +@@ -4822,16 +5164,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + FormalType (stopset0, stopset1, stopset2); + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FormalType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ FormalType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ } + } + + +@@ -4964,7 +5315,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -4987,14 +5340,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_uparrowtok) +- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ } + } + + +@@ -5094,13 +5454,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Term (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Term (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Term (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ } + } + + +@@ -5136,29 +5503,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ string (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Factor (stopset0, stopset1, stopset2); ++ { ++ Factor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ } + } + else +- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ } + } + + +@@ -5183,23 +5571,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0))) + { + /* avoid dangling else. */ + SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + } + else +- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -5214,7 +5615,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5231,7 +5634,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -5262,7 +5667,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Expression (stopset0, stopset1, stopset2); ++ { ++ Expression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5287,31 +5694,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_identtok) +- AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ { ++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_iftok) +- IfStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IfStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_casetok) +- CaseStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ CaseStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_whiletok) +- WhileStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WhileStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_repeattok) +- RepeatStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RepeatStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_looptok) +- LoopStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ LoopStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_fortok) +- ForStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ForStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_withtok) +- WithStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_asmtok) +- AsmStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ AsmStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_exittok) +- ExitStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ExitStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_returntok) +- ReturnStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ReturnStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_retrytok) +- RetryStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RetryStatement (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5352,7 +5797,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expression (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + /* epsilon */ + } + +@@ -5446,15 +5894,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_endtok) +- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_elsetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)))); + StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ } + } + + +@@ -5678,9 +6132,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5705,7 +6165,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + decl_enterScope (curproc); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalParameters (stopset0, stopset1, stopset2); ++ { ++ FormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5724,11 +6186,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_builtintok) +- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5749,7 +6219,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefFormalParameters (stopset0, stopset1, stopset2); ++ { ++ DefFormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5767,7 +6239,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_begintok) + { +@@ -5790,7 +6264,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2); + FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -5945,6 +6421,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -5955,6 +6432,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -5965,16 +6443,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ } + } + + +@@ -5990,7 +6473,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } +@@ -6007,7 +6492,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- DefExtendedFP (stopset0, stopset1, stopset2); ++ { ++ DefExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6019,7 +6506,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6035,7 +6525,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } +@@ -6052,7 +6544,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- ExtendedFP (stopset0, stopset1, stopset2); ++ { ++ ExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6064,7 +6558,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6079,11 +6576,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- NonVarFPSection (stopset0, stopset1, stopset2); ++ { ++ NonVarFPSection (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) +- VarFPSection (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ VarFPSection (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ } + } + + +@@ -6098,11 +6603,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- DefOptArg (stopset0, stopset1, stopset2); ++ { ++ DefOptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6117,11 +6630,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- OptArg (stopset0, stopset1, stopset2); ++ { ++ OptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6237,13 +6758,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0, stopset1, stopset2); + } +@@ -6285,13 +6812,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + +@@ -6361,11 +6895,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_fromtok) +- FromImport (stopset0, stopset1, stopset2); ++ { ++ FromImport (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_importtok) +- WithoutFromImport (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithoutFromImport (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ } + } + + +@@ -6403,12 +6945,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + curmodule = decl_lookupDef (curident); + decl_enterScope (curmodule); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -6448,11 +6996,15 @@ static void DefQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (! (decl_isDef (typeExp))) +- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ { ++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ } + Ident (stopset0, stopset1, stopset2); + typeExp = decl_lookupInScope (typeExp, curident); + if (typeExp == NULL) +- ErrorArray ((char *) "identifier not found in definition module", 41); ++ { ++ ErrorArray ((char *) "identifier not found in definition module", 41); ++ } + } + } + +@@ -6474,9 +7026,13 @@ static void DefOptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- decl_putType (typeDes, typeExp); ++ { ++ decl_putType (typeDes, typeExp); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -6531,7 +7087,9 @@ static void DefEnumIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + /* while */ + if (typeDes != NULL) +- decl_putType (typeDes, n); ++ { ++ decl_putType (typeDes, n); ++ } + } + + +@@ -6563,13 +7121,24 @@ static void DefEnumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- DefTypeEquiv (stopset0, stopset1, stopset2); ++ { ++ DefTypeEquiv (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefEnumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ DefEnumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -6585,19 +7154,39 @@ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void DefType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- DefSimpleType (stopset0, stopset1, stopset2); ++ { ++ DefSimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -6618,16 +7207,22 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2); + typeDes = decl_lookupSym (curident); + if (mcLexBuf_currenttoken == mcReserved_semicolontok) +- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefType (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -6674,13 +7269,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6691,11 +7290,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ } + } + + +@@ -6711,7 +7314,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_volatiletok) +- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); +@@ -6730,7 +7335,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_colontok) +- AsmOperandSpec (stopset0, stopset1, stopset2); ++ { ++ AsmOperandSpec (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6773,7 +7380,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok)) +- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -6810,7 +7419,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- NamedOperand (stopset0, stopset1, stopset2); ++ { ++ NamedOperand (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6843,7 +7454,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +--- a/src/gcc/gm2/mc-boot/Gmcp3.c ++++ b/src/gcc/gm2/mc-boot/Gmcp3.c +@@ -2264,12 +2264,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current) + mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current))); + s = decl_lookupExported (m, name); + if (s == NULL) +- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ } + else + { + o = decl_import (current, s); + if (s != o) +- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ } + } + } + +@@ -2761,9 +2765,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops + message = DynamicStrings_KillString (message); + } + else if (n == 1) +- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ { ++ /* avoid dangling else. */ ++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ } + else + { ++ /* avoid dangling else. */ + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message); + message = DynamicStrings_KillString (message); + } +@@ -3159,17 +3167,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + DescribeError (stopset0, stopset1, stopset2); + if (Debugging) +- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ { ++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ } + /* + yes the ORD(currenttoken) looks ugly, but it is *much* safer than + using currenttoken= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- mcLexBuf_getToken (); ++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ mcLexBuf_getToken (); ++ } + if (Debugging) +- mcPrintf_printf0 ((char *) " ***\\n", 6); ++ { ++ mcPrintf_printf0 ((char *) " ***\\n", 6); ++ } + } + + +@@ -3181,8 +3195,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + /* and again (see above re: ORD) + */ +- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- SyntaxError (stopset0, stopset1, stopset2); ++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ SyntaxError (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3200,12 +3216,20 @@ static void WarnMissingToken (mcReserved_toktype t) + s0 = (SetOfStop0) 0; + s1 = (SetOfStop1) 0; + s2 = (SetOfStop2) 0; +- if (((unsigned int) (t)) < 32) +- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); +- else if (((unsigned int) (t)) < 64) +- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ if ( ((unsigned int) (t)) < 32) ++ { ++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); ++ } ++ else if ( ((unsigned int) (t)) < 64) ++ { ++ /* avoid dangling else. */ ++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ } + else +- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ { ++ /* avoid dangling else. */ ++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ } + str = DescribeStop (s0, s1, s2); + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str)); + mcError_errorStringAt (str, mcLexBuf_getTokenNo ()); +@@ -3222,7 +3246,9 @@ static void MissingToken (mcReserved_toktype t) + if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok)) + { + if (Debugging) +- mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ { ++ mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ } + mcLexBuf_insertToken (t); + } + } +@@ -3234,14 +3260,16 @@ static void MissingToken (mcReserved_toktype t) + + static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) + { + WarnMissingToken (t); + mcLexBuf_insertTokenAndRewind (t); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3251,10 +3279,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S + + static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) +- return TRUE; ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ { ++ return TRUE; ++ } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3270,11 +3302,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + { + /* and again (see above re: ORD) + */ +- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) +- /* SyntaxCheck would fail since currentoken is not part of the stopset ++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) ++ { ++ /* SyntaxCheck would fail since currentoken is not part of the stopset + we check to see whether any of currenttoken might be a commonly omitted token */ +- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) +- {} /* empty. */ ++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) ++ {} /* empty. */ ++ } + } + + +@@ -3289,10 +3323,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (Pass1) +- PeepToken (stopset0, stopset1, stopset2); ++ { ++ PeepToken (stopset0, stopset1, stopset2); ++ } + } + else +- MissingToken (t); ++ { ++ MissingToken (t); ++ } + SyntaxCheck (stopset0, stopset1, stopset2); + } + +@@ -3350,11 +3388,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_definitiontok) +- DefinitionModule (stopset0, stopset1, stopset2); ++ { ++ DefinitionModule (stopset0, stopset1, stopset2); ++ } + else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) +- ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ } + } + + +@@ -3387,10 +3433,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + decl_enterScope (curmodule); + decl_resetEnumPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3434,10 +3484,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + decl_enterScope (curmodule); + decl_resetEnumPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3461,11 +3515,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_implementationtok) +- ImplementationModule (stopset0, stopset1, stopset2); ++ { ++ ImplementationModule (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) +- ProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ } + } + + +@@ -3480,11 +3542,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops + static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- Integer (stopset0, stopset1, stopset2); ++ { ++ Integer (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- Real (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Real (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -3605,23 +3675,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -3663,13 +3759,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + ConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ } + } + + +@@ -3684,13 +3787,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -3726,21 +3840,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -3757,26 +3894,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- ConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstExpressionNop (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstFactor (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ } + } + + +@@ -3864,7 +4017,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -3890,18 +4045,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ConstActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -3917,7 +4086,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -3975,9 +4146,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -3985,7 +4159,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -4016,7 +4193,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- AlignmentExpression (stopset0, stopset1, stopset2); ++ { ++ AlignmentExpression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4047,7 +4226,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- ByteAlignment (stopset0, stopset1, stopset2); ++ { ++ ByteAlignment (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4218,7 +4399,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + n = push (decl_makeRecord ()); + n = push ((decl_node) NULL); /* no varient */ + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + mcDebug_assert ((pop ()) == NULL); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); +@@ -4348,7 +4531,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FieldList (stopset0, stopset1, stopset2); ++ { ++ FieldList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4455,6 +4640,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + } + else if (mcLexBuf_currenttoken == mcReserved_casetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + /* addRecordToList */ + d = depth (); +@@ -4493,7 +4679,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + mcDebug_assert (d == (depth ())); + } + else +- ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ } + } + + +@@ -4510,9 +4699,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else +- curident = nameKey_NulName; ++ { ++ curident = nameKey_NulName; ++ } + } + + +@@ -4573,7 +4766,9 @@ static void CaseTag (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + mcDebug_assert (decl_isVarient (push (pop ()))); + } + else +- q = NULL; ++ { ++ q = NULL; ++ } + decl_buildVarientSelector (r, w, tagident, q); + } + +@@ -4723,11 +4918,19 @@ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + decl_node n; + + if (mcLexBuf_currenttoken == mcReserved_settok) +- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_packedsettok) +- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ } + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + SimpleType (stopset0, stopset1, stopset2); + n = push (decl_makeSet (pop ())); +@@ -4772,7 +4975,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + curproc = push (decl_makeProcType ()); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalTypeList (stopset0, stopset1, stopset2); ++ { ++ FormalTypeList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4795,12 +5000,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { ++ /* avoid dangling else. */ + ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ } + } + + +@@ -4848,11 +5057,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) + { ++ /* avoid dangling else. */ + PushQualident (stopset0, stopset1, stopset2); + decl_putReturnType (curproc, pop ()); + } + else +- ErrorArray ((char *) "expecting one of: identifier [", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier [", 30); ++ } + } + + +@@ -4909,17 +5122,22 @@ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + FormalType (stopset0, stopset1, stopset2); + n = push (decl_makeVarParameter ((decl_node) NULL, pop (), curproc)); + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok)) + { ++ /* avoid dangling else. */ + FormalType (stopset0, stopset1, stopset2); + n = push (decl_makeNonVarParameter ((decl_node) NULL, pop (), curproc)); + } + else +- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ } + } + + +@@ -5030,7 +5248,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5053,14 +5273,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_uparrowtok) +- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ } + } + + +@@ -5160,13 +5387,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Term (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Term (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Term (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ } + } + + +@@ -5202,29 +5436,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ string (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Factor (stopset0, stopset1, stopset2); ++ { ++ Factor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ } + } + else +- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ } + } + + +@@ -5249,23 +5504,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0))) + { + /* avoid dangling else. */ + SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + } + else +- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -5280,7 +5548,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5297,7 +5567,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -5328,7 +5600,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Expression (stopset0, stopset1, stopset2); ++ { ++ Expression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5353,31 +5627,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_identtok) +- AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ { ++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_iftok) +- IfStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IfStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_casetok) +- CaseStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ CaseStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_whiletok) +- WhileStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WhileStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_repeattok) +- RepeatStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RepeatStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_looptok) +- LoopStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ LoopStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_fortok) +- ForStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ForStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_withtok) +- WithStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_asmtok) +- AsmStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ AsmStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_exittok) +- ExitStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ExitStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_returntok) +- ReturnStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ReturnStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_retrytok) +- RetryStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RetryStatement (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5418,7 +5730,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expression (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + /* epsilon */ + } + +@@ -5512,15 +5827,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_endtok) +- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_elsetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)))); + StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ } + } + + +@@ -5767,9 +6088,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5791,7 +6118,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalParameters (stopset0, stopset1, stopset2); ++ { ++ FormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5810,11 +6139,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_builtintok) +- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5835,7 +6172,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefFormalParameters (stopset0, stopset1, stopset2); ++ { ++ DefFormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5851,7 +6190,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_begintok) + { +@@ -5873,7 +6214,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2); + FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -6028,13 +6371,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6045,16 +6392,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ } + } + + +@@ -6075,7 +6427,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -6093,7 +6447,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- DefExtendedFP (stopset0, stopset1, stopset2); ++ { ++ DefExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6105,7 +6461,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6126,7 +6485,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -6144,7 +6505,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- ExtendedFP (stopset0, stopset1, stopset2); ++ { ++ ExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6156,7 +6519,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6171,11 +6537,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- NonVarFPSection (stopset0, stopset1, stopset2); ++ { ++ NonVarFPSection (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) +- VarFPSection (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ VarFPSection (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ } + } + + +@@ -6192,14 +6566,20 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- DefOptArg (stopset0, stopset1, stopset2); ++ { ++ DefOptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); + decl_addParameter (curproc, decl_makeVarargs ()); + } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6214,11 +6594,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- OptArg (stopset0, stopset1, stopset2); ++ { ++ OptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6419,13 +6807,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0, stopset1, stopset2); + } +@@ -6467,13 +6861,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + +@@ -6572,11 +6973,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_fromtok) +- FromImport (stopset0, stopset1, stopset2); ++ { ++ FromImport (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_importtok) +- WithoutFromImport (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithoutFromImport (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ } + } + + +@@ -6617,12 +7026,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + decl_enterScope (curmodule); + decl_resetEnumPos (curmodule); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -6664,16 +7079,22 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + typeExp = push (decl_lookupSym (curident)); + if (typeExp == NULL) +- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ } + if (mcLexBuf_currenttoken == mcReserved_periodtok) + { + Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (! (decl_isDef (typeExp))) +- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ { ++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ } + Ident (stopset0, stopset1, stopset2); + typeExp = replace (decl_lookupInScope (typeExp, curident)); + if (typeExp == NULL) +- ErrorArray ((char *) "identifier not found in definition module", 41); ++ { ++ ErrorArray ((char *) "identifier not found in definition module", 41); ++ } + } + } + +@@ -6797,13 +7218,24 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + + d = depth (); + if (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeEquiv (stopset0, stopset1, stopset2); ++ { ++ TypeEquiv (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- Enumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Enumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + mcDebug_assert (d == ((depth ())-1)); + } + +@@ -6820,19 +7252,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SimpleType (stopset0, stopset1, stopset2); ++ { ++ SimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -6855,9 +7307,12 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2); + typeDes = decl_lookupSym (curident); + if (mcLexBuf_currenttoken == mcReserved_semicolontok) +- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + decl_putType (typeDes, pop ()); +@@ -6865,7 +7320,10 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -6896,13 +7354,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6913,11 +7375,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ } + } + + +@@ -6933,7 +7399,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_volatiletok) +- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); +@@ -6952,7 +7420,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_colontok) +- AsmOperandSpec (stopset0, stopset1, stopset2); ++ { ++ AsmOperandSpec (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6995,7 +7465,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok)) +- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -7032,7 +7504,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- NamedOperand (stopset0, stopset1, stopset2); ++ { ++ NamedOperand (stopset0, stopset1, stopset2); ++ } + } + + +@@ -7065,7 +7539,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +--- a/src/gcc/gm2/mc-boot/Gmcp4.c ++++ b/src/gcc/gm2/mc-boot/Gmcp4.c +@@ -2225,12 +2225,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current) + mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current))); + s = decl_lookupExported (m, name); + if (s == NULL) +- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ } + else + { + o = decl_import (current, s); + if (s != o) +- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ } + } + } + +@@ -2722,9 +2726,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops + message = DynamicStrings_KillString (message); + } + else if (n == 1) +- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ { ++ /* avoid dangling else. */ ++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ } + else + { ++ /* avoid dangling else. */ + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message); + message = DynamicStrings_KillString (message); + } +@@ -3120,17 +3128,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + DescribeError (stopset0, stopset1, stopset2); + if (Debugging) +- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ { ++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ } + /* + yes the ORD(currenttoken) looks ugly, but it is *much* safer than + using currenttoken= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- mcLexBuf_getToken (); ++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ mcLexBuf_getToken (); ++ } + if (Debugging) +- mcPrintf_printf0 ((char *) " ***\\n", 6); ++ { ++ mcPrintf_printf0 ((char *) " ***\\n", 6); ++ } + } + + +@@ -3142,8 +3156,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + /* and again (see above re: ORD) + */ +- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- SyntaxError (stopset0, stopset1, stopset2); ++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ SyntaxError (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3161,12 +3177,20 @@ static void WarnMissingToken (mcReserved_toktype t) + s0 = (SetOfStop0) 0; + s1 = (SetOfStop1) 0; + s2 = (SetOfStop2) 0; +- if (((unsigned int) (t)) < 32) +- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); +- else if (((unsigned int) (t)) < 64) +- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ if ( ((unsigned int) (t)) < 32) ++ { ++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); ++ } ++ else if ( ((unsigned int) (t)) < 64) ++ { ++ /* avoid dangling else. */ ++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ } + else +- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ { ++ /* avoid dangling else. */ ++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ } + str = DescribeStop (s0, s1, s2); + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str)); + mcError_errorStringAt (str, mcLexBuf_getTokenNo ()); +@@ -3183,7 +3207,9 @@ static void MissingToken (mcReserved_toktype t) + if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok)) + { + if (Debugging) +- mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ { ++ mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ } + mcLexBuf_insertToken (t); + } + } +@@ -3195,14 +3221,16 @@ static void MissingToken (mcReserved_toktype t) + + static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) + { + WarnMissingToken (t); + mcLexBuf_insertTokenAndRewind (t); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3212,10 +3240,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S + + static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) +- return TRUE; ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ { ++ return TRUE; ++ } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3231,11 +3263,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + { + /* and again (see above re: ORD) + */ +- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) +- /* SyntaxCheck would fail since currentoken is not part of the stopset ++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) ++ { ++ /* SyntaxCheck would fail since currentoken is not part of the stopset + we check to see whether any of currenttoken might be a commonly omitted token */ +- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) +- {} /* empty. */ ++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) ++ {} /* empty. */ ++ } + } + + +@@ -3250,10 +3284,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (Pass1) +- PeepToken (stopset0, stopset1, stopset2); ++ { ++ PeepToken (stopset0, stopset1, stopset2); ++ } + } + else +- MissingToken (t); ++ { ++ MissingToken (t); ++ } + SyntaxCheck (stopset0, stopset1, stopset2); + } + +@@ -3317,11 +3355,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_definitiontok) +- DefinitionModule (stopset0, stopset1, stopset2); ++ { ++ DefinitionModule (stopset0, stopset1, stopset2); ++ } + else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) +- ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ } + } + + +@@ -3352,10 +3398,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + decl_enterScope (curmodule); + decl_resetConstExpPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3396,10 +3446,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + decl_enterScope (curmodule); + decl_resetConstExpPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3422,11 +3476,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_implementationtok) +- ImplementationModule (stopset0, stopset1, stopset2); ++ { ++ ImplementationModule (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) +- ProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ } + } + + +@@ -3441,11 +3503,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops + static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- Integer (stopset0, stopset1, stopset2); ++ { ++ Integer (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- Real (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Real (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -3565,23 +3635,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -3648,14 +3744,21 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ConstTerm (stopset0, stopset1, stopset2); + n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_minustok, pop ())); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { string identifier - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { string identifier - +", 88); ++ } + } + + +@@ -3670,13 +3773,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -3729,21 +3843,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -3782,23 +3919,41 @@ static void NotConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- ConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) +- NotConstFactor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ NotConstFactor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84); ++ } + } + + +@@ -3924,7 +4079,9 @@ static void ConstConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + n = push (decl_makeSetValue ()); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -3992,6 +4149,7 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + ConstActualParameters (stopset0, stopset1, stopset2); + p = pop (); + q = pop (); +@@ -3999,7 +4157,10 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + mcDebug_assert ((d+1) == (depth ())); + } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -4033,7 +4194,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + n = push (decl_makeExpList ()); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + mcDebug_assert (decl_isExpList (peep ())); + } +@@ -4129,6 +4292,7 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -4136,7 +4300,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -4167,7 +4334,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- AlignmentExpression (stopset0, stopset1, stopset2); ++ { ++ AlignmentExpression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4198,7 +4367,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- ByteAlignment (stopset0, stopset1, stopset2); ++ { ++ ByteAlignment (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4312,7 +4483,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } +@@ -4441,7 +4614,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FieldList (stopset0, stopset1, stopset2); ++ { ++ FieldList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4466,6 +4641,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + } + else if (mcLexBuf_currenttoken == mcReserved_casetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -4484,7 +4660,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ } + } + + +@@ -4501,9 +4680,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else +- curident = nameKey_NulName; ++ { ++ curident = nameKey_NulName; ++ } + } + + +@@ -4595,11 +4778,19 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_settok) +- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_packedsettok) +- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ } + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + SimpleType (stopset0, stopset1, stopset2); + } +@@ -4633,7 +4824,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + { + Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalTypeList (stopset0, stopset1, stopset2); ++ { ++ FormalTypeList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4656,12 +4849,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { ++ /* avoid dangling else. */ + ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ } + } + + +@@ -4700,9 +4897,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- Qualident (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Qualident (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier [", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier [", 30); ++ } + } + + +@@ -4738,16 +4941,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + FormalType (stopset0, stopset1, stopset2); + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FormalType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ FormalType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ } + } + + +@@ -4827,7 +5039,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -4850,14 +5064,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_uparrowtok) +- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ } + } + + +@@ -4957,13 +5178,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Term (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Term (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Term (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74); ++ } + } + + +@@ -4999,29 +5227,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ string (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Factor (stopset0, stopset1, stopset2); ++ { ++ Factor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ } + } + else +- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70); ++ } + } + + +@@ -5101,7 +5350,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -5127,23 +5378,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ Constructor (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0))) + { + /* avoid dangling else. */ + SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + } + else +- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -5158,7 +5422,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5175,7 +5441,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -5206,7 +5474,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Expression (stopset0, stopset1, stopset2); ++ { ++ Expression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5231,31 +5501,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_identtok) +- AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ { ++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_iftok) +- IfStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IfStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_casetok) +- CaseStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ CaseStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_whiletok) +- WhileStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WhileStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_repeattok) +- RepeatStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RepeatStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_looptok) +- LoopStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ LoopStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_fortok) +- ForStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ForStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_withtok) +- WithStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_asmtok) +- AsmStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ AsmStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_exittok) +- ExitStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ExitStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_returntok) +- ReturnStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ReturnStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_retrytok) +- RetryStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RetryStatement (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5296,7 +5604,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expression (stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ActualParameters (stopset0, stopset1, stopset2); ++ } + /* epsilon */ + } + +@@ -5390,15 +5701,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_endtok) +- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_elsetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)))); + StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ } + } + + +@@ -5645,9 +5962,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5669,7 +5992,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalParameters (stopset0, stopset1, stopset2); ++ { ++ FormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5688,11 +6013,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_builtintok) +- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -5713,7 +6046,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefFormalParameters (stopset0, stopset1, stopset2); ++ { ++ DefFormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -5729,7 +6064,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_begintok) + { +@@ -5751,7 +6088,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2); + FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -5906,13 +6245,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -5923,16 +6266,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ } + } + + +@@ -5953,7 +6301,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -5971,7 +6321,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- DefExtendedFP (stopset0, stopset1, stopset2); ++ { ++ DefExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -5983,7 +6335,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6004,7 +6359,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -6022,7 +6379,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- ExtendedFP (stopset0, stopset1, stopset2); ++ { ++ ExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6034,7 +6393,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6049,11 +6411,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- NonVarFPSection (stopset0, stopset1, stopset2); ++ { ++ NonVarFPSection (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) +- VarFPSection (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ VarFPSection (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ } + } + + +@@ -6068,11 +6438,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- DefOptArg (stopset0, stopset1, stopset2); ++ { ++ DefOptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6087,11 +6465,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- OptArg (stopset0, stopset1, stopset2); ++ { ++ OptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -6207,13 +6593,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0, stopset1, stopset2); + } +@@ -6255,13 +6647,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + +@@ -6351,11 +6750,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_fromtok) +- FromImport (stopset0, stopset1, stopset2); ++ { ++ FromImport (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_importtok) +- WithoutFromImport (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithoutFromImport (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ } + } + + +@@ -6394,12 +6801,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + decl_enterScope (curmodule); + decl_resetConstExpPos (curmodule); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -6440,16 +6853,22 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + typeExp = push (decl_lookupSym (curident)); + if (typeExp == NULL) +- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ } + if (mcLexBuf_currenttoken == mcReserved_periodtok) + { + Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (! (decl_isDef (typeExp))) +- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ { ++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ } + Ident (stopset0, stopset1, stopset2); + typeExp = replace (decl_lookupInScope (typeExp, curident)); + if (typeExp == NULL) +- ErrorArray ((char *) "identifier not found in definition module", 41); ++ { ++ ErrorArray ((char *) "identifier not found in definition module", 41); ++ } + } + } + +@@ -6465,7 +6884,9 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6531,13 +6952,24 @@ static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeEquiv (stopset0, stopset1, stopset2); ++ { ++ TypeEquiv (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- Enumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Enumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -6553,19 +6985,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SimpleType (stopset0, stopset1, stopset2); ++ { ++ SimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -6583,16 +7035,22 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_semicolontok) +- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -6627,11 +7085,15 @@ static void DefQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (! (decl_isDef (typeExp))) +- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ { ++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65); ++ } + Ident (stopset0, stopset1, stopset2); + typeExp = decl_lookupInScope (typeExp, curident); + if (typeExp == NULL) +- ErrorArray ((char *) "identifier not found in definition module", 41); ++ { ++ ErrorArray ((char *) "identifier not found in definition module", 41); ++ } + } + } + +@@ -6699,13 +7161,24 @@ static void DefEnumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- DefTypeEquiv (stopset0, stopset1, stopset2); ++ { ++ DefTypeEquiv (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefEnumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ DefEnumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -6721,19 +7194,39 @@ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void DefType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- DefSimpleType (stopset0, stopset1, stopset2); ++ { ++ DefSimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -6752,16 +7245,22 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS + { + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_semicolontok) +- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefType (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -6808,13 +7307,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6825,11 +7328,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ } + } + + +@@ -6845,7 +7352,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + { + Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_volatiletok) +- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); +@@ -6864,7 +7373,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_colontok) +- AsmOperandSpec (stopset0, stopset1, stopset2); ++ { ++ AsmOperandSpec (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6907,7 +7418,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok)) +- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -6944,7 +7457,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- NamedOperand (stopset0, stopset1, stopset2); ++ { ++ NamedOperand (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6977,7 +7492,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +--- a/src/gcc/gm2/mc-boot/Gmcp5.c ++++ b/src/gcc/gm2/mc-boot/Gmcp5.c +@@ -2387,18 +2387,34 @@ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void followNode (decl_node n) + { + if (decl_isVar (n)) +- mcPrintf_printf0 ((char *) "variable: ", 10); ++ { ++ mcPrintf_printf0 ((char *) "variable: ", 10); ++ } + else if (decl_isParameter (n)) +- mcPrintf_printf0 ((char *) "parameter: ", 11); ++ { ++ /* avoid dangling else. */ ++ mcPrintf_printf0 ((char *) "parameter: ", 11); ++ } + n = decl_skipType (decl_getType (n)); + if (decl_isArray (n)) +- mcPrintf_printf0 ((char *) "array\\n", 7); ++ { ++ mcPrintf_printf0 ((char *) "array\\n", 7); ++ } + else if (decl_isPointer (n)) +- mcPrintf_printf0 ((char *) "pointer\\n", 9); ++ { ++ /* avoid dangling else. */ ++ mcPrintf_printf0 ((char *) "pointer\\n", 9); ++ } + else if (decl_isRecord (n)) +- mcPrintf_printf0 ((char *) "record\\n", 8); ++ { ++ /* avoid dangling else. */ ++ mcPrintf_printf0 ((char *) "record\\n", 8); ++ } + else +- mcPrintf_printf0 ((char *) "other\\n", 7); ++ { ++ /* avoid dangling else. */ ++ mcPrintf_printf0 ((char *) "other\\n", 7); ++ } + } + + +@@ -2470,7 +2486,9 @@ static unsigned int isQualident (decl_node n) + decl_node type; + + if (decl_isDef (n)) +- return TRUE; ++ { ++ return TRUE; ++ } + else + { + type = decl_skipType (decl_getType (n)); +@@ -2676,12 +2694,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current) + mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current))); + s = decl_lookupExported (m, name); + if (s == NULL) +- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1)); ++ } + else + { + o = decl_import (current, s); + if (s != o) +- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1)); ++ } + } + } + +@@ -3173,9 +3195,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops + message = DynamicStrings_KillString (message); + } + else if (n == 1) +- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ { ++ /* avoid dangling else. */ ++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9))); ++ } + else + { ++ /* avoid dangling else. */ + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message); + message = DynamicStrings_KillString (message); + } +@@ -3571,17 +3597,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + DescribeError (stopset0, stopset1, stopset2); + if (Debugging) +- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ { ++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21); ++ } + /* + yes the ORD(currenttoken) looks ugly, but it is *much* safer than + using currenttoken= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- mcLexBuf_getToken (); ++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ mcLexBuf_getToken (); ++ } + if (Debugging) +- mcPrintf_printf0 ((char *) " ***\\n", 6); ++ { ++ mcPrintf_printf0 ((char *) " ***\\n", 6); ++ } + } + + +@@ -3593,8 +3625,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + /* and again (see above re: ORD) + */ +- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) +- SyntaxError (stopset0, stopset1, stopset2); ++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) ++ { ++ SyntaxError (stopset0, stopset1, stopset2); ++ } + } + + +@@ -3612,12 +3646,20 @@ static void WarnMissingToken (mcReserved_toktype t) + s0 = (SetOfStop0) 0; + s1 = (SetOfStop1) 0; + s2 = (SetOfStop2) 0; +- if (((unsigned int) (t)) < 32) +- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); +- else if (((unsigned int) (t)) < 64) +- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ if ( ((unsigned int) (t)) < 32) ++ { ++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok))); ++ } ++ else if ( ((unsigned int) (t)) < 64) ++ { ++ /* avoid dangling else. */ ++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok))); ++ } + else +- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ { ++ /* avoid dangling else. */ ++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok))); ++ } + str = DescribeStop (s0, s1, s2); + str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str)); + mcError_errorStringAt (str, mcLexBuf_getTokenNo ()); +@@ -3634,7 +3676,9 @@ static void MissingToken (mcReserved_toktype t) + if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok)) + { + if (Debugging) +- mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ { ++ mcPrintf_printf0 ((char *) "inserting token\\n", 17); ++ } + mcLexBuf_insertToken (t); + } + } +@@ -3646,14 +3690,16 @@ static void MissingToken (mcReserved_toktype t) + + static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) + { + WarnMissingToken (t); + mcLexBuf_insertTokenAndRewind (t); + return TRUE; + } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3663,10 +3709,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S + + static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { +- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) +- return TRUE; ++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0)))) ++ { ++ return TRUE; ++ } + else +- return FALSE; ++ { ++ return FALSE; ++ } + } + + +@@ -3682,11 +3732,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + { + /* and again (see above re: ORD) + */ +- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) +- /* SyntaxCheck would fail since currentoken is not part of the stopset ++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2)))) ++ { ++ /* SyntaxCheck would fail since currentoken is not part of the stopset + we check to see whether any of currenttoken might be a commonly omitted token */ +- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) +- {} /* empty. */ ++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2))) ++ {} /* empty. */ ++ } + } + + +@@ -3701,10 +3753,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse + /* avoid dangling else. */ + mcLexBuf_getToken (); + if (Pass1) +- PeepToken (stopset0, stopset1, stopset2); ++ { ++ PeepToken (stopset0, stopset1, stopset2); ++ } + } + else +- MissingToken (t); ++ { ++ MissingToken (t); ++ } + SyntaxCheck (stopset0, stopset1, stopset2); + } + +@@ -3768,11 +3824,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_definitiontok) +- DefinitionModule (stopset0, stopset1, stopset2); ++ { ++ DefinitionModule (stopset0, stopset1, stopset2); ++ } + else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) +- ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ImplementationOrProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50); ++ } + } + + +@@ -3806,10 +3870,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + decl_enterScope (curmodule); + decl_resetConstExpPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3853,10 +3921,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + decl_enterScope (curmodule); + decl_resetConstExpPos (curmodule); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -3879,11 +3951,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO + static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_implementationtok) +- ImplementationModule (stopset0, stopset1, stopset2); ++ { ++ ImplementationModule (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) +- ProgramModule (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProgramModule (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39); ++ } + } + + +@@ -3940,11 +4020,19 @@ static void ConstReal (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void ConstNumber (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- ConstInteger (stopset0, stopset1, stopset2); ++ { ++ ConstInteger (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- ConstReal (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstReal (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -3959,11 +4047,19 @@ static void ConstNumber (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_integertok) +- Integer (stopset0, stopset1, stopset2); ++ { ++ Integer (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_realtok) +- Real (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Real (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: real number integer number", 44); ++ } + } + + +@@ -4067,23 +4163,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_equaltok) +- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_hashtok) +- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok) +- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) +- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lessequaltok) +- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greatertok) +- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok) +- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_intok) +- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37); ++ } + } + + +@@ -4125,13 +4247,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + ConstTerm (stopset0, stopset1, stopset2); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstTerm (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstTerm (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88); ++ } + } + + +@@ -4146,13 +4275,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_plustok) +- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_minustok) +- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ortok) +- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: OR - +", 24); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: OR - +", 24); ++ } + } + + +@@ -4188,21 +4328,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_timestok) +- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_dividetok) +- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_divtok) +- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_modtok) +- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_remtok) +- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_andtok) +- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_ambersandtok) +- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39); ++ } + } + + +@@ -4241,23 +4404,41 @@ static void NotConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- ConstNumber (stopset0, stopset1, stopset2); ++ { ++ ConstNumber (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- ConstString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)))); + ConstExpressionNop (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) +- NotConstFactor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ NotConstFactor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) +- ConstAttribute (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstAttribute (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84); ++ } + } + + +@@ -4345,7 +4526,9 @@ static void ConstConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + { + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -4371,18 +4554,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- ConstConstructor (stopset0, stopset1, stopset2); ++ { ++ ConstConstructor (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- ConstActualParameters (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstActualParameters (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ( {", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( {", 21); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- ConstConstructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ConstConstructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -4398,7 +4595,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set + { + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0)))) +- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + +@@ -4456,9 +4655,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lesstok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); +@@ -4466,7 +4668,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, + Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: < identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: < identifier", 30); ++ } + } + + +@@ -4497,7 +4702,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- AlignmentExpression (stopset0, stopset1, stopset2); ++ { ++ AlignmentExpression (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4528,7 +4735,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- ByteAlignment (stopset0, stopset1, stopset2); ++ { ++ ByteAlignment (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4607,7 +4816,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_ldirectivetok) +- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } +@@ -4736,7 +4947,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FieldList (stopset0, stopset1, stopset2); ++ { ++ FieldList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4761,6 +4974,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + } + else if (mcLexBuf_currenttoken == mcReserved_casetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)))); +@@ -4779,7 +4993,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: CASE identifier", 33); ++ } + } + + +@@ -4796,9 +5013,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- Ident (stopset0, stopset1, stopset2); ++ { ++ Ident (stopset0, stopset1, stopset2); ++ } + else +- curident = nameKey_NulName; ++ { ++ curident = nameKey_NulName; ++ } + } + + +@@ -4890,11 +5111,19 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_settok) +- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_packedsettok) +- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31); ++ } + Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + SimpleType (stopset0, stopset1, stopset2); + } +@@ -4928,7 +5157,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + { + Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalTypeList (stopset0, stopset1, stopset2); ++ { ++ FormalTypeList (stopset0, stopset1, stopset2); ++ } + } + + +@@ -4951,12 +5182,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { ++ /* avoid dangling else. */ + ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + FormalReturn (stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44); ++ } + } + + +@@ -4995,9 +5230,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- Qualident (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Qualident (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier [", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier [", 30); ++ } + } + + +@@ -5033,16 +5274,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + FormalType (stopset0, stopset1, stopset2); + } + else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- FormalType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ FormalType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42); ++ } + } + + +@@ -5115,7 +5365,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + PushQualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5170,27 +5422,44 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + { + field = decl_lookupInScope (type, curident); + if (field == NULL) +- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ } + else +- n = replace (decl_makeComponentRef (n, field)); ++ { ++ n = replace (decl_makeComponentRef (n, field)); ++ } + } + else +- mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ } + } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (decl_isArray (type)) +- n = replace (decl_makeArrayRef (n, pop ())); ++ { ++ n = replace (decl_makeArrayRef (n, pop ())); ++ } + else +- mcMetaError_metaError1 ((char *) "attempting to access an array but the expression is not an array but a {%1d}", 76, (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "attempting to access an array but the expression is not an array but a {%1d}", 76, (unsigned char *) &type, (sizeof (type)-1)); ++ } + Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_uparrowtok) +- SubPointer (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubPointer (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ^ [ .", 23); ++ } + } + + +@@ -5254,21 +5523,35 @@ static void SubPointer (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + { + field = decl_lookupInScope (type, curident); + if (field == NULL) +- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ } + else +- n = replace (decl_makePointerRef (n, field)); ++ { ++ n = replace (decl_makePointerRef (n, field)); ++ } + } + else +- mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1)); ++ } + } + else +- mcMetaError_metaError2 ((char *) "trying to dereference {%1k} which was not declared as a pointer but a {%2tad}", 77, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &n, (sizeof (n)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "trying to dereference {%1k} which was not declared as a pointer but a {%2tad}", 77, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &n, (sizeof (n)-1)); ++ } + } + else +- if (decl_isPointer (type)) +- n = replace (decl_makeDeRef (n)); +- else +- mcMetaError_metaError1 ((char *) "attempting to dereference a pointer but the expression is not a pointer but a {%1d}", 83, (unsigned char *) &type, (sizeof (type)-1)); ++ { ++ if (decl_isPointer (type)) ++ { ++ n = replace (decl_makeDeRef (n)); ++ } ++ else ++ { ++ mcMetaError_metaError1 ((char *) "attempting to dereference a pointer but the expression is not a pointer but a {%1d}", 83, (unsigned char *) &type, (sizeof (type)-1)); ++ } ++ } + } + + +@@ -5452,14 +5735,21 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_minustok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Term (stopset0, stopset1, stopset2); + n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_minustok, pop ())); + } + else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- Term (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Term (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number { identifier - +", 74); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number { identifier - +", 74); ++ } + } + + +@@ -5539,19 +5829,29 @@ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + decl_node n; + + if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0))) +- Number (stopset0, stopset1, stopset2); ++ { ++ Number (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_stringtok) +- PushString (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PushString (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_nottok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) + { +@@ -5560,14 +5860,21 @@ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_attributetok) + { ++ /* avoid dangling else. */ + ConstAttribute (stopset0, stopset1, stopset2); + n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_nottok, pop ())); + } + else +- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84); ++ } + } + else +- ErrorArray ((char *) "expecting one of: NOT ( { identifier string integer number real number", 70); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: NOT ( { identifier string integer number real number", 70); ++ } + } + + +@@ -5672,7 +5979,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + n = push (decl_makeSetValue ()); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2); + } + +@@ -5735,14 +6044,23 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + } + } + else +- ErrorArray ((char *) "expecting one of: ( [ . ^ {", 27); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ( [ . ^ {", 27); ++ } + } + /* end of optional [ | ] expression */ + } + else if (mcLexBuf_currenttoken == mcReserved_lcbratok) +- Constructor (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Constructor (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: { identifier", 30); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: { identifier", 30); ++ } + } + + +@@ -5757,7 +6075,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, + static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0))) +- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2); ++ } + /* while */ + } + +@@ -5783,7 +6103,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + n = push (decl_makeExpList ()); + if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + mcDebug_assert (decl_isExpList (peep ())); + } +@@ -5812,9 +6134,13 @@ static void ExitStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + + Expect ((mcReserved_toktype) mcReserved_exittok, stopset0, stopset1, stopset2); + if (loopNo == 0) +- ErrorArray ((char *) "EXIT can only be used inside a LOOP statement", 45); ++ { ++ ErrorArray ((char *) "EXIT can only be used inside a LOOP statement", 45); ++ } + else +- n = pushStmt (decl_makeExit (peepLoop (), loopNo)); ++ { ++ n = pushStmt (decl_makeExit (peepLoop (), loopNo)); ++ } + } + + +@@ -5878,31 +6204,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + decl_node s; + + if (mcLexBuf_currenttoken == mcReserved_identtok) +- AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ { ++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_iftok) +- IfStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IfStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_casetok) +- CaseStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ CaseStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_whiletok) +- WhileStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WhileStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_repeattok) +- RepeatStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RepeatStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_looptok) +- LoopStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ LoopStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_fortok) +- ForStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ForStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_withtok) +- WithStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_asmtok) +- AsmStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ AsmStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_exittok) +- ExitStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ExitStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_returntok) +- ReturnStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ReturnStatement (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_retrytok) +- RetryStatement (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RetryStatement (stopset0, stopset1, stopset2); ++ } + else +- s = pushStmt ((decl_node) NULL); ++ { ++ /* avoid dangling else. */ ++ s = pushStmt ((decl_node) NULL); ++ } + } + + +@@ -5965,11 +6329,15 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1, + } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) + { ++ /* avoid dangling else. */ + ActualParameters (stopset0, stopset1, stopset2); + a = pushStmt (decl_makeFuncCall (d, pop ())); + } + else +- a = pushStmt (decl_makeFuncCall (d, (decl_node) NULL)); ++ { ++ /* avoid dangling else. */ ++ a = pushStmt (decl_makeFuncCall (d, (decl_node) NULL)); ++ } + decl_addCommentBody (peepStmt ()); + decl_addCommentAfter (peepStmt ()); + } +@@ -6148,9 +6516,12 @@ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + decl_node c; + + if (mcLexBuf_currenttoken == mcReserved_endtok) +- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_elsetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + c = peepStmt (); + StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -6158,7 +6529,10 @@ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ELSE END", 26); ++ } + } + + +@@ -6583,9 +6957,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -6607,7 +6987,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- FormalParameters (stopset0, stopset1, stopset2); ++ { ++ FormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6626,11 +7008,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse + /* avoid gcc warning by using compound statement even if not strictly necessary. */ + /* seen optional [ | ] expression */ + if (mcLexBuf_currenttoken == mcReserved_builtintok) +- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_inlinetok) +- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40); ++ } + } + /* end of optional [ | ] expression */ + } +@@ -6651,7 +7041,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lparatok) +- DefFormalParameters (stopset0, stopset1, stopset2); ++ { ++ DefFormalParameters (stopset0, stopset1, stopset2); ++ } + } + + +@@ -6667,7 +7059,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_begintok) + { +@@ -6689,7 +7083,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2); + FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2); +@@ -6867,13 +7263,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -6884,16 +7284,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_moduletok) + { ++ /* avoid dangling else. */ + ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49); ++ } + } + + +@@ -6914,7 +7319,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -6932,7 +7339,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf + static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- DefExtendedFP (stopset0, stopset1, stopset2); ++ { ++ DefExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6944,7 +7353,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -6965,7 +7377,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + decl_paramEnter (curproc); + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0)))) +- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + decl_paramLeave (curproc); + FormalReturn (stopset0, stopset1, stopset2); +@@ -6983,7 +7397,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)) +- ExtendedFP (stopset0, stopset1, stopset2); ++ { ++ ExtendedFP (stopset0, stopset1, stopset2); ++ } + else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))) + { + /* avoid dangling else. */ +@@ -6995,7 +7411,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + } + } + else +- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38); ++ } + } + + +@@ -7010,11 +7429,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- NonVarFPSection (stopset0, stopset1, stopset2); ++ { ++ NonVarFPSection (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_vartok) +- VarFPSection (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ VarFPSection (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: VAR identifier", 32); ++ } + } + + +@@ -7029,11 +7456,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop + static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- DefOptArg (stopset0, stopset1, stopset2); ++ { ++ DefOptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -7048,11 +7483,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- OptArg (stopset0, stopset1, stopset2); ++ { ++ OptArg (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok) +- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: ... [", 23); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: ... [", 23); ++ } + } + + +@@ -7168,13 +7611,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok)))); ++ } + Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0, stopset1, stopset2); + } +@@ -7216,13 +7665,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset + } + else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + } + else if (mcLexBuf_currenttoken == mcReserved_identtok) +- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50); ++ } + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + +@@ -7312,11 +7768,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt + static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_fromtok) +- FromImport (stopset0, stopset1, stopset2); ++ { ++ FromImport (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_importtok) +- WithoutFromImport (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ WithoutFromImport (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29); ++ } + } + + +@@ -7352,12 +7816,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto + curmodule = decl_lookupDef (curident); + decl_enterScope (curmodule); + while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0))) +- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + if (mcLexBuf_currenttoken == mcReserved_exporttok) +- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))) +- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ { ++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)))); ++ } + /* while */ + Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); +@@ -7415,26 +7885,38 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2); + qualid = push (lookupWithSym (curident)); + if (qualid == NULL) +- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1)); ++ } + if (mcLexBuf_currenttoken == mcReserved_periodtok) + { + Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + if (! (isQualident (qualid))) +- ErrorArray ((char *) "the first component of this qualident must be a definition module or a parameter/variable/constant which has record type", 120); ++ { ++ ErrorArray ((char *) "the first component of this qualident must be a definition module or a parameter/variable/constant which has record type", 120); ++ } + Ident (stopset0, stopset1, stopset2); + if (decl_isDef (qualid)) +- qualid = replace (decl_lookupInScope (qualid, curident)); ++ { ++ qualid = replace (decl_lookupInScope (qualid, curident)); ++ } + else + { + type = decl_skipType (decl_getType (qualid)); + field = decl_lookupInScope (type, curident); + if (field == NULL) +- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in {%2ad}", 37, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &qualid, (sizeof (qualid)-1)); ++ { ++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in {%2ad}", 37, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &qualid, (sizeof (qualid)-1)); ++ } + else +- qualid = replace (decl_makeComponentRef (qualid, field)); ++ { ++ qualid = replace (decl_makeComponentRef (qualid, field)); ++ } + } + if (qualid == NULL) +- mcMetaError_metaError1 ((char *) "qualified component of the identifier {%1k} cannot be found", 59, (unsigned char *) &curident, (sizeof (curident)-1)); ++ { ++ mcMetaError_metaError1 ((char *) "qualified component of the identifier {%1k} cannot be found", 59, (unsigned char *) &curident, (sizeof (curident)-1)); ++ } + } + } + +@@ -7450,7 +7932,9 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void OptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + } + + +@@ -7516,13 +8000,24 @@ static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeEquiv (stopset0, stopset1, stopset2); ++ { ++ TypeEquiv (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lparatok) +- Enumeration (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ Enumeration (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- SubrangeType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SubrangeType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32); ++ } + } + + +@@ -7538,19 +8033,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok)) +- SimpleType (stopset0, stopset1, stopset2); ++ { ++ SimpleType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_arraytok) +- ArrayType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ArrayType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_recordtok) +- RecordType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ RecordType (stopset0, stopset1, stopset2); ++ } + else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok)) +- SetType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ SetType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_pointertok) +- PointerType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ PointerType (stopset0, stopset1, stopset2); ++ } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) +- ProcedureType (stopset0, stopset1, stopset2); ++ { ++ /* avoid dangling else. */ ++ ProcedureType (stopset0, stopset1, stopset2); ++ } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80); ++ } + } + + +@@ -7568,16 +8083,22 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop + { + Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_semicolontok) +- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + else if (mcLexBuf_currenttoken == mcReserved_equaltok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)))); + Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + } + else +- ErrorArray ((char *) "expecting one of: = ;", 21); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: = ;", 21); ++ } + } + /* while */ + } +@@ -7608,13 +8129,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_typetok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) +- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ { ++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); ++ } + /* while */ + } + else if (mcLexBuf_currenttoken == mcReserved_vartok) + { ++ /* avoid dangling else. */ + Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)))); + while (mcLexBuf_currenttoken == mcReserved_identtok) + { +@@ -7625,11 +8150,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + } + else if (mcLexBuf_currenttoken == mcReserved_proceduretok) + { ++ /* avoid dangling else. */ + DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2); + } + else +- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ { ++ /* avoid dangling else. */ ++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42); ++ } + } + + +@@ -7652,7 +8181,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + s = pushStmt (decl_makeComment ((char *) "asm", 3)); + Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok)))); + if (mcLexBuf_currenttoken == mcReserved_volatiletok) +- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); + AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2); + Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2); +@@ -7671,7 +8202,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st + { + string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2); + if (mcLexBuf_currenttoken == mcReserved_colontok) +- AsmOperandSpec (stopset0, stopset1, stopset2); ++ { ++ AsmOperandSpec (stopset0, stopset1, stopset2); ++ } + } + + +@@ -7714,7 +8247,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 + static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok)) +- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +@@ -7751,7 +8286,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s + static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_lsbratok) +- NamedOperand (stopset0, stopset1, stopset2); ++ { ++ NamedOperand (stopset0, stopset1, stopset2); ++ } + } + + +@@ -7784,7 +8321,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto + static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2) + { + if (mcLexBuf_currenttoken == mcReserved_stringtok) +- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ { ++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2); ++ } + while (mcLexBuf_currenttoken == mcReserved_commatok) + { + Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)))); +--- a/src/gcc/gm2/mc-boot/GnameKey.c ++++ b/src/gcc/gm2/mc-boot/GnameKey.c +@@ -177,6 +177,7 @@ static nameKey_Name doMakeKey (ptrToChar n, unsigned int higha) + } + else if (result == greater) + { ++ /* avoid dangling else. */ + Storage_ALLOCATE ((void **) &child, sizeof (_T1)); + father->right = child; + } +@@ -211,17 +212,25 @@ static comparison compare (ptrToChar pi, nameKey_Name j) + c1 = (*pi); + c2 = (*pj); + while ((c1 != ASCII_nul) || (c2 != ASCII_nul)) +- if (c1 < c2) +- return less; +- else if (c1 > c2) +- return greater; +- else +- { +- pi += 1; +- pj += 1; +- c1 = (*pi); +- c2 = (*pj); +- } ++ { ++ if (c1 < c2) ++ { ++ return less; ++ } ++ else if (c1 > c2) ++ { ++ /* avoid dangling else. */ ++ return greater; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ pi += 1; ++ pj += 1; ++ c1 = (*pi); ++ c2 = (*pj); ++ } ++ } + return equal; + } + +@@ -241,7 +250,9 @@ static comparison findNodeAndParentInTree (ptrToChar n, nameNode *child, nameNod + (*father) = binaryTree; + (*child) = binaryTree->left; + if ((*child) == NULL) +- return less; ++ { ++ return less; ++ } + else + { + do { +@@ -253,6 +264,7 @@ static comparison findNodeAndParentInTree (ptrToChar n, nameNode *child, nameNod + } + else if (result == greater) + { ++ /* avoid dangling else. */ + (*father) = (*child); + (*child) = (*child)->right; + } +@@ -283,7 +295,9 @@ nameKey_Name nameKey_makeKey (char *a_, unsigned int _a_high) + higha = StrLib_StrLen ((char *) a, _a_high); + Storage_ALLOCATE ((void **) &p, higha+1); + if (p == NULL) +- M2RTS_HALT (-1); /* out of memory error */ ++ { ++ M2RTS_HALT (-1); /* out of memory error */ ++ } + else + { + n = p; +@@ -317,13 +331,17 @@ nameKey_Name nameKey_makekey (void * a) + unsigned int higha; + + if (a == NULL) +- return nameKey_NulName; ++ { ++ return nameKey_NulName; ++ } + else + { + higha = libc_strlen (a); + Storage_ALLOCATE ((void **) &p, higha+1); + if (p == NULL) +- M2RTS_HALT (-1); /* out of memory error */ ++ { ++ M2RTS_HALT (-1); /* out of memory error */ ++ } + else + { + n = p; +@@ -363,7 +381,9 @@ void nameKey_getKey (nameKey_Name key, char *a, unsigned int _a_high) + i += 1; + } + if (i <= higha) +- a[i] = ASCII_nul; ++ { ++ a[i] = ASCII_nul; ++ } + } + + +@@ -407,37 +427,45 @@ unsigned int nameKey_isKey (char *a_, unsigned int _a_high) + /* firstly set up the initial values of child, using sentinal node */ + child = binaryTree->left; + if (child != NULL) +- do { +- i = 0; +- higha = _a_high; +- p = nameKey_keyToCharStar (child->key); +- while ((i <= higha) && (a[i] != ASCII_nul)) +- { +- if (a[i] < (*p)) +- { +- child = child->left; +- i = higha; +- } +- else if (a[i] > (*p)) +- { +- child = child->right; +- i = higha; +- } +- else +- { +- if ((a[i] == ASCII_nul) || (i == higha)) +- { +- /* avoid gcc warning by using compound statement even if not strictly necessary. */ +- if ((*p) == ASCII_nul) +- return TRUE; +- else +- child = child->left; +- } +- p += 1; +- } +- i += 1; +- } +- } while (! (child == NULL)); ++ { ++ do { ++ i = 0; ++ higha = _a_high; ++ p = nameKey_keyToCharStar (child->key); ++ while ((i <= higha) && (a[i] != ASCII_nul)) ++ { ++ if (a[i] < (*p)) ++ { ++ child = child->left; ++ i = higha; ++ } ++ else if (a[i] > (*p)) ++ { ++ /* avoid dangling else. */ ++ child = child->right; ++ i = higha; ++ } ++ else ++ { ++ /* avoid dangling else. */ ++ if ((a[i] == ASCII_nul) || (i == higha)) ++ { ++ /* avoid gcc warning by using compound statement even if not strictly necessary. */ ++ if ((*p) == ASCII_nul) ++ { ++ return TRUE; ++ } ++ else ++ { ++ child = child->left; ++ } ++ } ++ p += 1; ++ } ++ i += 1; ++ } ++ } while (! (child == NULL)); ++ } + return FALSE; + } + +@@ -473,7 +501,9 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2) + char c2; + + if (key1 == key2) +- return TRUE; ++ { ++ return TRUE; ++ } + else + { + pi = nameKey_keyToCharStar (key1); +@@ -481,16 +511,20 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2) + c1 = (*pi); + c2 = (*pj); + while ((c1 != ASCII_nul) && (c2 != ASCII_nul)) +- if (((c1 == c2) || (((c1 >= 'A') && (c1 <= 'Z')) && (c2 == ((char) ((((unsigned int) (c1))-((unsigned int) ('A')))+((unsigned int) ('a'))))))) || (((c2 >= 'A') && (c2 <= 'Z')) && (c1 == ((char) ((((unsigned int) (c2))-((unsigned int) ('A')))+((unsigned int) ('a'))))))) +- { +- pi += 1; +- pj += 1; +- c1 = (*pi); +- c2 = (*pj); +- } +- else +- /* difference found */ +- return FALSE; ++ { ++ if (((c1 == c2) || (((c1 >= 'A') && (c1 <= 'Z')) && (c2 == ((char) (( ((unsigned int) (c1))- ((unsigned int) ('A')))+ ((unsigned int) ('a'))))))) || (((c2 >= 'A') && (c2 <= 'Z')) && (c1 == ((char) (( ((unsigned int) (c2))- ((unsigned int) ('A')))+ ((unsigned int) ('a'))))))) ++ { ++ pi += 1; ++ pj += 1; ++ c1 = (*pi); ++ c2 = (*pj); ++ } ++ else ++ { ++ /* difference found */ ++ return FALSE; ++ } ++ } + return c1 == c2; + } + } +@@ -503,9 +537,13 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2) + void * nameKey_keyToCharStar (nameKey_Name key) + { + if ((key == nameKey_NulName) || (! (Indexing_InBounds (keyIndex, (unsigned int) key)))) +- return NULL; ++ { ++ return NULL; ++ } + else +- return Indexing_GetIndice (keyIndex, (unsigned int) key); ++ { ++ return Indexing_GetIndice (keyIndex, (unsigned int) key); ++ } + } + + void _M2_nameKey_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[]) +--- a/src/gcc/gm2/mc-boot/GsymbolKey.c ++++ b/src/gcc/gm2/mc-boot/GsymbolKey.c +@@ -135,21 +135,26 @@ static void findNodeAndParentInTree (symbolKey_symbolTree t, nameKey_Name n, sym + /* remember to skip the sentinal value and assign father and child */ + (*father) = t; + if (t == NULL) +- Debug_Halt ((char *) "parameter t should never be NIL", 31, 203, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ { ++ Debug_Halt ((char *) "parameter t should never be NIL", 31, 203, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ } + (*child) = t->left; + if ((*child) != NULL) +- do { +- if (n < (*child)->name) +- { +- (*father) = (*child); +- (*child) = (*child)->left; +- } +- else if (n > (*child)->name) +- { +- (*father) = (*child); +- (*child) = (*child)->right; +- } +- } while (! (((*child) == NULL) || (n == (*child)->name))); ++ { ++ do { ++ if (n < (*child)->name) ++ { ++ (*father) = (*child); ++ (*child) = (*child)->left; ++ } ++ else if (n > (*child)->name) ++ { ++ /* avoid dangling else. */ ++ (*father) = (*child); ++ (*child) = (*child)->right; ++ } ++ } while (! (((*child) == NULL) || (n == (*child)->name))); ++ } + } + + +@@ -162,9 +167,13 @@ static void findNodeAndParentInTree (symbolKey_symbolTree t, nameKey_Name n, sym + static unsigned int searchForAny (symbolKey_symbolTree t, symbolKey_isSymbol p) + { + if (t == NULL) +- return FALSE; ++ { ++ return FALSE; ++ } + else +- return (((*p.proc) (t->key)) || (searchForAny (t->left, p))) || (searchForAny (t->right, p)); ++ { ++ return (((*p.proc) (t->key)) || (searchForAny (t->left, p))) || (searchForAny (t->right, p)); ++ } + } + + +@@ -211,14 +220,20 @@ void * symbolKey_getSymKey (symbolKey_symbolTree t, nameKey_Name name) + symbolKey_symbolTree child; + + if (t == NULL) +- return symbolKey_NulKey; ++ { ++ return symbolKey_NulKey; ++ } + else + { + findNodeAndParentInTree (t, name, &child, &father); + if (child == NULL) +- return symbolKey_NulKey; ++ { ++ return symbolKey_NulKey; ++ } + else +- return child->key; ++ { ++ return child->key; ++ } + } + } + +@@ -238,23 +253,28 @@ void symbolKey_putSymKey (symbolKey_symbolTree t, nameKey_Name name, void * key) + father->left = child; + } + else +- if (name < father->name) +- { +- Storage_ALLOCATE ((void **) &child, sizeof (_T1)); +- father->left = child; +- } +- else if (name > father->name) +- { +- Storage_ALLOCATE ((void **) &child, sizeof (_T1)); +- father->right = child; +- } ++ { ++ if (name < father->name) ++ { ++ Storage_ALLOCATE ((void **) &child, sizeof (_T1)); ++ father->left = child; ++ } ++ else if (name > father->name) ++ { ++ /* avoid dangling else. */ ++ Storage_ALLOCATE ((void **) &child, sizeof (_T1)); ++ father->right = child; ++ } ++ } + child->right = NULL; + child->left = NULL; + child->key = key; + child->name = name; + } + else +- Debug_Halt ((char *) "symbol already stored", 21, 119, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ { ++ Debug_Halt ((char *) "symbol already stored", 21, 119, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ } + } + + +@@ -273,43 +293,55 @@ void symbolKey_delSymKey (symbolKey_symbolTree t, nameKey_Name name) + + findNodeAndParentInTree (t, name, &child, &father); /* find father and child of the node */ + if ((child != NULL) && (child->name == name)) +- /* Have found the node to be deleted */ +- if (father->right == child) +- { +- /* most branch of child^.left. */ +- if (child->left != NULL) +- { +- /* Scan for right most node of child^.left */ +- i = child->left; +- while (i->right != NULL) +- i = i->right; +- i->right = child->right; +- father->right = child->left; +- } +- else +- /* (as in a single linked list) to child^.right */ +- father->right = child->right; +- Storage_DEALLOCATE ((void **) &child, sizeof (_T1)); +- } +- else +- { +- /* branch of child^.right */ +- if (child->right != NULL) +- { +- /* Scan for left most node of child^.right */ +- i = child->right; +- while (i->left != NULL) +- i = i->left; +- i->left = child->left; +- father->left = child->right; +- } +- else +- /* (as in a single linked list) to child^.left. */ +- father->left = child->left; +- Storage_DEALLOCATE ((void **) &child, sizeof (_T1)); +- } ++ { ++ /* Have found the node to be deleted */ ++ if (father->right == child) ++ { ++ /* most branch of child^.left. */ ++ if (child->left != NULL) ++ { ++ /* Scan for right most node of child^.left */ ++ i = child->left; ++ while (i->right != NULL) ++ { ++ i = i->right; ++ } ++ i->right = child->right; ++ father->right = child->left; ++ } ++ else ++ { ++ /* (as in a single linked list) to child^.right */ ++ father->right = child->right; ++ } ++ Storage_DEALLOCATE ((void **) &child, sizeof (_T1)); ++ } ++ else ++ { ++ /* branch of child^.right */ ++ if (child->right != NULL) ++ { ++ /* Scan for left most node of child^.right */ ++ i = child->right; ++ while (i->left != NULL) ++ { ++ i = i->left; ++ } ++ i->left = child->left; ++ father->left = child->right; ++ } ++ else ++ { ++ /* (as in a single linked list) to child^.left. */ ++ father->left = child->left; ++ } ++ Storage_DEALLOCATE ((void **) &child, sizeof (_T1)); ++ } ++ } + else +- Debug_Halt ((char *) "trying to delete a symbol that is not in the tree - the compiler never expects this to occur", 92, 186, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ { ++ Debug_Halt ((char *) "trying to delete a symbol that is not in the tree - the compiler never expects this to occur", 92, 186, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44); ++ } + } + + +--- a/src/gcc/gm2/mc-boot/Gvarargs.c ++++ b/src/gcc/gm2/mc-boot/Gvarargs.c +@@ -147,14 +147,16 @@ void varargs_arg (varargs_vararg v, unsigned char *a, unsigned int _a_high) + unsigned char * p; + + if (v->i == v->nArgs) +- M2RTS_HALT (-1); /* too many calls to arg. */ ++ { ++ M2RTS_HALT (-1); /* too many calls to arg. */ ++ } + else + { +- if (((_a_high)+1) == v->arg.array[v->i].len) ++ if ((_a_high+1) == v->arg.array[v->i].len) + { + p = v->arg.array[v->i].ptr; + j = 0; +- while (j <= (_a_high)) ++ while (j <= _a_high) + { + a[j] = (*p); + p += 1; +@@ -162,7 +164,9 @@ void varargs_arg (varargs_vararg v, unsigned char *a, unsigned int _a_high) + } + } + else +- M2RTS_HALT (-1); /* parameter mismatch. */ ++ { ++ M2RTS_HALT (-1); /* parameter mismatch. */ ++ } + v->i += 1; + } + } +@@ -216,21 +220,27 @@ void varargs_replace (varargs_vararg v, unsigned char *a, unsigned int _a_high) + unsigned char * p; + + if (v->i == v->nArgs) +- M2RTS_HALT (-1); /* too many calls to arg. */ ++ { ++ M2RTS_HALT (-1); /* too many calls to arg. */ ++ } + else +- if (((_a_high)+1) == v->arg.array[v->i].len) +- { +- p = v->arg.array[v->i].ptr; +- j = 0; +- while (j <= (_a_high)) +- { +- (*p) = a[j]; +- p += 1; +- j += 1; +- } +- } +- else +- M2RTS_HALT (-1); /* parameter mismatch. */ ++ { ++ if ((_a_high+1) == v->arg.array[v->i].len) ++ { ++ p = v->arg.array[v->i].ptr; ++ j = 0; ++ while (j <= _a_high) ++ { ++ (*p) = a[j]; ++ p += 1; ++ j += 1; ++ } ++ } ++ else ++ { ++ M2RTS_HALT (-1); /* parameter mismatch. */ ++ } ++ } + } + + +@@ -242,7 +252,7 @@ void varargs_end (varargs_vararg *v) + { + if ((*v) != NULL) + { +- Storage_DEALLOCATE (&(*v)->contents, (unsigned int) sizeof (varargs_vararg)); ++ Storage_DEALLOCATE (&(*v)->contents, sizeof (varargs_vararg)); + Storage_DEALLOCATE ((void **) &(*v), sizeof (_T1)); + } + } +@@ -263,7 +273,7 @@ varargs_vararg varargs_start1 (unsigned char *a_, unsigned int _a_high) + Storage_ALLOCATE ((void **) &v, sizeof (_T1)); + v->i = 0; + v->nArgs = 1; +- v->size = (_a_high)+1; ++ v->size = _a_high+1; + Storage_ALLOCATE (&v->contents, v->size); + v->contents = libc_memcpy (v->contents, &a, (size_t) v->size); + v->arg.array[0].ptr = v->contents; +@@ -290,15 +300,15 @@ varargs_vararg varargs_start2 (unsigned char *a_, unsigned int _a_high, unsigned + Storage_ALLOCATE ((void **) &v, sizeof (_T1)); + v->i = 0; + v->nArgs = 2; +- v->size = ((_a_high)+(_b_high))+2; ++ v->size = (_a_high+_b_high)+2; + Storage_ALLOCATE (&v->contents, v->size); +- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1); ++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1); + v->arg.array[0].ptr = p; +- v->arg.array[0].len = (_a_high)+1; ++ v->arg.array[0].len = _a_high+1; + p += v->arg.array[0].len; +- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1); ++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1); + v->arg.array[1].ptr = p; +- v->arg.array[1].len = (_b_high)+1; ++ v->arg.array[1].len = _b_high+1; + return v; + } + +@@ -323,19 +333,19 @@ varargs_vararg varargs_start3 (unsigned char *a_, unsigned int _a_high, unsigned + Storage_ALLOCATE ((void **) &v, sizeof (_T1)); + v->i = 0; + v->nArgs = 3; +- v->size = (((_a_high)+(_b_high))+(_c_high))+3; ++ v->size = ((_a_high+_b_high)+_c_high)+3; + Storage_ALLOCATE (&v->contents, v->size); +- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1); ++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1); + v->arg.array[0].ptr = p; +- v->arg.array[0].len = (_a_high)+1; ++ v->arg.array[0].len = _a_high+1; + p += v->arg.array[0].len; +- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1); ++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1); + v->arg.array[1].ptr = p; +- v->arg.array[1].len = (_b_high)+1; ++ v->arg.array[1].len = _b_high+1; + p += v->arg.array[1].len; +- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1); ++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1); + v->arg.array[2].ptr = p; +- v->arg.array[2].len = (_c_high)+1; ++ v->arg.array[2].len = _c_high+1; + return v; + } + +@@ -362,22 +372,22 @@ varargs_vararg varargs_start4 (unsigned char *a_, unsigned int _a_high, unsigned + Storage_ALLOCATE ((void **) &v, sizeof (_T1)); + v->i = 0; + v->nArgs = 4; +- v->size = ((((_a_high)+(_b_high))+(_c_high))+(_d_high))+4; ++ v->size = (((_a_high+_b_high)+_c_high)+_d_high)+4; + Storage_ALLOCATE (&v->contents, v->size); +- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1); +- v->arg.array[0].len = (_a_high)+1; ++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1); ++ v->arg.array[0].len = _a_high+1; + p += v->arg.array[0].len; +- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1); ++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1); + v->arg.array[1].ptr = p; +- v->arg.array[1].len = (_b_high)+1; ++ v->arg.array[1].len = _b_high+1; + p += v->arg.array[1].len; +- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1); ++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1); + v->arg.array[2].ptr = p; +- v->arg.array[2].len = (_c_high)+1; ++ v->arg.array[2].len = _c_high+1; + p += v->arg.array[2].len; +- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1); ++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1); + v->arg.array[3].ptr = p; +- v->arg.array[3].len = (_c_high)+1; ++ v->arg.array[3].len = _c_high+1; + return v; + } + +--- a/src/gcc/gm2/mc-boot/Gwlists.c ++++ b/src/gcc/gm2/mc-boot/Gwlists.c +@@ -189,7 +189,9 @@ void wlists_killList (wlists_wlist *l) + if ((*l) != NULL) + { + if ((*l)->next != NULL) +- wlists_killList (&(*l)->next); ++ { ++ wlists_killList (&(*l)->next); ++ } + Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1)); + } + } +@@ -207,9 +209,13 @@ void wlists_putItemIntoList (wlists_wlist l, unsigned int c) + l->elements.array[l->noOfElements-1] = c; + } + else if (l->next != NULL) +- wlists_putItemIntoList (l->next, c); ++ { ++ /* avoid dangling else. */ ++ wlists_putItemIntoList (l->next, c); ++ } + else + { ++ /* avoid dangling else. */ + l->next = wlists_initList (); + wlists_putItemIntoList (l->next, c); + } +@@ -225,9 +231,13 @@ unsigned int wlists_getItemFromList (wlists_wlist l, unsigned int n) + while (l != NULL) + { + if (n <= l->noOfElements) +- return l->elements.array[n-1]; ++ { ++ return l->elements.array[n-1]; ++ } + else +- n -= l->noOfElements; ++ { ++ n -= l->noOfElements; ++ } + l = l->next; + } + return 0; +@@ -245,15 +255,23 @@ unsigned int wlists_getIndexOfList (wlists_wlist l, unsigned int c) + unsigned int i; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + i = 1; + while (i <= l->noOfElements) +- if (l->elements.array[i-1] == c) +- return i; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return i; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + return l->noOfElements+(wlists_getIndexOfList (l->next, c)); + } + } +@@ -268,7 +286,9 @@ unsigned int wlists_noOfItemsInList (wlists_wlist l) + unsigned int t; + + if (l == NULL) +- return 0; ++ { ++ return 0; ++ } + else + { + t = 0; +@@ -289,7 +309,9 @@ unsigned int wlists_noOfItemsInList (wlists_wlist l) + void wlists_includeItemIntoList (wlists_wlist l, unsigned int c) + { + if (! (wlists_isItemInList (l, c))) +- wlists_putItemIntoList (l, c); ++ { ++ wlists_putItemIntoList (l, c); ++ } + } + + +@@ -311,9 +333,13 @@ void wlists_removeItemFromList (wlists_wlist l, unsigned int c) + do { + i = 1; + while ((i <= l->noOfElements) && (l->elements.array[i-1] != c)) +- i += 1; ++ { ++ i += 1; ++ } + if ((i <= l->noOfElements) && (l->elements.array[i-1] == c)) +- found = TRUE; ++ { ++ found = TRUE; ++ } + else + { + p = l; +@@ -321,7 +347,9 @@ void wlists_removeItemFromList (wlists_wlist l, unsigned int c) + } + } while (! ((l == NULL) || found)); + if (found) +- removeItem (p, l, i); ++ { ++ removeItem (p, l, i); ++ } + } + } + +@@ -337,9 +365,13 @@ void wlists_replaceItemInList (wlists_wlist l, unsigned int n, unsigned int w) + while (l != NULL) + { + if (n <= l->noOfElements) +- l->elements.array[n-1] = w; ++ { ++ l->elements.array[n-1] = w; ++ } + else +- n -= l->noOfElements; ++ { ++ n -= l->noOfElements; ++ } + l = l->next; + } + } +@@ -356,10 +388,16 @@ unsigned int wlists_isItemInList (wlists_wlist l, unsigned int c) + do { + i = 1; + while (i <= l->noOfElements) +- if (l->elements.array[i-1] == c) +- return TRUE; +- else +- i += 1; ++ { ++ if (l->elements.array[i-1] == c) ++ { ++ return TRUE; ++ } ++ else ++ { ++ i += 1; ++ } ++ } + l = l->next; + } while (! (l == NULL)); + return FALSE; +--- a/src/gcc/gm2/mc/decl.mod ++++ b/src/gcc/gm2/mc/decl.mod +@@ -5,20 +5,19 @@ Contributed by Gaius Mulley . + + This file is part of GNU Modula-2. + +-GNU Modula-2 is free software; you can redistribute it and/or modify it under +-the terms of the GNU General Public License as published by the Free +-Software Foundation; either version 3, or (at your option) any later +-version. ++GNU Modula-2 is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. + +-GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +-WARRANTY; without even the implied warranty of MERCHANTABILITY or +-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +-for more details. ++GNU Modula-2 is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. + +-You should have received a copy of the GNU General Public License along +-with gm2; see the file COPYING. If not, write to the Free Software +-Foundation, 51 Franklin Street, Fifth Floor, +-Boston, MA 02110-1301, USA. *) ++You should have received a copy of the GNU General Public License ++along with GNU Modula-2; see the file COPYING3. If not see ++. *) + + IMPLEMENTATION MODULE decl ; (*!m2pim*) + +@@ -71,6 +70,9 @@ CONST + debugDecl = FALSE ; + caseException = TRUE ; + returnException = TRUE ; ++ (* this is a work around to avoid ever having to handle dangling else. *) ++ forceCompoundStatement = TRUE ; (* TRUE will avoid dangling else, by always using {}. *) ++ + + TYPE + language = (ansiC, ansiCP, pim4) ; +@@ -122,6 +124,14 @@ TYPE + node = POINTER TO RECORD + CASE kind: nodeT OF + ++ throw, ++ new, ++ dispose, ++ inc, ++ dec, ++ incl, ++ excl, ++ halt : intrinsicF: intrinsicT | + explist : explistF: explistT | + exit : exitF : exitT | + return : returnF : returnT | +@@ -209,8 +219,8 @@ TYPE + greater, + greequal, + lessequal, +- cast, + val, ++ cast, + plus, + sub, + div, +@@ -227,7 +237,6 @@ TYPE + ord, + float, + trunc, +- throw, + re, + im, + not, +@@ -246,6 +255,13 @@ TYPE + at: where ; + END ; + ++ intrinsicT = RECORD ++ args : node ; ++ noArgs : CARDINAL ; ++ type : node ; ++ intrinsicComment: commentPair ; ++ END ; ++ + fixupInfo = RECORD + count: CARDINAL ; + info : Index ; +@@ -3316,9 +3332,13 @@ END getExpList ; + + PROCEDURE expListLen (p: node) : CARDINAL ; + BEGIN +- assert (p#NIL) ; +- assert (isExpList (p)) ; +- RETURN HighIndice (p^.explistF.exp) ++ IF p = NIL ++ THEN ++ RETURN 0 ++ ELSE ++ assert (isExpList (p)) ; ++ RETURN HighIndice (p^.explistF.exp) ++ END + END expListLen ; + + +@@ -3497,7 +3517,26 @@ END isAnyType ; + + + (* +- makeCast - ++ makeVal - creates a VAL (type, expression) node. ++*) ++ ++PROCEDURE makeVal (params: node) : node ; ++BEGIN ++ assert (isExpList (params)) ; ++ IF expListLen (params) = 2 ++ THEN ++ RETURN makeBinary (val, ++ getExpList (params, 1), ++ getExpList (params, 2), ++ getExpList (params, 1)) ++ ELSE ++ HALT ++ END ++END makeVal ; ++ ++ ++(* ++ makeCast - creates a cast node TYPENAME (expr). + *) + + PROCEDURE makeCast (c, p: node) : node ; +@@ -3512,6 +3551,135 @@ BEGIN + END makeCast ; + + ++(* ++ makeIntrisicProc - ++*) ++ ++PROCEDURE makeIntrinsicProc (k: nodeT; noArgs: CARDINAL; p: node) : node ; ++VAR ++ f: node ; ++BEGIN ++ f := newNode (k) ; ++ f^.intrinsicF.args := p ; ++ f^.intrinsicF.noArgs := noArgs ; ++ f^.intrinsicF.type := NIL ; ++ initPair (f^.intrinsicF.intrinsicComment) ; ++ RETURN f ++END makeIntrinsicProc ; ++ ++ ++(* ++ makeIntrinsicUnaryType - ++*) ++ ++PROCEDURE makeIntrinsicUnaryType (k: nodeT; paramList: node; returnType: node) : node ; ++BEGIN ++ RETURN makeUnary (k, getExpList (paramList, 1), returnType) ++END makeIntrinsicUnaryType ; ++ ++ ++(* ++ makeIntrinsicBinaryType - ++*) ++ ++PROCEDURE makeIntrinsicBinaryType (k: nodeT; paramList: node; returnType: node) : node ; ++BEGIN ++ RETURN makeBinary (k, getExpList (paramList, 1), getExpList (paramList, 2), returnType) ++END makeIntrinsicBinaryType ; ++ ++ ++(* ++ checkIntrinsic - checks to see if the function call to, c, with ++ parameter list, n, is really an intrinic. If it ++ is an intrinic then an intrinic node is created ++ and returned. Otherwise NIL is returned. ++*) ++ ++PROCEDURE checkIntrinsic (c, n: node) : node ; ++BEGIN ++ IF isAnyType (c) ++ THEN ++ RETURN makeCast (c, n) ++ ELSIF c = maxN ++ THEN ++ RETURN makeIntrinsicUnaryType (max, n, NIL) ++ ELSIF c = minN ++ THEN ++ RETURN makeIntrinsicUnaryType (min, n, NIL) ++ ELSIF c = haltN ++ THEN ++ RETURN makeIntrinsicProc (halt, expListLen (n), n) ++ ELSIF c = valN ++ THEN ++ RETURN makeVal (n) ++ ELSIF c = adrN ++ THEN ++ RETURN makeIntrinsicUnaryType (adr, n, addressN) ++ ELSIF c = sizeN ++ THEN ++ RETURN makeIntrinsicUnaryType (size, n, cardinalN) ++ ELSIF c = tsizeN ++ THEN ++ RETURN makeIntrinsicUnaryType (tsize, n, cardinalN) ++ ELSIF c = floatN ++ THEN ++ RETURN makeIntrinsicUnaryType (float, n, realN) ++ ELSIF c = truncN ++ THEN ++ RETURN makeIntrinsicUnaryType (trunc, n, integerN) ++ ELSIF c = ordN ++ THEN ++ RETURN makeIntrinsicUnaryType (ord, n, cardinalN) ++ ELSIF c = chrN ++ THEN ++ RETURN makeIntrinsicUnaryType (chr, n, charN) ++ ELSIF c = capN ++ THEN ++ RETURN makeIntrinsicUnaryType (cap, n, charN) ++ ELSIF c = absN ++ THEN ++ RETURN makeIntrinsicUnaryType (abs, n, NIL) ++ ELSIF c = imN ++ THEN ++ RETURN makeIntrinsicUnaryType (im, n, NIL) ++ ELSIF c = reN ++ THEN ++ RETURN makeIntrinsicUnaryType (re, n, NIL) ++ ELSIF c = cmplxN ++ THEN ++ RETURN makeIntrinsicBinaryType (cmplx, n, NIL) ++ ELSIF c = highN ++ THEN ++ RETURN makeIntrinsicUnaryType (high, n, cardinalN) ++ ELSIF c = incN ++ THEN ++ RETURN makeIntrinsicProc (inc, expListLen (n), n) ++ ELSIF c = decN ++ THEN ++ RETURN makeIntrinsicProc (dec, expListLen (n), n) ++ ELSIF c = inclN ++ THEN ++ RETURN makeIntrinsicProc (incl, expListLen (n), n) ++ ELSIF c = exclN ++ THEN ++ RETURN makeIntrinsicProc (excl, expListLen (n), n) ++ ELSIF c = newN ++ THEN ++ RETURN makeIntrinsicProc (new, 1, n) ++ ELSIF c = disposeN ++ THEN ++ RETURN makeIntrinsicProc (dispose, 1, n) ++ ELSIF c = lengthN ++ THEN ++ RETURN makeIntrinsicUnaryType (length, n, cardinalN) ++ ELSIF c = throwN ++ THEN ++ RETURN makeIntrinsicProc (throw, 1, n) ++ END ; ++ RETURN NIL ++END checkIntrinsic ; ++ ++ + (* + makeFuncCall - builds a function call to c with param list, n. + *) +@@ -3527,17 +3695,16 @@ BEGIN + THEN + addImportedModule (getMainModule (), lookupDef (makeKey ('M2RTS')), FALSE) + END ; +- IF isAnyType (c) ++ f := checkIntrinsic (c, n) ; ++ IF f = NIL + THEN +- RETURN makeCast (c, n) +- ELSE + f := newNode (funccall) ; + f^.funccallF.function := c ; + f^.funccallF.args := n ; + f^.funccallF.type := NIL ; +- initPair (f^.funccallF.funccallComment) ; +- RETURN f +- END ++ initPair (f^.funccallF.funccallComment) ++ END ; ++ RETURN f + END makeFuncCall ; + + +@@ -4024,7 +4191,6 @@ BEGIN + assert (n # NIL) ; + CASE n^.kind OF + +- throw, + re, + im, + deref, +@@ -4050,6 +4216,40 @@ BEGIN + END isUnary ; + + ++(* ++ isBinary - returns TRUE if, n, is an binary node. ++*) ++ ++PROCEDURE isBinary (n: node) : BOOLEAN ; ++BEGIN ++ assert (n # NIL) ; ++ CASE n^.kind OF ++ ++ cmplx, ++ and, ++ or, ++ equal, ++ notequal, ++ less, ++ greater, ++ greequal, ++ lessequal, ++ val, ++ cast, ++ plus, ++ sub, ++ div, ++ mod, ++ mult, ++ divide, ++ in : RETURN TRUE ++ ++ ELSE ++ RETURN FALSE ++ END ++END isBinary ; ++ ++ + (* + makeUnary - create a unary expression node with, e, as the argument + and res as the return type. +@@ -4068,6 +4268,8 @@ BEGIN + kind := k ; + CASE kind OF + ++ min, ++ max, + throw, + re, + im, +@@ -4199,17 +4401,17 @@ END foldBinary ; + + + (* +- makeBinary - create a binary node with left/right/result type: l, r and res. ++ makeBinary - create a binary node with left/right/result type: l, r and resultType. + *) + +-PROCEDURE makeBinary (k: nodeT; l, r: node; res: node) : node ; ++PROCEDURE makeBinary (k: nodeT; l, r: node; resultType: node) : node ; + VAR + n: node ; + BEGIN +- n := foldBinary (k, l, r, res) ; ++ n := foldBinary (k, l, r, resultType) ; + IF n = NIL + THEN +- n := doMakeBinary (k, l, r, res) ++ n := doMakeBinary (k, l, r, resultType) + END ; + RETURN n + END makeBinary ; +@@ -4694,6 +4896,8 @@ BEGIN + mult, + divide : RETURN binaryF.resultType | + in : RETURN booleanN | ++ max, ++ min, + re, + im, + abs, +@@ -4789,40 +4993,7 @@ END getMaxMinType ; + PROCEDURE doGetFuncType (n: node) : node ; + BEGIN + assert (isFuncCall (n)) ; +- IF isIntrinsic (n) +- THEN +- CASE n^.funccallF.function^.kind OF +- +- max, +- min : RETURN getMaxMinType (getExpList (n^.funccallF.args, 1)) | +- cast, +- val : RETURN getExpList (n^.funccallF.args, 1) | +- adr : RETURN addressN | +- size, +- tsize, +- float : RETURN realN | +- trunc : RETURN integerN | +- ord : RETURN cardinalN | +- chr : RETURN charN | +- cap : RETURN charN | +- re, +- im : RETURN realN | +- cmplx : RETURN complexN | +- abs : RETURN getExprType (getExpList (n^.funccallF.args, 1)) | +- high : RETURN cardinalN | +- halt, +- inc, +- dec, +- incl, +- excl, +- new, +- dispose: HALT | +- length : RETURN cardinalN +- +- END +- ELSE +- RETURN doSetExprType (n^.funccallF.type, getType (n^.funccallF.function)) +- END ++ RETURN doSetExprType (n^.funccallF.type, getType (n^.funccallF.function)) + END doGetFuncType ; + + +@@ -4835,10 +5006,13 @@ BEGIN + WITH n^ DO + CASE kind OF + ++ max, ++ min : RETURN getMaxMinType (n^.unaryF.arg) | ++ cast, ++ val : RETURN doSetExprType (n^.binaryF.resultType, n^.binaryF.left) | + halt, + new, + dispose : RETURN NIL | +- length : RETURN cardinalN | + inc, + dec, + incl, +@@ -4908,8 +5082,6 @@ BEGIN + elsif, + assignment : HALT | + (* expressions. *) +- cast, +- val : RETURN doSetExprType (binaryF.resultType, binaryF.left) | + plus, + sub, + div, +@@ -5404,6 +5576,7 @@ BEGIN + pointerref : RETURN FALSE | + cast : RETURN TRUE | + val : RETURN TRUE | ++ abs : RETURN FALSE | + plus, + sub, + div, +@@ -5423,6 +5596,9 @@ BEGIN + or : RETURN TRUE | + funccall : RETURN TRUE | + recordfield : RETURN FALSE | ++ loc, ++ byte, ++ word, + type, + char, + cardinal, +@@ -5955,22 +6131,15 @@ END doInC ; + + PROCEDURE doThrowC (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL ++ assert (isIntrinsic (n)) ; ++ outText (p, "throw") ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN +- HALT +- ELSE +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- outText (p, "throw") ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; +- outText (p, ')') +- ELSE +- HALT (* metaError0 ('expecting a single parameter to THROW') *) +- END +- END ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ++ END ; ++ outText (p, ')') + END doThrowC ; + + +@@ -6026,18 +6195,25 @@ BEGIN + constexp : doUnary (p, '', unaryF.arg, unaryF.resultType, FALSE, FALSE) | + neg : doUnary (p, '-', unaryF.arg, unaryF.resultType, FALSE, FALSE) | + not : doUnary (p, '!', unaryF.arg, unaryF.resultType, FALSE, TRUE) | +- adr : doUnary (p, '&', unaryF.arg, unaryF.resultType, TRUE, FALSE) | +- size : doUnary (p, 'sizeof', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- tsize : doUnary (p, 'sizeof', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- trunc : doUnary (p, 'TRUNC', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- float : doUnary (p, 'FLOAT', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- ord : doUnary (p, 'ORD', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- chr : doUnary (p, 'CHR', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- cap : doUnary (p, 'CAP', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- high : doUnary (p, 'HIGH', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- re, +- im, +- cmplx : HALT (* should all be function calls. *) | ++ val : doValC (p, n) | ++ adr : doAdrC (p, n) | ++ size, ++ tsize : doSizeC (p, n) | ++ float : doConvertC (p, n, "(double)") | ++ trunc : doConvertC (p, n, "(int)") | ++ ord : doConvertC (p, n, "(unsigned int)") | ++ chr : doConvertC (p, n, "(char)") | ++ cap : doCapC (p, n) | ++ abs : doAbsC (p, n) | ++ high : doFuncHighC (p, n^.unaryF.arg) | ++ length : doLengthC (p, n) | ++ min : doMinC (p, n) | ++ max : doMaxC (p, n) | ++ throw : doThrowC (p, n) | ++ re : doReC (p, n) | ++ im : doImC (p, n) | ++ cmplx : doCmplx (p, n) | ++ + deref : doDeRefC (p, unaryF.arg) | + equal : doBinary (p, '==', binaryF.left, binaryF.right, TRUE, TRUE, TRUE) | + notequal : doBinary (p, '!=', binaryF.left, binaryF.right, TRUE, TRUE, TRUE) | +@@ -6048,7 +6224,6 @@ BEGIN + componentref : doComponentRefC (p, componentrefF.rec, componentrefF.field) | + pointerref : doPointerRefC (p, pointerrefF.ptr, pointerrefF.field) | + cast : doCastC (p, binaryF.left, binaryF.right) | +- val : doPreBinary (p, 'VAL', binaryF.left, binaryF.right, TRUE, TRUE) | + plus : doPolyBinary (p, plus, binaryF.left, binaryF.right, FALSE, FALSE) | + sub : doPolyBinary (p, sub, binaryF.left, binaryF.right, FALSE, FALSE) | + div : doBinary (p, '/', binaryF.left, binaryF.right, TRUE, TRUE, FALSE) | +@@ -6062,8 +6237,6 @@ BEGIN + const : doConstExpr (p, n) | + enumerationfield: doEnumerationField (p, n) | + string : doStringC (p, n) | +- max : doUnary (p, 'MAX', unaryF.arg, unaryF.resultType, TRUE, TRUE) | +- min : doUnary (p, 'MIN', unaryF.arg, unaryF.resultType, TRUE, TRUE) | + var : doVar (p, n) | + arrayref : doArrayRef (p, n) | + funccall : doFuncExprC (p, n) | +@@ -8909,7 +9082,7 @@ BEGIN + setindent (p, getindent (p) + indentationC) ; + outText (p, "{} /* empty. */\n") ; + p := popPretty (p) +- ELSIF isStatementSequence (s) AND isSingleStatement (s) ++ ELSIF isStatementSequence (s) AND isSingleStatement (s) AND (NOT forceCompoundStatement) + THEN + p := pushPretty (p) ; + setindent (p, getindent (p) + indentationC) ; +@@ -8942,8 +9115,9 @@ BEGIN + doExprC (p, s^.elsifF.expr) ; + outText (p, ")\n") ; + assert ((s^.elsifF.else = NIL) OR (s^.elsifF.elsif = NIL)) ; +- IF hasIfAndNoElse (s^.elsifF.then) AND +- ((s^.elsifF.else # NIL) OR (s^.elsifF.elsif # NIL)) ++ IF forceCompoundStatement OR ++ (hasIfAndNoElse (s^.elsifF.then) AND ++ ((s^.elsifF.else # NIL) OR (s^.elsifF.elsif # NIL))) + THEN + (* avoid dangling else. *) + p := pushPretty (p) ; +@@ -8962,7 +9136,22 @@ BEGIN + IF containsStatement (s^.elsifF.else) + THEN + outText (p, "else\n") ; +- doCompoundStmt (p, s^.elsifF.else) ++ IF forceCompoundStatement ++ THEN ++ (* avoid dangling else. *) ++ p := pushPretty (p) ; ++ setindent (p, getindent (p) + indentationC) ; ++ outText (p, "{\n") ; ++ p := pushPretty (p) ; ++ setindent (p, getindent (p) + indentationC) ; ++ outText (p, "/* avoid dangling else. */\n") ; ++ doStatementSequenceC (p, s^.elsifF.else) ; ++ p := popPretty (p) ; ++ outText (p, "}\n") ; ++ p := popPretty (p) ++ ELSE ++ doCompoundStmt (p, s^.elsifF.else) ++ END + ELSIF (s^.elsifF.elsif#NIL) AND isElsif (s^.elsifF.elsif) + THEN + doElsifC (p, s^.elsifF.elsif) +@@ -9833,16 +10022,8 @@ END doAdrArgC ; + + PROCEDURE doAdrC (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL +- THEN +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- doAdrArgC (p, getExpList (n^.funccallF.args, 1)) +- END +- ELSE +- +- END ++ assert (isUnary (n)) ; ++ doAdrArgC (p, n^.unaryF.arg) + END doAdrC ; + + +@@ -9852,7 +10033,7 @@ END doAdrC ; + + PROCEDURE doInc (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; ++ assert (isIntrinsic (n)) ; + IF lang = ansiCP + THEN + doIncDecCP (p, n, "+") +@@ -9868,7 +10049,7 @@ END doInc ; + + PROCEDURE doDec (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; ++ assert (isIntrinsic (n)) ; + IF lang = ansiCP + THEN + doIncDecCP (p, n, "-") +@@ -9884,18 +10065,18 @@ END doDec ; + + PROCEDURE doIncDecC (p: pretty; n: node; op: ARRAY OF CHAR) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args # NIL + THEN +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; + setNeedSpace (p) ; + outText (p, op) ; + setNeedSpace (p) ; +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + outText (p, '1') + ELSE +- doExprC (p, getExpList (n^.funccallF.args, 2)) ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) + END + END + END doIncDecC ; +@@ -9907,14 +10088,16 @@ END doIncDecC ; + + PROCEDURE doIncDecCP (p: pretty; n: node; op: ARRAY OF CHAR) ; + VAR ++ lhs, + type: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args # NIL + THEN +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ lhs := getExpList (n^.intrinsicF.args, 1) ; ++ doExprC (p, lhs) ; + setNeedSpace (p) ; +- type := getType (getExpList (n^.funccallF.args, 1)) ; ++ type := getType (lhs) ; + IF isPointer (type) OR (type = addressN) + THEN + (* cast to (char * ) and then back again after the arithmetic is complete. *) +@@ -9924,15 +10107,15 @@ BEGIN + doTypeNameC (p, type) ; + noSpace (p) ; + outText (p, '> (reinterpret_cast (') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, lhs) ; + noSpace (p) ; + outText (p, ')') ; + outText (p, op) ; +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + outText (p, '1') + ELSE +- doExprC (p, getExpList (n^.funccallF.args, 2)) ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) + END ; + outText (p, ')') + ELSIF isEnumeration (skipType (type)) +@@ -9941,25 +10124,25 @@ BEGIN + doTypeNameC (p, type) ; + noSpace (p) ; + outText (p, ">(static_cast(") ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, lhs) ; + outText (p, ")") ; + outText (p, op) ; +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + outText (p, '1') + ELSE +- doExprC (p, getExpList (n^.funccallF.args, 2)) ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) + END ; + outText (p, ")") + ELSE + outText (p, op) ; + outText (p, "=") ; + setNeedSpace (p) ; +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + outText (p, '1') + ELSE +- doExprC (p, getExpList (n^.funccallF.args, 2)) ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) + END + END + END +@@ -9974,13 +10157,13 @@ PROCEDURE doInclC (p: pretty; n: node) ; + VAR + lo: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args # NIL + THEN +- IF expListLen (n^.funccallF.args) = 2 ++ IF expListLen (n^.intrinsicF.args) = 2 + THEN +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; +- lo := getSetLow (getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; ++ lo := getSetLow (getExpList (n^.intrinsicF.args, 1)) ; + setNeedSpace (p) ; + outText (p, '|=') ; + setNeedSpace (p) ; +@@ -9989,7 +10172,7 @@ BEGIN + outText (p, '<<') ; + setNeedSpace (p) ; + outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 2)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) ; + doSubtractC (p, lo) ; + setNeedSpace (p) ; + outText (p, '))') +@@ -10008,13 +10191,13 @@ PROCEDURE doExclC (p: pretty; n: node) ; + VAR + lo: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args # NIL + THEN +- IF expListLen (n^.funccallF.args) = 2 ++ IF expListLen (n^.intrinsicF.args) = 2 + THEN +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; +- lo := getSetLow (getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; ++ lo := getSetLow (getExpList (n^.intrinsicF.args, 1)) ; + setNeedSpace (p) ; + outText (p, '&=') ; + setNeedSpace (p) ; +@@ -10023,7 +10206,7 @@ BEGIN + outText (p, '<<') ; + setNeedSpace (p) ; + outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 2)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) ; + doSubtractC (p, lo) ; + setNeedSpace (p) ; + outText (p, ')))') +@@ -10042,12 +10225,12 @@ PROCEDURE doNewC (p: pretty; n: node) ; + VAR + t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args = NIL + THEN + HALT + ELSE +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + keyc.useStorage ; + outText (p, 'Storage_ALLOCATE') ; +@@ -10055,10 +10238,10 @@ BEGIN + outText (p, '((void **)') ; + setNeedSpace (p) ; + outText (p, '&') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; + outText (p, ',') ; + setNeedSpace (p) ; +- t := skipType (getType (getExpList (n^.funccallF.args, 1))) ; ++ t := skipType (getType (getExpList (n^.intrinsicF.args, 1))) ; + IF isPointer (t) + THEN + t := getType (t) ; +@@ -10084,12 +10267,12 @@ PROCEDURE doDisposeC (p: pretty; n: node) ; + VAR + t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL ++ assert (isIntrinsic (n)) ; ++ IF n^.intrinsicF.args = NIL + THEN + HALT + ELSE +- IF expListLen (n^.funccallF.args) = 1 ++ IF expListLen (n^.intrinsicF.args) = 1 + THEN + keyc.useStorage ; + outText (p, 'Storage_DEALLOCATE') ; +@@ -10097,10 +10280,10 @@ BEGIN + outText (p, '((void **)') ; + setNeedSpace (p) ; + outText (p, '&') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; + outText (p, ',') ; + setNeedSpace (p) ; +- t := skipType (getType (getExpList (n^.funccallF.args, 1))) ; ++ t := skipType (getType (getExpList (n^.intrinsicF.args, 1))) ; + IF isPointer (t) + THEN + t := getType (t) ; +@@ -10126,22 +10309,17 @@ END doDisposeC ; + + PROCEDURE doCapC (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL ++ assert (isUnary (n)) ; ++ IF n^.unaryF.arg = NIL + THEN +- HALT ++ HALT (* metaError0 ('expecting a single parameter to CAP') *) + ELSE +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- keyc.useCtype ; +- outText (p, 'toupper') ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; +- outText (p, ')') +- ELSE +- HALT (* metaError0 ('expecting a single parameter to CAP') *) +- END ++ keyc.useCtype ; ++ outText (p, 'toupper') ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ')') + END + END doCapC ; + +@@ -10151,29 +10329,21 @@ END doCapC ; + *) + + PROCEDURE doLengthC (p: pretty; n: node) ; +-VAR +- v: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL ++ assert (isUnary (n)) ; ++ IF n^.unaryF.arg = NIL + THEN +- HALT ++ HALT (* metaError0 ('expecting a single parameter to LENGTH') *) + ELSE +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- keyc.useM2RTS ; +- outText (p, 'M2RTS_Length') ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- v := getExpList (n^.funccallF.args, 1) ; +- doExprC (p, v) ; +- outText (p, ',') ; +- setNeedSpace (p) ; +- doFuncHighC (p, v) ; +- outText (p, ')') +- ELSE +- HALT (* metaError0 ('expecting a single parameter to LENGTH') *) +- END ++ keyc.useM2RTS ; ++ outText (p, 'M2RTS_Length') ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ',') ; ++ setNeedSpace (p) ; ++ doFuncHighC (p, n^.unaryF.arg) ; ++ outText (p, ')') + END + END doLengthC ; + +@@ -10186,12 +10356,12 @@ PROCEDURE doAbsC (p: pretty; n: node) ; + VAR + t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1) ++ assert (isUnary (n)) ; ++ IF n^.unaryF.arg = NIL + THEN +- t := getExprType (n) +- ELSE + HALT ++ ELSE ++ t := getExprType (n) + END ; + IF t = longintN + THEN +@@ -10216,7 +10386,9 @@ BEGIN + HALT + END ; + setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) ++ outText (p, "(") ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ")") + END doAbsC ; + + +@@ -10226,24 +10398,14 @@ END doAbsC ; + + PROCEDURE doValC (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL +- THEN +- HALT +- ELSE +- IF expListLen (n^.funccallF.args) = 2 +- THEN +- outText (p, '(') ; +- doTypeNameC (p, getExpList (n^.funccallF.args, 1)) ; +- outText (p, ')') ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 2)) ; +- outText (p, ')') +- ELSE +- HALT +- END +- END ++ assert (isBinary (n)) ; ++ outText (p, '(') ; ++ doTypeNameC (p, n^.binaryF.left) ; ++ outText (p, ')') ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ doExprC (p, n^.binaryF.right) ; ++ outText (p, ')') + END doValC ; + + +@@ -10253,22 +10415,11 @@ END doValC ; + + PROCEDURE doMinC (p: pretty; n: node) ; + VAR +- t, a: node ; ++ t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL +- THEN +- HALT +- ELSE +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- a := getExpList (n^.funccallF.args, 1) ; +- t := getExprType (a) ; +- doExprC (p, getMin (t)) ; +- ELSE +- HALT +- END +- END ++ assert (isUnary (n)) ; ++ t := getExprType (n^.unaryF.arg) ; ++ doExprC (p, getMin (t)) ; + END doMinC ; + + +@@ -10278,62 +10429,34 @@ END doMinC ; + + PROCEDURE doMaxC (p: pretty; n: node) ; + VAR +- t, a: node ; ++ t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args = NIL +- THEN +- HALT +- ELSE +- IF expListLen (n^.funccallF.args) = 1 +- THEN +- a := getExpList (n^.funccallF.args, 1) ; +- t := getExprType (a) ; +- doExprC (p, getMax (t)) ; +- ELSE +- HALT +- END +- END ++ assert (isUnary (n)) ; ++ t := getExprType (n^.unaryF.arg) ; ++ doExprC (p, getMax (t)) ; + END doMaxC ; + + + (* +- isIntrinsic - returns if, n, is an instrinsic procedure. ++ isIntrinsic - returns if, n, is an intrinsic procedure. ++ The intrinsic functions are represented as unary and binary nodes. + *) + + PROCEDURE isIntrinsic (n: node) : BOOLEAN ; + BEGIN +- CASE n^.funccallF.function^.kind OF ++ CASE n^.kind OF + +- halt, +- max, +- min, +- cast, +- val, +- adr, +- size, +- tsize, +- float, +- trunc, +- ord, +- chr, +- cap, +- abs, +- im, +- re, +- cmplx, +- high, ++ throw, + inc, + dec, + incl, + excl, + new, + dispose, +- length, +- throw : RETURN TRUE ++ halt : RETURN TRUE + + ELSE +- RETURN isFuncCall (n) AND (n^.funccallF.function = haltN) ++ RETURN FALSE + END + END isIntrinsic ; + +@@ -10344,18 +10467,18 @@ END isIntrinsic ; + + PROCEDURE doHalt (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF (n^.funccallF.args = NIL) OR (expListLen (n^.funccallF.args) = 0) ++ assert (n^.kind = halt) ; ++ IF (n^.intrinsicF.args = NIL) OR (expListLen (n^.intrinsicF.args) = 0) + THEN + outText (p, 'M2RTS_HALT') ; + setNeedSpace (p) ; + outText (p, '(-1)') +- ELSIF expListLen (n^.funccallF.args) = 1 ++ ELSIF expListLen (n^.intrinsicF.args) = 1 + THEN + outText (p, 'M2RTS_HALT') ; + setNeedSpace (p) ; + outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; ++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ; + outText (p, ')') + END + END doHalt ; +@@ -10369,10 +10492,10 @@ PROCEDURE doReC (p: pretty; n: node) ; + VAR + t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1) ++ assert (n^.kind = re) ; ++ IF n^.unaryF.arg # NIL + THEN +- t := getExprType (n) ++ t := getExprType (n^.unaryF.arg) + ELSE + HALT + END ; +@@ -10384,7 +10507,9 @@ BEGIN + HALT + END ; + setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) ++ outText (p, '(') ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ')') + END doReC ; + + +@@ -10396,10 +10521,10 @@ PROCEDURE doImC (p: pretty; n: node) ; + VAR + t: node ; + BEGIN +- assert (isFuncCall (n)) ; +- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1) ++ assert (n^.kind = im) ; ++ IF n^.unaryF.arg # NIL + THEN +- t := getExprType (n) ++ t := getExprType (n^.unaryF.arg) + ELSE + HALT + END ; +@@ -10411,7 +10536,9 @@ BEGIN + HALT + END ; + setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) ++ outText (p, '(') ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ')') + END doImC ; + + +@@ -10421,32 +10548,22 @@ END doImC ; + + PROCEDURE doCmplx (p: pretty; n: node) ; + BEGIN +- assert (isFuncCall (n)) ; +- IF n^.funccallF.args # NIL +- THEN +- IF expListLen (n^.funccallF.args) = 2 +- THEN +- keyc.useComplex ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 1)) ; +- outText (p, ')') ; +- setNeedSpace (p) ; +- outText (p, '+') ; +- setNeedSpace (p) ; +- outText (p, '(') ; +- doExprC (p, getExpList (n^.funccallF.args, 2)) ; +- setNeedSpace (p) ; +- outText (p, '*') ; +- setNeedSpace (p) ; +- outText (p, 'I') ; +- outText (p, ')') ; +- ELSE +- HALT (* metaError0 ('expecting two parameters to CMPLX') *) +- END +- ELSE +- HALT (* metaError0 ('expecting two parameters to CMPLX') *) +- END ++ assert (isBinary (n)) ; ++ keyc.useComplex ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ doExprC (p, n^.binaryF.left) ; ++ outText (p, ')') ; ++ setNeedSpace (p) ; ++ outText (p, '+') ; ++ setNeedSpace (p) ; ++ outText (p, '(') ; ++ doExprC (p, n^.binaryF.right) ; ++ setNeedSpace (p) ; ++ outText (p, '*') ; ++ setNeedSpace (p) ; ++ outText (p, 'I') ; ++ outText (p, ')') + END doCmplx ; + + +@@ -10456,53 +10573,110 @@ END doCmplx ; + + PROCEDURE doIntrinsicC (p: pretty; n: node) ; + BEGIN +- IF n^.funccallF.function = haltN +- THEN +- doHalt (p, n) +- ELSE +- CASE n^.funccallF.function^.kind OF ++ assert (isIntrinsic (n)) ; ++ doCommentC (p, n^.intrinsicF.intrinsicComment.body) ; ++ CASE n^.kind OF + +- halt: doHalt (p, n) | +- val: doValC (p, n) | +- adr: doAdrC (p, n) | +- size, +- tsize: outText (p, "sizeof") ; +- setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) | +- float: outText (p, "(double)") ; +- setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) | +- trunc: outText (p, "(int)") ; +- setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) | +- ord: outText (p, "(unsigned int)") ; +- setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) | +- chr: outText (p, "(char)") ; +- setNeedSpace (p) ; +- doFuncArgsC (p, n, NIL, TRUE) | +- cap: doCapC (p, n) | +- abs: doAbsC (p, n) | +- high: doFuncHighC (p, getExpList (n^.funccallF.args, 1)) | +- inc: doInc (p, n) | +- dec: doDec (p, n) | +- incl: doInclC (p, n) | +- excl: doExclC (p, n) | +- new: doNewC (p, n) | +- dispose: doDisposeC (p, n) | +- length: doLengthC (p, n) | +- min: doMinC (p, n) | +- max: doMaxC (p, n) | +- throw: doThrowC (p, n) | +- re: doReC (p, n) | +- im: doImC (p, n) | +- cmplx: doCmplx (p, n) ++ throw: doThrowC (p, n) | ++ halt: doHalt (p, n) | ++ inc: doInc (p, n) | ++ dec: doDec (p, n) | ++ incl: doInclC (p, n) | ++ excl: doExclC (p, n) | ++ new: doNewC (p, n) | ++ dispose: doDisposeC (p, n) + +- END +- END ++ END ; ++ outText (p, ";") ; ++ doAfterCommentC (p, n^.intrinsicF.intrinsicComment.after) + END doIntrinsicC ; + + ++(* ++ isIntrinsicFunction - returns true if, n, is an instrinsic function. ++*) ++ ++PROCEDURE isIntrinsicFunction (n: node) : BOOLEAN ; ++BEGIN ++ CASE n^.kind OF ++ ++ val, ++ adr, ++ size, ++ tsize, ++ float, ++ trunc, ++ ord, ++ chr, ++ cap, ++ abs, ++ high, ++ length, ++ min, ++ max, ++ throw, ++ re, ++ im, ++ cmplx: RETURN TRUE ++ ++ ELSE ++ RETURN FALSE ++ END ++END isIntrinsicFunction ; ++ ++ ++(* ++ doSizeC - ++*) ++ ++PROCEDURE doSizeC (p: pretty; n: node) ; ++BEGIN ++ assert (isUnary (n)) ; ++ outText (p, "sizeof (") ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, ")") ++END doSizeC ; ++ ++ ++(* ++ doConvertC - ++*) ++ ++PROCEDURE doConvertC (p: pretty; n: node; conversion: ARRAY OF CHAR) ; ++BEGIN ++ assert (isUnary (n)) ; ++ setNeedSpace (p) ; ++ outText (p, "(") ; ++ outText (p, conversion) ; ++ setNeedSpace (p) ; ++ outText (p, "(") ; ++ doExprC (p, n^.unaryF.arg) ; ++ outText (p, "))") ++END doConvertC ; ++ ++ ++(* not needed? ++ val: doValC (p, n) | ++ adr: doAdrC (p, n) | ++ size, ++ tsize: doSizeC (p, n) | ++ float: doConvertC (p, n, "(double)") | ++ trunc: doConvertC (p, n, "(int)") | ++ ord: doConvertC (p, n, "(unsigned int)") | ++ chr: doConvertC (p, n, "(char)") | ++ cap: doCapC (p, n) | ++ abs: doAbsC (p, n) | ++ high: doFuncHighC (p, n^.unaryF.arg, 1)) | ++ length: doLengthC (p, n) | ++ min: doMinC (p, n) | ++ max: doMaxC (p, n) | ++ throw: doThrowC (p, n) | ++ re: doReC (p, n) | ++ im: doImC (p, n) | ++ cmplx: doCmplx (p, n) ++*) ++ ++ + (* + getFuncFromExpr - + *) +@@ -10526,10 +10700,7 @@ VAR + t: node ; + BEGIN + assert (isFuncCall (n)) ; +- IF isIntrinsic (n) +- THEN +- doIntrinsicC (p, n) +- ELSIF isProcedure (n^.funccallF.function) ++ IF isProcedure (n^.funccallF.function) + THEN + doFQDNameC (p, n^.funccallF.function, TRUE) ; + setNeedSpace (p) ; +@@ -11013,6 +11184,9 @@ BEGIN + ELSIF isWhile (s) + THEN + doWhileC (p, s) ++ ELSIF isIntrinsic (s) ++ THEN ++ doIntrinsicC (p, s) + ELSIF isFuncCall (s) + THEN + doFuncCallC (p, s) +@@ -11097,7 +11271,7 @@ END includeParameters ; + + PROCEDURE isHalt (n: node) : BOOLEAN ; + BEGIN +- RETURN (n^.funccallF.function = haltN) OR (n^.funccallF.function^.kind = halt) ++ RETURN n^.kind = halt + END isHalt ; + + +@@ -12130,6 +12304,10 @@ BEGIN + (* expressions. *) + componentref : RETURN walkComponentRef (l, n) | + pointerref : RETURN walkPointerRef (l, n) | ++ not, ++ abs, ++ min, ++ max, + chr, + cap, + ord, +@@ -12215,6 +12393,7 @@ END tryCompleteFromPartial ; + + PROCEDURE visitUnary (v: alist; n: node; p: nodeProcedure) ; + BEGIN ++ assert (isUnary (n)) ; + WITH n^.unaryF DO + visitNode (v, arg, p) ; + visitNode (v, resultType, p) +@@ -12848,6 +13027,17 @@ BEGIN + END visitSetValue ; + + ++(* ++ visitIntrinsic - ++*) ++ ++PROCEDURE visitIntrinsic (v: alist; n: node; p: nodeProcedure) ; ++BEGIN ++ assert (isIntrinsic (n)) ; ++ visitNode (v, n^.intrinsicF.args, p) ++END visitIntrinsic ; ++ ++ + (* + visitDependants - helper procedure function called from visitNode. + node n has just been visited, this procedure will +@@ -12866,14 +13056,15 @@ BEGIN + return : visitReturn (v, n, p) | + stmtseq : visitStmtSeq (v, n, p) | + comment : | +- halt : (* handled in funccall. *) | +- new : (* handled in funccall. *) | +- dispose : (* handled in funccall. *) | +- length : (* handled in funccall. *) | +- inc : (* handled in funccall. *) | +- dec : (* handled in funccall. *) | +- incl : (* handled in funccall. *) | +- excl : (* handled in funccall. *) | ++ throw, ++ halt, ++ new, ++ dispose, ++ length, ++ inc, ++ dec, ++ incl, ++ excl : visitIntrinsic (v, n, p) | + boolean : visitBoolean (v, n, p) | + nil, + false, +@@ -12962,29 +13153,28 @@ BEGIN + div, + mod, + mult, +- divide : visitBinary (v, n, p) | +- re, +- im, +- abs, +- chr, +- cap, +- high, +- ord, +- float, +- trunc, +- not, +- neg, +- adr, +- size, +- tsize, +- min, +- max, +- throw, +- constexp, +- deref : visitUnary (v, n, p) | +- identlist : | +- vardecl : visitVarDecl (v, n, p) | +- setvalue : visitSetValue (v, n, p) ++ divide : visitBinary (v, n, p) | ++ re : visitUnary (v, n, p) | ++ im : visitUnary (v, n, p) | ++ abs : visitUnary (v, n, p) | ++ chr : visitUnary (v, n, p) | ++ cap : visitUnary (v, n, p) | ++ high : visitUnary (v, n, p) | ++ ord : visitUnary (v, n, p) | ++ float : visitUnary (v, n, p) | ++ trunc : visitUnary (v, n, p) | ++ not : visitUnary (v, n, p) | ++ neg : visitUnary (v, n, p) | ++ adr : visitUnary (v, n, p) | ++ size : visitUnary (v, n, p) | ++ tsize : visitUnary (v, n, p) | ++ min : visitUnary (v, n, p) | ++ max : visitUnary (v, n, p) | ++ constexp : visitUnary (v, n, p) | ++ deref : visitUnary (v, n, p) | ++ identlist : | ++ vardecl : visitVarDecl (v, n, p) | ++ setvalue : visitSetValue (v, n, p) + + END + END visitDependants ; +@@ -14885,6 +15075,14 @@ PROCEDURE addGenericBody (n, c: node); + BEGIN + CASE n^.kind OF + ++ throw, ++ halt, ++ new, ++ dispose, ++ inc, ++ dec, ++ incl, ++ excl : n^.intrinsicF.intrinsicComment.body := c | + funccall : n^.funccallF.funccallComment.body := c | + return : n^.returnF.returnComment.body := c | + assignment: n^.assignmentF.assignComment.body := c | +@@ -14906,6 +15104,14 @@ PROCEDURE addGenericAfter (n, c: node); + BEGIN + CASE n^.kind OF + ++ throw, ++ halt, ++ new, ++ dispose, ++ inc, ++ dec, ++ incl, ++ excl : n^.intrinsicF.intrinsicComment.after := c | + funccall : n^.funccallF.funccallComment.after := c | + return : n^.returnF.returnComment.after := c | + assignment: n^.assignmentF.assignComment.after := c | +@@ -15892,7 +16098,6 @@ BEGIN + float, + trunc, + ord, +- throw, + not, + neg, + adr, +--- a/src/gcc/gm2/tools-src/array2index.py ++++ b/src/gcc/gm2/tools-src/array2index.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2010 + # Free Software Foundation, Inc. +@@ -35,7 +35,7 @@ lines = [] # global copy of the input lines of text. + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -43,7 +43,7 @@ def printf (format, *args): + # + + def fatal (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + os.sys.exit(1) + + # +@@ -51,7 +51,7 @@ def fatal (format, *args): + # + + def debug(s): +- print "*", s, "*" ++ print("*", s, "*") + + # + # putNext - pushes, i, to be the next line read when +@@ -164,20 +164,20 @@ def setVarIndent (v, n): + # + + def adjustVar (v, d): +- print v, d ++ print(v, d) + if d != {}: + if v == []: + h = ['VAR\n'] + t = [] +- if d.has_key('pCall'): ++ if 'pCall' in d: + v = h + [' pCall: PtrToCallFrame ;\n'] + t +- if d.has_key('pSym'): ++ if 'pSym' in d: + v = h + [' pSym: PtrToSymbol ;\n'] + t + else: + h = v[0] +- if d.has_key('pCall'): ++ if 'pCall' in d: + v = [h] + [' pCall: PtrToCallFrame ;\n'] + v[1:] +- if d.has_key('pSym'): ++ if 'pSym' in d: + v = [h] + [' pSym: PtrToSymbol ;\n'] + v[1:] + v = setVarIndent(v, getMaxIndent(v)) + return v +@@ -212,7 +212,7 @@ def scanStatements (): + n = getIndent(i) + y = i.find('[', x)+1 + z = i.find(']', y) +- print "indexing ", i[y:z] ++ print("indexing ", i[y:z]) + d['pSym'] = i[y:z] + j = n * ' ' + j += 'pSym := GetPsym(%s) ;\n' % i[y:z] +@@ -224,7 +224,7 @@ def scanStatements (): + n = getIndent(i) + y = i.find('[', x)+1 + z = i.find(']', y) +- print "indexing ", i[y:z] ++ print("indexing ", i[y:z]) + d['pCall'] = i[y:z] + j = n * ' ' + j += 'pCall := GetPcall(%s) ;\n' % i[y:z] +@@ -262,7 +262,7 @@ def scanProcedure (): + if isVar(i): + v = [i] + v += scanVar() +- print v ++ print(v) + elif isBegin(i): + s, d = scanStatements() + v = adjustVar(v, d) +@@ -289,7 +289,7 @@ def scanLines (l): + while not isEof(i): + o += i + if isProcedure(i): +- print i ++ print(i) + o += scanProcedure() + i = getNext() + return o +@@ -300,7 +300,7 @@ def scanLines (l): + # + + def Usage(): +- print "array2index.py [-h][-o outputfile] inputfile" ++ print("array2index.py [-h][-o outputfile] inputfile") + + + # +--- a/src/gcc/gm2/tools-src/buildsyntax ++++ b/src/gcc/gm2/tools-src/buildsyntax +@@ -8,21 +8,21 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3, or (at your option) + # any later version. +-# ++# + # GNU Modula-2 is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with GNU Modula-2; see the file COPYING. If not, write to the + # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# 02110-1301, USA. + # + + TMPFILE=/tmp/t.$$ + +-function buildpass1 () { ++buildpass1 () { + if [ -x ../bin3/pg ] ; then + if ../bin3/pg ../bnf/m2.bnf > $TMPFILE ; then + cat $TMPFILE | sed -e "s/WHICHPASS1/TRUE/" > P1SyntaxCheck.mod +@@ -36,7 +36,7 @@ function buildpass1 () { + fi + } + +-function buildpass2 () { ++buildpass2 () { + if [ -x ../bin3/pg ] ; then + if ../bin3/pg ../bnf/m2-2.bnf > $TMPFILE ; then + cat $TMPFILE | sed -e "s/WHICHPASS2/TRUE/" > P2Build.mod +@@ -50,7 +50,7 @@ function buildpass2 () { + fi + } + +-function buildpass3 () { ++buildpass3 () { + if [ -x ../bin3/pg ] ; then + if ../bin3/pg ../bnf/m2-3.bnf > $TMPFILE ; then + cat $TMPFILE | sed -e "s/WHICHPASS3/TRUE/" > P3Build.mod +@@ -64,7 +64,7 @@ function buildpass3 () { + fi + } + +-function buildpassH () { ++buildpassH () { + if [ -x ../bin3/pg ] ; then + if ../bin3/pg ../bnf/m2-h.bnf > $TMPFILE ; then + cat $TMPFILE | sed -e "s/WHICHPASS3/TRUE/" > PHBuild.mod +@@ -82,7 +82,7 @@ function buildpassH () { + # buildsyntax - build the pass 1 parser with error recovery + # + +-function buildsyntax () { ++buildsyntax () { + buildpass1 + buildpass2 + buildpass3 +--- a/src/gcc/gm2/tools-src/def2texi.py ++++ b/src/gcc/gm2/tools-src/def2texi.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 2009, + # 2010 +@@ -9,22 +9,21 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3, or (at your option) + # any later version. +-# ++# + # GNU Modula-2 is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with GNU Modula-2; see the file COPYING. If not, write to the + # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# 02110-1301, USA. + # + + import sys + import os + import glob +-import string + import getopt + + libraryClassifications = [['gm2-libs','Base libraries', +@@ -59,12 +58,12 @@ def displayLibraryClass(): + l = libraryClassifications[i] + + while True: +- print "@node " + l[1] + ", " + next + ", " + previous + ", " + up +- print "@section " + l[1] +- print "" ++ print("@node " + l[1] + ", " + next + ", " + previous + ", " + up) ++ print("@section " + l[1]) ++ print("") + displayModules(l[1], l[0], buildDir, sourceDir) +- print "" +- print "@c ---------------------------------------------------------------------" ++ print("") ++ print("@c ---------------------------------------------------------------------") + previous = l[1] + i += 1 + if i == len(libraryClassifications): +@@ -80,14 +79,14 @@ def displayLibraryClass(): + # + + def displayMenu(): +- print "@menu" ++ print("@menu") + for l in libraryClassifications: +- print "* " + l[1] + "::" + l[2] +- print "@end menu" ++ print("* " + l[1] + "::" + l[2]) ++ print("@end menu") + +- print "\n" +- print "@c =====================================================================" +- print "\n" ++ print("\n") ++ print("@c =====================================================================") ++ print("\n") + + + # +@@ -95,39 +94,38 @@ def displayMenu(): + # + + def removeInitialComments (file, line): +- while (string.find(line, "*)") == -1): ++ while (line.find("*)") == -1): + line = file.readline() +- ++ + # + # removeFields - removes Author/Date/Last edit/SYSTEM/Revision fields from a comment within the start + # of a definition module + # + + def removeFields (file, line): +- while (string.find(line, "*)") == -1): +- if (string.find(line, "Author") != -1) and (string.find(line, ":") != -1): ++ while (line.find("*)") == -1): ++ if (line.find("Author") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "Last edit") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("Last edit") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "LastEdit") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("LastEdit") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "Last update") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("Last update") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "Date") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("Date") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "Title") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("Title") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "Revision") != -1) and (string.find(line, ":") != -1): ++ elif (line.find("Revision") != -1) and (line.find(":") != -1): + line = file.readline() +- elif (string.find(line, "System") != -1) and (string.find(line, ":") != -1) and (string.find(line, "Description:") == -1): ++ elif (line.find("System") != -1) and (line.find(":") != -1) and (line.find("Description:") == -1): + line = file.readline() +- elif (string.find(line, "SYSTEM") != -1) and (string.find(line, ":") != -1) and (string.find(line, "Description:") == -1): ++ elif (line.find("SYSTEM") != -1) and (line.find(":") != -1) and (line.find("Description:") == -1): + line = file.readline() + else: +- print string.replace(string.replace(string.rstrip(line), +- "{", "@{"), "}", "@}") ++ print(line.rstrip().replace("{", "@{").replace("}", "@}")) + line = file.readline() +- print string.rstrip(line) ++ print(line.rstrip()) + + + # +@@ -136,8 +134,8 @@ def removeFields (file, line): + + def checkIndex (line): + global inVar, inType, inConst +- +- words = string.split(line) ++ ++ words = line.split() + procedure = "" + if (len(words)>1) and (words[0] == "PROCEDURE"): + inConst = False +@@ -168,48 +166,48 @@ def checkIndex (line): + inVar = False + + if inVar: +- words = string.split(line, ',') ++ words = line.split(',') + for word in words: +- word = string.lstrip(word) ++ word = word.lstrip() + if word != "": +- if string.find(word, ':') == -1: +- print "@findex " + word + " (var)" ++ if word.find(':') == -1: ++ print("@findex " + word + " (var)") + elif len(word)>0: +- var = string.split(word, ':') ++ var = word.split(':') + if len(var)>0: +- print "@findex " + var[0] + " (var)" ++ print("@findex " + var[0] + " (var)") + + if inType: +- words = string.lstrip(line) +- if string.find(words, '=') != -1: +- word = string.split(words, "=") ++ words = line.lstrip() ++ if words.find('=') != -1: ++ word = words.split("=") + if (len(word[0])>0) and (word[0][0] != '_'): +- print "@findex " + string.rstrip(word[0]) + " (type)" ++ print("@findex " + word[0].rstrip() + " (type)") + else: +- word = string.split(words) ++ word = words.split() + if (len(word)>1) and (word[1] == ';'): + # hidden type + if (len(word[0])>0) and (word[0][0] != '_'): +- print "@findex " + string.rstrip(word[0]) + " (type)" ++ print("@findex " + word[0].rstrip() + " (type)") + + if inConst: +- words = string.split(line, ';') ++ words = line.split(';') + for word in words: +- word = string.lstrip(word) ++ word = word.lstrip() + if word != "": +- if string.find(word, '=') != -1: +- var = string.split(word, '=') ++ if word.find('=') != -1: ++ var = word.split('=') + if len(var)>0: +- print "@findex " + var[0] + " (const)" ++ print("@findex " + var[0] + " (const)") + + if procedure != "": +- name = string.split(procedure, "(") ++ name = procedure.split("(") + if name[0] != "": + proc = name[0] + if proc[-1] == ";": + proc = proc[:-1] + if proc != "": +- print "@findex " + proc ++ print("@findex " + proc) + + + # +@@ -217,40 +215,39 @@ def checkIndex (line): + # + + def parseDefinition (dir, source, build, file, needPage): +- print "" ++ print("") + f = open(findFile(dir, build, source, file), 'r') + initState() + line = f.readline() +- while (string.find(line, "(*") != -1): ++ while (line.find("(*") != -1): + removeInitialComments(f, line) + line = f.readline() + +- while (string.find(line, "DEFINITION") == -1): ++ while (line.find("DEFINITION") == -1): + line = f.readline() + +- print "@example" +- print string.rstrip(line) ++ print("@example") ++ print(line.rstrip()) + line = f.readline() +- if len(string.rstrip(line)) == 0: +- print string.replace(string.replace(string.rstrip(line), +- "{", "@{"), "}", "@}") ++ if len(line.rstrip()) == 0: ++ print(line.rstrip().replace("{", "@{").replace("}", "@}")) + line = f.readline() +- if (string.find(line, "(*") != -1): ++ if (line.find("(*") != -1): + removeFields(f, line) + else: +- print string.rstrip(line) ++ print(line.rstrip()) + else: +- print string.rstrip(line) ++ print(line.rstrip()) + + line = f.readline() + while line: +- line = string.rstrip(line) +- checkIndex(line) +- print string.replace(string.replace(line, "{", "@{"), "}", "@}") ++ line = line.rstrip() ++ checkIndex(line) ++ print(line.replace("{", "@{").replace("}", "@}")) + line = f.readline() +- print "@end example" ++ print("@end example") + if needPage: +- print "@page" ++ print("@page") + f.close() + + def parseModules (up, dir, build, source, listOfModules): +@@ -262,10 +259,10 @@ def parseModules (up, dir, build, source, listOfModules): + next = "" + + while i4) and (file[-4:] == '.def'): +- print "* " + dir + "/" + file[:-4] + "::" + file +- print "@end menu" +- print "\n" ++ print("* " + dir + "/" + file[:-4] + "::" + file) ++ print("@end menu") ++ print("\n") + + + # +@@ -347,7 +344,7 @@ def findFile (dir, build, source, file): + name2 = os.path.join(os.path.join(source, dir), file) + if os.path.exists(name2): + return name2 +- print "file cannot be found in either " + name1 + " or " + name2 ++ print("file cannot be found in either " + name1 + " or " + name2) + os.sys.exit(1) + + +@@ -367,7 +364,7 @@ def displayModules(up, dir, build, source): + listOfFiles += os.listdir(os.path.join(source, dir)) + if os.path.exists(os.path.join(source, dir)): + listOfFiles += os.listdir(os.path.join(build, dir)) +- listOfFiles = dict.fromkeys(listOfFiles).keys() ++ listOfFiles = list(dict.fromkeys(listOfFiles).keys()) + listOfFiles.sort() + listOfModules = [] + for file in listOfFiles: +@@ -377,21 +374,21 @@ def displayModules(up, dir, build, source): + listOfModules.sort() + parseModules(up, dir, build, source, listOfModules) + else: +- print "directory " + dir + " not found in either " + build + " or " + source ++ print("directory " + dir + " not found in either " + build + " or " + source) + + + def displayCopyright (): +- print "@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008" +- print "@c Free Software Foundation, Inc." +- print """ ++ print("@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008") ++ print("@c Free Software Foundation, Inc.") ++ print(""" + @c Permission is granted to copy, distribute and/or modify this document + @c under the terms of the GNU Free Documentation License, Version 1.2 or + @c any later version published by the Free Software Foundation. +-""" ++""") + + def Usage(): +- print "def2texi.py [-h][-bbuilddir][-uupnode][-ffilename]" +- ++ print("def2texi.py [-h][-bbuilddir][-uupnode][-ffilename]") ++ + def collectArgs(): + buildDir="." + sourceDir="." +--- a/src/gcc/gm2/tools-src/gensum.py ++++ b/src/gcc/gm2/tools-src/gensum.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python3 + # + # gensum.py a utility for summarizing the regression tests into html. + # +@@ -59,9 +59,9 @@ class testcase: + def usage (code): + global noColumns + +- print "gensum [-h] [-c number] filename.sum {filename.sum}" +- print " -c number of columns per architectural table (default", noColumns, ")" +- print " -h help" ++ print("gensum [-h] [-c number] filename.sum {filename.sum}") ++ print(" -c number of columns per architectural table (default", noColumns, ")") ++ print(" -h help") + sys.exit (code) + + +@@ -104,18 +104,18 @@ def scanner (name, function): + def addPassResult (name, varient): + global regressionTests, configuration, passStats + +- if not regressionTests.has_key (configuration): ++ if configuration not in regressionTests: + regressionTests[configuration] = {} + + arch = regressionTests[configuration] +- if arch.has_key (name): ++ if name in arch: + t = arch[name] + else: + t = testcase (name) + t.addPass (varient) + arch[name] = t + regressionTests[configuration] = arch +- if passStats.has_key (configuration): ++ if configuration in passStats: + passStats[configuration] += 1 + else: + passStats[configuration] = 1 +@@ -128,18 +128,18 @@ def addPassResult (name, varient): + def addFailResult (name, varient): + global regressionTests, configuration, failStats + +- if not regressionTests.has_key (configuration): ++ if configuration not in regressionTests: + regressionTests[configuration] = {} + + arch = regressionTests[configuration] +- if arch.has_key (name): ++ if name in arch: + t = arch[name] + else: + t = testcase (name) + t.addFail (varient) + arch[name] = t + regressionTests[configuration] = arch +- if failStats.has_key (configuration): ++ if configuration in failStats: + failStats[configuration] += 1 + else: + failStats[configuration] = 1 +@@ -153,18 +153,18 @@ def addFailResult (name, varient): + def addUnresolvedResult (name, varient, reason): + global regressionTests, configuration, unresolvedStats + +- if not regressionTests.has_key (configuration): ++ if configuration not in regressionTests: + regressionTests[configuration] = {} + + arch = regressionTests[configuration] +- if arch.has_key (name): ++ if name in arch: + t = arch[name] + else: + t = testcase (name) + t.addUnresolved (varient, reason) + arch[name] = t + regressionTests[configuration] = arch +- if unresolvedStats.has_key (configuration): ++ if configuration in unresolvedStats: + unresolvedStats[configuration] += 1 + else: + unresolvedStats[configuration] = 1 +@@ -239,20 +239,20 @@ def processLine(line): + # + + def printRow (testcase, arch, option): +- if regressionTests[arch].has_key (testcase): ++ if testcase in regressionTests[arch]: + t = regressionTests[arch][testcase] + if option in t.getPasses (): +- print '', string.join (option, ' '), '', ++ print('', string.join (option, ' '), '', end=' ') + elif option in t.getFails(): +- print '', string.join (option, ' '), '', ++ print('', string.join (option, ' '), '', end=' ') + elif option in t.getUnresolved(): +- print '', string.join (option, ' '), '', ++ print('', string.join (option, ' '), '', end=' ') + elif option == []: +- print '', ++ print('', end=' ') + else: +- print '', ++ print('', end=' ') + else: +- print '', ++ print('', end=' ') + + + # +@@ -263,9 +263,9 @@ def getListOfTests (): + global regressionTests + + list = [] +- for arch in regressionTests.keys (): ++ for arch in list(regressionTests.keys ()): + t = regressionTests[arch] +- for u in t.keys (): ++ for u in list(t.keys ()): + if not (u in list): + list += [u] + return list +@@ -281,9 +281,9 @@ def getListOfOptions (testcase): + + optlist = [] + total = 0 +- for arch in regressionTests.keys (): ++ for arch in list(regressionTests.keys ()): + t = regressionTests[arch] +- if t.has_key (testcase): ++ if testcase in t: + u = t[testcase] + for p in u.getPasses () + u.getFails () + u.getUnresolved (): + if not (p in optlist): +@@ -314,87 +314,87 @@ def printResults(): + global target, configuration, author, date, regressionTests, noColumns + global passStats, failStats, unresolvedStats + +- print "" +- print "GNU Modula-2 regression tests" +- print "" +- print "" +- print "

", +- print "GNU Modula-2 regression tests", +- print "

" +- print "" +- +- print '

' +- print '' +- print '' +- print '' +- print '' +- print '' +- print '' +- print '' +- print '
Key
ColourMeaning
Pass
Fail
Unresolved due to a prior error
Not tested
Entire testcase not tested on this platform

' +- print '' +- +- archList = regressionTests.keys () +- print "

", +- print "Summary", +- print "

" +- print '

' +- print '', +- print '', ++ print("") ++ print("GNU Modula-2 regression tests") ++ print("") ++ print("") ++ print("

", end=' ') ++ print("GNU Modula-2 regression tests", end=' ') ++ print("

") ++ print("") ++ ++ print('

Status
') ++ print('') ++ print('') ++ print('') ++ print('') ++ print('') ++ print('') ++ print('') ++ print('
Key
ColourMeaning
Pass
Fail
Unresolved due to a prior error
Not tested
Entire testcase not tested on this platform

') ++ print('') ++ ++ archList = list(regressionTests.keys ()) ++ print("

", end=' ') ++ print("Summary", end=' ') ++ print("

") ++ print('

') ++ print('', end=' ') ++ print('', end=' ') + for arch in archList: +- print '', +- print '' +- print '', ++ print('', end=' ') ++ print('') ++ print('', end=' ') + for arch in archList: +- if passStats.has_key (arch): +- print '" ++ if arch in passStats: ++ print('") + else: +- print '' +- print '' +- print '', ++ print('') ++ print('') ++ print('', end=' ') + for arch in archList: +- if failStats.has_key (arch): +- print '" ++ if arch in failStats: ++ print('") + else: +- print '' +- print '' +- print '', ++ print('') ++ print('') ++ print('', end=' ') + for arch in archList: +- if unresolvedStats.has_key (arch): +- print '" ++ if arch in unresolvedStats: ++ print('") + else: +- print '' +- print '' +- print '
Status', arch, '
', arch, '
', passStats[arch], "', passStats[arch], "none
none
', failStats[arch], "', failStats[arch], "none
none
', unresolvedStats[arch], "', unresolvedStats[arch], "none

' ++ print('none') ++ print('') ++ print('

') + +- print "

", +- print "GNU Modula-2 regression test results", +- print "

" ++ print("

", end=' ') ++ print("GNU Modula-2 regression test results", end=' ') ++ print("

") + + testlist = getListOfTests () + for testcase in testlist: + total, optlist = getListOfOptions (testcase) + if total > 0: +- print '

' +- print '') ++ print('
', ++ print('

') ++ print('' ++ print(heading, '') + for arch in archList: +- print '', ++ print('', end=' ') + + if total % noColumns != 0: + total = ((total / noColumns) +1) * noColumns + for count in range (0, total, noColumns): +- print '', ++ print('', end=' ') + for arch in archList: + for c in range (count, count+noColumns): + if c < len (optlist): + printRow (testcase, arch, optlist[c]) + else: + printRow (testcase, arch, []) +- print '' +- print '
', end=' ') + heading = getHeading (testcase) +- print heading, '
', arch, '', arch, '

' +- print '' ++ print('

') ++ print('') + + + target = "" +--- a/src/gcc/gm2/tools-src/makeSystem ++++ b/src/gcc/gm2/tools-src/makeSystem +@@ -19,7 +19,7 @@ + # Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *) + + +-function Usage () { ++Usage () { + echo "Usage: makesystem dialectflag SYSTEM.def SYSTEM.mod librarypath compiler" + } + +@@ -41,7 +41,7 @@ if [ "$DIALECT" != "-fiso" -a "$DIALECT" != "-fpim" ] ; then + exit 1 + fi + +-function displayExportedTypes () { ++displayExportedTypes () { + n=1 + c=0 + for i in ${types} ; do +@@ -60,24 +60,24 @@ function displayExportedTypes () { + echo " " >> ${OUTPUTFILE} + } + +-function displayBuiltinTypes () { ++displayBuiltinTypes () { + for i in ${types} ; do + echo " $i ; " >> ${OUTPUTFILE} + done + } + +-function displayStart () { ++displayStart () { + sed -e "1,/@SYSTEM_DATATYPES@/!d" < ${SYSTEMDEF} | \ + sed -e "/@SYSTEM_DATATYPES@/d" >> ${OUTPUTFILE} + } + +-function displayMiddle () { ++displayMiddle () { + sed -e "1,/@SYSTEM_DATATYPES@/d" < ${SYSTEMDEF} | \ + sed -e "1,/@SYSTEM_TYPES@/!d" | \ + sed -e "/@SYSTEM_TYPES@/d" >> ${OUTPUTFILE} + } + +-function displayEnd () { ++displayEnd () { + sed -e "1,/@SYSTEM_TYPES@/d" < ${SYSTEMDEF} >> ${OUTPUTFILE} + } + +--- a/src/gcc/gm2/tools-src/makeconfigure ++++ b/src/gcc/gm2/tools-src/makeconfigure +@@ -8,16 +8,16 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3, or (at your option) + # any later version. +-# ++# + # GNU Modula-2 is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with GNU Modula-2; see the file COPYING. If not, write to the + # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# 02110-1301, USA. + # + + # +@@ -25,13 +25,13 @@ + # file: + # + # gm2s/386-gas/M2Configure.def +-# ++# + + # + # create configuration constant + # + +-function EmitConst () { ++EmitConst () { + echo " " $1 "=" $2 "; (* automatically generated *)" >> $DESTINATION + echo "" >> $DESTINATION + } +@@ -40,7 +40,7 @@ function EmitConst () { + # remove the old configuration file and create new empty ones + # + +-function Initialize () { ++Initialize () { + /bin/rm -f $DESTINATION + touch $DESTINATION + } +@@ -50,7 +50,7 @@ function Initialize () { + # ModulePrologue - write the start of the definition module. + # + +-function ModulePrologue () { ++ModulePrologue () { + cat >> $DESTINATION << EOF + DEFINITION MODULE M2Configure ; + +@@ -113,7 +113,7 @@ EOF + # ModuleEpilogue - terminates the definition module. + # + +-function ModuleEpilogue () { ++ModuleEpilogue () { + echo "" >> $DESTINATION + echo "END M2Configure." >> $DESTINATION + } +@@ -123,7 +123,7 @@ function ModuleEpilogue () { + # work out whether we are compiling on a xenix system + # + +-function IsSystemXenix () { ++IsSystemXenix () { + echo -n "are we compiling under xenix..." + cat >> $DESTINATION << EOF3 + (* +@@ -142,7 +142,7 @@ EOF3 + } + + +-function UseUnderscoreForC () { ++UseUnderscoreForC () { + cat >> $DESTINATION << EOF + (* + UseUnderscoreForC - if true then the C compiler uses _ in front of +@@ -168,7 +168,7 @@ EOF + } + + +-function UseDotForGDBLabels () { ++UseDotForGDBLabels () { + cat >> $DESTINATION << EOF + (* + UseDotForGDBLabels - if true then the C compiler produced .LBB2: for the +@@ -195,7 +195,7 @@ EOF + } + + +-function UseDotForJumpLabels () { ++UseDotForJumpLabels () { + cat >> $DESTINATION << EOF + (* + UseDotForJumpLabels - if true then the C compiler produced .L2: for jump +@@ -222,12 +222,12 @@ EOF + } + + +-function secondword () { ++secondword () { + echo $2 + } + + +-function AlignmentSize () { ++AlignmentSize () { + cat >> $DESTINATION << EOF + (* + AlignmentSize - returns the default alignment size used. +@@ -247,7 +247,7 @@ EOF + } + + +-function ActivationRecordOffset () { ++ActivationRecordOffset () { + cat >> $DESTINATION << EOF + (* + ActivationRecordOffset - the number of words relative to frame pointer +@@ -260,7 +260,7 @@ EOF + } + + +-function UseShortStabLineNumbers () { ++UseShortStabLineNumbers () { + cat >> $DESTINATION << EOF + (* + UseShortStabLineNumbers - if true then the C compiler produced .stabd 68,0,2 +@@ -288,7 +288,7 @@ EOF + } + + +-function DefaultLibraryPath () { ++DefaultLibraryPath () { + cat >> $DESTINATION << EOF + (* + DefaultLibraryPath - defermines the default library path and creates a +@@ -302,7 +302,7 @@ EOF + } + + +-function UsingGCCBackend () { ++UsingGCCBackend () { + cat >> $DESTINATION << EOF + (* + UsingGCCBackend - is the compiler being built with the GCC code generator? +--- a/src/gcc/gm2/tools-src/makeversion ++++ b/src/gcc/gm2/tools-src/makeversion +@@ -29,7 +29,7 @@ + + + +-function doM2 () { ++doM2 () { + /bin/rm -f M2Version.mod + + cat << EOF >> M2Version.mod +@@ -71,7 +71,7 @@ EOF + } + + +-function doC () { ++doC () { + + cat < gm2version.c + /* Generated by makeversion - do not edit */ +@@ -95,7 +95,7 @@ EOF + } + + +-function doCP () { ++doCP () { + + cat < gm2version.c + /* Generated by makeversion - do not edit */ +@@ -119,7 +119,7 @@ EOF + } + + +-function doTexi () { ++doTexi () { + + cat < version.texi + +@@ -135,7 +135,7 @@ EOF + + progname=$0 + +-function usage () { ++usage () { + cat <20: + outfile = open('tmptidy', 'w') +@@ -114,7 +114,7 @@ def handleHeader (file, leader1, leader2): + outfile, n = handleCopyright(outfile, l, n, leader1, leader2) + outfile.writelines(l[n:]) + outfile.close() +- print "-> mv tmptidy", file ++ print(("-> mv tmptidy", file)) + command = "mv tmptidy %s" % file + os.system(command) + return +--- a/src/gcc/gm2/www/Makefile.in ++++ b/src/gcc/gm2/www/Makefile.in +@@ -32,7 +32,7 @@ TEXISRC = $(srcdir)/../../gm2/gm2.texi + # $(objdir)/gm2/Builtins.texi \ + # $(objdir)/gm2/version.texi + +-TEXI2HTML=python $(srcdir)/tools/texi2tr/src/texi2tr.py ++TEXI2HTML=python3 $(srcdir)/tools/texi2tr/src/texi2tr.py + + OUTPUTS=download.html homepage.html license.html platforms.html \ + about.html release.html users.html texi2tr.css \ +--- a/src/gcc/gm2/www/tools/texi2tr/src/navigation.py ++++ b/src/gcc/gm2/www/tools/texi2tr/src/navigation.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2011 + # Free Software Foundation, Inc. +@@ -74,15 +74,15 @@ class nodeInfo: + + + """) +- if (self.prev != "") and (self.prev != "Top") and anchors.has_key(self.prev): ++ if (self.prev != "") and (self.prev != "Top") and self.prev in anchors: + html.raw(''' + ') +- if (self.next != "") and (self.next != "Top") and anchors.has_key(self.next): ++ if (self.__next__ != "") and (self.__next__ != "Top") and self.__next__ in anchors: + html.raw(''' + ') + html.raw('
PrevNext
') + +@@ -137,7 +137,7 @@ class menuInfo: + # + def debugMenu (self): + for m in self.list: +- print m[0], m[1] ++ print((m[0], m[1])) + # + # generateMenu - issues the menu + # +@@ -175,15 +175,15 @@ class menuInfo: + html.raw('
\n') + html.raw('
    \n') + for m in self.list: +- if anchors.has_key(m[0]): ++ if m[0] in anchors: + active = litab(html, anchors[m[0]], m[0], active) + else: +- if (len(m[1]) > 1) and (m[1][-1] == '.') and (anchors.has_key(m[1][:-1])): ++ if (len(m[1]) > 1) and (m[1][-1] == '.') and (m[1][:-1] in anchors): + active = litab(html, anchors[m[1][:-1]], m[0], active) +- elif anchors.has_key(m[1]): ++ elif m[1] in anchors: + active = litab(html, anchors[m[1]], m[0], active) + else: +- print "cannot find anchor for section", m[0], "or", m[1] ++ print(("cannot find anchor for section", m[0], "or", m[1])) + html.raw('\n
\n') + html.raw('
\n') + # +@@ -192,15 +192,15 @@ class menuInfo: + def _genLong (self, html): + html.raw('\n
    \n') + for m in self.list: +- if anchors.has_key(m[0]): ++ if m[0] in anchors: + liurl(html, anchors[m[0]], m[1]) + else: +- if (len(m[1]) > 1) and (m[1][-1] == '.') and (anchors.has_key(m[1][:-1])): ++ if (len(m[1]) > 1) and (m[1][-1] == '.') and (m[1][:-1] in anchors): + liurl(html, anchors[m[1][:-1]], m[1]) +- elif anchors.has_key(m[1]): ++ elif m[1] in anchors: + liurl(html, anchors[m[1]], m[1]) + else: +- print "cannot find anchor for section", m[0], "or", m[1] ++ print(("cannot find anchor for section", m[0], "or", m[1])) + html.raw('
\n') + + # +@@ -210,8 +210,8 @@ class menuInfo: + def anchor (html, label): + global anchors + +- if anchors.has_key(label): +- print "node", label, "already exists" ++ if label in anchors: ++ print(("node", label, "already exists")) + anchors[label] = html.getNodeLink() + s = '\n' + html.raw(s) +--- a/src/gcc/gm2/www/tools/texi2tr/src/outputdev.py ++++ b/src/gcc/gm2/www/tools/texi2tr/src/outputdev.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2011 + # Free Software Foundation, Inc. +@@ -26,10 +26,10 @@ import config + + + # html tag +-null_tag, title_tag, header1_tag, header2_tag, header3_tag, header4_tag, center_tag, paragraph_tag, preformatted_tag, teletype_tag, italic_tag, bold_tag, no_tag = range(13) ++null_tag, title_tag, header1_tag, header2_tag, header3_tag, header4_tag, center_tag, paragraph_tag, preformatted_tag, teletype_tag, italic_tag, bold_tag, no_tag = list(range(13)) + + # html state machine +-init_state, known_state, end_state, copy_state, white_state, nf_state = range(6) ++init_state, known_state, end_state, copy_state, white_state, nf_state = list(range(6)) + + # char2code contains all html character codes + char2code = {} +@@ -166,7 +166,7 @@ class htmlDevice: + # + def _encodeChar (self, c): + global char2code +- if char2code.has_key(c): ++ if c in char2code: + self.raw(char2code[c]) + else: + self.raw(c) +@@ -200,11 +200,11 @@ class htmlDevice: + if config.multipleFragments: + self.output = open(name, 'w') + if config.debugFragments: +- print +- print "----------------------------------------------" +- print name +- print "----------------------------------------------" +- print ++ print() ++ print("----------------------------------------------") ++ print(name) ++ print("----------------------------------------------") ++ print() + self.output = sys.stdout + self.fragNo += 1 + self.deviceHeader() +@@ -526,10 +526,10 @@ class htmlDevice: + f = os.path.join(i, filename) + if os.path.exists(f) and os.path.isfile(f): + return open(f, 'r').read() +- print "cannot open", description ++ print(("cannot open", description)) + sys.exit(0) + except: +- print "cannot open", description ++ print(("cannot open", description)) + sys.exit(0) + # + # emitMenuTitle - +--- a/src/gcc/gm2/www/tools/texi2tr/src/texi2tr.py ++++ b/src/gcc/gm2/www/tools/texi2tr/src/texi2tr.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # Copyright (C) 2011 + # Free Software Foundation, Inc. +@@ -54,7 +54,7 @@ indexSections = {} + html = None + + # output state +-ignore, passthrough, arguments, menu = range(4) ++ignore, passthrough, arguments, menu = list(range(4)) + + currentMenu = navigation.menuInfo(True) + +@@ -65,7 +65,7 @@ currentMenu = navigation.menuInfo(True) + # + + def printf (format, *args): +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -75,7 +75,7 @@ def printf (format, *args): + def debugf (format, *args): + global debugging + if debugging: +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -85,7 +85,7 @@ def debugf (format, *args): + def verbosef (format, *args): + global verbose + if verbose: +- print str(format) % args, ++ print(str(format) % args, end=' ') + + + # +@@ -93,10 +93,10 @@ def verbosef (format, *args): + # + + def Usage (): +- print "texi2tr [-h] [-v] [-Iincludepath] [-Ttemplatepath] [-r rootname.html] [-b basename-%d.html] filename.texi" +- print " produces html from the texinfo filename.texi" +- print " -h help" +- print " -v verbose" ++ print("texi2tr [-h] [-v] [-Iincludepath] [-Ttemplatepath] [-r rootname.html] [-b basename-%d.html] filename.texi") ++ print(" produces html from the texinfo filename.texi") ++ print(" -h help") ++ print(" -v verbose") + sys.exit(0) + + +@@ -206,7 +206,7 @@ def pushArg (init): + global argStack, debugging + argStack = [init] + argStack + if debugging: +- print "pushArg: argStack", argStack ++ print("pushArg: argStack", argStack) + + + # +@@ -222,7 +222,7 @@ def popArg (): + else: + argStack = [] + if debugging: +- print "popArg: argStack", argStack ++ print("popArg: argStack", argStack) + return value + + +@@ -279,7 +279,7 @@ def parseArgs (contents, i, delim): + def call (command, args, state): + global functions + +- if functions.has_key(command): ++ if command in functions: + return functions[command](args, state) + else: + error("unknown command '" + command + "'") +@@ -428,7 +428,7 @@ def doSet (content, state): + + def doValue (content, state): + global values +- if values.has_key(content): ++ if content in values: + return values[content], state + else: + error('unknown value ' + content) +@@ -548,7 +548,7 @@ def doIgnore (content, state): + + def pushState (keyword, state): + global statementStack +- if statementStack.has_key(keyword): ++ if keyword in statementStack: + statementStack[keyword] = [state] + statementStack[keyword] + else: + statementStack[keyword] = [state] +@@ -568,11 +568,11 @@ def doConsume (content, state, keyword): + def doEnd (content, state): + global statementStack, endFunctions + keyword = content.split()[0] +- if statementStack.has_key(keyword): ++ if keyword in statementStack: + if len(statementStack[keyword]) == 0: + error("unexpected end '" + keyword + "'") + else: +- if endFunctions.has_key(keyword): ++ if keyword in endFunctions: + endFunctions[keyword](state) + state = popState(keyword) + else: +@@ -666,7 +666,7 @@ def doChapter (content, state): + + def addSectionAnchor (content): + global html, indexSections +- if indexSections.has_key(content): ++ if content in indexSections: + error('section name "' + content + '" already exists') + else: + indexSections[content] = html.sectionAnchor(content) +@@ -986,7 +986,7 @@ def doFindex (content, state): + + if state == ignore: + return skipLine (content, state) +- if indexFunc.has_key(content): ++ if content in indexFunc: + indexFunc[content] += [html.getLink()] + else: + indexFunc[content] = [html.getLink()] +@@ -1028,7 +1028,7 @@ def generateFunctionIndex (html): + + html.openDiv().flushDiv() + html.paraBegin() +- for k,v in sorted([(key, value) for (key,value) in indexFunc.items()]): ++ for k,v in sorted([(key, value) for (key,value) in list(indexFunc.items())]): + html.write(k) + html.write(': ') + for n in range(len(v)): +@@ -1051,7 +1051,7 @@ def generateSectionIndex (html): + html.paraBegin() + html.write('Alphabetically sorted list of contents') + html.raw('
\n') +- for k,v in sorted([(key, value) for (key,value) in indexSections.items()]): ++ for k,v in sorted([(key, value) for (key,value) in list(indexSections.items())]): + html.raw('') +--- a/src/gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp +@@ -27,12 +27,12 @@ set gm2src ${srcdir}/../gm2 + + gm2_init_pim "${srcdir}/gm2/calling-c/datatypes/unbounded/run/pass" + +-set XGCC [lookfor_file $tmpdir xgcc]; ++set XGCC [lookfor_file $rootme xgcc]; + + gm2_link_with "c.o" + + set output [exec rm -f c.o] +-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/calling-c/datatypes/unbounded/run/pass/c.c -o c.o] ++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/calling-c/datatypes/unbounded/run/pass/c.c -o c.o] + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { + # If we're only testing specific files and this isn't one of them, skip it. +--- a/src/gcc/testsuite/gm2/errors/fail/gm2.exp ++++ b/src/gcc/testsuite/gm2/errors/fail/gm2.exp +@@ -22,7 +22,7 @@ if $tracelevel then { + # load support procs + load_lib gm2-torture.exp + +-gm2_init_pim "${srcdir}/gm2/errors/fail" -Wpedantic -Wstudents ++gm2_init_pim "${srcdir}/gm2/errors/fail" -Wpedantic -Wstudents -Wunused-variable + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { + # If we're only testing specific files and this isn't one of them, skip it. +--- a/src/gcc/testsuite/gm2/examples/callingC/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/examples/callingC/run/pass/gm2.exp +@@ -13,7 +13,7 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + if $tracelevel then { + strace $tracelevel +@@ -26,11 +26,11 @@ set gm2src ${srcdir}/../gm2 + + gm2_init_iso "$srcdir/gm2/examples/callingC/run/pass" + +-set XGCC [lookfor_file $tmpdir xgcc]; ++set XGCC [lookfor_file $rootme xgcc]; + + gm2_link_with c.o + set output [exec rm -f c.o] +-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/examples/callingC/run/pass/c.c -o c.o] ++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/examples/callingC/run/pass/c.c -o c.o] + + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { +--- a/src/gcc/testsuite/gm2/exceptions/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/exceptions/run/pass/gm2.exp +@@ -25,11 +25,11 @@ load_lib prune.exp + load_lib gm2-torture.exp + + +-set XGPP [lookfor_file $tmpdir xg++]; ++set XGPP [lookfor_file $rootme xg++]; + + set output [exec rm -f cpp.o mycpp.o] +-set output [exec ${XGPP} -B[file dirname $tmpdir] -g -c $srcdir/gm2/exceptions/run/pass/cpp.cpp] +-set output [exec ${XGPP} -B[file dirname $tmpdir] -g -c $srcdir/gm2/exceptions/run/pass/mycpp.cpp] ++set output [exec ${XGPP} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/exceptions/run/pass/cpp.cpp] ++set output [exec ${XGPP} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/exceptions/run/pass/mycpp.cpp] + + # + # notice this uses PIM libraries with exceptions - this is a useful test. +--- a/src/gcc/testsuite/gm2/extensions/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/extensions/run/pass/gm2.exp +@@ -13,7 +13,7 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + if $tracelevel then { + strace $tracelevel +@@ -28,10 +28,10 @@ gm2_init_pim "${srcdir}/gm2/extensions/run/pass" -fsoft-check-all + + gm2_link_with cvararg.o + +-set XGCC [lookfor_file $tmpdir xgcc]; ++set XGCC [lookfor_file $rootme xgcc]; + + set output [exec rm -f cvararg.o] +-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/extensions/run/pass/cvararg.c -o cvararg.o] ++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/extensions/run/pass/cvararg.c -o cvararg.o] + + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { +--- a/src/gcc/testsuite/gm2/imports/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/imports/run/pass/gm2.exp +@@ -13,7 +13,7 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + if $tracelevel then { + strace $tracelevel +@@ -29,7 +29,7 @@ gm2_init_pim "${srcdir}/gm2/imports/run/pass" + gm2_link_with "-lgm2" + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { +- set output [exec ../xgm2 -B../ -g -c "-I${gccpath}/libgm2/libpim:${gm2src}/gm2-libs:${srcdir}/gm2/imports/run/pass" -fpim ${srcdir}/gm2/imports/run/pass/c.mod] ++ set output [exec ../../xgm2 -B../../ -g -c "-I${gccpath}/libgm2/libpim:${gm2src}/gm2-libs:${srcdir}/gm2/imports/run/pass" -fpim ${srcdir}/gm2/imports/run/pass/c.mod] + + # If we're only testing specific files and this isn't one of them, skip it. + if ![runtest_file_p $runtests $testcase] then { +--- a/src/gcc/testsuite/gm2/iso/run/pass/unbounded.mod ++++ b/src/gcc/testsuite/gm2/iso/run/pass/unbounded.mod +@@ -20,12 +20,13 @@ MODULE unbounded ; + FROM libc IMPORT exit, printf ; + FROM SYSTEM IMPORT ADR ; + ++ + PROCEDURE Assert (b: BOOLEAN; f: ARRAY OF CHAR; l: CARDINAL) ; + BEGIN + IF NOT b + THEN +- printf("%s:%d:failure\n", ADR(f), l) ; +- exit(1) ++ printf ("%s:%d:failure\n", ADR (f), l) ; ++ exit (1) + END + END Assert ; + +@@ -34,18 +35,35 @@ PROCEDURE test (VAR a: ARRAY OF ARRAY OF CHAR) ; + VAR + m, n: CARDINAL ; + BEGIN +- m := HIGH(a) ; +- n := HIGH(a[0]) ; +- printf("m = %d, n = %d\n", m, n); ++ m := HIGH (a) ; ++ n := HIGH (a[0]) ; ++ printf ("m = %d, n = %d\n", m, n); + a[1, 2] := 'a' ; + a[2, 1] := 'c' + END test ; + + + VAR +- b: ARRAY [0..4], [0..5] OF CHAR ; ++ b : ARRAY [0..4], [0..5] OF CHAR ; ++ i, j: CARDINAL ; + BEGIN +- test(b) ; +- Assert(b[1, 2]='a', __FILE__, __LINE__) ; +- Assert(b[2, 1]='c', __FILE__, __LINE__) ; ++ FOR i := 0 TO 4 DO ++ FOR j := 0 TO 5 DO ++ b[i, j] := 'z' ++ END ++ END ; ++ test (b) ; ++ FOR i := 0 TO 4 DO ++ FOR j := 0 TO 5 DO ++ IF (i = 1) AND (j = 2) ++ THEN ++ Assert (b[1, 2] = 'a', __FILE__, __LINE__) ++ ELSIF (i = 2) AND (j = 1) ++ THEN ++ Assert (b[2, 1] = 'c', __FILE__, __LINE__) ++ ELSE ++ Assert (b[i, j] = 'z', __FILE__, __LINE__) ++ END ++ END ++ END + END unbounded. +--- a/src/gcc/testsuite/gm2/linking/libarchive/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/linking/libarchive/pass/gm2.exp +@@ -13,7 +13,7 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + if $tracelevel then { + strace $tracelevel +@@ -24,13 +24,13 @@ load_lib gm2-torture.exp + + set gm2src ${srcdir}/../gm2 + +-gm2_init_iso "${srcdir}/gm2/linking/libarchive/pass" ++gm2_init_iso "${srcdir}/gm2/linking/libarchive/pass" + +-set XGCC [lookfor_file $tmpdir xgcc]; ++set XGCC [lookfor_file $rootme xgcc]; + + gm2_link_with c.o + set output [exec rm -f c.o] +-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/linking/libarchive/pass/c.c -o c.o] ++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/linking/libarchive/pass/c.c -o c.o] + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { + # If we're only testing specific files and this isn't one of them, skip it. +--- a/src/gcc/testsuite/gm2/pim/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/pim/run/pass/gm2.exp +@@ -27,7 +27,7 @@ set gm2src ${srcdir}/../gm2 + gm2_init_pim "${srcdir}/gm2/pim/run/pass" -fsoft-check-all + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { +- set output [exec ../xgm2 -B../ -g -c -I$srcdir/../gm2/gm2-libs -I$srcdir/gm2/pim/run/pass -I$srcdir/../gm2/gm2-compiler -I../gm2/gm2-libs -I../gm2/gm2-compiler -fpim $srcdir/gm2/pim/run/pass/sys.mod] ++ set output [exec ../../xgm2 -B../../ -g -c -I$srcdir/../gm2/gm2-libs -I$srcdir/gm2/pim/run/pass -I$srcdir/../gm2/gm2-compiler -I../gm2/gm2-libs -I../gm2/gm2-compiler -fpim $srcdir/gm2/pim/run/pass/sys.mod] + + # If we're only testing specific files and this isn't one of them, skip it. + if ![runtest_file_p $runtests $testcase] then { +--- a/src/gcc/testsuite/gm2/pim/run/pass/integer.mod +--- b/src/gcc/testsuite/gm2/pim/run/pass/integer.mod +@@ -1,274 +0,0 @@ +-(* Copyright (C) 2011 Free Software Foundation, Inc. *) +-(* This file is part of GNU Modula-2. +- +-GNU Modula-2 is free software; you can redistribute it and/or modify it under +-the terms of the GNU General Public License as published by the Free +-Software Foundation; either version 3, or (at your option) any later +-version. +- +-GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY +-WARRANTY; without even the implied warranty of MERCHANTABILITY or +-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +-for more details. +- +-You should have received a copy of the GNU General Public License along +-with gm2; see the file COPYING. If not, write to the Free Software +-Foundation, 51 Franklin Street, Fifth Floor, +-Boston, MA 02110-1301, USA. *) +- +-MODULE integer ; +- +-(* +- Title : integer +- Author : Gaius Mulley +- System : GNU Modula-2 +- Date : Fri May 18 17:05:36 2012 +- Revision : $Version$ +- Description: simple test module to test the principles of catching signed and unsigned +- integer arithmetic overflow. +-*) +- +-FROM SYSTEM IMPORT ADDRESS ; +-FROM libc IMPORT printf ; +-FROM DynamicStrings IMPORT String, InitString, string, KillString, InitString ; +- +-CONST +- Verbose = TRUE ; +- SizeOfIntAndLongSame = TRUE ; +- +- +-PROCEDURE ssub (i, j: INTEGER) ; +-BEGIN +- IF ((j>0) AND (i < MIN(INTEGER)+j)) OR +- ((j<0) AND (i > MAX(INTEGER)+j)) +- THEN +- expecting(overflow, 'signed subtraction') +- ELSE +- expecting(none, 'signed subtraction') +- END +-END ssub ; +- +- +-PROCEDURE sadd (i, j: INTEGER) ; +-BEGIN +- printf ("i = %d, j = %d MIN(INTEGER) = %d\n", +- i, j, MIN(INTEGER)); +- printf ("MIN(INTEGER) = %d, -j = %d\n", MIN(INTEGER), -j); +- IF ((j = MIN(INTEGER)) AND (i < 0)) OR +- ((i = MIN(INTEGER)) AND (j < 0)) OR +- +- ((j>0) AND (i > MAX(INTEGER)-j)) OR +- ((j<0) AND (i < MIN(INTEGER)-j)) +- THEN +- expecting(overflow, 'signed addition') +- ELSE +- expecting(none, 'signed addition') +- END +-END sadd ; +- +- +-(* +- smallMult - +-*) +- +-PROCEDURE smallMult (i, j: INTEGER) ; +-BEGIN +- IF i>0 +- THEN +- IF j>0 +- THEN +- IF i>maxInt DIV j +- THEN +- expecting(overflow, 'signed mult') +- ELSE +- expecting(none, 'signed mult') +- END +- ELSE +- IF j0 +- THEN +- IF iVAL(LONGINT, maxInt)) +- THEN +- expecting(overflow, 'signed multiply') +- ELSE +- expecting(none, 'signed multiply') +- END +- END +-END smult ; +- +- +-(* +- sneg - +-*) +- +-PROCEDURE sneg (i: INTEGER) ; +-BEGIN +- IF i=minInt +- THEN +- expecting(overflow, 'signed negate') +- ELSE +- expecting(none, 'signed negate') +- END +-END sneg ; +- +- +-(* +- passed - +-*) +- +-PROCEDURE expecting (e: error; a: ARRAY OF CHAR) ; +-VAR +- s: String ; +- t: ADDRESS ; +-BEGIN +- WITH test[testNo] DO +- IF expected#e +- THEN +- s := InitString(a) ; +- t := string(s) ; +- printf("test %s (%d) has failed\n", t, testNo) ; +- s := KillString(s) +- ELSIF Verbose +- THEN +- s := InitString(a) ; +- t := string(s) ; +- printf("test %s (%d) has passed\n", t, testNo) ; +- s := KillString(s) +- END +- END +-END expecting ; +- +- +-(* +- doTest - +-*) +- +-PROCEDURE doTest ; +-BEGIN +- WITH test[testNo] DO +- CASE op OF +- +- iadd : sadd(l, r) | +- isub : ssub(l, r) | +- ineg : sneg(l) | +- imult: smult(l, r) | +- idiv : | +- imod : | +- +- END +- END +-END doTest ; +- +- +-(* +- doTests - +-*) +- +-PROCEDURE doTests ; +-BEGIN +- testNo := 0 ; +- WHILE testNo<=maxTest DO +- doTest ; +- INC(testNo) +- END +-END doTests ; +- +- +-CONST +- maxTest = 25 ; +- maxInt = MAX(INTEGER) ; +- minInt = MIN(INTEGER) ; +- +-TYPE +- opcode = (iadd, isub, ineg, imult, idiv, imod) ; +- error = (overflow, underflow, none) ; +- +- case = RECORD +- l, r : INTEGER ; +- op : opcode ; +- expected: error ; +- END ; +- cases = ARRAY [0..maxTest] OF case ; +- +-VAR +- test : cases ; +- testNo: CARDINAL ; +- +-BEGIN +- test := cases{{minInt, 0, ineg, overflow}, +- (* 1 *) +- {maxInt, 0, ineg, none}, +- {minInt DIV 2, minInt DIV 2, iadd, none}, +- {minInt DIV 2, minInt DIV 2-1, iadd, overflow}, +- {maxInt DIV 2, maxInt DIV 2, iadd, none}, +- (* 4 *) +- {maxInt DIV 2, maxInt DIV 2+1, iadd, none}, +- {maxInt DIV 2+1, maxInt DIV 2+1, iadd, overflow}, +- {maxInt, 1, iadd, overflow}, +- {maxInt, 0, iadd, none}, +- (* 8 *) +- {minInt, -1, iadd, overflow}, +- {minInt, 0, iadd, none}, +- {-1, maxInt, isub, none}, +- {-2, maxInt, isub, overflow}, +- (* 12 *) +- {minInt, 1, isub, overflow}, +- {minInt, 0, isub, none}, +- {maxInt, -2, isub, overflow}, +- {maxInt, minInt, isub, overflow}, +- (* 16 *) +- {0, maxInt, isub, none}, +- {0, minInt, isub, overflow}, +- {-1, maxInt, isub, none}, +- {-2, maxInt, isub, overflow}, +- (* 20 *) +- {maxInt, 2, imult, overflow}, +- {maxInt DIV 2, 2, imult, none}, +- {minInt DIV 2, 2, imult, none}, +- {minInt DIV 2-1, 2, imult, overflow}, +- (* 24 *) +- {maxInt DIV 3, 3, imult, none}, +- {minInt DIV 3, 3, imult, none} +- } ; +- doTests +-END integer. +--- a/src/gcc/testsuite/gm2/types/run/pass/gm2.exp ++++ b/src/gcc/testsuite/gm2/types/run/pass/gm2.exp +@@ -13,7 +13,7 @@ + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + if $tracelevel then { + strace $tracelevel +@@ -24,14 +24,14 @@ load_lib gm2-torture.exp + + set gm2src ${srcdir}/../gm2 + +-gm2_init_pim "${srcdir}/gm2/types/run/pass" ++gm2_init_pim "${srcdir}/gm2/types/run/pass" + + gm2_link_with d.o + +-set XGCC [lookfor_file $tmpdir xgcc]; ++set XGCC [lookfor_file $rootme xgcc]; + + set output [exec rm -f d.o] +-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/types/run/pass/d.c -o d.o] ++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/types/run/pass/d.c -o d.o] + + foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { + # If we're only testing specific files and this isn't one of them, skip it. +@@ -42,4 +42,4 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] { + gm2-torture-execute $testcase "" "pass" + } + +-set output [exec rm -f d.o] +\ No newline at end of file ++set output [exec rm -f d.o] +--- a/src/gcc/testsuite/lib/gm2.exp ++++ b/src/gcc/testsuite/lib/gm2.exp +@@ -92,8 +92,8 @@ proc gm2_init { args } { + if { $gm2_initialized == 1 } { return; } + + set gm2_link_libraries ""; +- set GCC_UNDER_TEST [lookfor_file $tmpdir xgm2]; +- append GCC_UNDER_TEST " " -B[file dirname $tmpdir] " " ${args}; ++ set GCC_UNDER_TEST [lookfor_file $rootme xgm2]; ++ append GCC_UNDER_TEST " " -B[file dirname $rootme]/gcc " " ${args}; + append GCC_UNDER_TEST " " -fno-diagnostics-show-caret + append GCC_UNDER_TEST " " -fno-diagnostics-show-line-numbers + append GCC_UNDER_TEST " " -fdiagnostics-color=never +@@ -123,7 +123,6 @@ proc gm2_init { args } { + # + + proc gm2_target_compile_default { source dest type options } { +- global tmpdir; + global gluefile wrap_flags; + global GCC_UNDER_TEST; + global TOOL_OPTIONS; +--- a/src/libgm2/libpim/dtoa.c ++++ b/src/libgm2/libpim/dtoa.c +@@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA */ + + /* +- * dtoa.c - ++ * dtoa.c - + */ + + #define GM2 +@@ -150,7 +150,7 @@ int dtoa_calcmaxsig (char *p, int ndigits) + if (o == NULL) + return strlen(p)+x; + else { +- strncpy(o, o+1, ndigits-(o-p)); ++ memmove (o, o+1, ndigits-(o-p)); + return o-p+x; + } + } +@@ -197,7 +197,7 @@ int dtoa_calcdecimal (char *p, int str_size, int ndigits) + int dtoa_calcsign (char *p, int str_size) + { + if (p[0] == '-') { +- strncpy(p, p+1, str_size-1); ++ memmove (p, p+1, str_size-1); + return TRUE; + } else + return FALSE; diff --git a/patches/gm2.diff b/patches/gm2.diff new file mode 100644 index 0000000..a886e0e --- /dev/null +++ b/patches/gm2.diff @@ -0,0 +1,1681 @@ +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -111,11 +111,11 @@ + ### or a host dependent tool. Then put it into the appropriate list + ### (library or tools, host or target), doing a dependency sort. + +-# Subdirs will be configured in the order listed in build_configdirs, ++# Subdirs will be configured in the order listed in build_configdirs, + # configdirs, or target_configdirs; see the serialization section below. + +-# Dependency sorting is only needed when *configuration* must be done in +-# a particular order. In all cases a dependency should be specified in ++# Dependency sorting is only needed when *configuration* must be done in ++# a particular order. In all cases a dependency should be specified in + # the Makefile, whether or not it's implicitly specified here. + + # Double entries in build_configdirs, configdirs, or target_configdirs may +@@ -162,6 +162,7 @@ + target-libffi \ + target-libobjc \ + target-libada \ ++ target-libgm2 \ + target-libgo \ + target-libphobos \ + target-zlib" +@@ -209,7 +210,7 @@ + is_cross_compiler=no + else + is_cross_compiler=yes +-fi ++fi + + # Find the build and target subdir names. + GCC_TOPLEV_SUBDIRS +@@ -247,7 +248,7 @@ + noconfigdirs="$noconfigdirs zlib" + fi + +-# some tools are so dependent upon X11 that if we're not building with X, ++# some tools are so dependent upon X11 that if we're not building with X, + # it's not even worth trying to configure, much less build, that tool. + + case ${with_x} in +@@ -255,7 +256,7 @@ + no) + skipdirs="${skipdirs} tk itcl libgui" + # We won't be able to build gdbtk without X. +- enable_gdbtk=no ++ enable_gdbtk=no + ;; + *) echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2 ;; + esac +@@ -411,7 +412,7 @@ + # Only spaces may be used in this macro; not newlines or tabs. + unsupported_languages= + +-# Remove more programs from consideration, based on the host or ++# Remove more programs from consideration, based on the host or + # target this usually means that a port of the program doesn't + # exist yet. + +@@ -451,6 +452,12 @@ + noconfigdirs="$noconfigdirs gnattools" + fi + ++AC_ARG_ENABLE(libgm2, ++[AS_HELP_STRING([--enable-libgm2], [build libgm2 directory])], ++ENABLE_LIBGM2=$enableval, ++ENABLE_LIBGM2=yes) ++ ++ + AC_ARG_ENABLE(libssp, + [AS_HELP_STRING([--enable-libssp], [build libssp directory])], + ENABLE_LIBSSP=$enableval, +@@ -907,7 +914,7 @@ + ;; + *-*-lynxos*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" +- ;; ++ ;; + *-*-mingw*) + noconfigdirs="$noconfigdirs target-newlib target-libgloss" + ;; +@@ -1247,7 +1254,7 @@ + hppa*-hp-hpux*) + host_makefile_frag="config/mh-pa" + ;; +- hppa*-*) ++ hppa*-*) + host_makefile_frag="config/mh-pa" + ;; + *-*-darwin*) +@@ -1270,6 +1277,7 @@ + GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} + GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} + GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} ++ GM2_FOR_BUILD=${GM2_FOR_BUILD-gm2} + DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} + LD_FOR_BUILD=${LD_FOR_BUILD-ld} + NM_FOR_BUILD=${NM_FOR_BUILD-nm} +@@ -1284,6 +1292,7 @@ + GFORTRAN_FOR_BUILD="\$(GFORTRAN)" + GOC_FOR_BUILD="\$(GOC)" + GDC_FOR_BUILD="\$(GDC)" ++ GM2_FOR_BUILD="\$(GM2)" + DLLTOOL_FOR_BUILD="\$(DLLTOOL)" + LD_FOR_BUILD="\$(LD)" + NM_FOR_BUILD="\$(NM)" +@@ -1907,7 +1916,7 @@ + # an apparent bug in bash 1.12 on linux. + ${srcdir}/gcc/[[*]]/config-lang.in) ;; + *) +- # From the config-lang.in, get $language, $target_libs, ++ # From the config-lang.in, get $language, $target_libs, + # $lang_dirs, $boot_language, and $build_by_default + language= + target_libs= +@@ -2140,7 +2149,7 @@ + AC_ARG_WITH([target-bdw-gc-lib], + [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], + [specify directories for installed bdw-gc library])]) +- ++ + case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) + AC_MSG_CHECKING([for bdw garbage collector]) + if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +@@ -2219,7 +2228,7 @@ + build_configdirs_all="$build_configdirs" + build_configdirs= + for i in ${build_configdirs_all} ; do +- j=`echo $i | sed -e s/build-//g` ++ j=`echo $i | sed -e s/build-//g` + if test -f ${srcdir}/$j/configure ; then + build_configdirs="${build_configdirs} $i" + fi +@@ -2236,7 +2245,7 @@ + target_configdirs_all="$target_configdirs" + target_configdirs= + for i in ${target_configdirs_all} ; do +- j=`echo $i | sed -e s/target-//g` ++ j=`echo $i | sed -e s/target-//g` + if test -f ${srcdir}/$j/configure ; then + target_configdirs="${target_configdirs} $i" + fi +@@ -2322,7 +2331,7 @@ + + copy_dirs= + +-AC_ARG_WITH([build-sysroot], ++AC_ARG_WITH([build-sysroot], + [AS_HELP_STRING([--with-build-sysroot=SYSROOT], + [use sysroot as the system root during the build])], + [if test x"$withval" != x ; then +@@ -2421,11 +2430,11 @@ + # This is done by determining whether or not the appropriate directory + # is available, and by checking whether or not specific configurations + # have requested that this magic not happen. +-# +-# The command line options always override the explicit settings in ++# ++# The command line options always override the explicit settings in + # configure.ac, and the settings in configure.ac override this magic. + # +-# If the default for a toolchain is to use GNU as and ld, and you don't ++# If the default for a toolchain is to use GNU as and ld, and you don't + # want to do that, then you should use the --without-gnu-as and + # --without-gnu-ld options for the configure script. Similarly, if + # the default is to use the included zlib and you don't want to do that, +@@ -2532,7 +2541,7 @@ + target_makefile_frag="config/mt-gnu" + ;; + *-*-aix4.[[3456789]]* | *-*-aix[[56789]].*) +- # nm and ar from AIX 4.3 and above require -X32_64 flag to all ar and nm ++ # nm and ar from AIX 4.3 and above require -X32_64 flag to all ar and nm + # commands to handle both 32-bit and 64-bit objects. These flags are + # harmless if we're using GNU nm or ar. + extra_arflags_for_target=" -X32_64" +@@ -2602,7 +2611,7 @@ + if test -s conftest || test -s conftest.exe ; then + we_are_ok=yes + fi +-fi ++fi + case $we_are_ok in + no) + echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed." +@@ -3017,7 +3026,7 @@ + # --program-suffix have been applied to it. Autoconf has already + # doubled dollar signs and backslashes in program_transform_name; we want + # the backslashes un-doubled, and then the entire thing wrapped in single +-# quotes, because this will be expanded first by make and then by the shell. ++# quotes, because this will be expanded first by make and then by the shell. + # Also, because we want to override the logic in subdir configure scripts to + # choose program_transform_name, replace any s,x,x, with s,y,y,. + sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g; s/s,x,x,/s,y,y,/" < conftestsed.out +@@ -3086,7 +3095,7 @@ + if test -s conftest || test -s conftest.exe ; then + dev64=yes + fi +- fi ++ fi + rm -f conftest* + if test x${dev64} != xyes ; then + AC_MSG_ERROR([I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.]) +@@ -3272,6 +3281,7 @@ + AC_SUBST(GFORTRAN_FOR_BUILD) + AC_SUBST(GOC_FOR_BUILD) + AC_SUBST(GDC_FOR_BUILD) ++AC_SUBST(GM2_FOR_BUILD) + AC_SUBST(LDFLAGS_FOR_BUILD) + AC_SUBST(LD_FOR_BUILD) + AC_SUBST(NM_FOR_BUILD) +@@ -3365,7 +3375,7 @@ + AC_SUBST(CXXFLAGS) + + # Target tools. +-AC_ARG_WITH([build-time-tools], ++AC_ARG_WITH([build-time-tools], + [AS_HELP_STRING([--with-build-time-tools=PATH], + [use given path to find target tools during the build])], + [case x"$withval" in +@@ -3383,6 +3393,7 @@ + NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) + NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo) + NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc) ++NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2) + + ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar) + ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as) +@@ -3419,6 +3430,8 @@ + [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go) + GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC, + [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d) ++GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2, ++ [gcc/xgm2 -B$$r/$(HOST_SUBDIR)/gcc/], gm2) + GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new]) + GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO) + GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new]) +@@ -3474,7 +3487,7 @@ + else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +-fi ++fi + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl + +--- a/src/gcc/c/gccspec.c ++++ b/src/gcc/c/gccspec.c +@@ -105,3 +105,9 @@ + + /* Number of extra output files that lang_specific_pre_link may generate. */ + int lang_specific_extra_outfiles = 0; /* Not used for C. */ ++ ++/* lang_register_spec_functions. Not used for C. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/c-family/cppspec.c ++++ b/src/gcc/c-family/cppspec.c +@@ -198,3 +198,9 @@ + + /* Number of extra output files that lang_specific_pre_link may generate. */ + int lang_specific_extra_outfiles = 0; /* Not used for cpp. */ ++ ++/* lang_register_spec_functions. Not used for cpp. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/cp/g++spec.c ++++ b/src/gcc/cp/g++spec.c +@@ -403,3 +403,9 @@ + + /* Number of extra output files that lang_specific_pre_link may generate. */ + int lang_specific_extra_outfiles = 0; /* Not used for C++. */ ++ ++/* lang_register_spec_functions. Not used for C++. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -305,6 +305,10 @@ + static const char *cross_compile = "0"; + #endif + ++/* The lang specs might wish to override the default linker. ++ */ ++int allow_linker = 1; ++ + /* Greatest exit code of sub-processes that has been encountered up to + now. */ + static int greatest_status = 1; +@@ -410,6 +414,7 @@ + static const char *debug_level_greater_than_spec_func (int, const char **); + static const char *find_fortran_preinclude_file (int, const char **); + static char *convert_white_space (char *); ++static void handle_OPT_B (const char *arg); + + /* The Specs Language + +@@ -1032,6 +1037,7 @@ + /* We pass any -flto flags on to the linker, which is expected + to understand them. In practice, this means it had better be collect2. */ + /* %{e*} includes -export-dynamic; see comment in common.opt. */ ++ + #ifndef LINK_COMMAND_SPEC + #define LINK_COMMAND_SPEC "\ + %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ +@@ -1655,6 +1661,10 @@ + { 0, 0 } + }; + ++/* front end registered spec functions */ ++static struct spec_function *lang_spec_functions = NULL; ++static unsigned int lang_spec_functions_length = 0; ++ + static int processing_spec_function; + + /* Add appropriate libgcc specs to OBSTACK, taking into account +@@ -3725,6 +3735,81 @@ + setenv ("SOURCE_DATE_EPOCH", source_date_epoch, 0); + } + ++/* Save an option OPT with N_ARGS arguments in array ARGS, marking it ++ as validated if VALIDATED. */ ++ ++void ++fe_save_switch (const char *opt, size_t n_args, const char *const *args, ++ bool validated, bool known) ++{ ++ save_switch (opt, n_args, args, validated, known); ++} ++ ++void fe_B_prefix (const char *arg) ++{ ++ handle_OPT_B (arg); ++} ++ ++void ++fe_add_linker_option (const char *option) ++{ ++ add_linker_option (option, strlen (option)); ++} ++ ++/* Handle the -B option by adding the prefix to exec, startfile and ++ include search paths. */ ++ ++static ++void handle_OPT_B (const char *arg) ++{ ++ size_t len = strlen (arg); ++ ++ /* Catch the case where the user has forgotten to append a ++ directory separator to the path. Note, they may be using ++ -B to add an executable name prefix, eg "i386-elf-", in ++ order to distinguish between multiple installations of ++ GCC in the same directory. Hence we must check to see ++ if appending a directory separator actually makes a ++ valid directory name. */ ++ if (!IS_DIR_SEPARATOR (arg[len - 1]) ++ && is_directory (arg, false)) ++ { ++ char *tmp = XNEWVEC (char, len + 2); ++ strcpy (tmp, arg); ++ tmp[len] = DIR_SEPARATOR; ++ tmp[++len] = 0; ++ arg = tmp; ++ } ++ ++ add_prefix (&exec_prefixes, arg, NULL, ++ PREFIX_PRIORITY_B_OPT, 0, 0); ++ add_prefix (&startfile_prefixes, arg, NULL, ++ PREFIX_PRIORITY_B_OPT, 0, 0); ++ add_prefix (&include_prefixes, arg, NULL, ++ PREFIX_PRIORITY_B_OPT, 0, 0); ++} ++ ++/* Save the infile. */ ++ ++void ++fe_add_infile (const char *infile, const char *lang) ++{ ++ add_infile (infile, lang); ++} ++ ++/* Remove an object file, name. */ ++ ++void ++fe_remove_infile (const char *name) ++{ ++ int max = n_infiles + lang_specific_extra_outfiles; ++ int i; ++ ++ for (i = 0; i < max; i++) ++ if (filename_cmp (name, infiles[i].name) == 0) ++ infiles[i].compiled = true; ++} ++ + /* Handle an option DECODED that is unknown to the option-processing + machinery. */ + +@@ -4204,33 +4289,7 @@ + break; + + case OPT_B: +- { +- size_t len = strlen (arg); +- +- /* Catch the case where the user has forgotten to append a +- directory separator to the path. Note, they may be using +- -B to add an executable name prefix, eg "i386-elf-", in +- order to distinguish between multiple installations of +- GCC in the same directory. Hence we must check to see +- if appending a directory separator actually makes a +- valid directory name. */ +- if (!IS_DIR_SEPARATOR (arg[len - 1]) +- && is_directory (arg, false)) +- { +- char *tmp = XNEWVEC (char, len + 2); +- strcpy (tmp, arg); +- tmp[len] = DIR_SEPARATOR; +- tmp[++len] = 0; +- arg = tmp; +- } +- +- add_prefix (&exec_prefixes, arg, NULL, +- PREFIX_PRIORITY_B_OPT, 0, 0); +- add_prefix (&startfile_prefixes, arg, NULL, +- PREFIX_PRIORITY_B_OPT, 0, 0); +- add_prefix (&include_prefixes, arg, NULL, +- PREFIX_PRIORITY_B_OPT, 0, 0); +- } ++ handle_OPT_B (arg); + validated = true; + break; + +@@ -5993,7 +6052,7 @@ + "%{foo=*:bar%*}%{foo=*:one%*two}" + + matches -foo=hello then it will produce: +- ++ + barhello onehellotwo + */ + if (*p == 0 || *p == '}') +@@ -6070,6 +6129,33 @@ + return 0; + } + ++/* Allow the front end to register a spec function. */ ++ ++void fe_add_spec_function (const char *name, const char *(*func) (int, const char **)) ++{ ++ const struct spec_function *f = lookup_spec_function (name); ++ struct spec_function *fl; ++ unsigned int i; ++ ++ if (f != NULL) ++ fatal_error (input_location, "spec function (%s) already registered", name); ++ ++ if (lang_spec_functions == NULL) ++ lang_spec_functions_length = 1; ++ ++ lang_spec_functions_length++; ++ fl = (struct spec_function *) xmalloc (sizeof (const struct spec_function)*lang_spec_functions_length); ++ for (i=0; iname, name) == 0) + return sf; + ++ if (lang_spec_functions != NULL) ++ for (sf = lang_spec_functions; sf->name != NULL; sf++) ++ if (strcmp (sf->name, name) == 0) ++ return sf; ++ + return NULL; + } + +@@ -7563,6 +7654,8 @@ + accel_dir_suffix, dir_separator_str, NULL); + just_machine_suffix = concat (spec_machine, dir_separator_str, NULL); + ++ lang_register_spec_functions (); ++ + specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, true); + /* Read the specs file unless it is a default one. */ + if (specs_file != 0 && strcmp (specs_file, "specs")) +@@ -8257,7 +8350,8 @@ + + /* Run ld to link all the compiler output files. */ + +- if (num_linker_inputs > 0 && !seen_error () && print_subprocess_help < 2) ++ if (num_linker_inputs > 0 && !seen_error () && print_subprocess_help < 2 ++ && allow_linker) + { + int tmp = execution_count; + +@@ -8324,7 +8418,7 @@ + /* If options said don't run linker, + complain about input files to be given to the linker. */ + +- if (! linker_was_run && !seen_error ()) ++ if (! linker_was_run && !seen_error () && allow_linker) + for (i = 0; (int) i < n_infiles; i++) + if (explicit_link_files[i] + && !(infiles[i].language && infiles[i].language[0] == '*')) +@@ -9631,9 +9725,9 @@ + get_random_number (void) + { + unsigned HOST_WIDE_INT ret = 0; +- int fd; ++ int fd; + +- fd = open ("/dev/urandom", O_RDONLY); ++ fd = open ("/dev/urandom", O_RDONLY); + if (fd >= 0) + { + read (fd, &ret, sizeof (HOST_WIDE_INT)); +@@ -9993,16 +10087,16 @@ + } + + +-/* Insert backslash before spaces in ORIG (usually a file path), to ++/* Insert backslash before spaces in ORIG (usually a file path), to + avoid being broken by spec parser. + + This function is needed as do_spec_1 treats white space (' ' and '\t') + as the end of an argument. But in case of -plugin /usr/gcc install/xxx.so, + the file name should be treated as a single argument rather than being +- broken into multiple. Solution is to insert '\\' before the space in a ++ broken into multiple. Solution is to insert '\\' before the space in a + file name. +- +- This function converts and only converts all occurrence of ' ' ++ ++ This function converts and only converts all occurrence of ' ' + to '\\' + ' ' and '\t' to '\\' + '\t'. For example: + "a b" -> "a\\ b" + "a b" -> "a\\ \\ b" +--- a/src/gcc/gcc.h ++++ b/src/gcc/gcc.h +@@ -72,9 +72,17 @@ + extern int do_spec (const char *); + extern void record_temp_file (const char *, int, int); + extern void set_input (const char *); ++extern void fe_save_switch (const char *opt, size_t n_args, ++ const char *const *args, bool validated); ++extern void fe_B_prefix (const char *arg); ++extern void fe_add_infile (const char *infile, const char *lang); ++extern void fe_add_linker_option (const char *option); ++extern void fe_add_spec_function (const char *name, const char *(*func) (int, const char **)); + + /* Spec files linked with gcc.c must provide definitions for these. */ + ++extern void lang_register_spec_functions (void); ++ + /* Called before processing to change/add/remove arguments. */ + extern void lang_specific_driver (struct cl_decoded_option **, + unsigned int *, int *); +@@ -96,4 +104,8 @@ + void *user_data), + void *user_data); + ++/* Default setting is true, but can be overridden by the language ++ front end to prohibit the linker from being invoked. */ ++extern int allow_linker; ++ + #endif /* ! GCC_GCC_H */ +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -10,12 +10,12 @@ + // it under the terms of the GNU General Public License as published by + // the Free Software Foundation; either version 3 of the License, or + // (at your option) any later version. +-// ++// + // This program is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. +-// ++// + // You should have received a copy of the GNU General Public License + // along with this program; see the file COPYING3. If not see + // . +@@ -45,7 +45,7 @@ + missing= TAGS; }; + host_modules= { module= flex; no_check_cross= true; }; + host_modules= { module= gas; bootstrap=true; }; +-host_modules= { module= gcc; bootstrap=true; ++host_modules= { module= gcc; bootstrap=true; + extra_make_flags="$(EXTRA_GCC_FLAGS)"; }; + host_modules= { module= gmp; lib_path=.libs; bootstrap=true; + // Work around in-tree gmp configure bug with missing flex. +@@ -116,7 +116,7 @@ + host_modules= { module= expect; }; + host_modules= { module= guile; }; + host_modules= { module= tk; }; +-host_modules= { module= libtermcap; no_check=true; ++host_modules= { module= libtermcap; no_check=true; + missing=mostlyclean; + missing=clean; + missing=distclean; +@@ -166,6 +166,7 @@ + target_modules = { module= zlib; }; + target_modules = { module= rda; }; + target_modules = { module= libada; }; ++target_modules = { module= libgm2; lib_path=.libs; }; + target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; + target_modules = { module= libitm; lib_path=.libs; }; + target_modules = { module= libatomic; lib_path=.libs; }; +@@ -174,26 +175,26 @@ + // Not all; these are the ones which don't have special options. + // "depend" indicates that a target depends on another target uniformly + // for each subdirectory. There can be several such lines per target. +-recursive_targets = { make_target= info; ++recursive_targets = { make_target= info; + depend=configure; }; +-recursive_targets = { make_target= dvi; ++recursive_targets = { make_target= dvi; + depend=configure; }; +-recursive_targets = { make_target= pdf; ++recursive_targets = { make_target= pdf; + depend=configure; }; +-recursive_targets = { make_target= html; ++recursive_targets = { make_target= html; + depend=configure; }; +-recursive_targets = { make_target= TAGS; ++recursive_targets = { make_target= TAGS; + depend=configure; }; +-recursive_targets = { make_target= install-info; ++recursive_targets = { make_target= install-info; + depend=configure; + depend=info; }; +-recursive_targets = { make_target= install-pdf; ++recursive_targets = { make_target= install-pdf; + depend=configure; + depend=pdf; }; +-recursive_targets = { make_target= install-html; ++recursive_targets = { make_target= install-html; + depend=configure; + depend=html; }; +-recursive_targets = { make_target= installcheck; ++recursive_targets = { make_target= installcheck; + depend=configure; }; + recursive_targets = { make_target= mostlyclean; }; + recursive_targets = { make_target= clean; }; +@@ -284,6 +285,8 @@ + flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; }; + flags_to_pass = { flag= GDC_FOR_TARGET ; }; + flags_to_pass = { flag= GDCFLAGS_FOR_TARGET ; }; ++flags_to_pass = { flag= GM2_FOR_TARGET ; }; ++flags_to_pass = { flag= GM2FLAGS_FOR_TARGET ; }; + flags_to_pass = { flag= LD_FOR_TARGET ; }; + flags_to_pass = { flag= LIPO_FOR_TARGET ; }; + flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; +@@ -608,6 +611,7 @@ + languages = { language=go; gcc-check-target=check-go; + lib-check-target=check-target-libgo; + lib-check-target=check-gotools; }; ++languages = { language=gm2; gcc-check-target=check-gm2; }; + languages = { language=brig; gcc-check-target=check-brig; + lib-check-target=check-target-libhsail-rt; }; + languages = { language=d; gcc-check-target=check-d; +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -10,12 +10,12 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. +-# ++# + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with this program; see the file COPYING3. If not see + # . +@@ -158,6 +158,7 @@ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ + GDC="$(GDC_FOR_BUILD)"; export GDC; \ + GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \ ++ GM2="$(GM2_FOR_BUILD)"; export GM2; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -195,6 +196,7 @@ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ ++ GM2="$(GM2)"; export GM2; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -292,6 +294,7 @@ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ ++ GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ + DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ + LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ +@@ -358,6 +361,7 @@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++GM2_FOR_BUILD = @GM2_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -427,6 +431,7 @@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) + GDCFLAGS = $(CFLAGS) ++GM2FLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -594,6 +599,7 @@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ ++GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ + LD_FOR_TARGET=@LD_FOR_TARGET@ + +@@ -644,7 +650,7 @@ + + # This is the list of directories that may be needed in RPATH_ENVVAR + # so that programs built for the target machine work. +-TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) ++TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) + + @if target-libstdc++-v3 + TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: +@@ -670,6 +676,10 @@ + TARGET_LIB_PATH_libphobos = $$r/$(TARGET_SUBDIR)/libphobos/src/.libs: + @endif target-libphobos + ++@if target-libgm2 ++TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs: ++@endif target-libgm2 ++ + @if target-libgomp + TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs: + @endif target-libgomp +@@ -819,6 +829,8 @@ + "GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \ + "GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \ + "GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \ ++ "GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \ ++ "GM2FLAGS_FOR_TARGET=$(GM2FLAGS_FOR_TARGET)" \ + "LD_FOR_TARGET=$(LD_FOR_TARGET)" \ + "LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \ + "LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \ +@@ -891,6 +903,7 @@ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ + 'GDC=$(GDC)' \ ++ 'GM2=$(GM2)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -951,6 +964,8 @@ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +@@ -1060,6 +1075,7 @@ + maybe-configure-target-zlib \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ ++ maybe-configure-target-libgm2 \ + maybe-configure-target-libgomp \ + maybe-configure-target-libitm \ + maybe-configure-target-libatomic +@@ -1223,6 +1239,7 @@ + all-target: maybe-all-target-zlib + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada ++all-target: maybe-all-target-libgm2 + @if target-libgomp-no-bootstrap + all-target: maybe-all-target-libgomp + @endif target-libgomp-no-bootstrap +@@ -1315,6 +1332,7 @@ + info-target: maybe-info-target-zlib + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada ++info-target: maybe-info-target-libgm2 + info-target: maybe-info-target-libgomp + info-target: maybe-info-target-libitm + info-target: maybe-info-target-libatomic +@@ -1400,6 +1418,7 @@ + dvi-target: maybe-dvi-target-zlib + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada ++dvi-target: maybe-dvi-target-libgm2 + dvi-target: maybe-dvi-target-libgomp + dvi-target: maybe-dvi-target-libitm + dvi-target: maybe-dvi-target-libatomic +@@ -1485,6 +1504,7 @@ + pdf-target: maybe-pdf-target-zlib + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada ++pdf-target: maybe-pdf-target-libgm2 + pdf-target: maybe-pdf-target-libgomp + pdf-target: maybe-pdf-target-libitm + pdf-target: maybe-pdf-target-libatomic +@@ -1570,6 +1590,7 @@ + html-target: maybe-html-target-zlib + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada ++html-target: maybe-html-target-libgm2 + html-target: maybe-html-target-libgomp + html-target: maybe-html-target-libitm + html-target: maybe-html-target-libatomic +@@ -1655,6 +1676,7 @@ + TAGS-target: maybe-TAGS-target-zlib + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada ++TAGS-target: maybe-TAGS-target-libgm2 + TAGS-target: maybe-TAGS-target-libgomp + TAGS-target: maybe-TAGS-target-libitm + TAGS-target: maybe-TAGS-target-libatomic +@@ -1740,6 +1762,7 @@ + install-info-target: maybe-install-info-target-zlib + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada ++install-info-target: maybe-install-info-target-libgm2 + install-info-target: maybe-install-info-target-libgomp + install-info-target: maybe-install-info-target-libitm + install-info-target: maybe-install-info-target-libatomic +@@ -1825,6 +1848,7 @@ + install-pdf-target: maybe-install-pdf-target-zlib + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada ++install-pdf-target: maybe-install-pdf-target-libgm2 + install-pdf-target: maybe-install-pdf-target-libgomp + install-pdf-target: maybe-install-pdf-target-libitm + install-pdf-target: maybe-install-pdf-target-libatomic +@@ -1910,6 +1934,7 @@ + install-html-target: maybe-install-html-target-zlib + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada ++install-html-target: maybe-install-html-target-libgm2 + install-html-target: maybe-install-html-target-libgomp + install-html-target: maybe-install-html-target-libitm + install-html-target: maybe-install-html-target-libatomic +@@ -1995,6 +2020,7 @@ + installcheck-target: maybe-installcheck-target-zlib + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada ++installcheck-target: maybe-installcheck-target-libgm2 + installcheck-target: maybe-installcheck-target-libgomp + installcheck-target: maybe-installcheck-target-libitm + installcheck-target: maybe-installcheck-target-libatomic +@@ -2080,6 +2106,7 @@ + mostlyclean-target: maybe-mostlyclean-target-zlib + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada ++mostlyclean-target: maybe-mostlyclean-target-libgm2 + mostlyclean-target: maybe-mostlyclean-target-libgomp + mostlyclean-target: maybe-mostlyclean-target-libitm + mostlyclean-target: maybe-mostlyclean-target-libatomic +@@ -2165,6 +2192,7 @@ + clean-target: maybe-clean-target-zlib + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada ++clean-target: maybe-clean-target-libgm2 + clean-target: maybe-clean-target-libgomp + clean-target: maybe-clean-target-libitm + clean-target: maybe-clean-target-libatomic +@@ -2250,6 +2278,7 @@ + distclean-target: maybe-distclean-target-zlib + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada ++distclean-target: maybe-distclean-target-libgm2 + distclean-target: maybe-distclean-target-libgomp + distclean-target: maybe-distclean-target-libitm + distclean-target: maybe-distclean-target-libatomic +@@ -2335,6 +2364,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-zlib + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada ++maintainer-clean-target: maybe-maintainer-clean-target-libgm2 + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + maintainer-clean-target: maybe-maintainer-clean-target-libitm + maintainer-clean-target: maybe-maintainer-clean-target-libatomic +@@ -2394,7 +2424,7 @@ + clean: do-clean local-clean + mostlyclean: do-mostlyclean local-clean + distclean: do-distclean local-clean local-distclean +-maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean ++maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean + maintainer-clean: local-distclean + realclean: maintainer-clean + +@@ -2476,6 +2506,7 @@ + maybe-check-target-zlib \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libgm2 \ + maybe-check-target-libgomp \ + maybe-check-target-libitm \ + maybe-check-target-libatomic +@@ -2657,6 +2688,7 @@ + maybe-install-target-zlib \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libgm2 \ + maybe-install-target-libgomp \ + maybe-install-target-libitm \ + maybe-install-target-libatomic +@@ -2762,6 +2794,7 @@ + maybe-install-strip-target-zlib \ + maybe-install-strip-target-rda \ + maybe-install-strip-target-libada \ ++ maybe-install-strip-target-libgm2 \ + maybe-install-strip-target-libgomp \ + maybe-install-strip-target-libitm \ + maybe-install-strip-target-libatomic +@@ -2785,7 +2818,7 @@ + + dist: + @echo "Building a full distribution of this tree isn't done" +- @echo "via 'make dist'. Check out the etc/ subdirectory" ++ @echo "via 'make dist'. Check out the etc/ subdirectory" + + etags tags: TAGS + +@@ -50788,6 +50821,464 @@ + + + ++.PHONY: configure-target-libgm2 maybe-configure-target-libgm2 ++maybe-configure-target-libgm2: ++@if gcc-bootstrap ++configure-target-libgm2: stage_current ++@endif gcc-bootstrap ++@if target-libgm2 ++maybe-configure-target-libgm2: configure-target-libgm2 ++configure-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgm2..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgm2; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgm2/multilib.tmp 2> /dev/null; \ ++ if test -r $(TARGET_SUBDIR)/libgm2/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgm2/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgm2/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgm2/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgm2; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgm2; \ ++ cd "$(TARGET_SUBDIR)/libgm2" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgm2/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ module_srcdir=libgm2; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) \ ++ $$s/$$module_srcdir/configure \ ++ --srcdir=$${topdir}/$$module_srcdir \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} \ ++ || exit 1 ++@endif target-libgm2 ++ ++ ++ ++ ++ ++.PHONY: all-target-libgm2 maybe-all-target-libgm2 ++maybe-all-target-libgm2: ++@if gcc-bootstrap ++all-target-libgm2: stage_current ++@endif gcc-bootstrap ++@if target-libgm2 ++TARGET-target-libgm2=all ++maybe-all-target-libgm2: all-target-libgm2 ++all-target-libgm2: configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libgm2)) ++@endif target-libgm2 ++ ++ ++ ++ ++ ++.PHONY: check-target-libgm2 maybe-check-target-libgm2 ++maybe-check-target-libgm2: ++@if target-libgm2 ++maybe-check-target-libgm2: check-target-libgm2 ++ ++check-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libgm2 ++ ++.PHONY: install-target-libgm2 maybe-install-target-libgm2 ++maybe-install-target-libgm2: ++@if target-libgm2 ++maybe-install-target-libgm2: install-target-libgm2 ++ ++install-target-libgm2: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgm2 ++ ++.PHONY: install-strip-target-libgm2 maybe-install-strip-target-libgm2 ++maybe-install-strip-target-libgm2: ++@if target-libgm2 ++maybe-install-strip-target-libgm2: install-strip-target-libgm2 ++ ++install-strip-target-libgm2: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) ++ ++@endif target-libgm2 ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgm2 info-target-libgm2 ++maybe-info-target-libgm2: ++@if target-libgm2 ++maybe-info-target-libgm2: info-target-libgm2 ++ ++info-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ info) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-dvi-target-libgm2 dvi-target-libgm2 ++maybe-dvi-target-libgm2: ++@if target-libgm2 ++maybe-dvi-target-libgm2: dvi-target-libgm2 ++ ++dvi-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ dvi) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-pdf-target-libgm2 pdf-target-libgm2 ++maybe-pdf-target-libgm2: ++@if target-libgm2 ++maybe-pdf-target-libgm2: pdf-target-libgm2 ++ ++pdf-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-html-target-libgm2 html-target-libgm2 ++maybe-html-target-libgm2: ++@if target-libgm2 ++maybe-html-target-libgm2: html-target-libgm2 ++ ++html-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ html) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-TAGS-target-libgm2 TAGS-target-libgm2 ++maybe-TAGS-target-libgm2: ++@if target-libgm2 ++maybe-TAGS-target-libgm2: TAGS-target-libgm2 ++ ++TAGS-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ TAGS) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-install-info-target-libgm2 install-info-target-libgm2 ++maybe-install-info-target-libgm2: ++@if target-libgm2 ++maybe-install-info-target-libgm2: install-info-target-libgm2 ++ ++install-info-target-libgm2: \ ++ configure-target-libgm2 \ ++ info-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-info) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-install-pdf-target-libgm2 install-pdf-target-libgm2 ++maybe-install-pdf-target-libgm2: ++@if target-libgm2 ++maybe-install-pdf-target-libgm2: install-pdf-target-libgm2 ++ ++install-pdf-target-libgm2: \ ++ configure-target-libgm2 \ ++ pdf-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-install-html-target-libgm2 install-html-target-libgm2 ++maybe-install-html-target-libgm2: ++@if target-libgm2 ++maybe-install-html-target-libgm2: install-html-target-libgm2 ++ ++install-html-target-libgm2: \ ++ configure-target-libgm2 \ ++ html-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-installcheck-target-libgm2 installcheck-target-libgm2 ++maybe-installcheck-target-libgm2: ++@if target-libgm2 ++maybe-installcheck-target-libgm2: installcheck-target-libgm2 ++ ++installcheck-target-libgm2: \ ++ configure-target-libgm2 ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ installcheck) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-mostlyclean-target-libgm2 mostlyclean-target-libgm2 ++maybe-mostlyclean-target-libgm2: ++@if target-libgm2 ++maybe-mostlyclean-target-libgm2: mostlyclean-target-libgm2 ++ ++mostlyclean-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-clean-target-libgm2 clean-target-libgm2 ++maybe-clean-target-libgm2: ++@if target-libgm2 ++maybe-clean-target-libgm2: clean-target-libgm2 ++ ++clean-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-distclean-target-libgm2 distclean-target-libgm2 ++maybe-distclean-target-libgm2: ++@if target-libgm2 ++maybe-distclean-target-libgm2: distclean-target-libgm2 ++ ++distclean-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++.PHONY: maybe-maintainer-clean-target-libgm2 maintainer-clean-target-libgm2 ++maybe-maintainer-clean-target-libgm2: ++@if target-libgm2 ++maybe-maintainer-clean-target-libgm2: maintainer-clean-target-libgm2 ++ ++maintainer-clean-target-libgm2: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgm2"; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgm2 && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgm2 ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -53039,6 +53530,14 @@ + (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go); + check-go: check-gcc-go check-target-libgo check-gotools + ++.PHONY: check-gcc-gm2 check-gm2 ++check-gcc-gm2: ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-gm2); ++check-gm2: check-gcc-gm2 ++ + .PHONY: check-gcc-brig check-brig + check-gcc-brig: + r=`${PWD_COMMAND}`; export r; \ +@@ -53114,7 +53613,7 @@ + # reliable. + + # 'touch' doesn't work right on some platforms. +-STAMP = echo timestamp > ++STAMP = echo timestamp > + + # We only want to compare .o files, so set this! + objext = .o +@@ -56255,6 +56754,7 @@ + configure-target-zlib: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libgm2: stage_last + configure-stage1-target-libgomp: maybe-all-stage1-gcc + configure-stage2-target-libgomp: maybe-all-stage2-gcc + configure-stage3-target-libgomp: maybe-all-stage3-gcc +@@ -56290,6 +56790,7 @@ + configure-target-zlib: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libgm2: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + configure-target-libitm: maybe-all-gcc + configure-target-libatomic: maybe-all-gcc +@@ -57459,6 +57960,7 @@ + configure-target-zlib: maybe-all-target-libgcc + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc ++configure-target-libgm2: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + configure-target-libitm: maybe-all-target-libgcc + configure-target-libatomic: maybe-all-target-libgcc +@@ -57506,6 +58008,8 @@ + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss +@@ -57522,7 +58026,7 @@ + install-gdb: $(INSTALL_GDB_TK) + + # Serialization dependencies. Host configures don't work well in parallel to +-# each other, due to contention over config.cache. Target configures and ++# each other, due to contention over config.cache. Target configures and + # build configures are similar. + @serialization_dependencies@ + +--- a/src/Makefile.tpl ++++ b/src/Makefile.tpl +@@ -13,12 +13,12 @@ + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 3 of the License, or + # (at your option) any later version. +-# ++# + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. +-# ++# + # You should have received a copy of the GNU General Public License + # along with this program; see the file COPYING3. If not see + # . +@@ -161,6 +161,7 @@ + GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \ + GDC="$(GDC_FOR_BUILD)"; export GDC; \ + GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \ ++ GM2="$(GM2_FOR_BUILD)"; export GM2; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ +@@ -198,6 +199,7 @@ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ + GOC="$(GOC)"; export GOC; \ + GDC="$(GDC)"; export GDC; \ ++ GM2="$(GM2)"; export GM2; \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ +@@ -295,6 +297,7 @@ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ + GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ + GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ ++ GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ + DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ + LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ +@@ -361,6 +364,7 @@ + GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ + GOC_FOR_BUILD = @GOC_FOR_BUILD@ + GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++GM2_FOR_BUILD = @GM2_FOR_BUILD@ + LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ + LD_FOR_BUILD = @LD_FOR_BUILD@ + NM_FOR_BUILD = @NM_FOR_BUILD@ +@@ -430,6 +434,7 @@ + LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates + GOCFLAGS = $(CFLAGS) + GDCFLAGS = $(CFLAGS) ++GM2FLAGS = $(CFLAGS) + + CREATE_GCOV = create_gcov + +@@ -517,6 +522,7 @@ + GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ + GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ + GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ ++GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ + LD_FOR_TARGET=@LD_FOR_TARGET@ + +@@ -646,6 +652,7 @@ + 'GFORTRAN=$(GFORTRAN)' \ + 'GOC=$(GOC)' \ + 'GDC=$(GDC)' \ ++ 'GM2=$(GM2)' \ + 'LD=$(LD)' \ + 'LIPO=$(LIPO)' \ + 'NM=$(NM)' \ +@@ -706,6 +713,8 @@ + 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ + 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ + 'LD=$(COMPILER_LD_FOR_TARGET)' \ + 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ +@@ -874,7 +883,7 @@ + clean: do-clean local-clean + mostlyclean: do-mostlyclean local-clean + distclean: do-distclean local-clean local-distclean +-maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean ++maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean + maintainer-clean: local-distclean + realclean: maintainer-clean + +@@ -1031,7 +1040,7 @@ + + dist: + @echo "Building a full distribution of this tree isn't done" +- @echo "via 'make dist'. Check out the etc/ subdirectory" ++ @echo "via 'make dist'. Check out the etc/ subdirectory" + + etags tags: TAGS + +@@ -1404,9 +1413,9 @@ + ENDIF raw_cxx +] + (cd $(TARGET_SUBDIR)/[+module+] && \ + $(MAKE) $(TARGET_FLAGS_TO_PASS) [+ +- IF raw_cxx +- +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ +- ENDIF raw_cxx ++ IF raw_cxx ++ +] 'CXX=$$(RAW_CXX_FOR_TARGET)' 'CXX_FOR_TARGET=$$(RAW_CXX_FOR_TARGET)' [+ ++ ENDIF raw_cxx + +] [+extra_make_flags+] check) + [+ ENDIF no_check +] + @endif target-[+module+] +@@ -1599,7 +1608,7 @@ + # reliable. + + # 'touch' doesn't work right on some platforms. +-STAMP = echo timestamp > ++STAMP = echo timestamp > + + # We only want to compare .o files, so set this! + objext = .o +@@ -1981,7 +1990,7 @@ + install-gdb: $(INSTALL_GDB_TK) + + # Serialization dependencies. Host configures don't work well in parallel to +-# each other, due to contention over config.cache. Target configures and ++# each other, due to contention over config.cache. Target configures and + # build configures are similar. + @serialization_dependencies@ + +--- a/src/gcc/brig/brigspec.c ++++ b/src/gcc/brig/brigspec.c +@@ -134,3 +134,9 @@ + /* Number of extra output files that lang_specific_pre_link may generate. */ + + int lang_specific_extra_outfiles = 0; /* Not used for Brig. */ ++ ++/* lang_register_spec_functions. Not used for Brig. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/d/d-spec.cc ++++ b/src/gcc/d/d-spec.cc +@@ -514,3 +514,8 @@ + + int lang_specific_extra_outfiles = 0; /* Not used for D. */ + ++/* lang_register_spec_functions. Not used for D. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/fortran/gfortranspec.c ++++ b/src/gcc/fortran/gfortranspec.c +@@ -200,7 +200,7 @@ + int need_math = (MATH_LIBRARY[0] != '\0'); + + /* Whether we should link a static libgfortran. */ +- int static_lib = 0; ++ int static_lib = 0; + + /* Whether we need to link statically. */ + int static_linking = 0; +@@ -448,3 +448,9 @@ + + /* Number of extra output files that lang_specific_pre_link may generate. */ + int lang_specific_extra_outfiles = 0; /* Not used for F77. */ ++ ++/* lang_register_spec_functions. Not used for F77. */ ++void ++lang_register_spec_functions (void) ++{ ++} +--- a/src/gcc/go/gospec.c ++++ b/src/gcc/go/gospec.c +@@ -125,7 +125,7 @@ + #endif + + /* The first input file with an extension of .go. */ +- const char *first_go_file = NULL; ++ const char *first_go_file = NULL; + + argc = *in_decoded_options_count; + decoded_options = *in_decoded_options; +@@ -440,3 +440,9 @@ + + /* Number of extra output files that lang_specific_pre_link may generate. */ + int lang_specific_extra_outfiles = 0; /* Not used for Go. */ ++ ++/* lang_register_spec_functions. Not used for Go. */ ++void ++lang_register_spec_functions (void) ++{ ++} diff --git a/patches/go-testsuite.diff b/patches/go-testsuite.diff new file mode 100644 index 0000000..f37d3cd --- /dev/null +++ b/patches/go-testsuite.diff @@ -0,0 +1,19 @@ +# DP: Skip Go testcase on AArch64 which hangs on the buildds. + +--- a/src/gcc/testsuite/go.test/go-test.exp ++++ b/src/gcc/testsuite/go.test/go-test.exp +@@ -407,6 +407,14 @@ proc go-gc-tests { } { + continue + } + ++ # Hangs on the buildds ++ if { [istarget "aarch64*-*-*"] } { ++ if { [file tail $test] == "pprof.go" } { ++ untested $test ++ continue ++ } ++ } ++ + if { [file tail $test] == "init1.go" } { + # This tests whether GC runs during init, which for gccgo + # it currently does not. diff --git a/patches/hurd-changes.diff b/patches/hurd-changes.diff new file mode 100644 index 0000000..2b368da --- /dev/null +++ b/patches/hurd-changes.diff @@ -0,0 +1,20 @@ +# DP: Traditional GNU systems don't have a /usr directory. However, Debian +# DP: systems do, and we support both having a /usr -> . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. + +--- + config.gcc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/gcc/config.gcc (révision 182461) ++++ b/src/gcc/config.gcc (copie de travail) +@@ -583,7 +583,7 @@ + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) + :;; + *-*-gnu*) +- native_system_header_dir=/include ++ # native_system_header_dir=/include + ;; + esac + # glibc / uclibc / bionic switch. diff --git a/patches/ia64-disable-selective-scheduling.diff b/patches/ia64-disable-selective-scheduling.diff new file mode 100644 index 0000000..e75b3c0 --- /dev/null +++ b/patches/ia64-disable-selective-scheduling.diff @@ -0,0 +1,16 @@ +--- a/src/gcc/config/ia64/ia64.c 2018-01-03 11:03:58.000000000 +0100 ++++ b/src/gcc/config/ia64/ia64.c 2018-12-16 12:19:05.420184086 +0100 +@@ -6122,13 +6122,6 @@ + static void + ia64_override_options_after_change (void) + { +- if (optimize >= 3 +- && !global_options_set.x_flag_selective_scheduling +- && !global_options_set.x_flag_selective_scheduling2) +- { +- flag_selective_scheduling2 = 1; +- flag_sel_sched_pipelining = 1; +- } + if (mflag_sched_control_spec == 2) + { + /* Control speculation is on by default for the selective scheduler, diff --git a/patches/ignore-pie-specs-when-not-enabled.diff b/patches/ignore-pie-specs-when-not-enabled.diff new file mode 100644 index 0000000..8f5cc09 --- /dev/null +++ b/patches/ignore-pie-specs-when-not-enabled.diff @@ -0,0 +1,56 @@ +# DP: Ignore dpkg's pie specs when pie is not enabled. + +Index: b/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -3715,6 +3715,36 @@ handle_foffload_option (const char *arg) + } + } + ++static bool ignore_pie_specs_when_not_enabled(const char *envvar, ++ const char *specname) ++{ ++ const char *envval = secure_getenv(envvar); ++ char *hardening; ++ bool ignore; ++ ++ if (strstr (specname, "/pie-compile.specs") == NULL ++ && strstr (specname, "/pie-link.specs") == NULL) ++ return false; ++ if (envval == NULL || strstr (envval, "hardening=") == NULL) ++ return true; ++ ignore = true; ++ hardening = (char *) xmalloc (strlen(envval) + 1); ++ strcpy (hardening, strstr (envval, "hardening=")); ++ if (strchr (hardening, ' ')) ++ *strchr (hardening, ' ') = '\0'; ++ if (strstr(hardening, "+all")) ++ { ++ if (strstr(hardening, "-pie") == NULL) ++ ignore = false; ++ } ++ else if (strstr(hardening, "+pie")) ++ { ++ ignore = false; ++ } ++ free (hardening); ++ return ignore; ++} ++ + /* Handle a driver option; arguments and return value as for + handle_option. */ + +@@ -3989,6 +4019,12 @@ driver_handle_option (struct gcc_options + break; + + case OPT_specs_: ++ if (ignore_pie_specs_when_not_enabled("DEB_BUILD_MAINT_OPTIONS", arg) ++ && ignore_pie_specs_when_not_enabled("DEB_BUILD_OPTIONS", arg)) ++ { ++ inform (0, "pie specs %s ignored when pie is not enabled", arg); ++ return true; ++ } + { + struct user_specs *user = XNEW (struct user_specs); + diff --git a/patches/kfreebsd-decimal-float.diff b/patches/kfreebsd-decimal-float.diff new file mode 100644 index 0000000..4f87bca --- /dev/null +++ b/patches/kfreebsd-decimal-float.diff @@ -0,0 +1,32 @@ +# DP: Enable decimal float support on kfreebsd-amd64 + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -839,6 +839,7 @@ AC_ARG_ENABLE(__cxa_atexit, + [], []) + + # Enable C extension for decimal float if target supports it. ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) + + dfp=`if test $enable_decimal_float != no; then echo 1; else echo 0; fi` +--- a/src/libdecnumber/configure.ac ++++ b/src/libdecnumber/configure.ac +@@ -76,6 +76,7 @@ AC_CANONICAL_TARGET + + # Default decimal format + # If you change the defaults here, be sure to change them in the GCC directory also ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + AC_MSG_CHECKING([for decimal floating point]) + + GCC_AC_ENABLE_DECIMAL_FLOAT([$target]) +--- a/src/libgcc/configure.ac ++++ b/src/libgcc/configure.ac +@@ -211,6 +211,7 @@ AC_CHECK_HEADERS(inttypes.h stdint.h std + AC_HEADER_STDC + + # Check for decimal float support. ++# touch the file, adding decimal support for kfreebsd-amd64 in config/dfp.m4 + AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include diff --git a/patches/kfreebsd-unwind.diff b/patches/kfreebsd-unwind.diff new file mode 100644 index 0000000..76545b1 --- /dev/null +++ b/patches/kfreebsd-unwind.diff @@ -0,0 +1,44 @@ +# DP: DWARF2 EH unwinding support for AMD x86-64 and x86 KFreeBSD. + +--- a/src/libgcc/config.host ++++ b/src/libgcc/config.host +@@ -675,7 +675,13 @@ i[34567]86-*-linux*) + tm_file="${tm_file} i386/elf-lib.h" + md_unwind_header=i386/linux-unwind.h + ;; +-i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu) ++i[34567]86-*-kfreebsd*-gnu) ++ extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" ++ tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" ++ tm_file="${tm_file} i386/elf-lib.h" ++ md_unwind_header=i386/freebsd-unwind.h ++ ;; ++i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" + tm_file="${tm_file} i386/elf-lib.h" +@@ -690,6 +696,7 @@ x86_64-*-kfreebsd*-gnu) + extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o" + tmake_file="${tmake_file} i386/t-crtpc t-crtfm i386/t-crtstuff t-dfprules" + tm_file="${tm_file} i386/elf-lib.h" ++ md_unwind_header=i386/freebsd-unwind.h + ;; + i[34567]86-pc-msdosdjgpp*) + ;; +--- a/src/libgcc/config/i386/freebsd-unwind.h ++++ b/src/libgcc/config/i386/freebsd-unwind.h +@@ -26,6 +26,8 @@ see the files COPYING3 and COPYING.RUNTI + /* Do code reading to identify a signal frame, and set the frame + state data appropriately. See unwind-dw2.c for the structs. */ + ++#ifndef inhibit_libc ++ + #include + #include + #include +@@ -210,3 +212,5 @@ x86_freebsd_fallback_frame_state + return _URC_NO_REASON; + } + #endif /* ifdef __x86_64__ */ ++ ++#endif /* ifndef inhibit_libc */ diff --git a/patches/libasan-sparc.diff b/patches/libasan-sparc.diff new file mode 100644 index 0000000..4b52ac2 --- /dev/null +++ b/patches/libasan-sparc.diff @@ -0,0 +1,163 @@ +# DP: Re-apply sanitizer patch for sparc, dropped upstream + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. + +libsanitizer/ + +2014-10-14 David S. Miller + + * sanitizer_common/sanitizer_platform_limits_linux.cc (time_t): + Define at __kernel_time_t, as needed for sparc. + (struct __old_kernel_stat): Don't check if __sparc__ is defined. + * libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h + (__sanitizer): Define struct___old_kernel_stat_sz, + struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc. + (__sanitizer_ipc_perm): Adjust for sparc targets. + (__sanitizer_shmid_ds): Likewsie. + (__sanitizer_sigaction): Likewsie. + (IOC_SIZE): Likewsie. + +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216224) +@@ -72,6 +72,14 @@ + const unsigned struct_kernel_stat_sz = 144; + #endif + const unsigned struct_kernel_stat64_sz = 104; ++#elif defined(__sparc__) && defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 104; ++ const unsigned struct_kernel_stat64_sz = 144; ++#elif defined(__sparc__) && !defined(__arch64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++ const unsigned struct_kernel_stat_sz = 64; ++ const unsigned struct_kernel_stat64_sz = 104; + #endif + struct __sanitizer_perf_event_attr { + unsigned type; +@@ -94,7 +102,7 @@ + + #if defined(__powerpc64__) + const unsigned struct___old_kernel_stat_sz = 0; +-#else ++#elif !defined(__sparc__) + const unsigned struct___old_kernel_stat_sz = 32; + #endif + +@@ -173,6 +181,18 @@ + unsigned short __pad1; + unsigned long __unused1; + unsigned long __unused2; ++#elif defined(__sparc__) ++# if defined(__arch64__) ++ unsigned mode; ++ unsigned short __pad1; ++# else ++ unsigned short __pad1; ++ unsigned short mode; ++ unsigned short __pad2; ++# endif ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else + unsigned short mode; + unsigned short __pad1; +@@ -190,6 +210,26 @@ + + struct __sanitizer_shmid_ds { + __sanitizer_ipc_perm shm_perm; ++ #if defined(__sparc__) ++ # if !defined(__arch64__) ++ u32 __pad1; ++ # endif ++ long shm_atime; ++ # if !defined(__arch64__) ++ u32 __pad2; ++ # endif ++ long shm_dtime; ++ # if !defined(__arch64__) ++ u32 __pad3; ++ # endif ++ long shm_ctime; ++ uptr shm_segsz; ++ int shm_cpid; ++ int shm_lpid; ++ unsigned long shm_nattch; ++ unsigned long __glibc_reserved1; ++ unsigned long __glibc_reserved2; ++ #else + #ifndef __powerpc__ + uptr shm_segsz; + #elif !defined(__powerpc64__) +@@ -227,6 +267,7 @@ + uptr __unused4; + uptr __unused5; + #endif ++#endif + }; + #elif SANITIZER_FREEBSD + struct __sanitizer_ipc_perm { +@@ -523,9 +564,13 @@ + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ ++#if defined(__sparc__) ++ unsigned long sa_flags; ++#else + int sa_flags; + #endif + #endif ++#endif + #if SANITIZER_LINUX + void (*sa_restorer)(); + #endif +@@ -745,7 +790,7 @@ + + #define IOC_NRBITS 8 + #define IOC_TYPEBITS 8 +-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) ++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__) + #define IOC_SIZEBITS 13 + #define IOC_DIRBITS 3 + #define IOC_NONE 1U +@@ -775,7 +820,17 @@ + #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) + #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) + #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) ++ ++#if defined(__sparc__) ++// In sparc the 14 bits SIZE field overlaps with the ++// least significant bit of DIR, so either IOC_READ or ++// IOC_WRITE shall be 1 in order to get a non-zero SIZE. ++# define IOC_SIZE(nr) \ ++ ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ ++ 0 : (((nr) >> 16) & 0x3fff)) ++#else + #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) ++#endif + + extern unsigned struct_arpreq_sz; + extern unsigned struct_ifreq_sz; +Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216223) ++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216224) +@@ -36,6 +36,7 @@ + #define uid_t __kernel_uid_t + #define gid_t __kernel_gid_t + #define off_t __kernel_off_t ++#define time_t __kernel_time_t + // This header seems to contain the definitions of _kernel_ stat* structs. + #include + #undef ino_t +@@ -60,7 +61,7 @@ + } // namespace __sanitizer + + #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ +- && !defined(__mips__) ++ && !defined(__mips__) && !defined(__sparc__) + COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); + #endif + diff --git a/patches/libffi-mips.diff b/patches/libffi-mips.diff new file mode 100644 index 0000000..811aef6 --- /dev/null +++ b/patches/libffi-mips.diff @@ -0,0 +1,703 @@ +# DP: Backport Mips go closure support, taken from libffi issue #197. + +--- a/src/libffi/src/mips/ffi.c ++++ b/src/libffi/src/mips/ffi.c +@@ -581,14 +581,15 @@ ffi_status ffi_prep_cif_machdep(ffi_cif + /* Low level routine for calling O32 functions */ + extern int ffi_call_O32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, +- unsigned, unsigned *, void (*)(void)); ++ unsigned, unsigned *, void (*)(void), void *closure); + + /* Low level routine for calling N32 functions */ + extern int ffi_call_N32(void (*)(char *, extended_cif *, int, int), + extended_cif *, unsigned, +- unsigned, void *, void (*)(void)); ++ unsigned, void *, void (*)(void), void *closure); + +-void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++void ffi_call_int(ffi_cif *cif, void (*fn)(void), void *rvalue, ++ void **avalue, void *closure) + { + extended_cif ecif; + +@@ -610,7 +611,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + case FFI_O32: + case FFI_O32_SOFT_FLOAT: + ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, +- cif->flags, ecif.rvalue, fn); ++ cif->flags, ecif.rvalue, fn, closure); + break; + #endif + +@@ -642,7 +643,7 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + #endif + } + ffi_call_N32(ffi_prep_args, &ecif, cif->bytes, +- cif->flags, rvalue_copy, fn); ++ cif->flags, rvalue_copy, fn, closure); + if (copy_rvalue) + memcpy(ecif.rvalue, rvalue_copy + copy_offset, cif->rtype->size); + } +@@ -655,11 +656,27 @@ void ffi_call(ffi_cif *cif, void (*fn)(v + } + } + ++void ++ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, NULL); ++} ++ ++void ++ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue, ++ void **avalue, void *closure) ++{ ++ ffi_call_int (cif, fn, rvalue, avalue, closure); ++} ++ ++ + #if FFI_CLOSURES + #if defined(FFI_MIPS_O32) + extern void ffi_closure_O32(void); ++extern void ffi_go_closure_O32(void); + #else + extern void ffi_closure_N32(void); ++extern void ffi_go_closure_N32(void); + #endif /* FFI_MIPS_O32 */ + + ffi_status +@@ -770,17 +787,17 @@ ffi_prep_closure_loc (ffi_closure *closu + * Based on the similar routine for sparc. + */ + int +-ffi_closure_mips_inner_O32 (ffi_closure *closure, ++ffi_closure_mips_inner_O32 (ffi_cif *cif, ++ void (*fun)(ffi_cif*, void*, void**, void*), ++ void *user_data, + void *rvalue, ffi_arg *ar, + double *fpr) + { +- ffi_cif *cif; + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; + int i, avn, argn, seen_int; + +- cif = closure->cif; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); + avaluep = alloca (cif->nargs * sizeof (ffi_arg)); + +@@ -848,7 +865,7 @@ ffi_closure_mips_inner_O32 (ffi_closure + } + + /* Invoke the closure. */ +- (closure->fun) (cif, rvalue, avaluep, closure->user_data); ++ fun(cif, rvalue, avaluep, user_data); + + if (cif->abi == FFI_O32_SOFT_FLOAT) + { +@@ -924,11 +941,12 @@ copy_struct_N32(char *target, unsigned o + * + */ + int +-ffi_closure_mips_inner_N32 (ffi_closure *closure, ++ffi_closure_mips_inner_N32 (ffi_cif *cif, ++ void (*fun)(ffi_cif*, void*, void**, void*), ++ void *user_data, + void *rvalue, ffi_arg *ar, + ffi_arg *fpr) + { +- ffi_cif *cif; + void **avaluep; + ffi_arg *avalue; + ffi_type **arg_types; +@@ -936,7 +954,6 @@ ffi_closure_mips_inner_N32 (ffi_closure + int soft_float; + ffi_arg *argp; + +- cif = closure->cif; + soft_float = cif->abi == FFI_N64_SOFT_FLOAT + || cif->abi == FFI_N32_SOFT_FLOAT; + avalue = alloca (cif->nargs * sizeof (ffi_arg)); +@@ -1048,11 +1065,49 @@ ffi_closure_mips_inner_N32 (ffi_closure + } + + /* Invoke the closure. */ +- (closure->fun) (cif, rvalue, avaluep, closure->user_data); ++ fun (cif, rvalue, avaluep, user_data); + + return cif->flags >> (FFI_FLAG_BITS * 8); + } + + #endif /* FFI_MIPS_N32 */ + ++#if defined(FFI_MIPS_O32) ++extern void ffi_closure_O32(void); ++extern void ffi_go_closure_O32(void); ++#else ++extern void ffi_closure_N32(void); ++extern void ffi_go_closure_N32(void); ++#endif /* FFI_MIPS_O32 */ ++ ++ffi_status ++ffi_prep_go_closure (ffi_go_closure* closure, ffi_cif* cif, ++ void (*fun)(ffi_cif*,void*,void**,void*)) ++{ ++ void * fn; ++ ++#if defined(FFI_MIPS_O32) ++ if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++ fn = ffi_go_closure_O32; ++#else ++#if _MIPS_SIM ==_ABIN32 ++ if (cif->abi != FFI_N32 ++ && cif->abi != FFI_N32_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++#else ++ if (cif->abi != FFI_N64 ++ && cif->abi != FFI_N64_SOFT_FLOAT) ++ return FFI_BAD_ABI; ++#endif ++ fn = ffi_go_closure_N32; ++#endif /* FFI_MIPS_O32 */ ++ ++ closure->tramp = (void *)fn; ++ closure->cif = cif; ++ closure->fun = fun; ++ ++ return FFI_OK; ++} ++ + #endif /* FFI_CLOSURES */ +--- a/src/libffi/src/mips/ffitarget.h ++++ b/src/libffi/src/mips/ffitarget.h +@@ -231,12 +231,14 @@ typedef enum ffi_abi { + + #if defined(FFI_MIPS_O32) + #define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 + #define FFI_TRAMPOLINE_SIZE 20 + #else + /* N32/N64. */ + # define FFI_CLOSURES 1 ++#define FFI_GO_CLOSURES 1 + #if _MIPS_SIM==_ABI64 +-#define FFI_TRAMPOLINE_SIZE 52 ++#define FFI_TRAMPOLINE_SIZE 56 + #else + #define FFI_TRAMPOLINE_SIZE 20 + #endif +--- a/src/libffi/src/mips/n32.S ++++ b/src/libffi/src/mips/n32.S +@@ -37,8 +37,12 @@ + #define flags a3 + #define raddr a4 + #define fn a5 ++#define closure a6 + +-#define SIZEOF_FRAME ( 8 * FFI_SIZEOF_ARG ) ++/* Note: to keep stack 16 byte aligned we need even number slots ++ used 9 slots here ++*/ ++#define SIZEOF_FRAME ( 10 * FFI_SIZEOF_ARG ) + + #ifdef __GNUC__ + .abicalls +@@ -51,24 +55,25 @@ + .globl ffi_call_N32 + .ent ffi_call_N32 + ffi_call_N32: +-.LFB3: ++.LFB0: + .frame $fp, SIZEOF_FRAME, ra + .mask 0xc0000000,-FFI_SIZEOF_ARG + .fmask 0x00000000,0 + + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +-.LCFI0: ++.LCFI00: + REG_S $fp, SIZEOF_FRAME - 2*FFI_SIZEOF_ARG($sp) # Save frame pointer + REG_S ra, SIZEOF_FRAME - 1*FFI_SIZEOF_ARG($sp) # Save return address +-.LCFI1: ++.LCFI01: + move $fp, $sp +-.LCFI3: ++.LCFI02: + move t9, callback # callback function pointer + REG_S bytes, 2*FFI_SIZEOF_ARG($fp) # bytes + REG_S flags, 3*FFI_SIZEOF_ARG($fp) # flags + REG_S raddr, 4*FFI_SIZEOF_ARG($fp) # raddr + REG_S fn, 5*FFI_SIZEOF_ARG($fp) # fn ++ REG_S closure, 6*FFI_SIZEOF_ARG($fp) # closure + + # Allocate at least 4 words in the argstack + move v0, bytes +@@ -200,6 +205,9 @@ callit: + # Load the function pointer + REG_L t9, 5*FFI_SIZEOF_ARG($fp) + ++ # install the static chain(t7=$15) ++ REG_L t7, 6*FFI_SIZEOF_ARG($fp) ++ + # If the return value pointer is NULL, assume no return value. + REG_L t5, 4*FFI_SIZEOF_ARG($fp) + beqz t5, noretval +@@ -348,7 +356,7 @@ epilogue: + ADDU $sp, SIZEOF_FRAME # Fix stack pointer + j ra + +-.LFE3: ++.LFE0: + .end ffi_call_N32 + + /* ffi_closure_N32. Expects address of the passed-in ffi_closure in t0 +@@ -408,6 +416,41 @@ epilogue: + #define GP_OFF2 (0 * FFI_SIZEOF_ARG) + + .align 2 ++ .globl ffi_go_closure_N32 ++ .ent ffi_go_closure_N32 ++ffi_go_closure_N32: ++.LFB1: ++ .frame $sp, SIZEOF_FRAME2, ra ++ .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2) ++ .fmask 0x00000000,0 ++ SUBU $sp, SIZEOF_FRAME2 ++.LCFI10: ++ .cpsetup t9, GP_OFF2, ffi_go_closure_N32 ++ REG_S ra, RA_OFF2($sp) # Save return address ++.LCFI11: ++ ++ REG_S a0, A0_OFF2($sp) ++ REG_S a1, A1_OFF2($sp) ++ REG_S a2, A2_OFF2($sp) ++ REG_S a3, A3_OFF2($sp) ++ REG_S a4, A4_OFF2($sp) ++ REG_S a5, A5_OFF2($sp) ++ ++ # Call ffi_closure_mips_inner_N32 to do the real work. ++ LA t9, ffi_closure_mips_inner_N32 ++ REG_L a0, 8($15) # cif ++ REG_L a1, 16($15) # fun ++ move a2, t7 # userdata=closure ++ ADDU a3, $sp, V0_OFF2 # rvalue ++ ADDU a4, $sp, A0_OFF2 # ar ++ ADDU a5, $sp, F12_OFF2 # fpr ++ ++ b $do_closure ++ ++.LFE1: ++ .end ffi_go_closure_N32 ++ ++ .align 2 + .globl ffi_closure_N32 + .ent ffi_closure_N32 + ffi_closure_N32: +@@ -416,18 +459,29 @@ ffi_closure_N32: + .mask 0x90000000,-(SIZEOF_FRAME2 - RA_OFF2) + .fmask 0x00000000,0 + SUBU $sp, SIZEOF_FRAME2 +-.LCFI5: ++.LCFI20: + .cpsetup t9, GP_OFF2, ffi_closure_N32 + REG_S ra, RA_OFF2($sp) # Save return address +-.LCFI6: +- # Store all possible argument registers. If there are more than +- # fit in registers, then they were stored on the stack. ++.LCFI21: + REG_S a0, A0_OFF2($sp) + REG_S a1, A1_OFF2($sp) + REG_S a2, A2_OFF2($sp) + REG_S a3, A3_OFF2($sp) + REG_S a4, A4_OFF2($sp) + REG_S a5, A5_OFF2($sp) ++ ++ # Call ffi_closure_mips_inner_N32 to do the real work. ++ LA t9, ffi_closure_mips_inner_N32 ++ REG_L a0, 56($12) # cif ++ REG_L a1, 64($12) # fun ++ REG_L a2, 72($12) # user_data ++ ADDU a3, $sp, V0_OFF2 ++ ADDU a4, $sp, A0_OFF2 ++ ADDU a5, $sp, F12_OFF2 ++ ++$do_closure: ++ # Store all possible argument registers. If there are more than ++ # fit in registers, then they were stored on the stack. + REG_S a6, A6_OFF2($sp) + REG_S a7, A7_OFF2($sp) + +@@ -441,12 +495,6 @@ ffi_closure_N32: + s.d $f18, F18_OFF2($sp) + s.d $f19, F19_OFF2($sp) + +- # Call ffi_closure_mips_inner_N32 to do the real work. +- LA t9, ffi_closure_mips_inner_N32 +- move a0, $12 # Pointer to the ffi_closure +- ADDU a1, $sp, V0_OFF2 +- ADDU a2, $sp, A0_OFF2 +- ADDU a3, $sp, F12_OFF2 + jalr t9 + + # Return flags are in v0 +@@ -533,46 +581,66 @@ cls_epilogue: + .align EH_FRAME_ALIGN + .LECIE1: + +-.LSFDE1: +- .4byte .LEFDE1-.LASFDE1 # length. +-.LASFDE1: +- .4byte .LASFDE1-.Lframe1 # CIE_pointer. +- FDE_ADDR_BYTES .LFB3 # initial_location. +- FDE_ADDR_BYTES .LFE3-.LFB3 # address_range. ++.LSFDE0: ++ .4byte .LEFDE0-.LASFDE0 # length. ++.LASFDE0: ++ .4byte .LASFDE0-.Lframe1 # CIE_pointer. ++ FDE_ADDR_BYTES .LFB0 # initial_location. ++ FDE_ADDR_BYTES .LFE0-.LFB0 # address_range. + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI0-.LFB3 # to .LCFI0 ++ .4byte .LCFI00-.LFB0 # to .LCFI00 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME # adjust stack.by SIZEOF_FRAME + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI1-.LCFI0 # to .LCFI1 ++ .4byte .LCFI01-.LCFI00 # to .LCFI01 + .byte 0x9e # DW_CFA_offset of $fp + .uleb128 2*FFI_SIZEOF_ARG/4 # + .byte 0x9f # DW_CFA_offset of ra + .uleb128 1*FFI_SIZEOF_ARG/4 # + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI3-.LCFI1 # to .LCFI3 ++ .4byte .LCFI02-.LCFI01 # to .LCFI02 + .byte 0xd # DW_CFA_def_cfa_register + .uleb128 0x1e # in $fp + .align EH_FRAME_ALIGN ++.LEFDE0: ++ ++.LSFDE1: ++ .4byte .LEFDE1-.LASFDE1 # length ++.LASFDE1: ++ .4byte .LASFDE1-.Lframe1 # CIE_pointer. ++ FDE_ADDR_BYTES .LFB1 # initial_location. ++ FDE_ADDR_BYTES .LFE1-.LFB1 # address_range. ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte .LCFI10-.LFB1 # to .LCFI10 ++ .byte 0xe # DW_CFA_def_cfa_offset ++ .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte .LCFI11-.LCFI10 # to .LCFI11 ++ .byte 0x9c # DW_CFA_offset of $gp ($28) ++ .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4 ++ .byte 0x9f # DW_CFA_offset of ra ($31) ++ .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4 ++ .align EH_FRAME_ALIGN + .LEFDE1: +-.LSFDE3: +- .4byte .LEFDE3-.LASFDE3 # length +-.LASFDE3: +- .4byte .LASFDE3-.Lframe1 # CIE_pointer. ++ ++.LSFDE2: ++ .4byte .LEFDE2-.LASFDE2 # length ++.LASFDE2: ++ .4byte .LASFDE2-.Lframe1 # CIE_pointer. + FDE_ADDR_BYTES .LFB2 # initial_location. + FDE_ADDR_BYTES .LFE2-.LFB2 # address_range. + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI5-.LFB2 # to .LCFI5 ++ .4byte .LCFI20-.LFB2 # to .LCFI20 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 SIZEOF_FRAME2 # adjust stack.by SIZEOF_FRAME + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte .LCFI6-.LCFI5 # to .LCFI6 ++ .4byte .LCFI21-.LCFI20 # to .LCFI21 + .byte 0x9c # DW_CFA_offset of $gp ($28) + .uleb128 (SIZEOF_FRAME2 - GP_OFF2)/4 + .byte 0x9f # DW_CFA_offset of ra ($31) + .uleb128 (SIZEOF_FRAME2 - RA_OFF2)/4 + .align EH_FRAME_ALIGN +-.LEFDE3: ++.LEFDE2: + #endif /* __GNUC__ */ + + #endif +--- a/src/libffi/src/mips/o32.S ++++ b/src/libffi/src/mips/o32.S +@@ -50,14 +50,14 @@ ffi_call_O32: + $LFB0: + # Prologue + SUBU $sp, SIZEOF_FRAME # Frame size +-$LCFI0: ++$LCFI00: + REG_S $fp, FP_OFF($sp) # Save frame pointer +-$LCFI1: ++$LCFI01: + REG_S ra, RA_OFF($sp) # Save return address +-$LCFI2: ++$LCFI02: + move $fp, $sp + +-$LCFI3: ++$LCFI03: + move t9, callback # callback function pointer + REG_S flags, A3_OFF($fp) # flags + +@@ -132,6 +132,9 @@ pass_f_d: + l.d $f14, 2*FFI_SIZEOF_ARG($sp) # passing double and float + + call_it: ++ # Load the static chain pointer ++ REG_L t7, SIZEOF_FRAME + 6*FFI_SIZEOF_ARG($fp) ++ + # Load the function pointer + REG_L t9, SIZEOF_FRAME + 5*FFI_SIZEOF_ARG($fp) + +@@ -204,13 +207,15 @@ $LFE0: + -8 - f14 (le low, be high) + -9 - f12 (le high, be low) + -10 - f12 (le low, be high) +- -11 - Called function a3 save +- -12 - Called function a2 save +- -13 - Called function a1 save +- -14 - Called function a0 save, our sp and fp point here ++ -11 - Called function a5 save ++ -12 - Called function a4 save ++ -13 - Called function a3 save ++ -14 - Called function a2 save ++ -15 - Called function a1 save ++ -16 - Called function a0 save, our sp and fp point here + */ + +-#define SIZEOF_FRAME2 (14 * FFI_SIZEOF_ARG) ++#define SIZEOF_FRAME2 (16 * FFI_SIZEOF_ARG) + #define A3_OFF2 (SIZEOF_FRAME2 + 3 * FFI_SIZEOF_ARG) + #define A2_OFF2 (SIZEOF_FRAME2 + 2 * FFI_SIZEOF_ARG) + #define A1_OFF2 (SIZEOF_FRAME2 + 1 * FFI_SIZEOF_ARG) +@@ -225,13 +230,71 @@ $LFE0: + #define FA_1_0_OFF2 (SIZEOF_FRAME2 - 8 * FFI_SIZEOF_ARG) + #define FA_0_1_OFF2 (SIZEOF_FRAME2 - 9 * FFI_SIZEOF_ARG) + #define FA_0_0_OFF2 (SIZEOF_FRAME2 - 10 * FFI_SIZEOF_ARG) ++#define CALLED_A5_OFF2 (SIZEOF_FRAME2 - 11 * FFI_SIZEOF_ARG) ++#define CALLED_A4_OFF2 (SIZEOF_FRAME2 - 12 * FFI_SIZEOF_ARG) + + .text ++ ++ .align 2 ++ .globl ffi_go_closure_O32 ++ .ent ffi_go_closure_O32 ++ffi_go_closure_O32: ++$LFB1: ++ # Prologue ++ .frame $fp, SIZEOF_FRAME2, ra ++ .set noreorder ++ .cpload t9 ++ .set reorder ++ SUBU $sp, SIZEOF_FRAME2 ++ .cprestore GP_OFF2 ++$LCFI10: ++ ++ REG_S $16, S0_OFF2($sp) # Save s0 ++ REG_S $fp, FP_OFF2($sp) # Save frame pointer ++ REG_S ra, RA_OFF2($sp) # Save return address ++$LCFI11: ++ ++ move $fp, $sp ++$LCFI12: ++ ++ REG_S a0, A0_OFF2($fp) ++ REG_S a1, A1_OFF2($fp) ++ REG_S a2, A2_OFF2($fp) ++ REG_S a3, A3_OFF2($fp) ++ ++ # Load ABI enum to s0 ++ REG_L $16, 4($15) # cif ++ REG_L $16, 0($16) # abi is first member. ++ ++ li $13, 1 # FFI_O32 ++ bne $16, $13, 1f # Skip fp save if FFI_O32_SOFT_FLOAT ++ ++ # Store all possible float/double registers. ++ s.d $f12, FA_0_0_OFF2($fp) ++ s.d $f14, FA_1_0_OFF2($fp) ++1: ++ # prepare arguments for ffi_closure_mips_inner_O32 ++ REG_L a0, 4($15) # cif ++ REG_L a1, 8($15) # fun ++ move a2, $15 # user_data = go closure ++ addu a3, $fp, V0_OFF2 # rvalue ++ ++ addu t9, $fp, A0_OFF2 # ar ++ REG_S t9, CALLED_A4_OFF2($fp) ++ ++ addu t9, $fp, FA_0_0_OFF2 #fpr ++ REG_S t9, CALLED_A5_OFF2($fp) ++ ++ b $do_closure ++ ++$LFE1: ++ .end ffi_go_closure_O32 ++ + .align 2 + .globl ffi_closure_O32 + .ent ffi_closure_O32 + ffi_closure_O32: +-$LFB1: ++$LFB2: + # Prologue + .frame $fp, SIZEOF_FRAME2, ra + .set noreorder +@@ -239,14 +302,14 @@ $LFB1: + .set reorder + SUBU $sp, SIZEOF_FRAME2 + .cprestore GP_OFF2 +-$LCFI4: ++$LCFI20: + REG_S $16, S0_OFF2($sp) # Save s0 + REG_S $fp, FP_OFF2($sp) # Save frame pointer + REG_S ra, RA_OFF2($sp) # Save return address +-$LCFI6: ++$LCFI21: + move $fp, $sp + +-$LCFI7: ++$LCFI22: + # Store all possible argument registers. If there are more than + # four arguments, then they are stored above where we put a3. + REG_S a0, A0_OFF2($fp) +@@ -265,12 +328,21 @@ $LCFI7: + s.d $f12, FA_0_0_OFF2($fp) + s.d $f14, FA_1_0_OFF2($fp) + 1: +- # Call ffi_closure_mips_inner_O32 to do the work. ++ # prepare arguments for ffi_closure_mips_inner_O32 ++ REG_L a0, 20($12) # cif pointer follows tramp. ++ REG_L a1, 24($12) # fun ++ REG_L a2, 28($12) # user_data ++ addu a3, $fp, V0_OFF2 # rvalue ++ ++ addu t9, $fp, A0_OFF2 # ar ++ REG_S t9, CALLED_A4_OFF2($fp) ++ ++ addu t9, $fp, FA_0_0_OFF2 #fpr ++ REG_S t9, CALLED_A5_OFF2($fp) ++ ++$do_closure: + la t9, ffi_closure_mips_inner_O32 +- move a0, $12 # Pointer to the ffi_closure +- addu a1, $fp, V0_OFF2 +- addu a2, $fp, A0_OFF2 +- addu a3, $fp, FA_0_0_OFF2 ++ # Call ffi_closure_mips_inner_O32 to do the work. + jalr t9 + + # Load the return value into the appropriate register. +@@ -300,7 +372,7 @@ closure_done: + REG_L ra, RA_OFF2($sp) # Restore return address + ADDU $sp, SIZEOF_FRAME2 + j ra +-$LFE1: ++$LFE2: + .end ffi_closure_O32 + + /* DWARF-2 unwind info. */ +@@ -322,6 +394,7 @@ $LSCIE0: + .uleb128 0x0 + .align 2 + $LECIE0: ++ + $LSFDE0: + .4byte $LEFDE0-$LASFDE0 # FDE Length + $LASFDE0: +@@ -330,11 +403,11 @@ $LASFDE0: + .4byte $LFE0-$LFB0 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI0-$LFB0 ++ .4byte $LCFI00-$LFB0 + .byte 0xe # DW_CFA_def_cfa_offset + .uleb128 0x18 + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI2-$LCFI0 ++ .4byte $LCFI01-$LCFI00 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x1e # $fp + .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) +@@ -342,12 +415,13 @@ $LASFDE0: + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI3-$LCFI2 ++ .4byte $LCFI02-$LCFI01 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e + .uleb128 0x18 + .align 2 + $LEFDE0: ++ + $LSFDE1: + .4byte $LEFDE1-$LASFDE1 # FDE Length + $LASFDE1: +@@ -356,11 +430,11 @@ $LASFDE1: + .4byte $LFE1-$LFB1 # FDE address range + .uleb128 0x0 # Augmentation size + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI4-$LFB1 ++ .4byte $LCFI10-$LFB1 + .byte 0xe # DW_CFA_def_cfa_offset +- .uleb128 0x38 ++ .uleb128 SIZEOF_FRAME2 + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI6-$LCFI4 ++ .4byte $LCFI11-$LCFI10 + .byte 0x11 # DW_CFA_offset_extended_sf + .uleb128 0x10 # $16 + .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) +@@ -371,11 +445,41 @@ $LASFDE1: + .uleb128 0x1f # $ra + .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) + .byte 0x4 # DW_CFA_advance_loc4 +- .4byte $LCFI7-$LCFI6 ++ .4byte $LCFI12-$LCFI11 + .byte 0xc # DW_CFA_def_cfa + .uleb128 0x1e +- .uleb128 0x38 ++ .uleb128 SIZEOF_FRAME2 + .align 2 + $LEFDE1: + ++$LSFDE2: ++ .4byte $LEFDE2-$LASFDE2 # FDE Length ++$LASFDE2: ++ .4byte $LASFDE2-$Lframe0 # FDE CIE offset ++ .4byte $LFB2 # FDE initial location ++ .4byte $LFE2-$LFB2 # FDE address range ++ .uleb128 0x0 # Augmentation size ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI20-$LFB2 ++ .byte 0xe # DW_CFA_def_cfa_offset ++ .uleb128 SIZEOF_FRAME2 ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI21-$LCFI20 ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x10 # $16 ++ .sleb128 -3 # SIZEOF_FRAME2 - 3*FFI_SIZEOF_ARG($sp) ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x1e # $fp ++ .sleb128 -2 # SIZEOF_FRAME2 - 2*FFI_SIZEOF_ARG($sp) ++ .byte 0x11 # DW_CFA_offset_extended_sf ++ .uleb128 0x1f # $ra ++ .sleb128 -1 # SIZEOF_FRAME2 - 1*FFI_SIZEOF_ARG($sp) ++ .byte 0x4 # DW_CFA_advance_loc4 ++ .4byte $LCFI22-$LCFI21 ++ .byte 0xc # DW_CFA_def_cfa ++ .uleb128 0x1e ++ .uleb128 SIZEOF_FRAME2 ++ .align 2 ++$LEFDE2: ++ + #endif diff --git a/patches/libffi-mipsen-r6.diff b/patches/libffi-mipsen-r6.diff new file mode 100644 index 0000000..7868c08 --- /dev/null +++ b/patches/libffi-mipsen-r6.diff @@ -0,0 +1,40 @@ +# DP: libffi: mips/n32.S: disable .set mips4 on mips r6 + +--- a/src/libffi/src/mips/n32.S ++++ b/src/libffi/src/mips/n32.S +@@ -43,7 +43,9 @@ + #ifdef __GNUC__ + .abicalls + #endif ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + .set mips4 ++#endif + .text + .align 2 + .globl ffi_call_N32 +--- a/src/libffi/src/mips/ffi.c ++++ b/src/libffi/src/mips/ffi.c +@@ -698,7 +698,11 @@ ffi_prep_closure_loc (ffi_closure *closu + /* lui $12,high(codeloc) */ + tramp[2] = 0x3c0c0000 | ((unsigned)codeloc >> 16); + /* jr $25 */ ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[3] = 0x03200008; ++#else ++ tramp[3] = 0x03200009; ++#endif + /* ori $12,low(codeloc) */ + tramp[4] = 0x358c0000 | ((unsigned)codeloc & 0xffff); + #else +@@ -726,7 +730,11 @@ ffi_prep_closure_loc (ffi_closure *closu + /* ori $25,low(fn) */ + tramp[10] = 0x37390000 | ((unsigned long)fn & 0xffff); + /* jr $25 */ ++#if !defined(__mips_isa_rev) || (__mips_isa_rev<6) + tramp[11] = 0x03200008; ++#else ++ tramp[11] = 0x03200009; ++#endif + /* ori $12,low(codeloc) */ + tramp[12] = 0x358c0000 | ((unsigned long)codeloc & 0xffff); + diff --git a/patches/libffi-pax.diff b/patches/libffi-pax.diff new file mode 100644 index 0000000..14a7049 --- /dev/null +++ b/patches/libffi-pax.diff @@ -0,0 +1,161 @@ +From 757876336c183f5b20b6620d674cc9817fd0d280 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:50:54 +0200 +Subject: [PATCH 2/2] always check for PaX MPROTECT on linux, make EMUTRAMP + experimental + +- ffi_prep_closure_loc doesn't necessarily generate trampolines recognized by + PaX EMUTRAMP handler; there is no way to check before, and it isn't working +on x86-64 right now -> experimental +- if MPROTECT is enabled use the same workaround as is used for SELinux (double + mmap()) +--- + configure.ac | 11 +++++++--- + src/closures.c | 68 +++++++++++++++++++++++++++++++++++++++------------------- + 2 files changed, 54 insertions(+), 25 deletions(-) + +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -176,12 +176,17 @@ case "$TARGET" in + ;; + esac + +-# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. ++# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC; ++# if EMUTRAMP is active too ffi could try mapping without PROT_EXEC, ++# but the kernel needs to recognize the trampoline generated by ffi. ++# Otherwise fallback to double mmap trick. + AC_ARG_ENABLE(pax_emutramp, +- [ --enable-pax_emutramp enable pax emulated trampolines, for we can't use PROT_EXEC], ++ [ --enable-pax_emutramp enable pax emulated trampolines (experimental)], + if test "$enable_pax_emutramp" = "yes"; then ++ AC_MSG_WARN([EMUTRAMP is experimental only. Use --enable-pax_emutramp=experimental to enforce.]) ++ elif test "$enable_pax_emutramp" = "experimental"; then + AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1, +- [Define this if you want to enable pax emulated trampolines]) ++ [Define this if you want to enable pax emulated trampolines (experimental)]) + fi) + + FFI_EXEC_TRAMPOLINE_TABLE=0 +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -53,14 +53,18 @@ + # endif + #endif + +-#if FFI_MMAP_EXEC_WRIT && !defined FFI_MMAP_EXEC_SELINUX +-# ifdef __linux__ ++#if FFI_MMAP_EXEC_WRIT && defined __linux__ ++# if !defined FFI_MMAP_EXEC_SELINUX + /* When defined to 1 check for SELinux and if SELinux is active, + don't attempt PROT_EXEC|PROT_WRITE mapping at all, as that + might cause audit messages. */ + # define FFI_MMAP_EXEC_SELINUX 1 +-# endif +-#endif ++# endif /* !defined FFI_MMAP_EXEC_SELINUX */ ++# if !defined FFI_MMAP_PAX ++/* Also check for PaX MPROTECT */ ++# define FFI_MMAP_PAX 1 ++# endif /* !defined FFI_MMAP_PAX */ ++#endif /* FFI_MMAP_EXEC_WRIT && defined __linux__ */ + + #if FFI_CLOSURES + +@@ -172,14 +176,18 @@ selinux_enabled_check (void) + + #endif /* !FFI_MMAP_EXEC_SELINUX */ + +-/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */ +-#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++/* On PaX enable kernels that have MPROTECT enabled we can't use PROT_EXEC. */ ++#if defined FFI_MMAP_PAX + #include + +-static int emutramp_enabled = -1; ++enum { ++ PAX_MPROTECT = (1 << 0), ++ PAX_EMUTRAMP = (1 << 1), ++}; ++static int cached_pax_flags = -1; + + static int +-emutramp_enabled_check (void) ++pax_flags_check (void) + { + char *buf = NULL; + size_t len = 0; +@@ -193,9 +201,10 @@ emutramp_enabled_check (void) + while (getline (&buf, &len, f) != -1) + if (!strncmp (buf, "PaX:", 4)) + { +- char emutramp; +- if (sscanf (buf, "%*s %*c%c", &emutramp) == 1) +- ret = (emutramp == 'E'); ++ if (NULL != strchr (buf + 4, 'M')) ++ ret |= PAX_MPROTECT; ++ if (NULL != strchr (buf + 4, 'E')) ++ ret |= PAX_EMUTRAMP; + break; + } + free (buf); +@@ -203,9 +212,13 @@ emutramp_enabled_check (void) + return ret; + } + +-#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \ +- : (emutramp_enabled = emutramp_enabled_check ())) +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#define get_pax_flags() (cached_pax_flags >= 0 ? cached_pax_flags \ ++ : (cached_pax_flags = pax_flags_check ())) ++#define has_pax_flags(flags) ((flags) == ((flags) & get_pax_flags ())) ++#define is_mprotect_enabled() (has_pax_flags (PAX_MPROTECT)) ++#define is_emutramp_enabled() (has_pax_flags (PAX_EMUTRAMP)) ++ ++#endif /* defined FFI_MMAP_PAX */ + + #elif defined (__CYGWIN__) || defined(__INTERIX) + +@@ -216,9 +229,10 @@ emutramp_enabled_check (void) + + #endif /* !defined(X86_WIN32) && !defined(X86_WIN64) */ + +-#ifndef FFI_MMAP_EXEC_EMUTRAMP_PAX +-#define is_emutramp_enabled() 0 +-#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */ ++#if !defined FFI_MMAP_PAX ++# define is_mprotect_enabled() 0 ++# define is_emutramp_enabled() 0 ++#endif /* !defined FFI_MMAP_PAX */ + + /* Declare all functions defined in dlmalloc.c as static. */ + static void *dlmalloc(size_t); +@@ -525,13 +539,23 @@ dlmmap (void *start, size_t length, int + printf ("mapping in %zi\n", length); + #endif + +- if (execfd == -1 && is_emutramp_enabled ()) ++ /* -1 != execfd hints that we already decided to use dlmmap_locked ++ last time. */ ++ if (execfd == -1 && is_mprotect_enabled ()) + { +- ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); +- return ptr; ++#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX ++ if (is_emutramp_enabled ()) ++ { ++ /* emutramp requires the kernel recognizing the trampoline pattern ++ generated by ffi_prep_closure_loc; there is no way to test ++ in advance whether this will work, so this is experimental. */ ++ ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset); ++ return ptr; ++ } ++#endif ++ /* fallback to dlmmap_locked. */ + } +- +- if (execfd == -1 && !is_selinux_enabled ()) ++ else if (execfd == -1 && !is_selinux_enabled ()) + { + ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset); + diff --git a/patches/libffi-race-condition.diff b/patches/libffi-race-condition.diff new file mode 100644 index 0000000..aa8e80d --- /dev/null +++ b/patches/libffi-race-condition.diff @@ -0,0 +1,33 @@ +From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= +Date: Wed, 7 Sep 2016 15:49:48 +0200 +Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies + execsize + +--- + src/closures.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +--- a/src/libffi/src/closures.c ++++ b/src/libffi/src/closures.c +@@ -568,16 +568,11 @@ dlmmap (void *start, size_t length, int + MREMAP_DUP and prot at this point. */ + } + +- if (execsize == 0 || execfd == -1) +- { +- pthread_mutex_lock (&open_temp_exec_file_mutex); +- ptr = dlmmap_locked (start, length, prot, flags, offset); +- pthread_mutex_unlock (&open_temp_exec_file_mutex); ++ pthread_mutex_lock (&open_temp_exec_file_mutex); ++ ptr = dlmmap_locked (start, length, prot, flags, offset); ++ pthread_mutex_unlock (&open_temp_exec_file_mutex); + +- return ptr; +- } +- +- return dlmmap_locked (start, length, prot, flags, offset); ++ return ptr; + } + + /* Release memory at the given address, as well as the corresponding diff --git a/patches/libffi-ro-eh_frame_sect.diff b/patches/libffi-ro-eh_frame_sect.diff new file mode 100644 index 0000000..bdb5096 --- /dev/null +++ b/patches/libffi-ro-eh_frame_sect.diff @@ -0,0 +1,13 @@ +# DP: PR libffi/47248, force a read only eh frame section. + +--- a/src/libffi/configure.ac ++++ b/src/libffi/configure.ac +@@ -274,6 +274,8 @@ if test "x$GCC" = "xyes"; then + libffi_cv_hidden_visibility_attribute=yes + fi + fi ++ # FIXME: see PR libffi/47248 ++ libffi_cv_ro_eh_frame=yes + rm -f conftest.* + ]) + if test $libffi_cv_hidden_visibility_attribute = yes; then diff --git a/patches/libgo-cleanfiles.diff b/patches/libgo-cleanfiles.diff new file mode 100644 index 0000000..31d8a6a --- /dev/null +++ b/patches/libgo-cleanfiles.diff @@ -0,0 +1,26 @@ +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -1223,7 +1223,9 @@ mostlyclean-local: + find . -name '*-testsum' -print | xargs rm -f + find . -name '*-testlog' -print | xargs rm -f + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + + clean-local: + find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1156,7 +1156,9 @@ MOSTLYCLEANFILES = \ + libgo.head libgo.sum.sep libgo.log.sep libgo.var \ + libcalls-list runtime.inc runtime.inc.tmp2 runtime.inc.tmp3 + +-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc ++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ ++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ ++ */*/*/*/*/*.dep + MULTISRCTOP = + MULTIBUILDTOP = + MULTIDIRS = diff --git a/patches/libgo-revert-timeout-exp.diff b/patches/libgo-revert-timeout-exp.diff new file mode 100644 index 0000000..8d2453d --- /dev/null +++ b/patches/libgo-revert-timeout-exp.diff @@ -0,0 +1,10 @@ +--- a/src/libgo/testsuite/lib/libgo.exp ++++ b/src/libgo/testsuite/lib/libgo.exp +@@ -46,7 +46,6 @@ load_gcc_lib wrapper.exp + load_gcc_lib target-supports.exp + load_gcc_lib target-utils.exp + load_gcc_lib gcc-defs.exp +-load_gcc_lib timeout.exp + load_gcc_lib go.exp + + proc libgo_init { args } { diff --git a/patches/libgo-setcontext-config.diff b/patches/libgo-setcontext-config.diff new file mode 100644 index 0000000..52ad778 --- /dev/null +++ b/patches/libgo-setcontext-config.diff @@ -0,0 +1,19 @@ +# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* + +--- a/src/libgo/configure.ac ++++ b/src/libgo/configure.ac +@@ -757,6 +757,14 @@ main () + CFLAGS="$CFLAGS_hold" + LIBS="$LIBS_hold" + ]) ++dnl overwrite for the mips* 64bit multilibs, fails on some buildds ++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ case "$target" in ++ mips*-linux-*) ++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) ++ libgo_cv_lib_setcontext_clobbers_tls=no ;; ++ esac ++fi + if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then + AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, + [Define if setcontext clobbers TLS variables]) diff --git a/patches/libgo-testsuite.diff b/patches/libgo-testsuite.diff new file mode 100644 index 0000000..8231889 --- /dev/null +++ b/patches/libgo-testsuite.diff @@ -0,0 +1,66 @@ +# DP: Only run the libgo testsuite for flags configured in RUNTESTFLAGS + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -828,7 +828,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -849,6 +849,12 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=yes; \ ++ MULTILIBDIR="$(MULTILIBDIR)"; \ ++ case "$$MULTILIBDIR" in /64|/x32) \ ++ echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \ ++ esac; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ +@@ -864,6 +870,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + # Build all packages before checking any. +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -1007,7 +1007,7 @@ BUILDGOX = \ + $(SHELL) $(srcdir)/mvifdiff.sh $@.tmp `echo $@ | sed -e 's/s-gox/gox/'` + + GOTESTFLAGS = +-GOBENCH = ++GOBENCH = + + # Check a package. + CHECK = \ +@@ -1028,6 +1028,12 @@ CHECK = \ + $(MKDIR_P) $(@D); \ + rm -f $@-testsum $@-testlog; \ + files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst /,_,$(@D)))" $(matchargs_$(subst /,_,$(@D)))`; \ ++ run_check=yes; \ ++ MULTILIBDIR="$(MULTILIBDIR)"; \ ++ case "$$MULTILIBDIR" in /64|/x32) \ ++ echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \ ++ esac; \ ++ if test "$$run_check" = "yes"; then \ + if test "$(USE_DEJAGNU)" = "yes"; then \ + $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ + elif test "$(GOBENCH)" != ""; then \ +@@ -1043,6 +1049,7 @@ CHECK = \ + echo "FAIL: $(@D)" > $@-testsum; \ + exit 1; \ + fi; \ ++ fi; \ + fi + + diff --git a/patches/libgomp-kfreebsd-testsuite.diff b/patches/libgomp-kfreebsd-testsuite.diff new file mode 100644 index 0000000..9471ca1 --- /dev/null +++ b/patches/libgomp-kfreebsd-testsuite.diff @@ -0,0 +1,14 @@ +# DP: Disable lock-2.c test on kfreebsd-* + +--- a/src/libgomp/testsuite/libgomp.c/lock-2.c ++++ b/src/libgomp/testsuite/libgomp.c/lock-2.c +@@ -4,6 +4,9 @@ + int + main (void) + { ++#ifdef __FreeBSD_kernel__ ++ return 1; ++#endif + int l = 0; + omp_nest_lock_t lock; + omp_init_nest_lock (&lock); diff --git a/patches/libgomp-no-werror.diff b/patches/libgomp-no-werror.diff new file mode 100644 index 0000000..da73a21 --- /dev/null +++ b/patches/libgomp-no-werror.diff @@ -0,0 +1,14 @@ +# DP: Disable -Werror for libgomp. PR libgomp/90585 +--- a/src/libgomp/configure.ac ++++ b/src/libgomp/configure.ac +@@ -113,8 +113,9 @@ + save_CFLAGS="$CFLAGS" + + # Add -Wall -Werror if we are using GCC. ++# FIXME: -Werror fails in the x32 multilib variant + if test "x$GCC" = "xyes"; then +- XCFLAGS="$XCFLAGS -Wall -Werror" ++ XCFLAGS="$XCFLAGS -Wall" + fi + + # Find other programs we need. diff --git a/patches/libgomp-omp_h-multilib.diff b/patches/libgomp-omp_h-multilib.diff new file mode 100644 index 0000000..8eb4549 --- /dev/null +++ b/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,32 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +2015-03-25 Matthias Klose + + * omp.h.in (omp_nest_lock_t): Limit the fix Linux. + +--- a/src/libgomp/omp.h.in ++++ b/src/libgomp/omp.h.in +@@ -40,8 +40,19 @@ typedef struct + + typedef struct + { ++ /* ++ Derive OMP_NEST_LOCK_SIZE and OMP_NEST_LOCK_ALIGN, don't hard ++ code the values because the header is used for all multilibs. ++ OMP_NEST_LOCK_SIZE = @OMP_NEST_LOCK_SIZE@ ++ OMP_NEST_LOCK_ALIGN = @OMP_NEST_LOCK_ALIGN@ ++ */ ++#if defined(__linux__) && !(defined(__hppa__) || defined(__alpha__)) ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); ++#else + unsigned char _x[@OMP_NEST_LOCK_SIZE@] + __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++#endif + } omp_nest_lock_t; + #endif + diff --git a/patches/libitm-no-fortify-source.diff b/patches/libitm-no-fortify-source.diff new file mode 100644 index 0000000..faef453 --- /dev/null +++ b/patches/libitm-no-fortify-source.diff @@ -0,0 +1,17 @@ +# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. + +--- a/src/libitm/configure.tgt ++++ b/src/libitm/configure.tgt +@@ -119,6 +119,12 @@ case "${target_cpu}" in + ;; + esac + ++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) ++case "${target}" in ++ *-*-linux*) ++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" ++esac ++ + # For the benefit of top-level configure, determine if the cpu is supported. + test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 + diff --git a/patches/libjit-ldflags.diff b/patches/libjit-ldflags.diff new file mode 100644 index 0000000..d173406 --- /dev/null +++ b/patches/libjit-ldflags.diff @@ -0,0 +1,11 @@ +--- a/src/gcc/jit/Make-lang.in ++++ b/src/gcc/jit/Make-lang.in +@@ -99,7 +99,7 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ + $(CPPLIB) $(LIBDECNUMBER) $(EXTRA_GCC_LIBS) $(LIBS) $(BACKENDLIBS) \ + $(EXTRA_GCC_OBJS) \ + $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ +- $(LIBGCCJIT_SONAME_OPTION) ++ $(LIBGCCJIT_SONAME_OPTION) $(LDFLAGS) + + $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME) + ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK) diff --git a/patches/libphobos-zlib.diff b/patches/libphobos-zlib.diff new file mode 100644 index 0000000..ddf7c95 --- /dev/null +++ b/patches/libphobos-zlib.diff @@ -0,0 +1,72 @@ +# DP: Build zlib in any case to have a fall back for missing libz multilibs + +--- a/src/libphobos/configure.ac ++++ b/src/libphobos/configure.ac +@@ -142,6 +142,7 @@ DRUNTIME_LIBRARIES_BACKTRACE + DRUNTIME_LIBRARIES_DLOPEN + DRUNTIME_LIBRARIES_ZLIB + DRUNTIME_INSTALL_DIRECTORIES ++dnl fake change to regenerate the configure file + + # Add dependencies for libgphobos.spec file + SPEC_PHOBOS_DEPS="$LIBS" +--- a/src/libphobos/m4/druntime/libraries.m4 ++++ b/src/libphobos/m4/druntime/libraries.m4 +@@ -52,19 +52,45 @@ AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], + [ + AC_ARG_WITH(target-system-zlib, + AS_HELP_STRING([--with-target-system-zlib], +- [use installed libz (default: no)])) ++ [use installed libz (default: no)]), ++ [system_zlib=yes],[system_zlib=no]) + +- system_zlib=false +- AS_IF([test "x$with_target_system_zlib" = "xyes"], [ +- AC_CHECK_LIB([z], [deflate], [ +- system_zlib=yes +- ], [ +- AC_MSG_ERROR([System zlib not found]) +- ]) +- ], [ +- AC_MSG_CHECKING([for zlib]) +- AC_MSG_RESULT([just compiled]) +- ]) ++ AC_MSG_CHECKING([for system zlib]) ++ save_LIBS=$LIBS ++ LIBS="$LIBS -lz" ++ dnl the link test is not good enough for ARM32 multilib detection, ++ dnl first check to link, then to run ++ AC_LANG_PUSH(C) ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ],[gzopen("none", "rb")])], ++ [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ gzFile file = gzopen("none", "rb"); ++ return 0; ++ } ++ ]])], ++ [system_zlib_found=yes], ++ [system_zlib_found=no], ++ dnl no system zlib for cross builds ... ++ [system_zlib_found=no] ++ ) ++ ], ++ [system_zlib_found=no]) ++ if test x$system_zlib = xyes; then ++ if test x$system_zlib_found = xyes; then ++ AC_MSG_RESULT([found]) ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not found, disabled]) ++ system_zlib=no ++ fi ++ else ++ LIBS=$save_LIBS ++ AC_MSG_RESULT([not enabled]) ++ fi ++ AC_LANG_POP + + AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) + ]) diff --git a/patches/libstdc++-doclink.diff b/patches/libstdc++-doclink.diff new file mode 100644 index 0000000..4b7520f --- /dev/null +++ b/patches/libstdc++-doclink.diff @@ -0,0 +1,68 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -27,10 +27,10 @@ +

Generated on @DATE@.

+ +

There are two types of documentation for libstdc++. One is the +- distribution documentation, which can be read online +- here +- or offline from the file doc/html/index.html in the library source +- directory. ++ distribution documentation, which can be read ++ offline in the documentation directory ++ or ++ online. +

+ +

The other type is the source documentation, of which this is the first page. +@@ -82,8 +82,11 @@ + +

License, Copyright, and Other Lawyerly Verbosity

+

The libstdc++ documentation is released under ++ these terms ++ (read offline or + +- these terms. ++ read online. ++ ). +

+

Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: +--- a/src/libstdc++-v3/doc/html/api.html ++++ b/src/libstdc++-v3/doc/html/api.html +@@ -20,6 +20,8 @@ + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. +

++The API documentation, rendered into HTML, can be viewed offline. ++

+ The API documentation, rendered into HTML, can be viewed online + for each GCC release + and +@@ -38,4 +40,4 @@ +

+ In addition, a rendered set of man pages are available in the same + location specified above. Start with C++Intro(3). +-

+\ No newline at end of file ++

+--- a/src/libstdc++-v3/doc/xml/api.xml ++++ b/src/libstdc++-v3/doc/xml/api.xml +@@ -40,6 +40,11 @@ + + + ++ The source-level documentation for this release can be viewed offline. ++ ++ ++ ++ + The API documentation, rendered into HTML, can be viewed online + for each GCC release + and diff --git a/patches/libstdc++-futex.diff b/patches/libstdc++-futex.diff new file mode 100644 index 0000000..ebb4918 --- /dev/null +++ b/patches/libstdc++-futex.diff @@ -0,0 +1,337 @@ +# DP: Fix GCC_LINUX_FUTEX to work with C99 compilers + +config/ + +2019-09-06 Florian Weimer + + * futex.m4 (GCC_LINUX_FUTEX): Include for the syscall + function. + +libitm/ libgomp/ libstdc++-v3/ + +2019-09-06 Florian Weimer + + * configure: Regenerate. + +--- a/src/config/futex.m4 ++++ b/src/config/futex.m4 +@@ -22,6 +22,7 @@ case "$target" in + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include ++ #include + int lk;], + [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])], + [save_LIBS="$LIBS" +@@ -48,6 +49,7 @@ If so, please configure with --disable-l + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [#include ++ #include + int lk;], + [syscall (SYS_gettid); syscall (SYS_futex, &lk, 0, 0, 0);])],[], + [AC_MSG_ERROR([SYS_gettid and SYS_futex required for --enable-linux-futex])]) +--- a/src/libitm/configure ++++ b/src/libitm/configure +@@ -16481,6 +16481,7 @@ case "$target" in + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +@@ -16533,6 +16534,7 @@ rm -f core conftest.err conftest.$ac_obj + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +--- a/src/libgomp/configure ++++ b/src/libgomp/configure +@@ -793,6 +793,7 @@ infodir + docdir + oldincludedir + includedir ++runstatedir + localstatedir + sharedstatedir + sysconfdir +@@ -886,6 +887,7 @@ datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' ++runstatedir='${localstatedir}/run' + includedir='${prefix}/include' + oldincludedir='/usr/include' + docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +@@ -1138,6 +1140,15 @@ do + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + ++ -runstatedir | --runstatedir | --runstatedi | --runstated \ ++ | --runstate | --runstat | --runsta | --runst | --runs \ ++ | --run | --ru | --r) ++ ac_prev=runstatedir ;; ++ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ ++ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ ++ | --run=* | --ru=* | --r=*) ++ runstatedir=$ac_optarg ;; ++ + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +@@ -1275,7 +1286,7 @@ fi + for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ +- libdir localedir mandir ++ libdir localedir mandir runstatedir + do + eval ac_val=\$$ac_var + # Remove trailing slashes. +@@ -1428,6 +1439,7 @@ Fine tuning of the installation director + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +@@ -4581,8 +4593,9 @@ fi + save_CFLAGS="$CFLAGS" + + # Add -Wall -Werror if we are using GCC. ++# FIXME: -Werror fails in the x32 multilib variant + if test "x$GCC" = "xyes"; then +- XCFLAGS="$XCFLAGS -Wall -Werror" ++ XCFLAGS="$XCFLAGS -Wall" + fi + + # Find other programs we need. +@@ -11393,7 +11406,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11396 "configure" ++#line 11409 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11499,7 +11512,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11502 "configure" ++#line 11515 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15376,7 +15389,7 @@ fi + + # Plugins for offload execution, configure.ac fragment. -*- mode: autoconf -*- + # +-# Copyright (C) 2014-2018 Free Software Foundation, Inc. ++# Copyright (C) 2014-2019 Free Software Foundation, Inc. + # + # Contributed by Mentor Embedded. + # +@@ -15824,8 +15837,7 @@ for ac_func in aligned_alloc posix_memal + do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +-eval as_val=\$$as_ac_var +- if test "x$as_val" = x""yes; then : ++if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF + #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF +@@ -15888,6 +15900,7 @@ case "$target" in + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +@@ -15940,6 +15953,7 @@ rm -f core conftest.err conftest.$ac_obj + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +--- a/src/libstdc++-v3/configure ++++ b/src/libstdc++-v3/configure +@@ -871,6 +871,7 @@ infodir + docdir + oldincludedir + includedir ++runstatedir + localstatedir + sharedstatedir + sysconfdir +@@ -995,6 +996,7 @@ datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' ++runstatedir='${localstatedir}/run' + includedir='${prefix}/include' + oldincludedir='/usr/include' + docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +@@ -1247,6 +1249,15 @@ do + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + ++ -runstatedir | --runstatedir | --runstatedi | --runstated \ ++ | --runstate | --runstat | --runsta | --runst | --runs \ ++ | --run | --ru | --r) ++ ac_prev=runstatedir ;; ++ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ ++ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ ++ | --run=* | --ru=* | --r=*) ++ runstatedir=$ac_optarg ;; ++ + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +@@ -1384,7 +1395,7 @@ fi + for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ +- libdir localedir mandir ++ libdir localedir mandir runstatedir + do + eval ac_val=\$$ac_var + # Remove trailing slashes. +@@ -1537,6 +1548,7 @@ Fine tuning of the installation director + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] ++ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +@@ -11845,7 +11857,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11848 "configure" ++#line 11860 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11951,7 +11963,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11954 "configure" ++#line 11966 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15637,7 +15649,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" + # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF +-#line 15640 "configure" ++#line 15652 "configure" + int main() + { + typedef bool atomic_type; +@@ -15672,7 +15684,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15675 "configure" ++#line 15687 "configure" + int main() + { + typedef short atomic_type; +@@ -15707,7 +15719,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15710 "configure" ++#line 15722 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +@@ -15743,7 +15755,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15746 "configure" ++#line 15758 "configure" + int main() + { + typedef long long atomic_type; +@@ -15896,7 +15908,7 @@ $as_echo "mutex" >&6; } + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15899 "configure" ++#line 15911 "configure" + int main() + { + _Decimal32 d1; +@@ -15938,7 +15950,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15941 "configure" ++#line 15953 "configure" + template + struct same + { typedef T2 type; }; +@@ -15972,7 +15984,7 @@ $as_echo "$enable_int128" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15975 "configure" ++#line 15987 "configure" + template + struct same + { typedef T2 type; }; +@@ -18270,8 +18282,22 @@ else + fi + + ++ if test x$enable_libstdcxx_debug = xyes; then ++ if test -f $toplevel_builddir/../stage_final && test -f $toplevel_builddir/../stage_current; then ++ stage_final=`cat $toplevel_builddir/../stage_final` ++ stage_current=`cat $toplevel_builddir/../stage_current` ++ if test x$stage_current != x$stage_final ; then ++ skip_debug_build=yes ++ enable_libstdcxx_debug=no ++ fi ++ fi ++ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libstdcxx_debug" >&5 + $as_echo "$enable_libstdcxx_debug" >&6; } ++ if test x$skip_debug_build = xyes ; then ++ { $as_echo "$as_me:${as_lineno-$LINENO}: Skip libstdc++-v3 debug build for bootstrap stage $stage_current" >&5 ++$as_echo "$as_me: Skip libstdc++-v3 debug build for bootstrap stage $stage_current" >&6;} ++ fi + + + +@@ -78741,6 +78767,7 @@ fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () +@@ -78799,6 +78826,7 @@ fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include ++ #include + int lk; + int + main () diff --git a/patches/libstdc++-man-3cxx.diff b/patches/libstdc++-man-3cxx.diff new file mode 100644 index 0000000..dc89f82 --- /dev/null +++ b/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,63 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in ++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in +@@ -1968,7 +1968,7 @@ MAN_OUTPUT = man + # The default value is: .3. + # This tag requires that the tag GENERATE_MAN is set to YES. + +-MAN_EXTENSION = .3 ++MAN_EXTENSION = .3cxx + + # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it + # will generate one additional man file for each entity documented in the real +--- a/src/libstdc++-v3/scripts/run_doxygen ++++ b/src/libstdc++-v3/scripts/run_doxygen +@@ -243,6 +243,9 @@ fi + if $do_man; then + echo :: + echo :: Fixing up the man pages... ++mkdir -p $outdir/man/man3 ++mv $outdir/man/man3cxx/* $outdir/man/man3/ ++rmdir $outdir/man/man3cxx + cd $outdir/man/man3 + + # File names with embedded spaces (EVIL!) need to be....? renamed or removed? +@@ -264,7 +267,7 @@ rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tc + # and I'm off getting coffee then anyhow, so I didn't care enough to make + # this super-fast. + g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader +-problematic=`egrep -l '#include <.*_.*>' [a-z]*.3` ++problematic=`egrep -l '#include <.*_.*>' [a-z]*.3 [a-z]*.3cxx` + for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/fC#include .*/\1/p' $f` +@@ -277,7 +280,7 @@ rm stdheader + # Some of the pages for generated modules have text that confuses certain + # implementations of man(1), e.g. on GNU/Linux. We need to have another + # top-level *roff tag to /stop/ the .SH NAME entry. +-problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ++problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx` + #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' + + for f in $problematic; do +@@ -291,7 +294,7 @@ a\ + done + + # Also, break this (generated) line up. It's ugly as sin. +-problematic=`grep -l '[^^]Definition at line' *.3` ++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` + for f in $problematic; do + sed 's/Definition at line/\ + .PP\ +@@ -408,8 +411,8 @@ for f in ios streambuf istream ostream i + istringstream ostringstream stringstream filebuf ifstream \ + ofstream fstream string; + do +- echo ".so man3/std::basic_${f}.3" > std::${f}.3 +- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 ++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx ++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx + done + + echo :: diff --git a/patches/libstdc++-no-testsuite.diff b/patches/libstdc++-no-testsuite.diff new file mode 100644 index 0000000..771bf7a --- /dev/null +++ b/patches/libstdc++-no-testsuite.diff @@ -0,0 +1,12 @@ +# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds) + +--- a/src/libstdc++-v3/testsuite/Makefile.in ++++ b/src/libstdc++-v3/testsuite/Makefile.in +@@ -567,6 +567,7 @@ + + # Run the testsuite in normal mode. + check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp ++ case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \ + $(if $*,@)AR="$(AR)"; export AR; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \ diff --git a/patches/libstdc++-nothumb-check.diff b/patches/libstdc++-nothumb-check.diff new file mode 100644 index 0000000..6c665a2 --- /dev/null +++ b/patches/libstdc++-nothumb-check.diff @@ -0,0 +1,38 @@ +# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel + +Index: testsuite/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/testsuite/Makefile.in (revision 156820) ++++ b/src/libstdc++-v3/testsuite/Makefile.in (working copy) +@@ -583,6 +583,8 @@ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + if [ -z "$$runtest" ]; then runtest=runtest; fi; \ + tool=libstdc++; \ + dirs=; \ +@@ -590,7 +592,7 @@ + normal0) \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) abi.exp; \ ++ $$runtestflags abi.exp; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi; \ + dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \ +@@ -605,11 +607,11 @@ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + if [ -n "$$dirs" ]; then \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS) \ ++ $$runtestflags \ + "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \ + else \ + $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ +- $(RUNTESTFLAGS); \ ++ $$runtestflags; \ + fi; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi diff --git a/patches/libstdc++-pic.diff b/patches/libstdc++-pic.diff new file mode 100644 index 0000000..f3d6395 --- /dev/null +++ b/patches/libstdc++-pic.diff @@ -0,0 +1,91 @@ +# DP: Build and install libstdc++_pic.a library. + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -315,10 +315,12 @@ if GLIBCXX_BUILD_DEBUG + STAMP_DEBUG = build-debug + STAMP_INSTALL_DEBUG = install-debug + CLEAN_DEBUG = debug ++STAMP_INSTALL_PIC = install-pic + else + STAMP_DEBUG = + STAMP_INSTALL_DEBUG = + CLEAN_DEBUG = ++STAMP_INSTALL_PIC = + endif + + # Build a debug variant. +@@ -353,6 +355,7 @@ build-debug: stamp-debug + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -363,3 +366,8 @@ build-debug: stamp-debug + install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; ++ ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -619,6 +619,8 @@ CXXLINK = \ + @GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_DEBUG = install-debug + @GLIBCXX_BUILD_DEBUG_FALSE@CLEAN_DEBUG = + @GLIBCXX_BUILD_DEBUG_TRUE@CLEAN_DEBUG = debug ++@GLIBCXX_BUILD_DEBUG_FALSE@STAMP_INSTALL_PIC = ++@GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_PIC = install-pic + + # Build a debug variant. + # Take care to fix all possibly-relative paths. +@@ -885,7 +887,7 @@ install-dvi: install-dvi-recursive + + install-dvi-am: + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES + + install-html: install-html-recursive + +@@ -935,11 +937,11 @@ uninstall-am: uninstall-toolexeclibLTLIB + distclean-libtool distclean-tags dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ +- install-exec-am install-html install-html-am install-info \ +- install-info-am install-man install-pdf install-pdf-am \ +- install-ps install-ps-am install-strip \ +- install-toolexeclibLTLIBRARIES installcheck installcheck-am \ +- installdirs installdirs-am maintainer-clean \ ++ install-exec-am install-exec-local install-html \ ++ install-html-am install-info install-info-am install-man \ ++ install-pdf install-pdf-am install-ps install-ps-am \ ++ install-strip install-toolexeclibLTLIBRARIES installcheck \ ++ installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am \ +@@ -1075,6 +1077,7 @@ build-debug: stamp-debug + mv Makefile Makefile.tmp; \ + sed -e 's,all-local: all-once,all-local:,' \ + -e 's,install-data-local: install-data-once,install-data-local:,' \ ++ -e 's,install-exec-local:.*,install-exec-local:,' \ + -e '/vpath/!s,src/c,src/debug/c,' \ + < Makefile.tmp > Makefile ; \ + rm -f Makefile.tmp ; \ +@@ -1086,6 +1089,11 @@ install-debug: build-debug + (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; + ++install-exec-local: $(STAMP_INSTALL_PIC) ++$(STAMP_INSTALL_PIC): ++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff --git a/patches/libstdc++-test-installed.diff b/patches/libstdc++-test-installed.diff new file mode 100644 index 0000000..dd7fa99 --- /dev/null +++ b/patches/libstdc++-test-installed.diff @@ -0,0 +1,76 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp +@@ -37,6 +37,12 @@ + # the last thing before testing begins. This can be defined in, e.g., + # ~/.dejagnurc or $DEJAGNU. + ++set test_installed 0 ++if [info exists env(TEST_INSTALLED)] { ++ verbose -log "test installed libstdc++-v3" ++ set test_installed 1 ++} ++ + proc load_gcc_lib { filename } { + global srcdir loaded_libs + +@@ -101,6 +107,7 @@ proc libstdc++_init { testfile } { + global tool_timeout + global DEFAULT_CXXFLAGS + global STATIC_LIBCXXFLAGS ++ global test_installed + + # We set LC_ALL and LANG to C so that we get the same error + # messages as expected. +@@ -120,6 +127,9 @@ proc libstdc++_init { testfile } { + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + set flags_file "${blddir}/scripts/testsuite_flags" ++ if {$test_installed} { ++ set flags_file "${blddir}/scripts/testsuite_flags.installed" ++ } + set shlib_ext [get_shlib_extension] + v3track flags_file 2 + +@@ -154,7 +164,11 @@ proc libstdc++_init { testfile } { + + # Locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms +- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ if {$test_installed} { ++ set gccdir "" ++ } else { ++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ } + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" +@@ -174,7 +188,11 @@ proc libstdc++_init { testfile } { + + # Locate libgomp. This is only required for parallel mode. + set v3-libgomp 0 +- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ if {$test_installed} { ++ set libgompdir "" ++ } else { ++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] ++ } + if {$libgompdir != ""} { + set v3-libgomp 1 + set libgompdir [file dirname $libgompdir] +@@ -196,7 +214,12 @@ proc libstdc++_init { testfile } { + + # Locate libstdc++ shared library. (ie libstdc++.so.) + set v3-sharedlib 0 +- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ if {$test_installed} { ++ set sharedlibdir "" ++ set v3-sharedlib 1 ++ } else { ++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] ++ } + if {$sharedlibdir != ""} { + if { ([string match "*-*-gnu*" $target_triplet] + || [string match "*-*-linux*" $target_triplet] diff --git a/patches/linaro-issue2575.diff b/patches/linaro-issue2575.diff new file mode 100644 index 0000000..97bf780 --- /dev/null +++ b/patches/linaro-issue2575.diff @@ -0,0 +1,16 @@ +# DP: Fix ICE in tree_to_shwi, Linaro issue #2575. + +--- a/src/gcc/varasm.c ++++ b/src/gcc/varasm.c +@@ -6777,8 +6777,9 @@ + anchor range to reduce the amount of instructions require to refer + to the entire declaration. */ + if (decl && DECL_SIZE (decl) +- && tree_to_shwi (DECL_SIZE (decl)) +- >= (targetm.max_anchor_offset * BITS_PER_UNIT)) ++ && (!tree_fits_shwi_p (DECL_SIZE (decl)) ++ || tree_to_shwi (DECL_SIZE (decl)) ++ >= (targetm.max_anchor_offset * BITS_PER_UNIT))) + return false; + + } diff --git a/patches/note-gnu-stack.diff b/patches/note-gnu-stack.diff new file mode 100644 index 0000000..9d745aa --- /dev/null +++ b/patches/note-gnu-stack.diff @@ -0,0 +1,125 @@ +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +--- + gcc/config/ia64/linux.h | 3 +++ + gcc/config/rs6000/ppc-asm.h | 2 +- + libgcc/config/ia64/crtbegin.S | 4 ++++ + libgcc/config/ia64/crtend.S | 4 ++++ + libgcc/config/ia64/crti.S | 4 ++++ + libgcc/config/ia64/crtn.S | 4 ++++ + libgcc/config/ia64/lib1funcs.S | 4 ++++ + 9 files changed, 39 insertions(+), 13 deletions(-) + +--- a/src/libgcc/config/ia64/crtbegin.S ++++ b/src/libgcc/config/ia64/crtbegin.S +@@ -185,3 +185,7 @@ __do_global_dtors_aux: + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtend.S ++++ b/src/libgcc/config/ia64/crtend.S +@@ -114,3 +114,7 @@ __do_global_ctors_aux: + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crti.S ++++ b/src/libgcc/config/ia64/crti.S +@@ -51,3 +51,7 @@ _fini: + .body + + # end of crti.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/crtn.S ++++ b/src/libgcc/config/ia64/crtn.S +@@ -41,3 +41,7 @@ + br.ret.sptk.many b0 + + # end of crtn.S ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/libgcc/config/ia64/lib1funcs.S ++++ b/src/libgcc/config/ia64/lib1funcs.S +@@ -793,3 +793,7 @@ __floattitf: + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -79,5 +79,8 @@ do { \ + #undef TARGET_INIT_LIBFUNCS + #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs + ++#undef TARGET_ASM_FILE_END ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* Define this to be nonzero if static stack checking is supported. */ + #define STACK_CHECK_STATIC_BUILTIN 1 +--- a/src/gcc/config/rs6000/ppc-asm.h ++++ b/src/gcc/config/rs6000/ppc-asm.h +@@ -375,7 +375,7 @@ GLUE(.L,name): \ + #endif + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif diff --git a/patches/pr39491.diff b/patches/pr39491.diff new file mode 100644 index 0000000..4c51820 --- /dev/null +++ b/patches/pr39491.diff @@ -0,0 +1,132 @@ +# DP: Proposed patch for PR libstdc++/39491. + +2009-04-16 Benjamin Kosnik + + * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. + +Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc +=================================================================== +--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) ++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) +@@ -213,4 +221,111 @@ + return tanh((double) x); + } + #endif ++ ++ // From libmath/signbitl.c ++ // XXX ABI mistakenly exported ++#if defined (__hppa__) && defined (__linux__) ++# include ++# include ++ ++typedef unsigned int U_int32_t __attribute ((mode (SI))); ++typedef int Int32_t __attribute ((mode (SI))); ++typedef unsigned int U_int64_t __attribute ((mode (DI))); ++typedef int Int64_t __attribute ((mode (DI))); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ U_int32_t msw; ++ U_int32_t lsw; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int32_t lsw; ++ U_int32_t msw; ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++ ++/* Get int from the exponent of a long double. */ ++#define GET_LDOUBLE_EXP(exp,d) \ ++do { \ ++ ieee_long_double_shape_type ge_u; \ ++ ge_u.value = (d); \ ++ (exp) = ge_u.parts.sign_exponent; \ ++} while (0) ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t msw; ++ U_int64_t lsw; ++ } parts64; ++ struct ++ { ++ U_int32_t w0, w1, w2, w3; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t lsw; ++ U_int64_t msw; ++ } parts64; ++ struct ++ { ++ U_int32_t w3, w2, w1, w0; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++/* Get most significant 64 bit int from a quad long double. */ ++#define GET_LDOUBLE_MSW64(msw,d) \ ++do { \ ++ ieee_quad_double_shape_type qw_u; \ ++ qw_u.value = (d); \ ++ (msw) = qw_u.parts64.msw; \ ++} while (0) ++ ++int ++__signbitl (long double x) ++{ ++#if LDBL_MANT_DIG == 113 ++ Int64_t msw; ++ ++ GET_LDOUBLE_MSW64 (msw, x); ++ return msw < 0; ++#else ++ Int32_t e; ++ ++ GET_LDOUBLE_EXP (e, x); ++ return e & 0x8000; ++#endif ++} ++#endif ++ ++#ifndef _GLIBCXX_HAVE___SIGNBITL ++ ++#endif + } // extern "C" +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 +@@ -635,6 +635,7 @@ + sqrtf; + sqrtl; + copysignf; ++ __signbitl; + + # GLIBCXX_ABI compatibility only. + # std::string diff --git a/patches/pr66368.diff b/patches/pr66368.diff new file mode 100644 index 0000000..87b4c2e --- /dev/null +++ b/patches/pr66368.diff @@ -0,0 +1,22 @@ +# DP: PR go/66368, build libgo with -fno-stack-protector + +--- a/src/libgo/Makefile.am ++++ b/src/libgo/Makefile.am +@@ -47,6 +47,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB + ACLOCAL_AMFLAGS = -I ./config -I ../config + + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ +--- a/src/libgo/Makefile.in ++++ b/src/libgo/Makefile.in +@@ -547,6 +547,7 @@ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR) + AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS) + ACLOCAL_AMFLAGS = -I ./config -I ../config + AM_CFLAGS = -fexceptions -fnon-call-exceptions \ ++ -fno-stack-protector \ + $(SPLIT_STACK) $(WARN_CFLAGS) \ + $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ + -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ diff --git a/patches/pr67590.diff b/patches/pr67590.diff new file mode 100644 index 0000000..f0ca621 --- /dev/null +++ b/patches/pr67590.diff @@ -0,0 +1,36 @@ +# DP: Fix PR67590, setting objdump macro. + +--- a/src/libcc1/configure.ac ++++ b/src/libcc1/configure.ac +@@ -71,6 +71,31 @@ if test "$GXX" = yes; then + fi + AC_SUBST(libsuffix) + ++# Figure out what objdump we will be using. ++AS_VAR_SET_IF(gcc_cv_objdump,, [ ++if test -f $gcc_cv_binutils_srcdir/configure.ac \ ++ && test -f ../binutils/Makefile \ ++ && test x$build = x$host; then ++ # Single tree build which includes binutils. ++ gcc_cv_objdump=../binutils/objdump$build_exeext ++elif test -x objdump$build_exeext; then ++ gcc_cv_objdump=./objdump$build_exeext ++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then ++ gcc_cv_objdump="$OBJDUMP_FOR_TARGET" ++else ++ AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) ++fi]) ++ ++AC_MSG_CHECKING(what objdump to use) ++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then ++ # Single tree build which includes binutils. ++ AC_MSG_RESULT(newly built objdump) ++elif test x$gcc_cv_objdump = x; then ++ AC_MSG_RESULT(not found) ++else ++ AC_MSG_RESULT($gcc_cv_objdump) ++fi ++ + dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. + AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, + [libcc1_cv_lib_sockets= diff --git a/patches/pr67899.diff b/patches/pr67899.diff new file mode 100644 index 0000000..0f2ebd0 --- /dev/null +++ b/patches/pr67899.diff @@ -0,0 +1,31 @@ +# DP: Proposed patch for PR sanitizer/67899 + +Index: b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -606,11 +606,10 @@ namespace __sanitizer { + #else + __sanitizer_sigset_t sa_mask; + #ifndef __mips__ +-#if defined(__sparc__) +- unsigned long sa_flags; +-#else +- int sa_flags; ++#if defined(__sparc__) && defined(__arch64__) ++ int __pad; + #endif ++ int sa_flags; + #endif + #endif + #if SANITIZER_LINUX +@@ -640,7 +639,8 @@ namespace __sanitizer { + void (*handler)(int signo); + void (*sigaction)(int signo, void *info, void *ctx); + }; +- unsigned long sa_flags; ++ int __pad; ++ int sa_flags; + void (*sa_restorer)(void); + __sanitizer_kernel_sigset_t sa_mask; + }; diff --git a/patches/pr81829.diff b/patches/pr81829.diff new file mode 100644 index 0000000..472e3d0 --- /dev/null +++ b/patches/pr81829.diff @@ -0,0 +1,308 @@ +From f8029ed6d3dd444ee2608146118f2189cf9ef0d8 Mon Sep 17 00:00:00 2001 +From: marxin +Date: Mon, 14 Aug 2017 13:56:32 +0200 +Subject: [PATCH] Fix file find utils and add unit tests (PR driver/81829). + +gcc/ChangeLog: + +2017-08-14 Martin Liska + + PR driver/81829 + * file-find.c (do_add_prefix): Always append DIR_SEPARATOR + at the end of a prefix. + (remove_prefix): Properly remove elements and accept also + path without a trailing DIR_SEPARATOR. + (purge): New function. + (file_find_verify_prefix_creation): Likewise. + (file_find_verify_prefix_add): Likewise. + (file_find_verify_prefix_removal): Likewise. + (file_find_c_tests): Likewise. + * selftest-run-tests.c (selftest::run_tests): Add new + file_find_c_tests. + * selftest.h (file_find_c_tests): Likewise. +--- + gcc/file-find.c | 182 ++++++++++++++++++++++++++++++++++++++++++----- + gcc/gcc-ar.c | 19 +++-- + gcc/selftest-run-tests.c | 1 + + gcc/selftest.h | 1 + + 4 files changed, 179 insertions(+), 24 deletions(-) + +Index: b/src/gcc/file-find.c +=================================================================== +--- a/src/gcc/file-find.c ++++ b/src/gcc/file-find.c +@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. + #include "system.h" + #include "filenames.h" + #include "file-find.h" ++#include "selftest.h" + + static bool debug = false; + +@@ -126,11 +127,22 @@ do_add_prefix (struct path_prefix *ppref + /* Keep track of the longest prefix. */ + + len = strlen (prefix); ++ bool append_separator = !IS_DIR_SEPARATOR (prefix[len - 1]); ++ if (append_separator) ++ len++; ++ + if (len > pprefix->max_len) + pprefix->max_len = len; + + pl = XNEW (struct prefix_list); +- pl->prefix = xstrdup (prefix); ++ char *dup = XCNEWVEC (char, len + 1); ++ memcpy (dup, prefix, append_separator ? len - 1 : len); ++ if (append_separator) ++ { ++ dup[len - 1] = DIR_SEPARATOR; ++ dup[len] = '\0'; ++ } ++ pl->prefix = dup; + + if (*prev) + pl->next = *prev; +@@ -212,34 +224,170 @@ prefix_from_string (const char *p, struc + void + remove_prefix (const char *prefix, struct path_prefix *pprefix) + { +- struct prefix_list *remove, **prev, **remove_prev = NULL; ++ char *dup = NULL; + int max_len = 0; ++ size_t len = strlen (prefix); ++ if (prefix[len - 1] != DIR_SEPARATOR) ++ { ++ char *dup = XNEWVEC (char, len + 2); ++ memcpy (dup, prefix, len); ++ dup[len] = DIR_SEPARATOR; ++ dup[len + 1] = '\0'; ++ prefix = dup; ++ } + + if (pprefix->plist) + { +- prev = &pprefix->plist; +- for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next) ++ prefix_list *prev = NULL; ++ for (struct prefix_list *pl = pprefix->plist; pl;) + { + if (strcmp (prefix, pl->prefix) == 0) + { +- remove = pl; +- remove_prev = prev; +- continue; ++ if (prev == NULL) ++ pprefix->plist = pl->next; ++ else ++ prev->next = pl->next; ++ ++ prefix_list *remove = pl; ++ free (remove); ++ pl = pl->next; + } ++ else ++ { ++ prev = pl; + +- int l = strlen (pl->prefix); +- if (l > max_len) +- max_len = l; ++ int l = strlen (pl->prefix); ++ if (l > max_len) ++ max_len = l; + +- prev = &pl; +- } +- +- if (remove_prev) +- { +- *remove_prev = remove->next; +- free (remove); ++ pl = pl->next; ++ } + } + + pprefix->max_len = max_len; + } ++ ++ if (dup) ++ free (dup); ++} ++ ++#if CHECKING_P ++ ++namespace selftest { ++ ++/* Encode '#' and '_' to path and dir separators in order to test portability ++ of the test-cases. */ ++ ++static char * ++purge (const char *input) ++{ ++ char *s = xstrdup (input); ++ for (char *c = s; *c != '\0'; c++) ++ switch (*c) ++ { ++ case '/': ++ case ':': ++ *c = 'a'; /* Poison default string values. */ ++ break; ++ case '_': ++ *c = PATH_SEPARATOR; ++ break; ++ case '#': ++ *c = DIR_SEPARATOR; ++ break; ++ default: ++ break; ++ } ++ ++ return s; ++} ++ ++const char *env1 = purge ("#home#user#bin_#home#user#bin_#bin_#usr#bin"); ++const char *env2 = purge ("#root_#root_#root"); ++ ++/* Verify creation of prefix. */ ++ ++static void ++file_find_verify_prefix_creation (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ ASSERT_EQ (15, prefix.max_len); ++ ++ /* All prefixes end with DIR_SEPARATOR. */ ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->next->prefix); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->next->next->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->next->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next->next->next); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_add (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ add_prefix (&prefix, purge ("#root")); ++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#root#"), ++ prefix.plist->next->next->next->next->prefix); ++ ++ add_prefix_begin (&prefix, purge ("#var")); ++ ASSERT_STREQ (purge ("#var#"), prefix.plist->prefix); ++} ++ ++/* Verify adding a prefix. */ ++ ++static void ++file_find_verify_prefix_removal (void) ++{ ++ path_prefix prefix; ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env1, &prefix); ++ ++ /* All occurences of a prefix should be removed. */ ++ remove_prefix (purge ("#home#user#bin"), &prefix); ++ ++ ASSERT_EQ (9, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next->next); ++ ++ remove_prefix (purge ("#usr#bin#"), &prefix); ++ ASSERT_EQ (5, prefix.max_len); ++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); ++ ASSERT_EQ (NULL, prefix.plist->next); ++ ++ remove_prefix (purge ("#dev#random#"), &prefix); ++ remove_prefix (purge ("#bi#"), &prefix); ++ ++ remove_prefix (purge ("#bin#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); ++ ++ memset (&prefix, 0, sizeof (prefix)); ++ prefix_from_string (env2, &prefix); ++ ASSERT_EQ (6, prefix.max_len); ++ ++ remove_prefix (purge ("#root#"), &prefix); ++ ASSERT_EQ (NULL, prefix.plist); ++ ASSERT_EQ (0, prefix.max_len); + } ++ ++/* Run all of the selftests within this file. */ ++ ++void file_find_c_tests () ++{ ++ file_find_verify_prefix_creation (); ++ file_find_verify_prefix_add (); ++ file_find_verify_prefix_removal (); ++} ++ ++} // namespace selftest ++#endif /* CHECKING_P */ +Index: b/src/gcc/gcc-ar.c +=================================================================== +--- a/src/gcc/gcc-ar.c ++++ b/src/gcc/gcc-ar.c +@@ -194,15 +194,20 @@ main (int ac, char **av) + #ifdef CROSS_DIRECTORY_STRUCTURE + real_exe_name = concat (target_machine, "-", PERSONALITY, NULL); + #endif +- /* Do not search original location in the same folder. */ +- char *exe_folder = lrealpath (av[0]); +- exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; +- char *location = concat (exe_folder, PERSONALITY, NULL); ++ char *wrapper_file = lrealpath (av[0]); ++ exe_name = lrealpath (find_a_file (&path, real_exe_name, X_OK)); + +- if (access (location, X_OK) == 0) +- remove_prefix (exe_folder, &path); ++ /* If the exe_name points to the wrapper, remove folder of the wrapper ++ from prefix and try search again. */ ++ if (strcmp (exe_name, wrapper_file) == 0) ++ { ++ char *exe_folder = wrapper_file; ++ exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; ++ remove_prefix (exe_folder, &path); ++ ++ exe_name = find_a_file (&path, real_exe_name, X_OK); ++ } + +- exe_name = find_a_file (&path, real_exe_name, X_OK); + if (!exe_name) + { + fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0], +Index: b/src/gcc/selftest-run-tests.c +=================================================================== +--- a/src/gcc/selftest-run-tests.c ++++ b/src/gcc/selftest-run-tests.c +@@ -66,6 +66,7 @@ selftest::run_tests () + sreal_c_tests (); + fibonacci_heap_c_tests (); + typed_splay_tree_c_tests (); ++ file_find_c_tests (); + + /* Mid-level data structures. */ + input_c_tests (); +Index: b/src/gcc/selftest.h +=================================================================== +--- a/src/gcc/selftest.h ++++ b/src/gcc/selftest.h +@@ -196,6 +196,7 @@ extern void tree_c_tests (); + extern void tree_cfg_c_tests (); + extern void vec_c_tests (); + extern void wide_int_cc_tests (); ++extern void file_find_c_tests (); + + extern int num_passes; + diff --git a/patches/pr87338.diff b/patches/pr87338.diff new file mode 100644 index 0000000..145e019 --- /dev/null +++ b/patches/pr87338.diff @@ -0,0 +1,34 @@ +From: James Clarke +Subject: [PATCH] PR bootstrap/87338: Fix ia64 bootstrap comparison regression in r257511 + +By using ASM_OUTPUT_LABEL, r257511 forced the assembler to start a new +bundle when emitting an inline entry label on. Instead, use +ASM_OUTPUT_DEBUG_LABEL like for the block begin and end labels so tags are +emitted rather than labels. + +gcc/ + PR bootstrap/87338 + * dwarf2out.c (dwarf2out_inline_entry): Use ASM_OUTPUT_DEBUG_LABEL + instead of ASM_GENERATE_INTERNAL_LABEL and ASM_OUTPUT_LABEL. +--- + gcc/dwarf2out.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c +index b9a624e..c348692 100644 +--- a/src/gcc/dwarf2out.c ++++ b/src/gcc/dwarf2out.c +@@ -27670,11 +27670,8 @@ dwarf2out_inline_entry (tree block) + if (cur_line_info_table) + ied->view = cur_line_info_table->view; + +- char label[MAX_ARTIFICIAL_LABEL_BYTES]; +- +- ASM_GENERATE_INTERNAL_LABEL (label, BLOCK_INLINE_ENTRY_LABEL, +- BLOCK_NUMBER (block)); +- ASM_OUTPUT_LABEL (asm_out_file, label); ++ ASM_OUTPUT_DEBUG_LABEL (asm_out_file, BLOCK_INLINE_ENTRY_LABEL, ++ BLOCK_NUMBER (block)); + } + + /* Called from finalize_size_functions for size functions so that their body diff --git a/patches/pr87808.diff b/patches/pr87808.diff new file mode 100644 index 0000000..3789acb --- /dev/null +++ b/patches/pr87808.diff @@ -0,0 +1,56 @@ +# DP: Fix PR jit/87808. + +--- a/src/gcc/jit/Make-lang.in ++++ b/src/gcc/jit/Make-lang.in +@@ -84,6 +84,9 @@ + jit/jit-spec.o \ + gcc.o + ++CFLAGS-jit/jit-playback.o += \ ++ -DFALLBACK_GCC_EXEC_PREFIX=\"$(libdir)/gcc/$(target_subdir)/$(version)\" ++ + # Use strict warnings for this front end. + jit-warn = $(STRICT_WARN) + +--- a/src/gcc/jit/jit-playback.c ++++ b/src/gcc/jit/jit-playback.c +@@ -39,6 +39,7 @@ + #include "opt-suggestions.h" + #include "gcc.h" + #include "diagnostic.h" ++#include "file-find.h" + + #include + +@@ -2482,7 +2483,31 @@ + playback::context:: + invoke_embedded_driver (const vec *argvec) + { ++ static char* gcc_driver_file = NULL; ++ + JIT_LOG_SCOPE (get_logger ()); ++ ++ /* process_command(), uses make_relative_prefix(), searches PATH ++ for the external driver, which might not be found. In this case ++ fall back to the configured default. */ ++#ifdef FALLBACK_GCC_EXEC_PREFIX ++ if (gcc_driver_file == NULL && ::getenv ("GCC_EXEC_PREFIX") == NULL) ++ { ++ struct path_prefix path; ++ ++ prefix_from_env ("PATH", &path); ++ gcc_driver_file = find_a_file (&path, gcc_driver_name, X_OK); ++ if (gcc_driver_file == NULL) ++ { ++ char *str = concat ("GCC_EXEC_PREFIX=", ++ FALLBACK_GCC_EXEC_PREFIX, NULL); ++ ::putenv (str); ++ log ("gcc driver %s not found, using fallback GCC_EXEC_PREFIX=%s", ++ gcc_driver_name, FALLBACK_GCC_EXEC_PREFIX); ++ } ++ } ++#endif ++ + driver d (true, /* can_finalize */ + false); /* debug */ + int result = d.main (argvec->length (), diff --git a/patches/pr90714.diff b/patches/pr90714.diff new file mode 100644 index 0000000..3d4a36f --- /dev/null +++ b/patches/pr90714.diff @@ -0,0 +1,32 @@ +# DP: ia64: relocation truncated to fit: GPREL22 + +The symbol is exposed to C by dso_handle.h, and since it's a single +8-byte pointer, it is just within the threshold for being in the small +data (or bss) section, so code accessing it will use GP-relative +addressing. Therefore we must put it in .sdata/.sbss in case our other +data sections grow too big and we overflow the 22-bit relocation. + +libgcc/ + * config/ia64/crtbegin.S (__dso_handle): Put in .sdata/.sbss + rather than .data/.bss so it can be accessed via gp-relative + addressing. +--- + libgcc/config/ia64/crtbegin.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/src/libgcc/config/ia64/crtbegin.S ++++ b/src/libgcc/config/ia64/crtbegin.S +@@ -45,11 +45,11 @@ dtor_ptr: + .type __dso_handle,@object + .size __dso_handle,8 + #ifdef SHARED +- .section .data ++ .section .sdata + __dso_handle: + data8 __dso_handle + #else +- .section .bss ++ .section .sbss + .align 8 + __dso_handle: + .skip 8 diff --git a/patches/pr91307.diff b/patches/pr91307.diff new file mode 100644 index 0000000..f19dc83 --- /dev/null +++ b/patches/pr91307.diff @@ -0,0 +1,38 @@ +# DP: Fix PR lto/91307, reproducible LTO builds, taken from the trunk. + +gcc/ + +2019-08-20 Richard Biener + + PR lto/91307 + * ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable + by collect2 when targetm.have_ctors_dtors which avoids dragging + in temporary filenames from LTO input objects. + +--- a/src/gcc/ipa.c ++++ b/src/gcc/ipa.c +@@ -836,13 +836,18 @@ + /* The priority is encoded in the constructor or destructor name. + collect2 will sort the names and arrange that they are called at + program startup. */ +- if (final) +- sprintf (which_buf, "%c_%.5d_%d", which, priority, counter++); ++ if (!targetm.have_ctors_dtors && final) ++ { ++ sprintf (which_buf, "%c_%.5d_%d", which, priority, counter++); ++ name = get_file_function_name (which_buf); ++ } + else +- /* Proudce sane name but one not recognizable by collect2, just for the +- case we fail to inline the function. */ +- sprintf (which_buf, "sub_%c_%.5d_%d", which, priority, counter++); +- name = get_file_function_name (which_buf); ++ { ++ /* Proudce sane name but one not recognizable by collect2, just for the ++ case we fail to inline the function. */ ++ sprintf (which_buf, "_sub_%c_%.5d_%d", which, priority, counter++); ++ name = get_identifier (which_buf); ++ } + + decl = build_decl (input_location, FUNCTION_DECL, name, + build_function_type_list (void_type_node, NULL_TREE)); diff --git a/patches/pr92267.diff b/patches/pr92267.diff new file mode 100644 index 0000000..ba05803 --- /dev/null +++ b/patches/pr92267.diff @@ -0,0 +1,55 @@ +# DP: Fix PR libstdc++/92267, taken from the trunk. + +libstdc++-v3/ + +2019-10-29 Jonathan Wakely + + PR libstdc++/92267 + * include/bits/stl_deque.h (_Deque_iterator(const _Deque_iterator&)): + Do not define as defaulted. + * testsuite/23_containers/deque/types/92267.cc: New test. + +--- a/src/libstdc++-v3/include/bits/stl_deque.h ++++ b/src/libstdc++-v3/include/bits/stl_deque.h +@@ -164,7 +164,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER + : _M_cur(__x._M_cur), _M_first(__x._M_first), + _M_last(__x._M_last), _M_node(__x._M_node) { } + +- _Deque_iterator(const _Deque_iterator&) = default; ++ _Deque_iterator(const _Deque_iterator& __x) noexcept ++ : _M_cur(__x._M_cur), _M_first(__x._M_first), ++ _M_last(__x._M_last), _M_node(__x._M_node) { } ++ + _Deque_iterator& operator=(const _Deque_iterator&) = default; + #endif + +--- /dev/null ++++ b/src/libstdc++-v3/testsuite/23_containers/deque/types/92267.cc +@@ -0,0 +1,27 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++using std::deque; ++using std::is_trivially_copy_constructible; ++ ++// PR libstdc++/92267 ++static_assert(!is_trivially_copy_constructible::iterator>::value); ++static_assert(!is_trivially_copy_constructible::const_iterator>::value); diff --git a/patches/rename-info-files.diff b/patches/rename-info-files.diff new file mode 100644 index 0000000..77b1431 --- /dev/null +++ b/patches/rename-info-files.diff @@ -0,0 +1,651 @@ +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + + +2004-02-17 Matthias Klose + +gcc/ChangeLog: + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +--- a/src/gcc/fortran/gfortran.texi ++++ b/src/gcc/fortran/gfortran.texi +@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +--- a/src/gcc/fortran/Make-lang.in ++++ b/src/gcc/fortran/Make-lang.in +@@ -114,7 +114,8 @@ fortran.tags: force + cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info + fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi + + F95_HTMLFILES = $(build_htmldir)/gfortran +@@ -184,10 +185,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -252,7 +253,7 @@ fortran.install-common: install-finclude + + fortran.install-plugin: + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -270,7 +271,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3138,8 +3138,31 @@ install-no-fixedincludes: + + doc: $(BUILD_INFO) $(GENERATED_MANPAGES) + +-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ +- doc/gccinstall.info doc/cppinternals.info ++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') ++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') ++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') ++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') ++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') ++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') ++ ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++ ++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ ++ doc/$(INFO_GCCINT_NAME).info \ ++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info ++ ++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' \ ++ -D 'fngcc $(INFO_GCC_NAME)' \ ++ -D 'fngcov $(INFO_GCC_NAME)' \ ++ -D 'fngcovtool $(INFO_GCC_NAME)' \ ++ -D 'fngcovdump $(INFO_GCC_NAME)' \ ++ -D 'fngxx $(INFO_GXX_NAME)' \ ++ -D 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ ++ -D 'fngccgo $(INFO_GCCGO_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3186,7 +3209,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + if [ -n "$(PKGVERSION)" ]; then \ + echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \ + fi +- echo "@set BUGURL $(BUGURL_TEXI)" >> $@T; \ ++ echo "@set BUGURL $(BUGURL_TEXI)" >> $@T ++ ( \ ++ echo '@set fncpp $(INFO_CPP_NAME)'; \ ++ echo '@set fngcc $(INFO_GCC_NAME)'; \ ++ echo '@set fngcov $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovtool $(INFO_GCC_NAME)'; \ ++ echo '@set fngcovdump $(INFO_GCC_NAME)'; \ ++ echo '@set fngxx $(INFO_GXX_NAME)'; \ ++ echo '@set fngccint $(INFO_GCCINT_NAME)'; \ ++ echo '@set fngccinstall $(INFO_GCCINSTALL_NAME)'; \ ++ echo '@set fncppint $(INFO_CPPINT_NAME)'; \ ++ echo '@set fngfortran $(INFO_FORTRAN_NAME)'; \ ++ echo '@set fngccgo $(INFO_GCCGO_NAME)'; \ ++ ) >> $@T + mv -f $@T $@ + + +@@ -3194,21 +3230,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + # patterns. To use them, put each of the specific targets with its + # specific dependencies but no build commands. + +-doc/cpp.info: $(TEXI_CPP_FILES) +-doc/gcc.info: $(TEXI_GCC_FILES) +-doc/gccint.info: $(TEXI_GCCINT_FILES) +-doc/cppinternals.info: $(TEXI_CPPINT_FILES) +- ++# Generic entry to handle info files, which are not renamed (currently Ada) + doc/%.info: %.texi + if [ x$(BUILD_INFO) = xinfo ]; then \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ + # Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + +@@ -3627,11 +3683,11 @@ install-driver: installdirs xgcc$(exeext + # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir + # to do the install. + install-info:: doc installdirs \ +- $(DESTDIR)$(infodir)/cpp.info \ +- $(DESTDIR)$(infodir)/gcc.info \ +- $(DESTDIR)$(infodir)/cppinternals.info \ +- $(DESTDIR)$(infodir)/gccinstall.info \ +- $(DESTDIR)$(infodir)/gccint.info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs +@@ -3852,8 +3908,11 @@ uninstall: lang.uninstall + -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) + -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) +- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* +- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* + for i in ar nm ranlib ; do \ + install_name=`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ;\ + target_install_name=$(target_noncanonical)-`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ; \ +--- a/src/gcc/ada/gnat-style.texi ++++ b/src/gcc/ada/gnat-style.texi +@@ -31,7 +31,7 @@ Texts. A copy of the license is include + + @dircategory Software development + @direntry +-* gnat-style: (gnat-style). GNAT Coding Style ++* gnat-style: (gnat-style-9). GNAT Coding Style + @end direntry + + @macro syntax{element} +--- a/src/gcc/ada/gnat_rm.texi ++++ b/src/gcc/ada/gnat_rm.texi +@@ -12,7 +12,7 @@ + @finalout + @dircategory GNU Ada Tools + @direntry +-* gnat_rm: (gnat_rm.info). gnat_rm ++* GNAT Reference Manual: (gnat_rm-9). Reference Manual for GNU Ada tools. + @end direntry + + @definfoenclose strong,`,' +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -12688,7 +12688,7 @@ One of the standard libraries bypassed b + @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines + which GCC uses to overcome shortcomings of particular machines, or special + needs for some languages. +-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler ++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler + Collection (GCC) Internals}, + for more discussion of @file{libgcc.a}.) + In most cases, you need @file{libgcc.a} even when you want to avoid +@@ -12697,7 +12697,7 @@ or @option{-nodefaultlibs} you should us + This ensures that you have no unresolved references to internal GCC + library subroutines. + (An example of such an internal subroutine is @code{__main}, used to ensure C++ +-constructors are called; @pxref{Collect2,,@code{collect2}, gccint, ++constructors are called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}.) + + @item -pie +@@ -29425,7 +29425,7 @@ Note that you can also specify places to + @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These + take precedence over places specified using environment variables, which + in turn take precedence over those specified by the configuration of GCC@. +-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, ++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}. + + @table @env +@@ -29585,7 +29585,7 @@ the headers it contains change. + + A precompiled header file is searched for when @code{#include} is + seen in the compilation. As it searches for the included file +-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the ++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the + compiler looks for a precompiled header in each directory just before it + looks for the include file in that directory. The name searched for is + the name specified in the @code{#include} with @samp{.gch} appended. If +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -22892,7 +22892,7 @@ want to write code that checks whether t + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * C++ Volatiles:: What constitutes an access to a volatile object. +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -332,5 +332,5 @@ specification, described at @uref{https: + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. +--- a/src/gcc/doc/libgcc.texi ++++ b/src/gcc/doc/libgcc.texi +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +--- a/src/gcc/doc/gccint.texi ++++ b/src/gcc/doc/gccint.texi +@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -81,7 +81,7 @@ write front ends for new languages. It + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +--- a/src/gcc/doc/cpp.texi ++++ b/src/gcc/doc/cpp.texi +@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +--- a/src/gcc/doc/gcc.texi ++++ b/src/gcc/doc/gcc.texi +@@ -127,7 +127,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -94,7 +94,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +--- a/src/gcc/doc/cppinternals.texi ++++ b/src/gcc/doc/cppinternals.texi +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -31,7 +31,7 @@ texts being (a) (see below), and with th + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU Offloading and Multi Processing Runtime Library. ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU Offloading and Multi Processing Runtime Library. + @end direntry + + This manual documents libgomp, the GNU Offloading and Multi Processing +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -600,7 +600,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + MULTISRCTOP = + MULTIBUILDTOP = +@@ -1374,15 +1375,16 @@ env.lo: libgomp_f.h + env.o: libgomp_f.h + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + # GNU Make needs to see an explicit $(MAKE) variable in the command it +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -126,14 +126,16 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +--- a/src/libitm/libitm.texi ++++ b/src/libitm/libitm.texi +@@ -20,7 +20,7 @@ Free Documentation License''. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libitm: (libitm). GNU Transactional Memory Library ++* @value{fnlibitm}: (@value{fnlibitm}). GNU Transactional Memory Library + @end direntry + + This manual documents the GNU Transactional Memory Library. +--- a/src/libitm/Makefile.am ++++ b/src/libitm/Makefile.am +@@ -108,14 +108,17 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + +--- a/src/libitm/Makefile.in ++++ b/src/libitm/Makefile.in +@@ -1186,14 +1186,17 @@ vpath % $(strip $(search_path)) + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libitm.info +- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info ++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBITM_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info + @touch $@ + +-libitm.info: $(STAMP_BUILD_INFO) ++libitm.info: $(INFO_LIBITM_NAME).info ++ cp $(INFO_LIBITM_NAME).info libitm.info ++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libitm.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi + @touch $@ + + # GNU Make needs to see an explicit $(MAKE) variable in the command it +--- a/src/gcc/go/Make-lang.in ++++ b/src/gcc/go/Make-lang.in +@@ -91,10 +91,11 @@ GO_TEXI_FILES = \ + $(gcc_docdir)/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gccgo.info: $(GO_TEXI_FILES) ++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') ++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES) + if test "x$(BUILD_INFO)" = xinfo; then \ +- rm -f doc/gccgo.info*; \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ rm -f doc/$(INFO_GCCGO_NAME).info*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + else true; fi + +@@ -120,7 +121,7 @@ gccgo.pod: go/gccgo.texi + go.all.cross: gccgo-cross$(exeext) + go.start.encap: gccgo$(exeext) + go.rest.encap: +-go.info: doc/gccgo.info ++go.info: doc/$(INFO_GCCGO_NAME).info + go.dvi: doc/gccgo.dvi + go.pdf: doc/gccgo.pdf + go.html: $(build_htmldir)/go/index.html +@@ -159,7 +160,7 @@ go.install-common: installdirs + + go.install-plugin: + +-go.install-info: $(DESTDIR)$(infodir)/gccgo.info ++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info + + go.install-pdf: doc/gccgo.pdf + @$(NORMAL_INSTALL) +@@ -199,7 +200,7 @@ go.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext) + rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext) + rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext) +- rm -rf $(DESTDIR)$(infodir)/gccgo.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info* + + # Clean hooks. + +--- a/src/gcc/go/gccgo.texi ++++ b/src/gcc/go/gccgo.texi +@@ -50,7 +50,7 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gccgo: (gccgo). A GCC-based compiler for the Go language ++* @value{fngccgo}: (@value{fngccgo}). A GCC-based compiler for the Go language + @end direntry + @end format + +@@ -124,7 +124,7 @@ and the Info entries for @file{gccgo} an + + The @command{gccgo} command is a frontend to @command{gcc} and + supports many of the same options. @xref{Option Summary, , Option +-Summary, gcc, Using the GNU Compiler Collection (GCC)}. This manual ++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual + only documents the options specific to @command{gccgo}. + + The @command{gccgo} command may be used to compile Go source code into +--- a/src/libquadmath/libquadmath.texi ++++ b/src/libquadmath/libquadmath.texi +@@ -25,7 +25,7 @@ copy and modify this GNU manual. + @ifinfo + @dircategory GNU Libraries + @direntry +-* libquadmath: (libquadmath). GCC Quad-Precision Math Library ++* @value{fnlibquadmath}: (@value{fnlibquadmath}). GCC Quad-Precision Math Library + @end direntry + + This manual documents the GCC Quad-Precision Math Library API. +--- a/src/libquadmath/Makefile.am ++++ b/src/libquadmath/Makefile.am +@@ -132,16 +132,18 @@ STAMP_BUILD_INFO = + endif + + +-stamp-geninsrc: libquadmath.info +- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++ ++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info + @touch $@ + + stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @touch $@ + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + endif BUILD_LIBQUADMATH + +--- a/src/libquadmath/Makefile.in ++++ b/src/libquadmath/Makefile.in +@@ -277,7 +277,8 @@ AM_V_texidevnull = $(am__v_texidevnull_@ + am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) + am__v_texidevnull_0 = > /dev/null + am__v_texidevnull_1 = +-INFO_DEPS = libquadmath.info ++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') ++INFO_DEPS = $(INFO_LIBQMATH_NAME).info + am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include + DVIS = libquadmath.dvi + PDFS = libquadmath.pdf +@@ -544,8 +545,8 @@ AUTOMAKE_OPTIONS = foreign info-in-build + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info +-@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +-@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info + + # Automake Documentation: + # If your package has Texinfo files in many directories, you can use the +@@ -1408,19 +1409,19 @@ uninstall-am: uninstall-dvi-am uninstall + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \ + @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1) + +-@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info +-@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info ++@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info ++@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + @BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) +-@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi ++@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi + @BUILD_LIBQUADMATH_TRUE@ @touch $@ + + all-local: $(ALL_LOCAL_DEPS) + + # Unconditionally override this target, so that automake's definition + # does not wrongly interfere. +-libquadmath.info: $(STAMP_BUILD_INFO) ++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) + + libquadmath-vers.texi: + echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@ diff --git a/patches/skip-bootstrap-multilib.diff b/patches/skip-bootstrap-multilib.diff new file mode 100644 index 0000000..1f9213a --- /dev/null +++ b/patches/skip-bootstrap-multilib.diff @@ -0,0 +1,45 @@ +# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -479,6 +479,17 @@ esac + # Tests like `if [ -n "$multidirs" ]' require it. + multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` + ++# stage1 and stage2 builds of the non-default multilib configurations ++# are not needed; skip these to save some build time. ++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then ++ stage_final=`cat ../../stage_final` ++ stage_current=`cat ../../stage_current` ++ if [ "$stage_current" != "$stage_final" ]; then ++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" ++ multidirs= ++ fi ++fi ++ + # Add code to library's top level makefile to handle building the multilib + # subdirs. + +--- a/src/libstdc++-v3/acinclude.m4 ++++ b/src/libstdc++-v3/acinclude.m4 +@@ -2900,7 +2900,20 @@ dnl + AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [ + AC_MSG_CHECKING([for additional debug build]) + GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library]) ++ if test x$enable_libstdcxx_debug = xyes; then ++ if test -f $toplevel_builddir/../stage_final && test -f $toplevel_builddir/../stage_current; then ++ stage_final=`cat $toplevel_builddir/../stage_final` ++ stage_current=`cat $toplevel_builddir/../stage_current` ++ if test x$stage_current != x$stage_final ; then ++ skip_debug_build=yes ++ enable_libstdcxx_debug=no ++ fi ++ fi ++ fi + AC_MSG_RESULT($enable_libstdcxx_debug) ++ if test x$skip_debug_build = xyes ; then ++ AC_MSG_NOTICE([Skip libstdc++-v3 debug build for bootstrap stage $stage_current]) ++ fi + GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes) + ]) + diff --git a/patches/sparc64-biarch-long-double-128.diff b/patches/sparc64-biarch-long-double-128.diff new file mode 100644 index 0000000..756f58e --- /dev/null +++ b/patches/sparc64-biarch-long-double-128.diff @@ -0,0 +1,33 @@ +# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. + +On sparc, the --with-long-double-128 option doesn't change anything for +a 64-bit compiler, as it always default to 128-bit long doubles. For +a 32/64-bit compiler defaulting to 32-bit this correctly control the +size of long double of the 32-bit compiler, however for a 32/64-bit +compiler defaulting to 64-bit, the built-in specs force the +-mlong-double-64 option. This makes the option useless in this case. + +The patch below fixes that by removing the -mlong-double-64 from the +built-in spec, using the default instead. + +Changelog gcc/ + +2013-12-04 Aurelien Jarno + + * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit, + don't force -mlong-double-64 when -m32 or -mv8plus is given. + +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -166,9 +166,9 @@ extern const char *host_detect_local_cpu + #else + #define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ + "%{m32:%{m64:%emay not use both -m32 and -m64}} \ +-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{m32:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=cypress}} \ +-%{mv8plus:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ ++%{mv8plus:-mptr32 -mno-stack-bias \ + %{!mcpu*:-mcpu=v9}} \ + %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ + %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}}" diff --git a/patches/svn-doc-updates.diff b/patches/svn-doc-updates.diff new file mode 100644 index 0000000..fe0b32e --- /dev/null +++ b/patches/svn-doc-updates.diff @@ -0,0 +1,6 @@ +# DP: updates from the 6 branch upto 2017xxyy (documentation). + +svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_7_1_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-5-branch \ + | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ + | awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0' + diff --git a/patches/svn-updates.diff b/patches/svn-updates.diff new file mode 100644 index 0000000..6c5b0b7 --- /dev/null +++ b/patches/svn-updates.diff @@ -0,0 +1,30843 @@ +# DP: updates from the 9 branch upto 20191102 (r277743). + +last_update() +{ + cat > ${dir}LAST_UPDATED ++ ++ Backport from trunk ++ PR fortran/91422 ++ * testsuite/libgomp.oacc-fortran/routine-7.f90: Correct array ++ dimension. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90 +=================================================================== +--- a/src/libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/libgomp/testsuite/libgomp.oacc-fortran/routine-7.f90 (.../branches/gcc-9-branch) +@@ -109,7 +109,7 @@ + + subroutine seq (a) + !$acc routine seq +- integer, intent (inout) :: a(M) ++ integer, intent (inout) :: a(N) + integer :: i + + do i = 1, N +Index: libquadmath/ChangeLog +=================================================================== +--- a/src/libquadmath/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libquadmath/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,12 @@ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-08-02 Jakub Jelinek ++ ++ * quadmath.h (M_Eq, M_LOG2Eq, M_LOG10Eq, M_LN2q, M_LN10q, M_PIq, ++ M_PI_2q, M_PI_4q, M_1_PIq, M_2_PIq, M_2_SQRTPIq, M_SQRT2q, ++ M_SQRT1_2q): Use two more decimal places. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libquadmath/quadmath.h +=================================================================== +--- a/src/libquadmath/quadmath.h (.../tags/gcc_9_2_0_release) ++++ b/src/libquadmath/quadmath.h (.../branches/gcc-9-branch) +@@ -1,5 +1,5 @@ + /* GCC Quad-Precision Math Library +- Copyright (C) 2010, 2011 Free Software Foundation, Inc. ++ Copyright (C) 2010-2019 Free Software Foundation, Inc. + Written by Francois-Xavier Coudert + + This file is part of the libquadmath library. +@@ -165,19 +165,19 @@ + (floating constant exceeds range of ‘__float128’) */ + /* #define HUGE_VALQ (__extension__ 0x1.0p32767Q) */ + +-#define M_Eq 2.7182818284590452353602874713526625Q /* e */ +-#define M_LOG2Eq 1.4426950408889634073599246810018921Q /* log_2 e */ +-#define M_LOG10Eq 0.4342944819032518276511289189166051Q /* log_10 e */ +-#define M_LN2q 0.6931471805599453094172321214581766Q /* log_e 2 */ +-#define M_LN10q 2.3025850929940456840179914546843642Q /* log_e 10 */ +-#define M_PIq 3.1415926535897932384626433832795029Q /* pi */ +-#define M_PI_2q 1.5707963267948966192313216916397514Q /* pi/2 */ +-#define M_PI_4q 0.7853981633974483096156608458198757Q /* pi/4 */ +-#define M_1_PIq 0.3183098861837906715377675267450287Q /* 1/pi */ +-#define M_2_PIq 0.6366197723675813430755350534900574Q /* 2/pi */ +-#define M_2_SQRTPIq 1.1283791670955125738961589031215452Q /* 2/sqrt(pi) */ +-#define M_SQRT2q 1.4142135623730950488016887242096981Q /* sqrt(2) */ +-#define M_SQRT1_2q 0.7071067811865475244008443621048490Q /* 1/sqrt(2) */ ++#define M_Eq 2.718281828459045235360287471352662498Q /* e */ ++#define M_LOG2Eq 1.442695040888963407359924681001892137Q /* log_2 e */ ++#define M_LOG10Eq 0.434294481903251827651128918916605082Q /* log_10 e */ ++#define M_LN2q 0.693147180559945309417232121458176568Q /* log_e 2 */ ++#define M_LN10q 2.302585092994045684017991454684364208Q /* log_e 10 */ ++#define M_PIq 3.141592653589793238462643383279502884Q /* pi */ ++#define M_PI_2q 1.570796326794896619231321691639751442Q /* pi/2 */ ++#define M_PI_4q 0.785398163397448309615660845819875721Q /* pi/4 */ ++#define M_1_PIq 0.318309886183790671537767526745028724Q /* 1/pi */ ++#define M_2_PIq 0.636619772367581343075535053490057448Q /* 2/pi */ ++#define M_2_SQRTPIq 1.128379167095512573896158903121545172Q /* 2/sqrt(pi) */ ++#define M_SQRT2q 1.414213562373095048801688724209698079Q /* sqrt(2) */ ++#define M_SQRT1_2q 0.707106781186547524400844362104849039Q /* 1/sqrt(2) */ + + #define __quadmath_extern_inline \ + extern inline __attribute__ ((__gnu_inline__)) +Index: libsanitizer/asan/Makefile.in +=================================================================== +--- a/src/libsanitizer/asan/Makefile.in (.../tags/gcc_9_2_0_release) ++++ b/src/libsanitizer/asan/Makefile.in (.../branches/gcc-9-branch) +@@ -90,7 +90,7 @@ + build_triplet = @build@ + host_triplet = @host@ + target_triplet = @target@ +-@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT ++@USING_MAC_INTERPOSE_TRUE@am__append_1 = -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 + @USING_MAC_INTERPOSE_FALSE@am__append_2 = $(top_builddir)/interception/libinterception.la + @LIBBACKTRACE_SUPPORTED_TRUE@am__append_3 = $(top_builddir)/libbacktrace/libsanitizer_libbacktrace.la + subdir = asan +Index: libsanitizer/asan/asan_interceptors.h +=================================================================== +--- a/src/libsanitizer/asan/asan_interceptors.h (.../tags/gcc_9_2_0_release) ++++ b/src/libsanitizer/asan/asan_interceptors.h (.../branches/gcc-9-branch) +@@ -79,7 +79,12 @@ + #if ASAN_HAS_EXCEPTIONS && !SANITIZER_WINDOWS && !SANITIZER_SOLARIS && \ + !SANITIZER_NETBSD + # define ASAN_INTERCEPT___CXA_THROW 1 +-# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1 ++# if ! defined(ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION) \ ++ || ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION ++# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 1 ++# else ++# define ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION 0 ++# endif + # if defined(_GLIBCXX_SJLJ_EXCEPTIONS) || (SANITIZER_IOS && defined(__arm__)) + # define ASAN_INTERCEPT__UNWIND_SJLJ_RAISEEXCEPTION 1 + # else +Index: libsanitizer/asan/Makefile.am +=================================================================== +--- a/src/libsanitizer/asan/Makefile.am (.../tags/gcc_9_2_0_release) ++++ b/src/libsanitizer/asan/Makefile.am (.../branches/gcc-9-branch) +@@ -5,7 +5,7 @@ + + DEFS = -D_GNU_SOURCE -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -DASAN_HAS_EXCEPTIONS=1 -DASAN_NEEDS_SEGV=1 -DCAN_SANITIZE_UB=0 + if USING_MAC_INTERPOSE +-DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT ++DEFS += -DMAC_INTERPOSE_FUNCTIONS -DMISSING_BLOCKS_SUPPORT -DASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION=0 + endif + AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fno-rtti -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -fno-ipa-icf + AM_CXXFLAGS += $(LIBSTDCXX_RAW_CXX_CXXFLAGS) +Index: libsanitizer/ChangeLog +=================================================================== +--- a/src/libsanitizer/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libsanitizer/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,15 @@ ++2019-08-18 Iain Sandoe ++ ++ Backport from mainline ++ 2019-06-18 Iain Sandoe ++ ++ PR libsanitizer/87880 ++ * asan/asan_interceptors.h: ++ (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): New. ++ * asan/Makefile.am (DEFS): Add (for Darwin only) ++ ASAN_HAS_CXA_RETHROW_PRIMARY_EXCEPTION, defined to 0. ++ * asan/Makefile.in: Regenerated. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libstdc++-v3/configure +=================================================================== +--- a/src/libstdc++-v3/configure (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/configure (.../branches/gcc-9-branch) +@@ -79469,7 +79469,7 @@ + fi + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:27:0 ++libtool_VERSION=6:28:0 + + # Everything parsed; figure out what files and settings to use. + case $enable_symvers in +Index: libstdc++-v3/python/libstdcxx/v6/xmethods.py +=================================================================== +--- a/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/python/libstdcxx/v6/xmethods.py (.../branches/gcc-9-branch) +@@ -728,7 +728,7 @@ + return gdb.lookup_type('long') + + def __call__(self, obj): +- refcounts = ['_M_refcount']['_M_pi'] ++ refcounts = obj['_M_refcount']['_M_pi'] + return refcounts['_M_use_count'] if refcounts else 0 + + class SharedPtrUniqueWorker(SharedPtrUseCountWorker): +Index: libstdc++-v3/src/c++17/string-inst.cc +=================================================================== +--- a/src/libstdc++-v3/src/c++17/string-inst.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/src/c++17/string-inst.cc (.../branches/gcc-9-branch) +@@ -26,6 +26,12 @@ + // ISO C++ 14882:2017 24 Strings library + // + ++#ifndef _GLIBCXX_USE_CXX11_ABI ++// Instantiations in this file use the new SSO std::string ABI unless included ++// by another file which defines _GLIBCXX_USE_CXX11_ABI=0. ++# define _GLIBCXX_USE_CXX11_ABI 1 ++#endif ++ + #include + + namespace std _GLIBCXX_VISIBILITY(default) +Index: libstdc++-v3/src/filesystem/ops-common.h +=================================================================== +--- a/src/libstdc++-v3/src/filesystem/ops-common.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/src/filesystem/ops-common.h (.../branches/gcc-9-branch) +@@ -76,7 +76,7 @@ + inline int stat(const wchar_t* path, stat_type* buffer) + { return ::_wstat(path, buffer); } + +- inline lstat(const wchar_t* path, stat_type* buffer) ++ inline int lstat(const wchar_t* path, stat_type* buffer) + { + // TODO symlinks not currently supported + return stat(path, buffer); +Index: libstdc++-v3/doc/xml/manual/allocator.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/allocator.xml (.../branches/gcc-9-branch) +@@ -499,12 +499,12 @@ + + + +- +- <link xmlns:xlink="http://www.w3.org/1999/xlink" +- xlink:href="http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759"> ++ <title> ++ <link xmlns:xlink="http://www.w3.org/1999/xlink" ++ xlink:href="https://web.archive.org/web/20190622154249/http://www.drdobbs.com/the-standard-librarian-what-are-allocato/184403759"> + The Standard Librarian: What Are Allocators Good For? +- </link> +- ++ ++ + + MattAustern + +@@ -512,12 +512,13 @@ + C/C++ Users Journal + + ++ 2000-12 + + + + + <link xmlns:xlink="http://www.w3.org/1999/xlink" +- xlink:href="https://www.hoard.org"> ++ xlink:href="http://hoard.org"> + The Hoard Memory Allocator + </link> + +Index: libstdc++-v3/doc/xml/manual/abi.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/abi.xml (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/abi.xml (.../branches/gcc-9-branch) +@@ -268,7 +268,9 @@ + GCC 7.1.0: libstdc++.so.6.0.23 + GCC 7.2.0: libstdc++.so.6.0.24 + GCC 8.0.0: libstdc++.so.6.0.25 +- GCC 9.0.0: libstdc++.so.6.0.26 ++ GCC 9.1.0: libstdc++.so.6.0.26 ++ GCC 9.2.0: libstdc++.so.6.0.27 ++ GCC 9.3.0: libstdc++.so.6.0.28 + + + Note 1: Error should be libstdc++.so.3.0.3. +Index: libstdc++-v3/doc/xml/manual/documentation_hacking.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/documentation_hacking.xml (.../branches/gcc-9-branch) +@@ -805,7 +805,7 @@ + + + +- Generated files are output into separate sub directores of ++ Generated files are output into separate sub-directores of + doc/docbook/ in the + build directory, based on the output format. For instance, the + HTML docs will be in + + ++ The doc-html-docbook-regenerate target will generate ++ the HTML files and copy them back to the libstdc++ source tree. ++ This can be used to update the HTML files that are checked in to ++ version control. ++ ++ ++ + If the Docbook stylesheets are installed in a custom location, + one can use the variable XSL_STYLE_DIR to + override the Makefile defaults. For example: +Index: libstdc++-v3/doc/xml/manual/status_cxx2020.xml +=================================================================== +--- a/src/libstdc++-v3/doc/xml/manual/status_cxx2020.xml (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/xml/manual/status_cxx2020.xml (.../branches/gcc-9-branch) +@@ -309,7 +309,6 @@ + + + +- + Constexpr iterator requirements + + +@@ -316,8 +315,9 @@ + P0858R0 + + +- +- ++ 9.1 ++ __cpp_lib_string_view >= 201803L ++ and __cpp_lib_array_constexpr >= 201803L + + + +Index: libstdc++-v3/doc/Makefile.in +=================================================================== +--- a/src/libstdc++-v3/doc/Makefile.in (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/Makefile.in (.../branches/gcc-9-branch) +@@ -978,7 +978,6 @@ + + ${docbook_outdir}/html: + mkdir -p ${docbook_outdir}/html +- mkdir -p ${docbook_outdir}/html/ext + mkdir -p ${docbook_outdir}/html/images + mkdir -p ${docbook_outdir}/html/manual + +@@ -1030,6 +1029,12 @@ + $(STAMP) stamp-html-docbook + + doc-html-docbook: stamp-html-docbook-data ++ ++# Generate the HTML pages and copy them back to the source tree. ++doc-html-docbook-regenerate: doc-html-docbook ++ $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html ++ $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images ++ $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual + stamp-html-single-docbook: $(xml_sources) ${docbook_outdir}/html + @echo "Generating html single file..." + $(XSLTPROC) $(XSLT_PARAM) $(XSLT_FLAGS) -o ${manual_html} \ +Index: libstdc++-v3/doc/html/manual/status.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/status.html (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/status.html (.../branches/gcc-9-branch) +@@ -1110,11 +1110,12 @@ + + P0809R0 + +-   Constexpr iterator requirements ++   Constexpr iterator requirements + + P0858R0 + +-   Symmetry for spaceship ++ 9.1 __cpp_lib_string_view >= 201803L ++ and __cpp_lib_array_constexpr >= 201803L Symmetry for spaceship + + P0905R1 + +Index: libstdc++-v3/doc/html/manual/abi.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/abi.html (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/abi.html (.../branches/gcc-9-branch) +@@ -110,7 +110,7 @@ + has the same filename and DT_SONAME as the + preceding release. +

It is versioned as follows: +-

  • GCC 3.0.0: libstdc++.so.3.0.0

  • GCC 3.0.1: libstdc++.so.3.0.1

  • GCC 3.0.2: libstdc++.so.3.0.2

  • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

  • GCC 3.0.4: libstdc++.so.3.0.4

  • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

  • GCC 3.1.1: libstdc++.so.4.0.1

  • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

  • GCC 3.2.1: libstdc++.so.5.0.1

  • GCC 3.2.2: libstdc++.so.5.0.2

  • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

  • GCC 3.3.0: libstdc++.so.5.0.4

  • GCC 3.3.1: libstdc++.so.5.0.5

  • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

  • GCC 3.4.1: libstdc++.so.6.0.1

  • GCC 3.4.2: libstdc++.so.6.0.2

  • GCC 3.4.3: libstdc++.so.6.0.3

  • GCC 4.0.0: libstdc++.so.6.0.4

  • GCC 4.0.1: libstdc++.so.6.0.5

  • GCC 4.0.2: libstdc++.so.6.0.6

  • GCC 4.0.3: libstdc++.so.6.0.7

  • GCC 4.1.0: libstdc++.so.6.0.7

  • GCC 4.1.1: libstdc++.so.6.0.8

  • GCC 4.2.0: libstdc++.so.6.0.9

  • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

  • GCC 4.2.2: libstdc++.so.6.0.9

  • GCC 4.3.0: libstdc++.so.6.0.10

  • GCC 4.4.0: libstdc++.so.6.0.11

  • GCC 4.4.1: libstdc++.so.6.0.12

  • GCC 4.4.2: libstdc++.so.6.0.13

  • GCC 4.5.0: libstdc++.so.6.0.14

  • GCC 4.6.0: libstdc++.so.6.0.15

  • GCC 4.6.1: libstdc++.so.6.0.16

  • GCC 4.7.0: libstdc++.so.6.0.17

  • GCC 4.8.0: libstdc++.so.6.0.18

  • GCC 4.8.3: libstdc++.so.6.0.19

  • GCC 4.9.0: libstdc++.so.6.0.20

  • GCC 5.1.0: libstdc++.so.6.0.21

  • GCC 6.1.0: libstdc++.so.6.0.22

  • GCC 7.1.0: libstdc++.so.6.0.23

  • GCC 7.2.0: libstdc++.so.6.0.24

  • GCC 8.0.0: libstdc++.so.6.0.25

  • GCC 9.0.0: libstdc++.so.6.0.26

++

  • GCC 3.0.0: libstdc++.so.3.0.0

  • GCC 3.0.1: libstdc++.so.3.0.1

  • GCC 3.0.2: libstdc++.so.3.0.2

  • GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)

  • GCC 3.0.4: libstdc++.so.3.0.4

  • GCC 3.1.0: libstdc++.so.4.0.0 (Incompatible with previous)

  • GCC 3.1.1: libstdc++.so.4.0.1

  • GCC 3.2.0: libstdc++.so.5.0.0 (Incompatible with previous)

  • GCC 3.2.1: libstdc++.so.5.0.1

  • GCC 3.2.2: libstdc++.so.5.0.2

  • GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)

  • GCC 3.3.0: libstdc++.so.5.0.4

  • GCC 3.3.1: libstdc++.so.5.0.5

  • GCC 3.4.0: libstdc++.so.6.0.0 (Incompatible with previous)

  • GCC 3.4.1: libstdc++.so.6.0.1

  • GCC 3.4.2: libstdc++.so.6.0.2

  • GCC 3.4.3: libstdc++.so.6.0.3

  • GCC 4.0.0: libstdc++.so.6.0.4

  • GCC 4.0.1: libstdc++.so.6.0.5

  • GCC 4.0.2: libstdc++.so.6.0.6

  • GCC 4.0.3: libstdc++.so.6.0.7

  • GCC 4.1.0: libstdc++.so.6.0.7

  • GCC 4.1.1: libstdc++.so.6.0.8

  • GCC 4.2.0: libstdc++.so.6.0.9

  • GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)

  • GCC 4.2.2: libstdc++.so.6.0.9

  • GCC 4.3.0: libstdc++.so.6.0.10

  • GCC 4.4.0: libstdc++.so.6.0.11

  • GCC 4.4.1: libstdc++.so.6.0.12

  • GCC 4.4.2: libstdc++.so.6.0.13

  • GCC 4.5.0: libstdc++.so.6.0.14

  • GCC 4.6.0: libstdc++.so.6.0.15

  • GCC 4.6.1: libstdc++.so.6.0.16

  • GCC 4.7.0: libstdc++.so.6.0.17

  • GCC 4.8.0: libstdc++.so.6.0.18

  • GCC 4.8.3: libstdc++.so.6.0.19

  • GCC 4.9.0: libstdc++.so.6.0.20

  • GCC 5.1.0: libstdc++.so.6.0.21

  • GCC 6.1.0: libstdc++.so.6.0.22

  • GCC 7.1.0: libstdc++.so.6.0.23

  • GCC 7.2.0: libstdc++.so.6.0.24

  • GCC 8.0.0: libstdc++.so.6.0.25

  • GCC 9.1.0: libstdc++.so.6.0.26

  • GCC 9.2.0: libstdc++.so.6.0.27

  • GCC 9.3.0: libstdc++.so.6.0.28

+ Note 1: Error should be libstdc++.so.3.0.3. +

+ Note 2: Not strictly required. +Index: libstdc++-v3/doc/html/manual/memory.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/memory.html (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/memory.html (.../branches/gcc-9-branch) +@@ -314,13 +314,13 @@ + . + isoc++_1998 + 20.4 Memory.

+- ++ + The Standard Librarian: What Are Allocators Good For? +- +- . Matt Austern. ++ ++ . Matt Austern. + C/C++ Users Journal +- .

+Index: libstdc++-v3/doc/html/manual/documentation_hacking.html +=================================================================== +--- a/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/html/manual/documentation_hacking.html (.../branches/gcc-9-branch) +@@ -381,11 +381,16 @@ +

+

make doc-xml-single-docbook

+

+- Generated files are output into separate sub directores of ++ Generated files are output into separate sub-directores of + doc/docbook/ in the + build directory, based on the output format. For instance, the + HTML docs will be in doc/docbook/html. +

++ The

doc-html-docbook-regenerate

target will generate ++ the HTML files and copy them back to the libstdc++ source tree. ++ This can be used to update the HTML files that are checked in to ++ version control. ++

+ If the Docbook stylesheets are installed in a custom location, + one can use the variable XSL_STYLE_DIR to + override the Makefile defaults. For example: +Index: libstdc++-v3/doc/Makefile.am +=================================================================== +--- a/src/libstdc++-v3/doc/Makefile.am (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/doc/Makefile.am (.../branches/gcc-9-branch) +@@ -477,7 +477,6 @@ + + ${docbook_outdir}/html: + mkdir -p ${docbook_outdir}/html +- mkdir -p ${docbook_outdir}/html/ext + mkdir -p ${docbook_outdir}/html/images + mkdir -p ${docbook_outdir}/html/manual + +@@ -546,6 +545,12 @@ + + doc-html-docbook: stamp-html-docbook-data + ++# Generate the HTML pages and copy them back to the source tree. ++doc-html-docbook-regenerate: doc-html-docbook ++ $(INSTALL_DATA) ${docbook_outdir}/html/*.html ${top_srcdir}/doc/html ++ $(INSTALL_DATA) ${docbook_outdir}/html/images/* ${top_srcdir}/doc/html/images ++ $(INSTALL_DATA) ${docbook_outdir}/html/manual/*.html ${top_srcdir}/doc/html/manual ++ + # HTML, all one page + # NB: Have to generate customization XSL for UTF-8 output. + manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html +Index: libstdc++-v3/include/std/numeric +=================================================================== +--- a/src/libstdc++-v3/include/std/numeric (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/std/numeric (.../branches/gcc-9-branch) +@@ -220,6 +220,472 @@ + #endif // C++20 + + #if __cplusplus > 201402L ++#include ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++ /// @addtogroup numeric_ops ++ /// @{ ++ ++ /// @cond undocumented ++ template, ++ typename _Cat = typename _Traits::iterator_category> ++ using __is_random_access_iter ++ = is_base_of; ++ /// @endcond ++ ++ /** ++ * @brief Calculate reduction of values in a range. ++ * ++ * @param __first Start of range. ++ * @param __last End of range. ++ * @param __init Starting value to add other values to. ++ * @param __binary_op A binary function object. ++ * @return The final sum. ++ * ++ * Reduce the values in the range `[first,last)` using a binary operation. ++ * The initial value is `init`. The values are not necessarily processed ++ * in order. ++ * ++ * This algorithm is similar to `std::accumulate` but is not required to ++ * perform the operations in order from first to last. For operations ++ * that are commutative and associative the result will be the same as ++ * for `std::accumulate`, but for other operations (such as floating point ++ * arithmetic) the result can be different. ++ */ ++ template ++ _Tp ++ reduce(_InputIterator __first, _InputIterator __last, _Tp __init, ++ _BinaryOperation __binary_op) ++ { ++ using value_type = typename iterator_traits<_InputIterator>::value_type; ++ static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>); ++ static_assert(is_convertible_v); ++ if constexpr (__is_random_access_iter<_InputIterator>::value) ++ { ++ while ((__last - __first) >= 4) ++ { ++ _Tp __v1 = __binary_op(__first[0], __first[1]); ++ _Tp __v2 = __binary_op(__first[2], __first[3]); ++ _Tp __v3 = __binary_op(__v1, __v2); ++ __init = __binary_op(__init, __v3); ++ __first += 4; ++ } ++ } ++ for (; __first != __last; ++__first) ++ __init = __binary_op(__init, *__first); ++ return __init; ++ } ++ ++ /** ++ * @brief Calculate reduction of values in a range. ++ * ++ * @param __first Start of range. ++ * @param __last End of range. ++ * @param __init Starting value to add other values to. ++ * @return The final sum. ++ * ++ * Reduce the values in the range `[first,last)` using addition. ++ * Equivalent to calling `std::reduce(first, last, init, std::plus<>())`. ++ */ ++ template ++ inline _Tp ++ reduce(_InputIterator __first, _InputIterator __last, _Tp __init) ++ { return std::reduce(__first, __last, std::move(__init), plus<>()); } ++ ++ /** ++ * @brief Calculate reduction of values in a range. ++ * ++ * @param __first Start of range. ++ * @param __last End of range. ++ * @return The final sum. ++ * ++ * Reduce the values in the range `[first,last)` using addition, with ++ * an initial value of `T{}`, where `T` is the iterator's value type. ++ * Equivalent to calling `std::reduce(first, last, T{}, std::plus<>())`. ++ */ ++ template ++ inline typename iterator_traits<_InputIterator>::value_type ++ reduce(_InputIterator __first, _InputIterator __last) ++ { ++ using value_type = typename iterator_traits<_InputIterator>::value_type; ++ return std::reduce(__first, __last, value_type{}, plus<>()); ++ } ++ ++ /** ++ * @brief Combine elements from two ranges and reduce ++ * ++ * @param __first1 Start of first range. ++ * @param __last1 End of first range. ++ * @param __first2 Start of second range. ++ * @param __init Starting value to add other values to. ++ * @param __binary_op1 The function used to perform reduction. ++ * @param __binary_op2 The function used to combine values from the ranges. ++ * @return The final sum. ++ * ++ * Call `binary_op2(first1[n],first2[n])` for each `n` in `[0,last1-first1)` ++ * and then use `binary_op1` to reduce the values returned by `binary_op2` ++ * to a single value of type `T`. ++ * ++ * The range beginning at `first2` must contain at least `last1-first1` ++ * elements. ++ */ ++ template ++ _Tp ++ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, ++ _InputIterator2 __first2, _Tp __init, ++ _BinaryOperation1 __binary_op1, ++ _BinaryOperation2 __binary_op2) ++ { ++ if constexpr (__and_v<__is_random_access_iter<_InputIterator1>, ++ __is_random_access_iter<_InputIterator2>>) ++ { ++ while ((__last1 - __first1) >= 4) ++ { ++ _Tp __v1 = __binary_op1(__binary_op2(__first1[0], __first2[0]), ++ __binary_op2(__first1[1], __first2[1])); ++ _Tp __v2 = __binary_op1(__binary_op2(__first1[2], __first2[2]), ++ __binary_op2(__first1[3], __first2[3])); ++ _Tp __v3 = __binary_op1(__v1, __v2); ++ __init = __binary_op1(__init, __v3); ++ __first1 += 4; ++ __first2 += 4; ++ } ++ } ++ for (; __first1 != __last1; ++__first1, (void) ++__first2) ++ __init = __binary_op1(__init, __binary_op2(*__first1, *__first2)); ++ return __init; ++ } ++ ++ /** ++ * @brief Combine elements from two ranges and reduce ++ * ++ * @param __first1 Start of first range. ++ * @param __last1 End of first range. ++ * @param __first2 Start of second range. ++ * @param __init Starting value to add other values to. ++ * @return The final sum. ++ * ++ * Call `first1[n]*first2[n]` for each `n` in `[0,last1-first1)` and then ++ * use addition to sum those products to a single value of type `T`. ++ * ++ * The range beginning at `first2` must contain at least `last1-first1` ++ * elements. ++ */ ++ template ++ inline _Tp ++ transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, ++ _InputIterator2 __first2, _Tp __init) ++ { ++ return std::transform_reduce(__first1, __last1, __first2, ++ std::move(__init), ++ plus<>(), multiplies<>()); ++ } ++ ++ /** ++ * @brief Transform the elements of a range and reduce ++ * ++ * @param __first Start of range. ++ * @param __last End of range. ++ * @param __init Starting value to add other values to. ++ * @param __binary_op The function used to perform reduction. ++ * @param __unary_op The function used to transform values from the range. ++ * @return The final sum. ++ * ++ * Call `unary_op(first[n])` for each `n` in `[0,last-first)` and then ++ * use `binary_op` to reduce the values returned by `unary_op` ++ * to a single value of type `T`. ++ */ ++ template ++ _Tp ++ transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init, ++ _BinaryOperation __binary_op, _UnaryOperation __unary_op) ++ { ++ if constexpr (__is_random_access_iter<_InputIterator>::value) ++ { ++ while ((__last - __first) >= 4) ++ { ++ _Tp __v1 = __binary_op(__unary_op(__first[0]), ++ __unary_op(__first[1])); ++ _Tp __v2 = __binary_op(__unary_op(__first[2]), ++ __unary_op(__first[3])); ++ _Tp __v3 = __binary_op(__v1, __v2); ++ __init = __binary_op(__init, __v3); ++ __first += 4; ++ } ++ } ++ for (; __first != __last; ++__first) ++ __init = __binary_op(__init, __unary_op(*__first)); ++ return __init; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __init Initial value. ++ * @param __binary_op Function to perform summation. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements (and the initial value), ++ * using `binary_op` for summation. ++ * ++ * This function generates an "exclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N-1 input elements, ++ * so the Nth input element is not included. ++ */ ++ template ++ _OutputIterator ++ exclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, _Tp __init, ++ _BinaryOperation __binary_op) ++ { ++ while (__first != __last) ++ { ++ auto __v = __init; ++ __init = __binary_op(__init, *__first); ++ ++__first; ++ *__result++ = std::move(__v); ++ } ++ return __result; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __init Initial value. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements (and the initial value), ++ * using `std::plus<>` for summation. ++ * ++ * This function generates an "exclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N-1 input elements, ++ * so the Nth input element is not included. ++ */ ++ template ++ inline _OutputIterator ++ exclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, _Tp __init) ++ { ++ return std::exclusive_scan(__first, __last, __result, std::move(__init), ++ plus<>()); ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __binary_op Function to perform summation. ++ * @param __init Initial value. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements (and the initial value), ++ * using `binary_op` for summation. ++ * ++ * This function generates an "inclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N input elements, ++ * so the Nth input element is included. ++ */ ++ template ++ _OutputIterator ++ inclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, _BinaryOperation __binary_op, ++ _Tp __init) ++ { ++ for (; __first != __last; ++__first) ++ *__result++ = __init = __binary_op(__init, *__first); ++ return __result; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __binary_op Function to perform summation. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements, using `binary_op` for summation. ++ * ++ * This function generates an "inclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N input elements, ++ * so the Nth input element is included. ++ */ ++ template ++ _OutputIterator ++ inclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, _BinaryOperation __binary_op) ++ { ++ if (__first != __last) ++ { ++ auto __init = *__first; ++ *__result++ = __init; ++ ++__first; ++ if (__first != __last) ++ __result = std::inclusive_scan(__first, __last, __result, ++ __binary_op, std::move(__init)); ++ } ++ return __result; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements, using `std::plus<>` for summation. ++ * ++ * This function generates an "inclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N input elements, ++ * so the Nth input element is included. ++ */ ++ template ++ inline _OutputIterator ++ inclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result) ++ { return std::inclusive_scan(__first, __last, __result, plus<>()); } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __init Initial value. ++ * @param __binary_op Function to perform summation. ++ * @param __unary_op Function to transform elements of the input range. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements (and the initial value), ++ * using `__unary_op` to transform the input elements ++ * and using `__binary_op` for summation. ++ * ++ * This function generates an "exclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N-1 input elements, ++ * so the Nth input element is not included. ++ */ ++ template ++ _OutputIterator ++ transform_exclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, _Tp __init, ++ _BinaryOperation __binary_op, ++ _UnaryOperation __unary_op) ++ { ++ while (__first != __last) ++ { ++ auto __v = __init; ++ __init = __binary_op(__init, __unary_op(*__first)); ++ ++__first; ++ *__result++ = std::move(__v); ++ } ++ return __result; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __binary_op Function to perform summation. ++ * @param __unary_op Function to transform elements of the input range. ++ * @param __init Initial value. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements (and the initial value), ++ * using `__unary_op` to transform the input elements ++ * and using `__binary_op` for summation. ++ * ++ * This function generates an "inclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N input elements, ++ * so the Nth input element is included. ++ */ ++ template ++ _OutputIterator ++ transform_inclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, ++ _BinaryOperation __binary_op, ++ _UnaryOperation __unary_op, ++ _Tp __init) ++ { ++ for (; __first != __last; ++__first) ++ *__result++ = __init = __binary_op(__init, __unary_op(*__first)); ++ return __result; ++ } ++ ++ /** @brief Output the cumulative sum of one range to a second range ++ * ++ * @param __first Start of input range. ++ * @param __last End of input range. ++ * @param __result Start of output range. ++ * @param __binary_op Function to perform summation. ++ * @param __unary_op Function to transform elements of the input range. ++ * @return The end of the output range. ++ * ++ * Write the cumulative sum (aka prefix sum, aka scan) of the input range ++ * to the output range. Each element of the output range contains the ++ * running total of all earlier elements, ++ * using `__unary_op` to transform the input elements ++ * and using `__binary_op` for summation. ++ * ++ * This function generates an "inclusive" scan, meaning the Nth element ++ * of the output range is the sum of the first N input elements, ++ * so the Nth input element is included. ++ */ ++ template ++ _OutputIterator ++ transform_inclusive_scan(_InputIterator __first, _InputIterator __last, ++ _OutputIterator __result, ++ _BinaryOperation __binary_op, ++ _UnaryOperation __unary_op) ++ { ++ if (__first != __last) ++ { ++ auto __init = __unary_op(*__first); ++ *__result++ = __init; ++ ++__first; ++ if (__first != __last) ++ __result = std::transform_inclusive_scan(__first, __last, __result, ++ __binary_op, __unary_op, ++ std::move(__init)); ++ } ++ return __result; ++ } ++ ++ // @} group numeric_ops ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace std ++ + // Parallel STL algorithms + # if __PSTL_EXECUTION_POLICIES_DEFINED + // If has already been included, pull in implementations +Index: libstdc++-v3/include/std/type_traits +=================================================================== +--- a/src/libstdc++-v3/include/std/type_traits (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/std/type_traits (.../branches/gcc-9-branch) +@@ -2662,14 +2662,49 @@ + + // __is_invocable (std::is_invocable for C++11) + +- template ++ // The primary template is used for invalid INVOKE expressions. ++ template::value, typename = void> + struct __is_invocable_impl : false_type { }; + ++ // Used for valid INVOKE and INVOKE expressions. + template +- struct __is_invocable_impl<_Result, _Ret, __void_t> +- : __or_, is_convertible>::type ++ struct __is_invocable_impl<_Result, _Ret, ++ /* is_void<_Ret> = */ true, ++ __void_t> ++ : true_type + { }; + ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wctor-dtor-privacy" ++ // Used for INVOKE expressions to check the implicit conversion to R. ++ template ++ struct __is_invocable_impl<_Result, _Ret, ++ /* is_void<_Ret> = */ false, ++ __void_t> ++ { ++ private: ++ // The type of the INVOKE expression. ++ // Unlike declval, this doesn't add_rvalue_reference. ++ static typename _Result::type _S_get(); ++ ++ template ++ static void _S_conv(_Tp); ++ ++ // This overload is viable if INVOKE(f, args...) can convert to _Tp. ++ template(_S_get()))> ++ static true_type ++ _S_test(int); ++ ++ template ++ static false_type ++ _S_test(...); ++ ++ public: ++ using type = decltype(_S_test<_Ret>(1)); ++ }; ++#pragma GCC diagnostic pop ++ + template + struct __is_invocable + : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type +Index: libstdc++-v3/include/std/version +=================================================================== +--- a/src/libstdc++-v3/include/std/version (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/std/version (.../branches/gcc-9-branch) +@@ -149,7 +149,7 @@ + + #if __cplusplus > 201703L + // c++2a +-#define __cpp_lib_bind_front 201902L ++#define __cpp_lib_bind_front 201907L + #define __cpp_lib_bounded_array_traits 201902L + #if __cpp_impl_destroying_delete + # define __cpp_lib_destroying_delete 201806L +Index: libstdc++-v3/include/std/functional +=================================================================== +--- a/src/libstdc++-v3/include/std/functional (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/std/functional (.../branches/gcc-9-branch) +@@ -837,7 +837,7 @@ + } + + #if __cplusplus > 201703L +-#define __cpp_lib_bind_front 201902L ++#define __cpp_lib_bind_front 201907L + + template + struct _Bind_front +@@ -923,7 +923,7 @@ + + template + using _Bind_front_t +- = _Bind_front, unwrap_ref_decay_t<_Args>...>; ++ = _Bind_front, decay_t<_Args>...>; + + template + _Bind_front_t<_Fn, _Args...> +Index: libstdc++-v3/include/std/complex +=================================================================== +--- a/src/libstdc++-v3/include/std/complex (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/std/complex (.../branches/gcc-9-branch) +@@ -1898,41 +1898,59 @@ + template + std::complex<_Tp> proj(const std::complex<_Tp>&); + ++ // Generic implementation of std::proj, does not work for infinities. + template +- std::complex<_Tp> ++ inline std::complex<_Tp> + __complex_proj(const std::complex<_Tp>& __z) +- { +- const _Tp __den = (__z.real() * __z.real() +- + __z.imag() * __z.imag() + _Tp(1.0)); ++ { return __z; } + +- return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den, +- (_Tp(2.0) * __z.imag()) / __den); +- } +- + #if _GLIBCXX_USE_C99_COMPLEX +- inline __complex__ float +- __complex_proj(__complex__ float __z) +- { return __builtin_cprojf(__z); } ++ inline complex ++ __complex_proj(const complex& __z) ++ { return __builtin_cprojf(__z.__rep()); } + +- inline __complex__ double +- __complex_proj(__complex__ double __z) +- { return __builtin_cproj(__z); } ++ inline complex ++ __complex_proj(const complex& __z) ++ { return __builtin_cproj(__z.__rep()); } + +- inline __complex__ long double +- __complex_proj(const __complex__ long double& __z) +- { return __builtin_cprojl(__z); } ++ inline complex ++ __complex_proj(const complex& __z) ++ { return __builtin_cprojl(__z.__rep()); } ++#elif defined _GLIBCXX_USE_C99_MATH_TR1 ++ inline complex ++ __complex_proj(const complex& __z) ++ { ++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag())) ++ return complex(__builtin_inff(), ++ __builtin_copysignf(0.0f, __z.imag())); ++ return __z; ++ } + ++ inline complex ++ __complex_proj(const complex& __z) ++ { ++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag())) ++ return complex(__builtin_inf(), ++ __builtin_copysign(0.0, __z.imag())); ++ return __z; ++ } ++ ++ inline complex ++ __complex_proj(const complex& __z) ++ { ++ if (__builtin_isinf(__z.real()) || __builtin_isinf(__z.imag())) ++ return complex(__builtin_infl(), ++ __builtin_copysignl(0.0l, __z.imag())); ++ return __z; ++ } ++#endif ++ + template + inline std::complex<_Tp> + proj(const std::complex<_Tp>& __z) +- { return __complex_proj(__z.__rep()); } +-#else +- template +- inline std::complex<_Tp> +- proj(const std::complex<_Tp>& __z) + { return __complex_proj(__z); } +-#endif + ++ // Overload for scalars + template + inline std::complex::__type> + proj(_Tp __x) +Index: libstdc++-v3/include/experimental/internet +=================================================================== +--- a/src/libstdc++-v3/include/experimental/internet (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/experimental/internet (.../branches/gcc-9-branch) +@@ -50,6 +50,9 @@ + #ifdef _GLIBCXX_HAVE_ARPA_INET_H + # include // inet_ntop + #endif ++#ifdef _GLIBCXX_HAVE_NETINET_IN_H ++# include // IPPROTO_IP ++#endif + #ifdef _GLIBCXX_HAVE_NETINET_TCP_H + # include // TCP_NODELAY + #endif +@@ -539,7 +542,7 @@ + const auto& __aa = __a._M_bytes; + const auto& __bb = __b._M_bytes; + int __i = 0; +- for (; __aa[__i] == __bb[__i] && __i < 16; ++__i) ++ for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i) + ; + return __i == 16 ? __a.scope_id() == __b.scope_id() : false; + } +@@ -554,7 +557,7 @@ + const auto& __aa = __a._M_bytes; + const auto& __bb = __b._M_bytes; + int __i = 0; +- for (; __aa[__i] == __bb[__i] && __i < 16; ++__i) ++ for (; __i < 16 && __aa[__i] == __bb[__i]; ++__i) + ; + return __i == 16 ? __a.scope_id() < __b.scope_id() : __aa[__i] < __bb[__i]; + } +Index: libstdc++-v3/include/bits/stl_algobase.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_algobase.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_algobase.h (.../branches/gcc-9-branch) +@@ -301,7 +301,7 @@ + // (2) If we're using random access iterators, then write the loop as + // a for loop with an explicit count. + +- template ++ template + struct __copy_move + { + template +Index: libstdc++-v3/include/bits/stl_numeric.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_numeric.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_numeric.h (.../branches/gcc-9-branch) +@@ -60,12 +60,16 @@ + #include + #include // For _GLIBCXX_MOVE + +-#if __cplusplus >= 201103L + + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION + ++ /** @defgroup numeric_ops Generalized Numeric operations ++ * @ingroup algorithms ++ */ ++ ++#if __cplusplus >= 201103L + /** + * @brief Create a range of sequentially increasing values. + * +@@ -76,6 +80,7 @@ + * @param __last End of range. + * @param __value Starting value. + * @return Nothing. ++ * @ingroup numeric_ops + */ + template + void +@@ -94,14 +99,10 @@ + ++__value; + } + } ++#endif + + _GLIBCXX_END_NAMESPACE_VERSION +-} // namespace std + +-#endif +- +-namespace std _GLIBCXX_VISIBILITY(default) +-{ + _GLIBCXX_BEGIN_NAMESPACE_ALGO + + #if __cplusplus > 201703L +@@ -112,6 +113,9 @@ + # define _GLIBCXX_MOVE_IF_20(_E) _E + #endif + ++ /// @addtogroup numeric_ops ++ /// @{ ++ + /** + * @brief Accumulate values in a range. + * +@@ -139,8 +143,8 @@ + /** + * @brief Accumulate values in a range with operation. + * +- * Accumulates the values in the range [first,last) using the function +- * object @p __binary_op. The initial value is @p __init. The values are ++ * Accumulates the values in the range `[first,last)` using the function ++ * object `__binary_op`. The initial value is `__init`. The values are + * processed in order. + * + * @param __first Start of range. +@@ -390,6 +394,8 @@ + return ++__result; + } + ++ // @} group numeric_ops ++ + #undef _GLIBCXX_MOVE_IF_20 + + _GLIBCXX_END_NAMESPACE_ALGO +Index: libstdc++-v3/include/bits/stl_uninitialized.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_uninitialized.h (.../branches/gcc-9-branch) +@@ -122,9 +122,15 @@ + #if __cplusplus < 201103L + const bool __assignable = true; + #else +- // trivial types can have deleted assignment ++ // Trivial types can have deleted copy constructor, but the std::copy ++ // optimization that uses memmove would happily "copy" them anyway. ++ static_assert(is_constructible<_ValueType2, decltype(*__first)>::value, ++ "result type must be constructible from value type of input range"); ++ + typedef typename iterator_traits<_InputIterator>::reference _RefType1; + typedef typename iterator_traits<_ForwardIterator>::reference _RefType2; ++ // Trivial types can have deleted assignment, so using std::copy ++ // would be ill-formed. Require assignability before using std::copy: + const bool __assignable = is_assignable<_RefType2, _RefType1>::value; + #endif + +@@ -186,7 +192,13 @@ + #if __cplusplus < 201103L + const bool __assignable = true; + #else +- // trivial types can have deleted assignment ++ // Trivial types can have deleted copy constructor, but the std::fill ++ // optimization that uses memmove would happily "copy" them anyway. ++ static_assert(is_constructible<_ValueType, const _Tp&>::value, ++ "result type must be constructible from input type"); ++ ++ // Trivial types can have deleted assignment, so using std::fill ++ // would be ill-formed. Require assignability before using std::fill: + const bool __assignable = is_copy_assignable<_ValueType>::value; + #endif + +@@ -248,7 +260,13 @@ + #if __cplusplus < 201103L + const bool __assignable = true; + #else +- // trivial types can have deleted assignment ++ // Trivial types can have deleted copy constructor, but the std::fill ++ // optimization that uses memmove would happily "copy" them anyway. ++ static_assert(is_constructible<_ValueType, const _Tp&>::value, ++ "result type must be constructible from input type"); ++ ++ // Trivial types can have deleted assignment, so using std::fill ++ // would be ill-formed. Require assignability before using std::fill: + const bool __assignable = is_copy_assignable<_ValueType>::value; + #endif + return __uninitialized_fill_n<__is_trivial(_ValueType) && __assignable>:: +Index: libstdc++-v3/include/bits/stl_algo.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/stl_algo.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/stl_algo.h (.../branches/gcc-9-branch) +@@ -3877,7 +3877,44 @@ + return __f; // N.B. [alg.foreach] says std::move(f) but it's redundant. + } + ++#if __cplusplus >= 201703L + /** ++ * @brief Apply a function to every element of a sequence. ++ * @ingroup non_mutating_algorithms ++ * @param __first An input iterator. ++ * @param __n A value convertible to an integer. ++ * @param __f A unary function object. ++ * @return `__first+__n` ++ * ++ * Applies the function object `__f` to each element in the range ++ * `[first, first+n)`. `__f` must not modify the order of the sequence. ++ * If `__f` has a return value it is ignored. ++ */ ++ template ++ _InputIterator ++ for_each_n(_InputIterator __first, _Size __n, _Function __f) ++ { ++ typename iterator_traits<_InputIterator>::difference_type __n2 = __n; ++ using _Cat = typename iterator_traits<_InputIterator>::iterator_category; ++ if constexpr (is_base_of_v) ++ { ++ auto __last = __first + __n2; ++ std::for_each(__first, __last, std::move(__f)); ++ return __last; ++ } ++ else ++ { ++ while (__n2-->0) ++ { ++ __f(*__first); ++ ++__first; ++ } ++ return __first; ++ } ++ } ++#endif // C++17 ++ ++ /** + * @brief Find the first occurrence of a value in a sequence. + * @ingroup non_mutating_algorithms + * @param __first An input iterator. +Index: libstdc++-v3/include/bits/algorithmfwd.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/algorithmfwd.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/algorithmfwd.h (.../branches/gcc-9-branch) +@@ -154,7 +154,7 @@ + */ + + /** +- * @defgroup set_algorithms Set Operation ++ * @defgroup set_algorithms Set Operations + * @ingroup sorting_algorithms + * + * These algorithms are common set operations performed on sequences +Index: libstdc++-v3/include/bits/std_function.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/std_function.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/std_function.h (.../branches/gcc-9-branch) +@@ -359,10 +359,6 @@ + } + }; + +- template +- using __check_func_return_type +- = __or_, is_same<_From, _To>, is_convertible<_From, _To>>; +- + /** + * @brief Primary class template for std::function. + * @ingroup functors +@@ -375,8 +371,10 @@ + private _Function_base + { + template::type> +- struct _Callable : __check_func_return_type<_Res2, _Res> { }; ++ typename _Res2 = __invoke_result<_Func&, _ArgTypes...>> ++ struct _Callable ++ : __is_invocable_impl<_Res2, _Res>::type ++ { }; + + // Used so the return type convertibility checks aren't done when + // performing overload resolution for copy construction/assignment. +Index: libstdc++-v3/include/bits/memoryfwd.h +=================================================================== +--- a/src/libstdc++-v3/include/bits/memoryfwd.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/bits/memoryfwd.h (.../branches/gcc-9-branch) +@@ -66,9 +66,11 @@ + template<> + class allocator; + ++#if __cplusplus >= 201103L + /// Declare uses_allocator so it can be specialized in \ etc. + template + struct uses_allocator; ++#endif + + /// @} group memory + +Index: libstdc++-v3/include/tr2/dynamic_bitset.tcc +=================================================================== +--- a/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset.tcc (.../branches/gcc-9-branch) +@@ -174,7 +174,7 @@ + + // Definitions of non-inline member functions. + template +- template ++ template + void + dynamic_bitset<_WordT, _Alloc>:: + _M_copy_from_ptr(const _CharT* __str, size_t __len, +Index: libstdc++-v3/include/tr2/dynamic_bitset +=================================================================== +--- a/src/libstdc++-v3/include/tr2/dynamic_bitset (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/include/tr2/dynamic_bitset (.../branches/gcc-9-branch) +@@ -34,10 +34,9 @@ + #include + #include + #include +-#include // For std::allocator +-#include // For invalid_argument, out_of_range, +- // overflow_error +-#include ++#include ++#include ++#include // For fill + #include + + namespace std _GLIBCXX_VISIBILITY(default) +@@ -76,41 +75,48 @@ + std::vector _M_w; + + explicit +- __dynamic_bitset_base(const allocator_type& __alloc = allocator_type()) ++ __dynamic_bitset_base(const allocator_type& __alloc) + : _M_w(__alloc) + { } + +- explicit +- __dynamic_bitset_base(__dynamic_bitset_base&& __b) +- { this->_M_w.swap(__b._M_w); } ++ __dynamic_bitset_base() = default; ++ __dynamic_bitset_base(const __dynamic_bitset_base&) = default; ++ __dynamic_bitset_base(__dynamic_bitset_base&& __b) = default; ++ __dynamic_bitset_base& operator=(const __dynamic_bitset_base&) = default; ++ __dynamic_bitset_base& operator=(__dynamic_bitset_base&&) = default; ++ ~__dynamic_bitset_base() = default; + + explicit + __dynamic_bitset_base(size_type __nbits, unsigned long long __val = 0ULL, + const allocator_type& __alloc = allocator_type()) +- : _M_w(__nbits / _S_bits_per_block +- + (__nbits % _S_bits_per_block > 0), +- __val, __alloc) ++ : _M_w(__nbits / _S_bits_per_block + (__nbits % _S_bits_per_block > 0), ++ block_type(0), __alloc) + { +- unsigned long long __mask = ~static_cast(0); +- size_t __n = std::min(this->_M_w.size(), +- sizeof(unsigned long long) / sizeof(block_type)); +- for (size_t __i = 0; __i < __n; ++__i) ++ if (__nbits < std::numeric_limits::digits) ++ __val &= ~(-1ULL << __nbits); ++ if (__val == 0) ++ return; ++ ++ if _GLIBCXX17_CONSTEXPR (sizeof(__val) == sizeof(block_type)) ++ _M_w[0] = __val; ++ else + { +- this->_M_w[__i] = (__val & __mask) >> (__i * _S_bits_per_block); +- __mask <<= _S_bits_per_block; ++ const size_t __n ++ = std::min(_M_w.size(), sizeof(__val) / sizeof(block_type)); ++ for (size_t __i = 0; __val && __i < __n; ++__i) ++ { ++ _M_w[__i] = static_cast(__val); ++ __val >>= _S_bits_per_block; ++ } + } + } + + void +- _M_assign(const __dynamic_bitset_base& __b) +- { this->_M_w = __b._M_w; } +- +- void +- _M_swap(__dynamic_bitset_base& __b) ++ _M_swap(__dynamic_bitset_base& __b) noexcept + { this->_M_w.swap(__b._M_w); } + + void +- _M_clear() ++ _M_clear() noexcept + { this->_M_w.clear(); } + + void +@@ -129,7 +135,7 @@ + } + + allocator_type +- _M_get_allocator() const ++ _M_get_allocator() const noexcept + { return this->_M_w.get_allocator(); } + + static size_type +@@ -149,23 +155,23 @@ + { return (static_cast(1)) << _S_whichbit(__pos); } + + block_type& +- _M_getword(size_type __pos) ++ _M_getword(size_type __pos) noexcept + { return this->_M_w[_S_whichword(__pos)]; } + + block_type +- _M_getword(size_type __pos) const ++ _M_getword(size_type __pos) const noexcept + { return this->_M_w[_S_whichword(__pos)]; } + + block_type& +- _M_hiword() ++ _M_hiword() noexcept + { return this->_M_w[_M_w.size() - 1]; } + + block_type +- _M_hiword() const ++ _M_hiword() const noexcept + { return this->_M_w[_M_w.size() - 1]; } + + void +- _M_do_and(const __dynamic_bitset_base& __x) ++ _M_do_and(const __dynamic_bitset_base& __x) noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +@@ -175,7 +181,7 @@ + } + + void +- _M_do_or(const __dynamic_bitset_base& __x) ++ _M_do_or(const __dynamic_bitset_base& __x) noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +@@ -185,7 +191,7 @@ + } + + void +- _M_do_xor(const __dynamic_bitset_base& __x) ++ _M_do_xor(const __dynamic_bitset_base& __x) noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +@@ -195,7 +201,7 @@ + } + + void +- _M_do_dif(const __dynamic_bitset_base& __x) ++ _M_do_dif(const __dynamic_bitset_base& __x) noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +@@ -211,7 +217,7 @@ + _M_do_right_shift(size_t __shift); + + void +- _M_do_flip() ++ _M_do_flip() noexcept + { + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) + this->_M_w[__i] = ~this->_M_w[__i]; +@@ -218,21 +224,20 @@ + } + + void +- _M_do_set() ++ _M_do_set() noexcept + { + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +- this->_M_w[__i] = ~static_cast(0); ++ this->_M_w[__i] = static_cast(-1); + } + + void +- _M_do_reset() ++ _M_do_reset() noexcept + { +- for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +- this->_M_w[__i] = static_cast(0); ++ std::fill(_M_w.begin(), _M_w.end(), static_cast(0)); + } + + bool +- _M_is_equal(const __dynamic_bitset_base& __x) const ++ _M_is_equal(const __dynamic_bitset_base& __x) const noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + { +@@ -246,7 +251,7 @@ + } + + bool +- _M_is_less(const __dynamic_bitset_base& __x) const ++ _M_is_less(const __dynamic_bitset_base& __x) const noexcept + { + if (__x._M_w.size() == this->_M_w.size()) + { +@@ -264,10 +269,10 @@ + } + + size_t +- _M_are_all_aux() const ++ _M_are_all_aux() const noexcept + { + for (size_t __i = 0; __i < this->_M_w.size() - 1; ++__i) +- if (_M_w[__i] != ~static_cast(0)) ++ if (_M_w[__i] != static_cast(-1)) + return 0; + return ((this->_M_w.size() - 1) * _S_bits_per_block + + __builtin_popcountll(this->_M_hiword())); +@@ -274,7 +279,7 @@ + } + + bool +- _M_is_any() const ++ _M_is_any() const noexcept + { + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) + if (this->_M_w[__i] != static_cast(0)) +@@ -283,7 +288,7 @@ + } + + bool +- _M_is_subset_of(const __dynamic_bitset_base& __b) ++ _M_is_subset_of(const __dynamic_bitset_base& __b) noexcept + { + if (__b._M_w.size() == this->_M_w.size()) + { +@@ -297,7 +302,7 @@ + } + + bool +- _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const ++ _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const noexcept + { + if (this->is_subset_of(__b)) + { +@@ -311,7 +316,7 @@ + } + + size_t +- _M_do_count() const ++ _M_do_count() const noexcept + { + size_t __result = 0; + for (size_t __i = 0; __i < this->_M_w.size(); ++__i) +@@ -357,6 +362,7 @@ + * + * See N2050, + * Proposal to Add a Dynamically Sizeable Bitset to the Standard Library. ++ * http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2050.pdf + * + * In the general unoptimized case, storage is allocated in + * word-sized blocks. Let B be the number of bits in a word, then +@@ -435,7 +441,7 @@ + { + size_type __shift = this->_M_Nb % bits_per_block; + if (__shift > 0) +- this->_M_hiword() &= ~((~static_cast(0)) << __shift); ++ this->_M_hiword() &= block_type(~(block_type(-1) << __shift)); + } + + // Set the unused bits in the uppermost word. +@@ -444,7 +450,7 @@ + { + size_type __shift = this->_M_Nb % bits_per_block; + if (__shift > 0) +- this->_M_hiword() |= ((~static_cast(0)) << __shift); ++ this->_M_hiword() |= block_type(block_type(-1) << __shift); + } + + /** +@@ -451,15 +457,15 @@ + * These versions of single-bit set, reset, flip, and test + * do no range checking. + */ +- dynamic_bitset<_WordT, _Alloc>& +- _M_unchecked_set(size_type __pos) ++ dynamic_bitset& ++ _M_unchecked_set(size_type __pos) noexcept + { + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- _M_unchecked_set(size_type __pos, int __val) ++ dynamic_bitset& ++ _M_unchecked_set(size_type __pos, int __val) noexcept + { + if (__val) + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); +@@ -468,15 +474,15 @@ + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- _M_unchecked_reset(size_type __pos) ++ dynamic_bitset& ++ _M_unchecked_reset(size_type __pos) noexcept + { + this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- _M_unchecked_flip(size_type __pos) ++ dynamic_bitset& ++ _M_unchecked_flip(size_type __pos) noexcept + { + this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos); + return *this; +@@ -483,11 +489,11 @@ + } + + bool +- _M_unchecked_test(size_type __pos) const ++ _M_unchecked_test(size_type __pos) const noexcept + { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos)) + != static_cast<_WordT>(0)); } + +- size_type _M_Nb; ++ size_type _M_Nb = 0; + + public: + /** +@@ -511,22 +517,16 @@ + block_type *_M_wp; + size_type _M_bpos; + +- // left undefined +- reference(); +- + public: +- reference(dynamic_bitset& __b, size_type __pos) ++ reference(dynamic_bitset& __b, size_type __pos) noexcept + { + this->_M_wp = &__b._M_getword(__pos); + this->_M_bpos = _Base::_S_whichbit(__pos); + } + +- ~reference() +- { } +- + // For b[i] = __x; + reference& +- operator=(bool __x) ++ operator=(bool __x) noexcept + { + if (__x) + *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos); +@@ -537,7 +537,7 @@ + + // For b[i] = b[__j]; + reference& +- operator=(const reference& __j) ++ operator=(const reference& __j) noexcept + { + if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos))) + *this->_M_wp |= _Base::_S_maskbit(this->_M_bpos); +@@ -548,16 +548,16 @@ + + // Flips the bit + bool +- operator~() const ++ operator~() const noexcept + { return (*(_M_wp) & _Base::_S_maskbit(this->_M_bpos)) == 0; } + + // For __x = b[i]; +- operator bool() const ++ operator bool() const noexcept + { return (*(this->_M_wp) & _Base::_S_maskbit(this->_M_bpos)) != 0; } + + // For b[i].flip(); + reference& +- flip() ++ flip() noexcept + { + *this->_M_wp ^= _Base::_S_maskbit(this->_M_bpos); + return *this; +@@ -569,10 +569,14 @@ + typedef bool const_reference; + + // 23.3.5.1 constructors: ++ + /// All bits set to zero. ++ dynamic_bitset() = default; ++ ++ /// All bits set to zero. + explicit +- dynamic_bitset(const allocator_type& __alloc = allocator_type()) +- : _Base(__alloc), _M_Nb(0) ++ dynamic_bitset(const allocator_type& __alloc) ++ : _Base(__alloc) + { } + + /// Initial bits bitwise-copied from a single word (others set to zero). +@@ -585,7 +589,7 @@ + + dynamic_bitset(initializer_list __il, + const allocator_type& __alloc = allocator_type()) +- : _Base(__alloc), _M_Nb(0) ++ : _Base(__alloc) + { this->append(__il); } + + /** +@@ -609,8 +613,7 @@ + __n = std::basic_string<_CharT, _Traits, _Alloc1>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1'), + const allocator_type& __alloc = allocator_type()) +- : _Base(__alloc), +- _M_Nb(0) // Watch for npos. ++ : _Base(__alloc) + { + if (__pos > __str.size()) + __throw_out_of_range(__N("dynamic_bitset::bitset initial position " +@@ -619,8 +622,7 @@ + // Watch for npos. + this->_M_Nb = (__n > __str.size() ? __str.size() - __pos : __n); + this->resize(this->_M_Nb); +- this->_M_copy_from_string(__str, __pos, __n, +- _CharT('0'), _CharT('1')); ++ this->_M_copy_from_string(__str, __pos, __n); + } + + /** +@@ -633,61 +635,42 @@ + explicit + dynamic_bitset(const char* __str, + const allocator_type& __alloc = allocator_type()) +- : _Base(__alloc) ++ : _Base(__builtin_strlen(__str), 0ULL, __alloc), ++ _M_Nb(__builtin_strlen(__str)) + { +- size_t __len = 0; +- if (__str) +- while (__str[__len] != '\0') +- ++__len; +- this->resize(__len); +- this->_M_copy_from_ptr> +- (__str, __len, 0, __len, '0', '1'); ++ this->_M_copy_from_ptr(__str, _M_Nb, 0, _M_Nb); + } + +- /** +- * @brief Copy constructor. +- */ +- dynamic_bitset(const dynamic_bitset& __b) +- : _Base(__b), _M_Nb(__b.size()) +- { } ++ /// Copy constructor. ++ dynamic_bitset(const dynamic_bitset&) = default; + +- /** +- * @brief Move constructor. +- */ +- dynamic_bitset(dynamic_bitset&& __b) +- : _Base(std::forward<_Base>(__b)), _M_Nb(__b.size()) +- { } ++ /// Move constructor. ++ dynamic_bitset(dynamic_bitset&& __b) noexcept ++ : _Base(std::move(__b)), _M_Nb(__b._M_Nb) ++ { __b.clear(); } + +- /** +- * @brief Swap with another bitset. +- */ ++ /// Swap with another bitset. + void +- swap(dynamic_bitset& __b) ++ swap(dynamic_bitset& __b) noexcept + { + this->_M_swap(__b); + std::swap(this->_M_Nb, __b._M_Nb); + } + +- /** +- * @brief Assignment. +- */ +- dynamic_bitset& +- operator=(const dynamic_bitset& __b) +- { +- if (&__b != this) +- { +- this->_M_assign(__b); +- this->_M_Nb = __b._M_Nb; +- } +- } ++ /// Copy assignment operator. ++ dynamic_bitset& operator=(const dynamic_bitset&) = default; + +- /** +- * @brief Move assignment. +- */ ++ /// Move assignment operator. + dynamic_bitset& + operator=(dynamic_bitset&& __b) ++ noexcept(std::is_nothrow_move_assignable<_Base>::value) + { +- this->swap(__b); ++ static_cast<_Base&>(*this) = static_cast<_Base&&>(__b); ++ _M_Nb = __b._M_Nb; ++ if _GLIBCXX17_CONSTEXPR (std::is_nothrow_move_assignable<_Base>::value) ++ __b._M_Nb = 0; ++ else if (get_allocator() == __b.get_allocator()) ++ __b._M_Nb = 0; + return *this; + } + +@@ -695,7 +678,7 @@ + * @brief Return the allocator for the bitset. + */ + allocator_type +- get_allocator() const ++ get_allocator() const noexcept + { return this->_M_get_allocator(); } + + /** +@@ -734,6 +717,8 @@ + ++this->_M_Nb; + } + ++ // XXX why is there no pop_back() member in the proposal? ++ + /** + * @brief Append a block. + */ +@@ -770,36 +755,36 @@ + * + * These should be self-explanatory. + */ +- dynamic_bitset<_WordT, _Alloc>& +- operator&=(const dynamic_bitset<_WordT, _Alloc>& __rhs) ++ dynamic_bitset& ++ operator&=(const dynamic_bitset& __rhs) + { + this->_M_do_and(__rhs); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- operator&=(dynamic_bitset<_WordT, _Alloc>&& __rhs) ++ dynamic_bitset& ++ operator&=(dynamic_bitset&& __rhs) + { + this->_M_do_and(std::move(__rhs)); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- operator|=(const dynamic_bitset<_WordT, _Alloc>& __rhs) ++ dynamic_bitset& ++ operator|=(const dynamic_bitset& __rhs) + { + this->_M_do_or(__rhs); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- operator^=(const dynamic_bitset<_WordT, _Alloc>& __rhs) ++ dynamic_bitset& ++ operator^=(const dynamic_bitset& __rhs) + { + this->_M_do_xor(__rhs); + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& +- operator-=(const dynamic_bitset<_WordT, _Alloc>& __rhs) ++ dynamic_bitset& ++ operator-=(const dynamic_bitset& __rhs) + { + this->_M_do_dif(__rhs); + return *this; +@@ -813,7 +798,7 @@ + * + * These should be self-explanatory. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + operator<<=(size_type __pos) + { + if (__builtin_expect(__pos < this->_M_Nb, 1)) +@@ -826,7 +811,7 @@ + return *this; + } + +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + operator>>=(size_type __pos) + { + if (__builtin_expect(__pos < this->_M_Nb, 1)) +@@ -844,7 +829,7 @@ + /** + * @brief Sets every bit to true. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + set() + { + this->_M_do_set(); +@@ -858,7 +843,7 @@ + * @param __val Either true or false, defaults to true. + * @throw std::out_of_range If @a __pos is bigger the size of the %set. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + set(size_type __pos, bool __val = true) + { + if (__pos >= _M_Nb) +@@ -869,7 +854,7 @@ + /** + * @brief Sets every bit to false. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + reset() + { + this->_M_do_reset(); +@@ -883,7 +868,7 @@ + * + * Same as writing @c set(__pos, false). + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + reset(size_type __pos) + { + if (__pos >= _M_Nb) +@@ -894,7 +879,7 @@ + /** + * @brief Toggles every bit to its opposite value. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + flip() + { + this->_M_do_flip(); +@@ -907,7 +892,7 @@ + * @param __pos The index of the bit. + * @throw std::out_of_range If @a __pos is bigger the size of the %set. + */ +- dynamic_bitset<_WordT, _Alloc>& ++ dynamic_bitset& + flip(size_type __pos) + { + if (__pos >= _M_Nb) +@@ -916,7 +901,7 @@ + } + + /// See the no-argument flip(). +- dynamic_bitset<_WordT, _Alloc> ++ dynamic_bitset + operator~() const + { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); } + +@@ -978,19 +963,23 @@ + } + + // Helper functions for string operations. +- template ++ template, ++ typename _CharT = typename _Traits::char_type> + void + _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t, +- _CharT, _CharT); ++ _CharT __zero = _CharT('0'), ++ _CharT __one = _CharT('1')); + + template + void +- _M_copy_from_string(const std::basic_string<_CharT, +- _Traits, _Alloc1>& __str, size_t __pos, size_t __n, ++ _M_copy_from_string(const basic_string<_CharT, _Traits, _Alloc1>& __str, ++ size_t __pos, size_t __n, + _CharT __zero = _CharT('0'), + _CharT __one = _CharT('1')) +- { _M_copy_from_ptr<_CharT, _Traits>(__str.data(), __str.size(), +- __pos, __n, __zero, __one); } ++ { ++ _M_copy_from_ptr<_Traits>(__str.data(), __str.size(), __pos, __n, ++ __zero, __one); ++ } + + template + void +@@ -1065,13 +1054,13 @@ + + //@{ + /// Self-explanatory. +- dynamic_bitset<_WordT, _Alloc> ++ dynamic_bitset + operator<<(size_type __pos) const +- { return dynamic_bitset<_WordT, _Alloc>(*this) <<= __pos; } ++ { return dynamic_bitset(*this) <<= __pos; } + +- dynamic_bitset<_WordT, _Alloc> ++ dynamic_bitset + operator>>(size_type __pos) const +- { return dynamic_bitset<_WordT, _Alloc>(*this) >>= __pos; } ++ { return dynamic_bitset(*this) >>= __pos; } + //@} + + /** +@@ -1102,14 +1091,14 @@ + { return this->_M_is_proper_subset_of(__b); } + + friend bool +- operator==(const dynamic_bitset<_WordT, _Alloc>& __lhs, +- const dynamic_bitset<_WordT, _Alloc>& __rhs) +- { return __lhs._M_is_equal(__rhs); } ++ operator==(const dynamic_bitset& __lhs, ++ const dynamic_bitset& __rhs) noexcept ++ { return __lhs._M_Nb == __rhs._M_Nb && __lhs._M_is_equal(__rhs); } + + friend bool +- operator<(const dynamic_bitset<_WordT, _Alloc>& __lhs, +- const dynamic_bitset<_WordT, _Alloc>& __rhs) +- { return __lhs._M_is_less(__rhs); } ++ operator<(const dynamic_bitset& __lhs, ++ const dynamic_bitset& __rhs) noexcept ++ { return __lhs._M_is_less(__rhs) || __lhs._M_Nb < __rhs._M_Nb; } + }; + + template +Index: libstdc++-v3/libsupc++/new_opa.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/new_opa.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/libsupc++/new_opa.cc (.../branches/gcc-9-branch) +@@ -114,9 +114,10 @@ + sz = 1; + + #if _GLIBCXX_HAVE_ALIGNED_ALLOC +-# ifdef _AIX ++# if defined _AIX || defined __APPLE__ + /* AIX 7.2.0.0 aligned_alloc incorrectly has posix_memalign's requirement +- * that alignment is a multiple of sizeof(void*). */ ++ * that alignment is a multiple of sizeof(void*). ++ * OS X 10.15 has the same requirement. */ + if (align < sizeof(void*)) + align = sizeof(void*); + # endif +Index: libstdc++-v3/libsupc++/eh_term_handler.h +=================================================================== +--- a/src/libstdc++-v3/libsupc++/eh_term_handler.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/libsupc++/eh_term_handler.h (.../branches/gcc-9-branch) +@@ -0,0 +1,39 @@ ++// -*- C++ -*- default std::terminate handler ++// Copyright (C) 2002-2019 Free Software Foundation, Inc. ++// ++// This file is part of GCC. ++// ++// GCC is free software; you can redistribute it and/or modify ++// it under the terms of the GNU General Public License as published by ++// the Free Software Foundation; either version 3, or (at your option) ++// any later version. ++// ++// GCC is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// Under Section 7 of GPL version 3, you are granted additional ++// permissions described in the GCC Runtime Library Exception, version ++// 3.1, as published by the Free Software Foundation. ++ ++// You should have received a copy of the GNU General Public License and ++// a copy of the GCC Runtime Library Exception along with this program; ++// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++// . ++ ++#include ++ ++/* We default to the talkative, informative handler in a normal hosted ++ library. This pulls in the demangler, the dyn-string utilities, and ++ elements of the I/O library. For a low-memory environment, you can return ++ to the earlier "silent death" handler by configuring GCC with ++ --disable-libstdcxx-verbose and rebuilding the library. ++ In a freestanding environment, we default to this latter approach. */ ++ ++#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE && __cpp_exceptions ++# define _GLIBCXX_DEFAULT_TERM_HANDLER __gnu_cxx::__verbose_terminate_handler ++#else ++# include ++# define _GLIBCXX_DEFAULT_TERM_HANDLER std::abort ++#endif +Index: libstdc++-v3/libsupc++/eh_terminate.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/eh_terminate.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/libsupc++/eh_terminate.cc (.../branches/gcc-9-branch) +@@ -26,6 +26,7 @@ + #include "exception" + #include + #include "unwind-cxx.h" ++#include "eh_term_handler.h" + #include + #include + +@@ -73,6 +74,9 @@ + std::terminate_handler + std::set_terminate (std::terminate_handler func) throw() + { ++ if (!func) ++ func = _GLIBCXX_DEFAULT_TERM_HANDLER; ++ + std::terminate_handler old; + #if ATOMIC_POINTER_LOCK_FREE > 1 + __atomic_exchange (&__terminate_handler, &func, &old, __ATOMIC_ACQ_REL); +@@ -100,6 +104,9 @@ + std::unexpected_handler + std::set_unexpected (std::unexpected_handler func) throw() + { ++ if (!func) ++ func = std::terminate; ++ + std::unexpected_handler old; + #if ATOMIC_POINTER_LOCK_FREE > 1 + __atomic_exchange (&__unexpected_handler, &func, &old, __ATOMIC_ACQ_REL); +Index: libstdc++-v3/libsupc++/eh_term_handler.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/eh_term_handler.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/libsupc++/eh_term_handler.cc (.../branches/gcc-9-branch) +@@ -24,21 +24,8 @@ + + #include + #include "unwind-cxx.h" ++#include "eh_term_handler.h" + +-/* We default to the talkative, informative handler in a normal hosted +- library. This pulls in the demangler, the dyn-string utilities, and +- elements of the I/O library. For a low-memory environment, you can return +- to the earlier "silent death" handler by configuring GCC with +- --disable-libstdcxx-verbose and rebuilding the library. +- In a freestanding environment, we default to this latter approach. */ +- +-#if _GLIBCXX_HOSTED && _GLIBCXX_VERBOSE && __cpp_exceptions + /* The current installed user handler. */ + std::terminate_handler __cxxabiv1::__terminate_handler = +- __gnu_cxx::__verbose_terminate_handler; +-#else +-# include +-/* The current installed user handler. */ +-std::terminate_handler __cxxabiv1::__terminate_handler = std::abort; +-#endif +- ++ _GLIBCXX_DEFAULT_TERM_HANDLER; +Index: libstdc++-v3/ChangeLog +=================================================================== +--- a/src/libstdc++-v3/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,332 @@ ++2019-10-28 John David Anglin ++ ++ * config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update. ++ ++2019-10-24 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-05-31 Jonathan Wakely ++ ++ PR libstdc++/90682 ++ * libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get ++ definition of _GLIBCXX_DEFAULT_TERM_HANDLER. ++ * libsupc++/eh_term_handler.h: New header defining ++ _GLIBCXX_DEFAULT_TERM_HANDLER. ++ * libsupc++/eh_terminate.cc: Include eh_term_handler.h. ++ (set_terminate): Restore default handler when argument is null. ++ (set_unexpected): Likewise. ++ * testsuite/18_support/set_terminate.cc: New test. ++ * testsuite/18_support/set_unexpected.cc: New test. ++ ++ Backport from mainline ++ 2019-05-01 Jonathan Wakely ++ ++ PR libstdc++/61761 ++ * include/std/complex (__complex_proj): Return parameter unchanged. ++ [_GLIBCXX_USE_C99_COMPLEX] (__complex_proj): Change overloads for ++ floating-point types to take std::complex arguments. ++ [_GLIBCXX_USE_C99_MATH_TR1] (__complex_proj): Add overloads for ++ floating-point types. ++ * testsuite/26_numerics/complex/proj.cc: New test. ++ ++ Backport from mainline ++ 2019-06-06 Jonathan Wakely ++ ++ * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Add ++ dg-prune-output for different C++98 diagnostic. ++ * testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc: ++ Likewise. ++ * testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc: ++ Likewise. ++ * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: ++ Likewise. ++ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: ++ Likewise. ++ * testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc: ++ Likewise. ++ * testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc: ++ Likewise. ++ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: ++ Likewise. ++ * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: ++ Likewise. ++ * testsuite/23_containers/vector/requirements/dr438/ ++ constructor_1_neg.cc: Likewise. ++ * testsuite/23_containers/vector/requirements/dr438/ ++ constructor_2_neg.cc: Likewise. ++ * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: ++ Likewise. ++ * testsuite/libstdc++-prettyprinters/compat.cc: Do not run for C++98. ++ ++ Backport from mainline ++ 2019-06-06 Jonathan Wakely ++ ++ * testsuite/20_util/is_nothrow_invocable/value.cc: Test converting to ++ void. ++ * testsuite/experimental/names.cc: Do not run for C++98 mode. Do not ++ include Library Fundamentals or Networking headers in C++11 mode. ++ * testsuite/ext/char8_t/atomic-1.cc: Do not run for C++98 mode. ++ ++ Backport from mainline ++ 2019-05-14 Jonathan Wakely ++ ++ * testsuite/util/testsuite_allocator.h (memory_resource) ++ (default_resource_mgr): Fix indentation. ++ ++ Backport from mainline ++ 2019-08-30 Jonathan Wakely ++ ++ PR libstdc++/89164 ++ * include/bits/stl_algobase.h (__copy_move): Give descriptive names ++ to template parameters. ++ * include/bits/stl_uninitialized.h (uninitialized_copy) ++ (uninitialized_fill, uninitialized_fill_n): Add static assertions to ++ diagnose invalid uses. ++ * testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc: ++ Adjust expected error. ++ * testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc: ++ New test. ++ * testsuite/20_util/specialized_algorithms/uninitialized_copy_n/ ++ 89164.cc: New test. ++ * testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc: ++ New test. ++ * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/ ++ 89164.cc: New test. ++ * testsuite/23_containers/vector/cons/89164.cc: New test. ++ * testsuite/23_containers/vector/cons/89164_c++17.cc: New test. ++ ++ Backport from mainline ++ 2019-10-22 Jonathan Wakely ++ ++ * include/bits/memoryfwd.h (uses_allocator): Do not declare for C++98. ++ * testsuite/17_intro/names.cc: Check uses_allocator in C++98. ++ ++ Backport from mainline ++ 2019-10-18 Jonathan Wakely ++ ++ PR libstdc++/92143 ++ * libsupc++/new_opa.cc (operator new) [__APPLE__]: Increase alignment ++ to at least sizeof(void*). ++ ++ Backport from mainline ++ 2019-06-06 Jonathan Wakely ++ ++ * testsuite/23_containers/unordered_map/requirements/debug_container.cc: ++ Do not test allocator rebinding extension for C++2a. ++ * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change ++ dg-do directive for C++17 and C++2a. ++ ++ Backport from mainline ++ 2019-05-23 Jonathan Wakely ++ ++ * testsuite/20_util/function_objects/invoke/1.cc: Add more tests. ++ Move C++17-specific tests to ... ++ * testsuite/20_util/function_objects/invoke/3.cc: New test. ++ * testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change ++ "compile" test to "run". ++ ++ Backport from mainline ++ 2019-10-08 Jonathan Wakely ++ ++ * doc/Makefile.am (doc-html-docbook-regenerate): New target. ++ (${docbook_outdir}/html): Do not create unused 'html/ext' directory. ++ * doc/Makefile.in: Regenerate. ++ * doc/xml/manual/documentation_hacking.xml: Document new target. ++ * doc/html/*: Regenerate. ++ ++ * doc/xml/manual/allocator.xml: Use archived copy of CUJ article. ++ ++ Backport from mainline ++ 2019-05-31 Gerald Pfeifer ++ ++ * doc/xml/manual/allocator.xml: Move hoard.org back to http. ++ ++ Backport from mainline ++ 2019-08-15 Jonathan Wakely ++ ++ PR libstdc++/91456 ++ * include/bits/std_function.h (__check_func_return_type): Remove. ++ (function::_Callable): Use std::__is_invocable_impl instead of ++ __check_func_return_type. ++ * include/std/type_traits (__is_invocable_impl): Add another defaulted ++ template parameter. Define a separate partial specialization for ++ INVOKE and INVOKE. For INVOKE replace is_convertible check ++ with a check that models delayed temporary materialization. ++ * testsuite/20_util/function/91456.cc: New test. ++ * testsuite/20_util/is_invocable/91456.cc: New test. ++ ++ Backport from mainline ++ 2019-09-30 Andreas Tobler ++ ++ * include/experimental/internet: Include netinet/in.h if we have ++ _GLIBCXX_HAVE_NETINET_IN_H defined. ++ ++ Backport from mainline ++ 2019-09-26 Jonathan Wakely ++ ++ * include/experimental/internet (operator==, operator<): Fix loop ++ condition to avoid reading past the end of the array. ++ ++ Backport from mainline ++ 2019-08-06 Jonathan Wakely ++ ++ P1651R0 bind_front should not unwrap reference_wrapper ++ * include/std/functional (bind_front): Don't unwrap reference_wrapper. ++ * include/std/version (__cpp_lib_bind_front): Update value. ++ * testsuite/20_util/function_objects/bind_front/1.cc: Fix test for ++ feature test macro. ++ * testsuite/20_util/function_objects/bind_front/2.cc: New test. ++ ++ Backport from mainline ++ 2019-10-11 Jonathan Wakely ++ ++ PR libstdc++/92059 ++ * include/tr2/dynamic_bitset (__dynamic_bitset_base): Define all ++ special member functions as defaulted. Add noexcept to most members. ++ (__dynamic_bitset_base(size_t, unsigned long long, const _Alloc&)): ++ Mask off unwanted bits in the __val parameter. Avoid undefined left ++ shifts. ++ (__dynamic_bitset_base::_M_assign): Remove. ++ (__dynamic_bitset_base::_M_do_reset): Use std::fill. ++ (__dynamic_bitset_base::_M_are_all_aux): Avoid integer promotion when ++ block_type has lower rank than int. ++ (dynamic_bitset): Add noexcept to most members. Use injected-class-name ++ in return types and parameter types. ++ (dynamic_bitset::_M_Nb): Add default member initializer. ++ (dynamic_bitset(), dynamic_bitset(const dynamic_bitset&)): Define as ++ defaulted. ++ (dynamic_bitset(dynamic_bitset&&)): Clear source object after move. ++ (dynamic_bitset::operator=(const dynamic_bitset&)): Define as ++ defaulted. ++ (dynamic_bitset::operator=(dynamic_bitset&&)): Add noexcept-specifier. ++ Define without using swap, to propagate allocator correctly. ++ (dynamic_bitset(const char*, const _Alloc&)): Use strlen. ++ (dynamic_bitset::_M_do_sanitize, dynamic_bitset::_M_do_fill): Use ++ casts to avoid unwanted integer promotions. ++ (dynamic_bitset::_M_copy_from_ptr): Rearrange template parameters and ++ add default template arguments and default argument to simplify usage. ++ (dynamic_bitset::_M_copy_from_string): Adjust call to _M_copy_from_ptr. ++ (operator==(const dynamic_bitset&, const dynamic_bitset&)) ++ (operator<(const dynamic_bitset&, const dynamic_bitset&)): Use _M_Nb. ++ * include/tr2/dynamic_bitset.tcc (dynamic_bitset::_M_copy_from_ptr): ++ Adjust template parameters to match declaration. ++ * testsuite/tr2/dynamic_bitset/cmp.cc: New test. ++ * testsuite/tr2/dynamic_bitset/cons.cc: New test. ++ * testsuite/tr2/dynamic_bitset/copy.cc: New test. ++ * testsuite/tr2/dynamic_bitset/move.cc: New test. ++ * testsuite/tr2/dynamic_bitset/pr92059.cc: New test. ++ ++2019-09-12 Jonathan Wakely ++ ++ PR libstdc++/91748 ++ * include/bits/stl_algo.h (for_each_n): Fix random access iterator ++ case. ++ * testsuite/25_algorithms/for_each/for_each_n.cc: Test with random ++ access iterators. ++ ++2019-09-11 Jonathan Wakely ++ ++ * python/libstdcxx/v6/xmethods.py (SharedPtrUseCountWorker.__call__): ++ Fix syntax error. ++ ++2019-09-09 Edward Smith-Rowland <3dw4rd@verizon.net> ++ ++ Update docs for p858 - Constexpr iterator changes available since 9.1. ++ * doc/xml/manual/status_cxx2020.xml: Update p0858r0 status. ++ ++2019-09-02 Jonathan Wakely ++ ++ * doc/xml/manual/abi.xml: Document 9.x library versions. ++ * doc/html/*: Regenerate. ++ ++2019-09-02 Rainer Orth ++ ++ * config/abi/post/i386-solaris2.10/baseline_symbols.txt: Regenerate. ++ * config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt: Likewise. ++ * config/abi/post/i386-solaris2.11/baseline_symbols.txt: Likewise. ++ * config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt: Likewise. ++ * config/abi/post/sparc-solaris2.10/baseline_symbols.txt: Likewise. ++ * config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt: ++ Likewise. ++ * config/abi/post/sparc-solaris2.11/baseline_symbols.txt: Likewise. ++ * config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt: ++ Likewise. ++ ++2019-08-29 Jonathan Wakely ++ ++ PR libstdc++/91067 ++ * acinclude.m4 (libtool_VERSION): Bump to 6:28:0. ++ * configure: Regenerate. ++ * config/abi/pre/gnu.ver (GLIBCXX_3.4.28): Add new version. Export ++ missing symbols. ++ * testsuite/27_io/filesystem/iterators/91067.cc: Test move ++ constructors. ++ * testsuite/util/testsuite_abi.cc: Add new symbol version. ++ ++2019-08-29 Jakub Jelinek ++ ++ * config/abi/post/i386-linux-gnu/baseline_symbols.txt: Update. ++ * config/abi/post/i486-linux-gnu/baseline_symbols.txt: Update. ++ * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. ++ * config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt: Update. ++ * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Update. ++ * config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt: Update. ++ * config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Update. ++ ++2019-08-23 Joseph Myers ++ ++ * src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS] ++ (std::filesystem::__gnu_posix::lstat): Add return type. ++ ++2019-08-20 Jonathan Wakely ++ ++ * include/std/numeric (reduce): Fix Doxygen markup. ++ ++ Backport from mainline ++ 2019-06-19 Jonathan Wakely ++ ++ * include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value ++ category used in invocable check. ++ (reduce(Iter, Iter, T)): Pass initial value as rvalue. ++ * testsuite/26_numerics/reduce/2.cc: New test. ++ ++ Backport from mainline ++ 2019-06-18 Jonathan Wakely ++ ++ * include/bits/algorithmfwd.h: Change title of doc group. ++ * include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from ++ P0024R2. ++ * include/bits/stl_numeric.h: Define doc group and add algos to it. ++ * include/std/numeric (__is_random_access_iter): New internal trait. ++ (reduce, transform_reduce, exclusive_scan, inclusive_scan) ++ (transform_exclusive_scan, transform_inclusive_scan): Likewise. ++ * testsuite/25_algorithms/for_each/for_each_n.cc: New test. ++ * testsuite/26_numerics/exclusive_scan/1.cc: New test. ++ * testsuite/26_numerics/inclusive_scan/1.cc: New test. ++ * testsuite/26_numerics/reduce/1.cc: New test. ++ * testsuite/26_numerics/transform_exclusive_scan/1.cc: New test. ++ * testsuite/26_numerics/transform_inclusive_scan/1.cc: New test. ++ * testsuite/26_numerics/transform_reduce/1.cc: New test. ++ * testsuite/util/testsuite_iterators.h (test_container::size()): New ++ member function. ++ ++2019-08-20 Uros Bizjak ++ ++ * config/abi/post/alpha-linux-gnu/baseline_symbols.txt: Update. ++ ++2019-08-13 Jonathan Wakely ++ ++ Backport from mainline ++ 2019-08-12 Jonathan Wakely ++ ++ PR libstdc++/90361 ++ * src/c++17/string-inst.cc: Use _GLIBCXX_USE_CXX11_ABI=1 by default. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,88 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++#include ++#include ++#include ++ ++void test01() ++{ ++ using __gnu_test::test_container; ++ using __gnu_test::input_iterator_wrapper; ++ int array[5] = { 1, 2, 3, 4, 5 }; ++ test_container con(array); ++ ++ int sum = 0; ++ struct Func ++ { ++ Func(int& i) : i(i) { } ++ Func(Func&&) = default; ++ Func& operator=(Func&&) = delete; ++ void operator()(int n) const { i += n; } ++ int& i; ++ }; ++ ++ struct Size ++ { ++ Size(short v) : val(v) { } ++ operator short() const { return val; } ++ short val; ++ }; ++ auto res = std::for_each_n(con.begin(), Size(con.size()), Func(sum)); ++ ++ VERIFY( res == con.end() ); ++ VERIFY( sum == 15 ); ++} ++ ++void ++test02() ++{ ++ using __gnu_test::test_container; ++ using __gnu_test::random_access_iterator_wrapper; ++ int array[5] = { 2, 4, 6, 8, 10 }; ++ test_container con(array); ++ ++ int prod = 1; ++ struct Func ++ { ++ Func(int& i) : i(i) { } ++ Func(Func&&) = default; ++ Func& operator=(Func&&) = delete; ++ void operator()(int n) const { i *= n; } ++ int& i; ++ }; ++ ++ struct Size ++ { ++ Size(short v) : val(v) { } ++ operator short() const { return val; } ++ short val; ++ }; ++ auto res = std::for_each_n(con.begin(), Size(con.size()), Func(prod)); ++ ++ VERIFY( res == con.end() ); ++ VERIFY( prod == 3840 ); ++} ++ ++int main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/18_support/set_terminate.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/set_terminate.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/set_terminate.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,57 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++// { dg-do run } ++ ++#include ++#include ++ ++void term_handler() { __builtin_abort(); } ++ ++void ++test01() ++{ ++ const std::terminate_handler orig = std::get_terminate(); ++ VERIFY( orig != 0 ); // GNU-specific behaviour ++ ++ std::terminate_handler prev = std::set_terminate(term_handler); ++ VERIFY( std::get_terminate() == term_handler ); ++ VERIFY( prev == orig ); ++ ++ prev = std::set_terminate(orig); ++ VERIFY( std::get_terminate() == orig ); ++ VERIFY( prev == term_handler ); ++} ++ ++void ++test02() ++{ ++ // PR libstdc++/90682 ++ std::set_terminate(0); // Undefined in C++98, unspecified in C++11 and later ++ const std::terminate_handler dfault = std::get_terminate(); ++ VERIFY( dfault != 0 ); // GNU-specific behaviour ++ const std::terminate_handler prev = std::set_terminate(0); ++ VERIFY( prev == dfault ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/18_support/set_unexpected.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/18_support/set_unexpected.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/18_support/set_unexpected.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,57 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++11" } ++// { dg-do run { target { c++11_only || c++14_only } } } ++ ++#include ++#include ++ ++void unex_handler() { __builtin_abort(); } ++ ++void ++test01() ++{ ++ const std::unexpected_handler orig = std::get_unexpected(); ++ VERIFY( orig == std::terminate ); // GNU-specific behaviour ++ ++ std::unexpected_handler prev = std::set_unexpected(unex_handler); ++ VERIFY( std::get_unexpected() == unex_handler ); ++ VERIFY( prev == orig ); ++ ++ prev = std::set_unexpected(orig); ++ VERIFY( std::get_unexpected() == orig ); ++ VERIFY( prev == unex_handler ); ++} ++ ++void ++test02() ++{ ++ // PR libstdc++/90682 ++ std::set_unexpected(0); // Undefined in C++98, unspecified in C++11 and C++14 ++ const std::unexpected_handler dfault = std::get_unexpected(); ++ VERIFY( dfault == std::terminate ); // GNU-specific behaviour ++ const std::unexpected_handler prev = std::set_unexpected(0); ++ VERIFY( prev == dfault ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc (.../branches/gcc-9-branch) +@@ -1,5 +1,5 @@ + // { dg-options "-g -O0" } +-// { dg-do run } ++// { dg-do run { target c++11 } } + // { dg-skip-if "" { *-*-* } { "-D_GLIBCXX_PROFILE" } } + + // Copyright (C) 2014-2019 Free Software Foundation, Inc. +Index: libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc (.../branches/gcc-9-branch) +@@ -1,6 +1,6 @@ + // Test that char8_t related atomic types and macros are not present when + // -fchar8_t is not enabled. +-// { dg-do compile } ++// { dg-do compile { target c++11 } } + // { dg-options "-fno-char8_t" } + + #include +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,50 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ std::tr2::dynamic_bitset<> b = a; ++ VERIFY( a == b ); ++ b.resize(99); ++ VERIFY( a != b ); ++} ++ ++void ++test02() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ std::tr2::dynamic_bitset<> b = a; ++ VERIFY( !(a < b) ); ++ VERIFY( !(b < a) ); ++ b.resize(99); ++ VERIFY( !(a < b) ); ++ VERIFY( b < a ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,105 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::tr2::dynamic_bitset<> a; ++ VERIFY( a.size() == 0 ); ++ VERIFY( a.empty() ); ++ std::tr2::dynamic_bitset<> b(1); ++ VERIFY( b.size() == 1 ); ++ VERIFY( !b.empty() ); ++ VERIFY( a != b ); ++} ++ ++void ++test02() ++{ ++ std::tr2::dynamic_bitset<> a(1, 0); // { 0 } ++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test03() ++{ ++ std::tr2::dynamic_bitset<> a; ++ a.resize(1); // { 0 } ++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test04() ++{ ++ std::tr2::dynamic_bitset<> a(3, 2); // { 0, 1, 0 } ++ std::tr2::dynamic_bitset<> b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test05() ++{ ++ std::tr2::dynamic_bitset a(1, 0); // { 0 } ++ std::tr2::dynamic_bitset b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test06() ++{ ++ std::tr2::dynamic_bitset a; ++ a.resize(1); // { 0 } ++ std::tr2::dynamic_bitset b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test07() ++{ ++ std::tr2::dynamic_bitset a(3, 2); // { 0, 1, 0 } ++ std::tr2::dynamic_bitset b(2, 2); // { 0, 1 } ++ VERIFY( a != b ); ++} ++ ++void ++test08() ++{ ++ std::tr2::dynamic_bitset<> a(65, -1ULL); ++ std::tr2::dynamic_bitset<> b(64, -1ULL); ++ b.push_back(0); ++ VERIFY( a == b ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++ test04(); ++ test05(); ++ test06(); ++ test07(); ++ test08(); ++} +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,53 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ const auto n = a.num_blocks(); ++ std::tr2::dynamic_bitset<> b = std::move(a); ++ VERIFY(b.num_blocks() == n); ++ VERIFY(b.size() == 100); ++ VERIFY(a.num_blocks() == 0); ++ VERIFY(a.size() == 0); ++} ++ ++void ++test02() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ const auto n = a.num_blocks(); ++ std::tr2::dynamic_bitset<> b; ++ b = std::move(a); ++ VERIFY(b.num_blocks() == n); ++ VERIFY(b.size() == 100); ++ VERIFY(a.num_blocks() == 0); ++ VERIFY(a.size() == 0); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,55 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ const auto n = a.num_blocks(); ++ std::tr2::dynamic_bitset<> b = a; ++ VERIFY(b.num_blocks() == n); ++ VERIFY(b.size() == 100); ++ VERIFY(a.num_blocks() == n); ++ VERIFY(a.size() == 100); ++ VERIFY(b == a); ++} ++ ++void ++test02() ++{ ++ std::tr2::dynamic_bitset<> a(100); ++ const auto n = a.num_blocks(); ++ std::tr2::dynamic_bitset<> b; ++ b = a; ++ VERIFY(b.num_blocks() == n); ++ VERIFY(b.size() == 100); ++ VERIFY(a.num_blocks() == n); ++ VERIFY(a.size() == 100); ++ VERIFY(b == a); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,36 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++ ++void ++test01() ++{ ++ // PR libstdc++/92059 ++ std::tr2::dynamic_bitset<> b1(10000), b2(10000); ++ b2 = b1; // crashed on missing return ++ VERIFY( b2 == b1); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc (.../branches/gcc-9-branch) +@@ -30,7 +30,7 @@ + template class __gnu_debug::unordered_map, equal_to, + allocator>>; +-#ifndef __STRICT_ANSI__ ++#if !defined __STRICT_ANSI__ && __cplusplus <= 201703L + template class __gnu_debug::unordered_map, equal_to, + allocator>; +Index: libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,40 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++// PR libstdc++/89164 ++ ++struct X ++{ ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void test01() ++{ ++ X x[1]; ++ // Should not be able to create vector using uninitialized_copy: ++ std::vector v1{x, x+1}; // { dg-error "here" } ++ ++ // Should not be able to create vector using uninitialized_fill_n: ++ std::vector v2{2u, X{}}; // { dg-error "here" } ++} ++// { dg-error "constructible from value" "" { target *-*-* } 0 } ++// { dg-error "constructible from input" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,50 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++ ++// PR libstdc++/89164 ++ ++struct X ++{ ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void test01() ++{ ++ X x[1]; ++ // Should not be able to create vector using uninitialized_copy: ++ std::vector v1{x, x+1}; // { dg-error "here" } ++ ++ // Should not be able to create vector using uninitialized_fill_n: ++ std::vector v2{2u, X{}}; // { dg-error "here" } ++} ++ ++void test02() ++{ ++#if __cplusplus >= 201703L ++ // Can create initializer_list with C++17 guaranteed copy elision, ++ // but shouldn't be able to copy from it with uninitialized_copy: ++ std::vector v3{X{}, X{}, X{}}; // { dg-error "here" } ++#endif ++} ++// { dg-error "constructible from value" "" { target *-*-* } 0 } ++// { dg-error "constructible from input" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_assign" } + + #include +Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_insert" } + + #include +Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc (.../branches/gcc-9-branch) +@@ -15,7 +15,8 @@ + // with this library; see the file COPYING3. If not see + // . + +-// { dg-do compile { target c++11 } } ++// { dg-do run { target { c++11_only || c++14_only } } } ++// { dg-do compile { target c++17 } } + + #include + #include +Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_assign" } + + #include +Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_insert" } + + #include +Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_assign" } + + #include +Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-9-branch) +@@ -18,6 +18,7 @@ + // . + + // { dg-do compile } ++// { dg-prune-output "cannot convert" } + // { dg-prune-output "no matching function .*_M_fill_initialize" } + + #include +Index: libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc (.../branches/gcc-9-branch) +@@ -37,9 +37,25 @@ + d = std::move(d); + } + ++void ++test03() ++{ ++ std::filesystem::directory_iterator d; ++ auto d2 = std::move(d); ++} ++ ++void ++test04() ++{ ++ std::filesystem::recursive_directory_iterator d; ++ auto d2 = std::move(d); ++} ++ + int + main() + { + test01(); + test02(); ++ test03(); ++ test04(); + } +Index: libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,94 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.10 [transform.inclusive.scan] ++ ++#include ++#include ++#include ++#include ++ ++int a[] = {1, 2, 3, 4, 5, 6, 7}; ++ ++using __gnu_test::test_container; ++using __gnu_test::input_iterator_wrapper; ++using __gnu_test::output_iterator_wrapper; ++ ++/* ++template ++ OutputIterator ++ transform_inclusive_scan(InputIterator, InputIterator, OutputIterator, ++ BinaryOperation, UnaryOperation); ++*/ ++void ++test01() ++{ ++ int out[7]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::transform_inclusive_scan(ca.begin(), ca.end(), co.begin(), ++ std::multiplies<>(), ++ [](int i) { return i+1; }); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+7 ); ++ VERIFY( out[0] == 2 ); ++ VERIFY( out[1] == (2*3) ); ++ VERIFY( out[2] == (2*3*4) ); ++ VERIFY( out[3] == (2*3*4*5) ); ++ VERIFY( out[4] == (2*3*4*5*6) ); ++ VERIFY( out[5] == (2*3*4*5*6*7) ); ++ VERIFY( out[6] == (2*3*4*5*6*7*8) ); ++} ++ ++/* ++template ++ OutputIterator ++ transform_inclusive_scan(InputIterator, InputIterator, OutputIterator, ++ BinaryOperation, UnaryOperation, T); ++*/ ++void ++test02() ++{ ++ int out[7]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::transform_inclusive_scan(ca.begin(), ca.end(), co.begin(), ++ std::multiplies<>(), ++ [](int i) { return i+1; }, ++ 3); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+7 ); ++ VERIFY( out[0] == 3*2 ); ++ VERIFY( out[1] == (3*2*3) ); ++ VERIFY( out[2] == (3*2*3*4) ); ++ VERIFY( out[3] == (3*2*3*4*5) ); ++ VERIFY( out[4] == (3*2*3*4*5*6) ); ++ VERIFY( out[5] == (3*2*3*4*5*6*7) ); ++ VERIFY( out[6] == (3*2*3*4*5*6*7*8) ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,109 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.5 [transform.reduce] ++ ++#include ++#include ++#include ++#include ++ ++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ++double b[] = {0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5}; ++ ++using __gnu_test::test_container; ++using __gnu_test::input_iterator_wrapper; ++ ++/* ++template ++ T transform_reduce(InputIterator1, InputIterator1, InputIterator2, T); ++*/ ++void ++test01() ++{ ++ auto res = std::transform_reduce(std::begin(a), std::end(a), std::begin(b), ++ 1.0f); ++ static_assert(std::is_same_v); ++ VERIFY( res == (float)(1 + 0.5 + 1 + 1.5 + 2 + 2.5 + 3 + 3.5 + 4 + 4.5 + 5) ); ++ ++ test_container ca(a); ++ test_container cb(b); ++ ++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), cb.begin(), ++ 1.0f); ++ static_assert(std::is_same_v); ++ VERIFY( res2 == res ); ++} ++ ++/* ++template ++ T transform_reduce(InputIterator1, InputIterator1, InputIterator2, T, ++ BinaryOperation1, BinaryOperation2); ++*/ ++void ++test02() ++{ ++ auto res = std::transform_reduce(std::begin(a), std::end(a), std::begin(b), ++ 1L, std::multiplies<>(), std::plus()); ++ static_assert(std::is_same_v); ++ VERIFY( res == (1L * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10) ); ++ ++ test_container ca(a); ++ test_container cb(b); ++ ++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), cb.begin(), ++ 1L, std::multiplies<>(), std::plus()); ++ static_assert(std::is_same_v); ++ VERIFY( res2 == res ); ++} ++ ++/* ++template ++ T transform_reduce(InputIterator, InputIterator, T, ++ BinaryOperation, UnaryOperation); ++*/ ++void ++test03() ++{ ++ auto res = std::transform_reduce(std::begin(a), std::end(a), 10.0, ++ std::plus<>(), ++ [](int i) { return i * i; }); ++ static_assert(std::is_same_v); ++ VERIFY( res == (10.0 + 1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100) ); ++ ++ test_container ca(a); ++ test_container cb(b); ++ ++ auto res2 = std::transform_reduce(ca.begin(), ca.end(), 10.0, ++ std::plus<>(), ++ [](int i) { return i * i; }); ++ static_assert(std::is_same_v); ++ VERIFY( res2 == (10.0 + 1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81 + 100) ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,123 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.8 [inclusive.scan] ++ ++#include ++#include ++#include ++#include ++ ++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ++ ++using __gnu_test::test_container; ++using __gnu_test::input_iterator_wrapper; ++using __gnu_test::output_iterator_wrapper; ++ ++/* ++template ++ OutputIterator ++ inclusive_scan(InputIterator, InputIterator, OutputIterator); ++*/ ++void ++test01() ++{ ++ int out[10]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin()); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+10 ); ++ VERIFY( out[0] == 1 ); ++ VERIFY( out[1] == (1+2) ); ++ VERIFY( out[2] == (1+2+3) ); ++ VERIFY( out[3] == (1+2+3+4) ); ++ VERIFY( out[4] == (1+2+3+4+5) ); ++ VERIFY( out[5] == (1+2+3+4+5+6) ); ++ VERIFY( out[6] == (1+2+3+4+5+6+7) ); ++ VERIFY( out[7] == (1+2+3+4+5+6+7+8) ); ++ VERIFY( out[8] == (1+2+3+4+5+6+7+8+9) ); ++ VERIFY( out[9] == (1+2+3+4+5+6+7+8+9+10) ); ++} ++ ++/* ++template ++ OutputIterator ++ inclusive_scan(InputIterator, InputIterator, OutputIterator, ++ BinaryOperation); ++*/ ++void ++test02() ++{ ++ int out[10]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin(), ++ [](int i, int j) { return 2*i + 2*j; }); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+10 ); ++ VERIFY( out[0] == 1 ); ++ VERIFY( out[1] == (2*1+2*2) ); ++ VERIFY( out[2] == (2*6+2*3) ); ++ VERIFY( out[3] == (2*18+2*4) ); ++ VERIFY( out[4] == (2*44+2*5) ); ++ VERIFY( out[5] == (2*98+2*6)); ++ VERIFY( out[6] == (2*208+2*7) ); ++ VERIFY( out[7] == (2*430+2*8) ); ++ VERIFY( out[8] == (2*876+2*9) ); ++ VERIFY( out[9] == (2*1770+2*10) ); ++} ++ ++/* ++template ++ OutputIterator ++ inclusive_scan(InputIterator, InputIterator, OutputIterator, ++ BinaryOperation, T); ++*/ ++void ++test03() ++{ ++ int out[10]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::inclusive_scan(ca.begin(), ca.end(), co.begin(), ++ [](int i, int j) { return 2*i + 2*j; }, ++ 1); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+10 ); ++ VERIFY( out[0] == 4 ); ++ VERIFY( out[1] == (2*4+2*2) ); ++ VERIFY( out[2] == (2*12+2*3) ); ++ VERIFY( out[3] == (2*30+2*4) ); ++ VERIFY( out[4] == (2*68+2*5) ); ++ VERIFY( out[5] == (2*146+2*6) ); ++ VERIFY( out[6] == (2*304+2*7)); ++ VERIFY( out[7] == (2*622+2*8) ); ++ VERIFY( out[8] == (2*1260+2*9) ); ++ VERIFY( out[9] == (2*2538+2*10) ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,65 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.9 [transform.exclusive.scan] ++ ++#include ++#include ++#include ++#include ++ ++int a[] = {1, 2, 3, 4, 5, 6, 7}; ++ ++using __gnu_test::test_container; ++using __gnu_test::input_iterator_wrapper; ++using __gnu_test::output_iterator_wrapper; ++ ++/* ++template ++ OutputIterator ++ transform_exclusive_scan(InputIterator, InputIterator, OutputIterator, T, ++ BinaryOperation, UnaryOperation); ++*/ ++void ++test01() ++{ ++ int out[7]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::transform_exclusive_scan(ca.begin(), ca.end(), co.begin(), 5, ++ std::multiplies<>(), ++ std::negate<>()); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+7 ); ++ VERIFY( out[0] == 5 ); ++ VERIFY( out[1] == -5 ); ++ VERIFY( out[2] == 10 ); ++ VERIFY( out[3] == -30 ); ++ VERIFY( out[4] == 120 ); ++ VERIFY( out[5] == -600 ); ++ VERIFY( out[6] == 3600 ); ++} ++ ++int ++main() ++{ ++ test01(); ++} +Index: libstdc++-v3/testsuite/26_numerics/complex/proj.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/complex/proj.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/complex/proj.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,403 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do run { target c++11 } } ++ ++#include ++#include ++#include ++ ++namespace test ++{ ++#ifdef _GLIBCXX_USE_C99_MATH_TR1 ++ using std::copysign; ++#else ++ bool copysign(float x, float y) ++ { return __builtin_copysignf(x, y); } ++ ++ bool copysign(double x, double y) ++ { return __builtin_copysign(x, y); } ++ ++ bool copysign(long double x, long double y) ++ { return __builtin_copysignl(x, y); } ++#endif ++} ++ ++template ++bool eq(const std::complex& x, const std::complex& y) ++{ ++ bool nan_reals = std::isnan(x.real()) && std::isnan(y.real()); ++ bool nan_imags = std::isnan(x.imag()) && std::isnan(y.imag()); ++ ++ bool sign_reals ++ = test::copysign(T(1), x.real()) == test::copysign(T(1), y.real()); ++ bool sign_imags ++ = test::copysign(T(1), x.imag()) == test::copysign(T(1), y.imag()); ++ ++ return ((x.real() == y.real() && sign_reals) || nan_reals) ++ && ((x.imag() == y.imag() && sign_imags) || nan_imags); ++} ++ ++void ++test01() ++{ ++ const double qnan = std::numeric_limits::quiet_NaN(); ++ const double pinf = std::numeric_limits::infinity(); ++ const double ninf = -pinf; ++ ++ std::complex c00(0, 0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ ++ const std::complex c01(0, 1); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ ++ const std::complex c10(1, 0); ++ VERIFY( eq( std::proj(c10) , c10 ) ); ++ VERIFY( eq( std::proj(-c10) , -c10 ) ); ++ ++ const std::complex c12(1, 2); ++ VERIFY( eq( std::proj(c12) , c12 ) ); ++ VERIFY( eq( std::proj(-c12) , -c12 ) ); ++ ++ const std::complex c0q(0, qnan); ++ VERIFY( eq( std::proj(c0q) , c0q ) ); ++ VERIFY( eq( std::proj(-c0q) , -c0q ) ); ++ ++ const std::complex c1q(1, qnan); ++ VERIFY( eq( std::proj(c1q) , c1q ) ); ++ VERIFY( eq( std::proj(-c1q) , -c1q ) ); ++ ++ const std::complex cq0(qnan, 0); ++ VERIFY( eq( std::proj(cq0) , cq0 ) ); ++ VERIFY( eq( std::proj(-cq0) , -cq0 ) ); ++ ++ const std::complex cq1(qnan, 1); ++ VERIFY( eq( std::proj(cq1) , cq1 ) ); ++ VERIFY( eq( std::proj(-cq1) , -cq1 ) ); ++ ++ const std::complex cqq(qnan, qnan); ++ VERIFY( eq( std::proj(cqq) , cqq ) ); ++ VERIFY( eq( std::proj(-cqq) , -cqq ) ); ++ ++ const std::complex c0p(0, pinf); ++ VERIFY( eq( std::proj(c0p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c0p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c1p(1, pinf); ++ VERIFY( eq( std::proj(c1p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c1p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cqp(qnan, pinf); ++ VERIFY( eq( std::proj(cqp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cqp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpp(pinf, pinf); ++ VERIFY( eq( std::proj(cpp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c0n(0, ninf); ++ VERIFY( eq( std::proj(c0n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c0n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex c1n(1, ninf); ++ VERIFY( eq( std::proj(c1n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c1n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cqn(qnan, ninf); ++ VERIFY( eq( std::proj(cqn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cqn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cpn(pinf, ninf); ++ VERIFY( eq( std::proj(cpn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cpn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cnn(ninf, ninf); ++ VERIFY( eq( std::proj(cnn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cnn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cp0(pinf, 0); ++ VERIFY( eq( std::proj(cp0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cp1(pinf, 1); ++ VERIFY( eq( std::proj(cp1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpq(pinf, qnan); ++ VERIFY( eq( std::proj(cpq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn0(ninf, 0); ++ VERIFY( eq( std::proj(cn0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn1(ninf, 1); ++ VERIFY( eq( std::proj(cn1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnq(ninf, qnan); ++ VERIFY( eq( std::proj(cnq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnp(ninf, pinf); ++ VERIFY( eq( std::proj(cnp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnp) , std::complex(pinf, -0.0) ) ); ++} ++ ++void ++test02() ++{ ++ const float qnan = std::numeric_limits::quiet_NaN(); ++ const float pinf = std::numeric_limits::infinity(); ++ const float ninf = -pinf; ++ ++ std::complex c00(0, 0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ ++ const std::complex c01(0, 1); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ ++ const std::complex c10(1, 0); ++ VERIFY( eq( std::proj(c10) , c10 ) ); ++ VERIFY( eq( std::proj(-c10) , -c10 ) ); ++ ++ const std::complex c12(1, 2); ++ VERIFY( eq( std::proj(c12) , c12 ) ); ++ VERIFY( eq( std::proj(-c12) , -c12 ) ); ++ ++ const std::complex c0q(0, qnan); ++ VERIFY( eq( std::proj(c0q) , c0q ) ); ++ VERIFY( eq( std::proj(-c0q) , -c0q ) ); ++ ++ const std::complex c1q(1, qnan); ++ VERIFY( eq( std::proj(c1q) , c1q ) ); ++ VERIFY( eq( std::proj(-c1q) , -c1q ) ); ++ ++ const std::complex cq0(qnan, 0); ++ VERIFY( eq( std::proj(cq0) , cq0 ) ); ++ VERIFY( eq( std::proj(-cq0) , -cq0 ) ); ++ ++ const std::complex cq1(qnan, 1); ++ VERIFY( eq( std::proj(cq1) , cq1 ) ); ++ VERIFY( eq( std::proj(-cq1) , -cq1 ) ); ++ ++ const std::complex cqq(qnan, qnan); ++ VERIFY( eq( std::proj(cqq) , cqq ) ); ++ VERIFY( eq( std::proj(-cqq) , -cqq ) ); ++ ++ const std::complex c0p(0, pinf); ++ VERIFY( eq( std::proj(c0p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c0p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c1p(1, pinf); ++ VERIFY( eq( std::proj(c1p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c1p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cqp(qnan, pinf); ++ VERIFY( eq( std::proj(cqp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cqp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpp(pinf, pinf); ++ VERIFY( eq( std::proj(cpp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c0n(0, ninf); ++ VERIFY( eq( std::proj(c0n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c0n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex c1n(1, ninf); ++ VERIFY( eq( std::proj(c1n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c1n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cqn(qnan, ninf); ++ VERIFY( eq( std::proj(cqn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cqn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cpn(pinf, ninf); ++ VERIFY( eq( std::proj(cpn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cpn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cnn(ninf, ninf); ++ VERIFY( eq( std::proj(cnn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cnn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cp0(pinf, 0); ++ VERIFY( eq( std::proj(cp0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cp1(pinf, 1); ++ VERIFY( eq( std::proj(cp1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpq(pinf, qnan); ++ VERIFY( eq( std::proj(cpq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn0(ninf, 0); ++ VERIFY( eq( std::proj(cn0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn1(ninf, 1); ++ VERIFY( eq( std::proj(cn1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnq(ninf, qnan); ++ VERIFY( eq( std::proj(cnq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnp(ninf, pinf); ++ VERIFY( eq( std::proj(cnp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnp) , std::complex(pinf, -0.0) ) ); ++} ++ ++void ++test03() ++{ ++ const long double qnan = std::numeric_limits::quiet_NaN(); ++ const long double pinf = std::numeric_limits::infinity(); ++ const long double ninf = -pinf; ++ ++ std::complex c00(0, 0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c00) , c00 ) ); ++ VERIFY( eq( std::proj(-c00) , -c00 ) ); ++ ++ const std::complex c01(0, 1); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ c00.real(-0.0); ++ VERIFY( eq( std::proj(c01) , c01 ) ); ++ VERIFY( eq( std::proj(-c01) , -c01 ) ); ++ ++ const std::complex c10(1, 0); ++ VERIFY( eq( std::proj(c10) , c10 ) ); ++ VERIFY( eq( std::proj(-c10) , -c10 ) ); ++ ++ const std::complex c12(1, 2); ++ VERIFY( eq( std::proj(c12) , c12 ) ); ++ VERIFY( eq( std::proj(-c12) , -c12 ) ); ++ ++ const std::complex c0q(0, qnan); ++ VERIFY( eq( std::proj(c0q) , c0q ) ); ++ VERIFY( eq( std::proj(-c0q) , -c0q ) ); ++ ++ const std::complex c1q(1, qnan); ++ VERIFY( eq( std::proj(c1q) , c1q ) ); ++ VERIFY( eq( std::proj(-c1q) , -c1q ) ); ++ ++ const std::complex cq0(qnan, 0); ++ VERIFY( eq( std::proj(cq0) , cq0 ) ); ++ VERIFY( eq( std::proj(-cq0) , -cq0 ) ); ++ ++ const std::complex cq1(qnan, 1); ++ VERIFY( eq( std::proj(cq1) , cq1 ) ); ++ VERIFY( eq( std::proj(-cq1) , -cq1 ) ); ++ ++ const std::complex cqq(qnan, qnan); ++ VERIFY( eq( std::proj(cqq) , cqq ) ); ++ VERIFY( eq( std::proj(-cqq) , -cqq ) ); ++ ++ const std::complex c0p(0, pinf); ++ VERIFY( eq( std::proj(c0p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c0p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c1p(1, pinf); ++ VERIFY( eq( std::proj(c1p) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-c1p) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cqp(qnan, pinf); ++ VERIFY( eq( std::proj(cqp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cqp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpp(pinf, pinf); ++ VERIFY( eq( std::proj(cpp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpp) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex c0n(0, ninf); ++ VERIFY( eq( std::proj(c0n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c0n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex c1n(1, ninf); ++ VERIFY( eq( std::proj(c1n) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-c1n) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cqn(qnan, ninf); ++ VERIFY( eq( std::proj(cqn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cqn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cpn(pinf, ninf); ++ VERIFY( eq( std::proj(cpn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cpn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cnn(ninf, ninf); ++ VERIFY( eq( std::proj(cnn) , std::complex(pinf, -0.0) ) ); ++ VERIFY( eq( std::proj(-cnn) , std::complex(pinf, +0.0) ) ); ++ ++ const std::complex cp0(pinf, 0); ++ VERIFY( eq( std::proj(cp0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cp1(pinf, 1); ++ VERIFY( eq( std::proj(cp1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cp1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cpq(pinf, qnan); ++ VERIFY( eq( std::proj(cpq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cpq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn0(ninf, 0); ++ VERIFY( eq( std::proj(cn0) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn0) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cn1(ninf, 1); ++ VERIFY( eq( std::proj(cn1) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cn1) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnq(ninf, qnan); ++ VERIFY( eq( std::proj(cnq) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnq) , std::complex(pinf, -0.0) ) ); ++ ++ const std::complex cnp(ninf, pinf); ++ VERIFY( eq( std::proj(cnp) , std::complex(pinf, +0.0) ) ); ++ VERIFY( eq( std::proj(-cnp) , std::complex(pinf, -0.0) ) ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/26_numerics/reduce/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/reduce/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/reduce/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,82 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.3 [reduce] ++ ++#include ++#include ++#include ++#include ++ ++/* ++template ++ iterator_traits::value_type ++ reduce(InputIterator, InputIterator); ++*/ ++void ++test01() ++{ ++ using __gnu_test::test_container; ++ using __gnu_test::input_iterator_wrapper; ++ int array[5] = { 1, 2, 3, 4, 5 }; ++ test_container con(array); ++ int res = std::reduce(con.begin(), con.end()); ++ VERIFY( res == 15 ); ++} ++ ++/* ++template ++ T reduce(InputIterator, InputIterator, T); ++*/ ++void ++test02() ++{ ++ bool b[] = {true, false, true, true, false, true, false, true, true, false}; ++ int res = std::reduce(std::begin(b), std::end(b), 100); ++ VERIFY( res == 106 ); ++} ++ ++/* ++template ++ T reduce(InputIterator, InputIterator, T); ++template ++ T reduce(InputIterator, InputIterator, T, BinaryOperation); ++*/ ++void ++test03() ++{ ++ int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ++ ++ auto res = std::reduce(std::begin(a), std::end(a), (short)11); ++ static_assert(std::is_same_v); ++ VERIFY( res == 66 ); ++ ++ auto res2 = std::reduce(std::begin(a), std::end(a), -1l, std::multiplies<>()); ++ static_assert(std::is_same_v); ++ VERIFY( res2 == -3628800 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/26_numerics/reduce/2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/reduce/2.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/reduce/2.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,70 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.3 [reduce] ++ ++#include ++#include ++#include ++#include ++ ++struct T ++{ ++ T(int); ++ T(T&&); // MoveConstructible ++ T& operator=(T&&); // not required by the standard, but it needs to be ++ T operator+(const T&) const; ++}; ++ ++void ++test01() ++{ ++ T t[1]{1}; ++ std::reduce(t, t+1, T(0)); ++ ++ using __gnu_test::test_container; ++ using __gnu_test::input_iterator_wrapper; ++ test_container con(t); ++ std::reduce(con.begin(), con.end(), T(0)); ++} ++ ++struct Op ++{ ++ T operator()(T&, T&) const&; ++ ++ // The standard does *not* require invoking as an rvalue to be supported. ++ T operator()(T&, T&) && = delete; ++ ++ // The standard does *not* require rvalue arguments to be supported ++ // (this is almost certainly a defect and should be allowed). ++ T operator()(T&&, T&&) const = delete; ++}; ++ ++void ++test02() ++{ ++ T t[1]{1}; ++ std::reduce(t, t+1, T(0), Op()); ++ ++ using __gnu_test::test_container; ++ using __gnu_test::input_iterator_wrapper; ++ test_container con(t); ++ std::reduce(con.begin(), con.end(), T(0), Op()); ++} +Index: libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,94 @@ ++// { dg-options "-std=gnu++17" } ++// { dg-do run { target c++17 } } ++ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// C++17 29.8.7 [exclusive.scan] ++ ++#include ++#include ++#include ++#include ++ ++int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; ++ ++using __gnu_test::test_container; ++using __gnu_test::input_iterator_wrapper; ++using __gnu_test::output_iterator_wrapper; ++ ++/* ++template ++ OutputIterator ++ exclusive_scan(InputIterator, InputIterator, OutputIterator, T); ++*/ ++void ++test01() ++{ ++ int out[10]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::exclusive_scan(ca.begin(), ca.end(), co.begin(), 5); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+10 ); ++ VERIFY( out[0] == 5 ); ++ VERIFY( out[1] == 6 ); ++ VERIFY( out[2] == 8 ); ++ VERIFY( out[3] == 11 ); ++ VERIFY( out[4] == 15 ); ++ VERIFY( out[5] == 20 ); ++ VERIFY( out[6] == 26 ); ++ VERIFY( out[7] == 33 ); ++ VERIFY( out[8] == 41 ); ++ VERIFY( out[9] == 50 ); ++} ++ ++/* ++template ++ OutputIterator ++ exclusive_scan(InputIterator, InputIterator, OutputIterator, T, ++ BinaryOperation); ++*/ ++void ++test02() ++{ ++ int out[10]; ++ test_container co(out); ++ test_container ca(a); ++ auto end = std::exclusive_scan(ca.begin(), ca.end(), co.begin(), 2, ++ [](int i, int j) { return 2*i + 2*j; }); ++ static_assert(std::is_same_v); ++ VERIFY( end.ptr == out+10 ); ++ VERIFY( out[0] == 2 ); ++ VERIFY( out[1] == 6 ); ++ VERIFY( out[2] == 16 ); ++ VERIFY( out[3] == 38 ); ++ VERIFY( out[4] == 84 ); ++ VERIFY( out[5] == 178 ); ++ VERIFY( out[6] == 368 ); ++ VERIFY( out[7] == 750 ); ++ VERIFY( out[8] == 1516 ); ++ VERIFY( out[9] == 3050 ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++} +Index: libstdc++-v3/testsuite/experimental/names.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/experimental/names.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/experimental/names.cc (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + // with this library; see the file COPYING3. If not see + // . + +-// { dg-do compile } ++// { dg-do compile { target c++11 } } + + // Define macros for some common variables names that we must not use for + // naming variables, parameters etc. in the library. +@@ -25,6 +25,9 @@ + #if __has_include() + # include + #endif ++ ++#if __cplusplus >= 201402L ++ + // Library Fundamentals + #include + #include +@@ -66,3 +69,5 @@ + # include + # include + #endif ++ ++#endif // C++14 +Index: libstdc++-v3/testsuite/17_intro/names.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/17_intro/names.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/17_intro/names.cc (.../branches/gcc-9-branch) +@@ -100,6 +100,10 @@ + + #define tmp ( + ++#if __cplusplus < 201103L ++#define uses_allocator ( ++#endif ++ + #if __cplusplus < 201703L + // defines to_chars_result::ptr and to_chars_result::ec + #define ec ( +Index: libstdc++-v3/testsuite/util/testsuite_abi.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/testsuite_abi.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/util/testsuite_abi.cc (.../branches/gcc-9-branch) +@@ -208,6 +208,7 @@ + known_versions.push_back("GLIBCXX_3.4.25"); + known_versions.push_back("GLIBCXX_3.4.26"); + known_versions.push_back("GLIBCXX_3.4.27"); ++ known_versions.push_back("GLIBCXX_3.4.28"); + known_versions.push_back("CXXABI_1.3"); + known_versions.push_back("CXXABI_LDBL_1.3"); + known_versions.push_back("CXXABI_1.3.1"); +@@ -239,7 +240,7 @@ + test.version_status = symbol::incompatible; + + // Check that added symbols are added in the latest pre-release version. +- bool latestp = (test.version_name == "GLIBCXX_3.4.27" ++ bool latestp = (test.version_name == "GLIBCXX_3.4.28" + || test.version_name == "CXXABI_1.3.12" + || test.version_name == "CXXABI_FLOAT128" + || test.version_name == "CXXABI_TM_1"); +Index: libstdc++-v3/testsuite/util/testsuite_iterators.h +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/testsuite_iterators.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/util/testsuite_iterators.h (.../branches/gcc-9-branch) +@@ -589,6 +589,10 @@ + ItType + end() + { return it(bounds.last); } ++ ++ std::size_t ++ size() const ++ { return bounds.last - bounds.first; } + }; + } + #endif +Index: libstdc++-v3/testsuite/util/testsuite_allocator.h +=================================================================== +--- a/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/util/testsuite_allocator.h (.../branches/gcc-9-branch) +@@ -699,162 +699,162 @@ + + #if __cplusplus >= 201703L + #if __cpp_aligned_new && __cpp_rtti +- // A concrete memory_resource, with error checking. +- class memory_resource : public std::pmr::memory_resource +- { +- public: +- memory_resource() +- : lists(new allocation_lists) +- { } ++ // A concrete memory_resource, with error checking. ++ class memory_resource : public std::pmr::memory_resource ++ { ++ public: ++ memory_resource() ++ : lists(new allocation_lists) ++ { } + +- memory_resource(const memory_resource& r) noexcept +- : lists(r.lists) +- { lists->refcount++; } ++ memory_resource(const memory_resource& r) noexcept ++ : lists(r.lists) ++ { lists->refcount++; } + +- memory_resource& operator=(const memory_resource&) = delete; ++ memory_resource& operator=(const memory_resource&) = delete; + +- ~memory_resource() +- { +- if (lists->refcount-- == 1) +- delete lists; // last one out turns out the lights +- } ++ ~memory_resource() ++ { ++ if (lists->refcount-- == 1) ++ delete lists; // last one out turns out the lights ++ } + +- struct bad_size { }; +- struct bad_alignment { }; +- struct bad_address { }; ++ struct bad_size { }; ++ struct bad_alignment { }; ++ struct bad_address { }; + +- // Deallocate everything (moving the tracking info to the freed list) +- void +- deallocate_everything() +- { +- while (lists->active) +- { +- auto a = lists->active; +- // Intentionally virtual dispatch, to inform derived classes: +- this->do_deallocate(a->p, a->bytes, a->alignment); +- } +- } ++ // Deallocate everything (moving the tracking info to the freed list) ++ void ++ deallocate_everything() ++ { ++ while (lists->active) ++ { ++ auto a = lists->active; ++ // Intentionally virtual dispatch, to inform derived classes: ++ this->do_deallocate(a->p, a->bytes, a->alignment); ++ } ++ } + +- // Clear the freed list +- void +- forget_freed_allocations() +- { lists->forget_allocations(lists->freed); } ++ // Clear the freed list ++ void ++ forget_freed_allocations() ++ { lists->forget_allocations(lists->freed); } + +- // Count how many allocations have been done and not freed. +- std::size_t +- number_of_active_allocations() const noexcept +- { +- std::size_t n = 0; +- for (auto a = lists->active; a != nullptr; a = a->next) +- ++n; +- return n; +- } ++ // Count how many allocations have been done and not freed. ++ std::size_t ++ number_of_active_allocations() const noexcept ++ { ++ std::size_t n = 0; ++ for (auto a = lists->active; a != nullptr; a = a->next) ++ ++n; ++ return n; ++ } + +- protected: +- void* +- do_allocate(std::size_t bytes, std::size_t alignment) override +- { +- // TODO perform a single allocation and put the allocation struct +- // in the buffer using placement new? It means deallocation won't +- // actually return memory to the OS, as it will stay in lists->freed. +- // +- // TODO adjust the returned pointer to be minimally aligned? +- // e.g. if alignment==1 don't return something aligned to 2 bytes. +- // Maybe not worth it, at least monotonic_buffer_resource will +- // never ask upstream for anything with small alignment. +- void* p = ::operator new(bytes, std::align_val_t(alignment)); +- lists->active = new allocation{p, bytes, alignment, lists->active}; +- return p; +- } ++ protected: ++ void* ++ do_allocate(std::size_t bytes, std::size_t alignment) override ++ { ++ // TODO perform a single allocation and put the allocation struct ++ // in the buffer using placement new? It means deallocation won't ++ // actually return memory to the OS, as it will stay in lists->freed. ++ // ++ // TODO adjust the returned pointer to be minimally aligned? ++ // e.g. if alignment==1 don't return something aligned to 2 bytes. ++ // Maybe not worth it, at least monotonic_buffer_resource will ++ // never ask upstream for anything with small alignment. ++ void* p = ::operator new(bytes, std::align_val_t(alignment)); ++ lists->active = new allocation{p, bytes, alignment, lists->active}; ++ return p; ++ } + +- void +- do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override +- { +- allocation** aptr = &lists->active; +- while (*aptr) +- { +- allocation* a = *aptr; +- if (p == a->p) +- { +- if (bytes != a->bytes) +- throw bad_size(); +- if (alignment != a->alignment) +- throw bad_alignment(); ++ void ++ do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override ++ { ++ allocation** aptr = &lists->active; ++ while (*aptr) ++ { ++ allocation* a = *aptr; ++ if (p == a->p) ++ { ++ if (bytes != a->bytes) ++ throw bad_size(); ++ if (alignment != a->alignment) ++ throw bad_alignment(); + #if __cpp_sized_deallocation +- ::operator delete(p, bytes, std::align_val_t(alignment)); ++ ::operator delete(p, bytes, std::align_val_t(alignment)); + #else +- ::operator delete(p, std::align_val_t(alignment)); ++ ::operator delete(p, std::align_val_t(alignment)); + #endif +- *aptr = a->next; +- a->next = lists->freed; +- lists->freed = a; +- return; +- } +- aptr = &a->next; +- } +- throw bad_address(); +- } +- +- bool +- do_is_equal(const std::pmr::memory_resource& r) const noexcept override +- { +- // Equality is determined by sharing the same allocation_lists object. +- if (auto p = dynamic_cast(&r)) +- return p->lists == lists; +- return false; +- } +- +- private: +- struct allocation +- { +- void* p; +- std::size_t bytes; +- std::size_t alignment; +- allocation* next; +- }; +- +- // Maintain list of allocated blocks and list of freed blocks. +- // Copies of this memory_resource share the same ref-counted lists. +- struct allocation_lists +- { +- unsigned refcount = 1; +- allocation* active = nullptr; +- allocation* freed = nullptr; +- +- void forget_allocations(allocation*& list) +- { +- while (list) +- { +- auto p = list; +- list = list->next; +- delete p; ++ *aptr = a->next; ++ a->next = lists->freed; ++ lists->freed = a; ++ return; + } ++ aptr = &a->next; + } ++ throw bad_address(); ++ } + +- ~allocation_lists() +- { +- forget_allocations(active); // Anything in this list is a leak! +- forget_allocations(freed); +- } +- }; ++ bool ++ do_is_equal(const std::pmr::memory_resource& r) const noexcept override ++ { ++ // Equality is determined by sharing the same allocation_lists object. ++ if (auto p = dynamic_cast(&r)) ++ return p->lists == lists; ++ return false; ++ } + +- allocation_lists* lists; ++ private: ++ struct allocation ++ { ++ void* p; ++ std::size_t bytes; ++ std::size_t alignment; ++ allocation* next; + }; +-#endif // aligned-new && rtti + +- // Set the default resource, and restore the previous one on destruction. +- struct default_resource_mgr ++ // Maintain list of allocated blocks and list of freed blocks. ++ // Copies of this memory_resource share the same ref-counted lists. ++ struct allocation_lists + { +- explicit default_resource_mgr(std::pmr::memory_resource* r) +- : prev(std::pmr::set_default_resource(r)) +- { } ++ unsigned refcount = 1; ++ allocation* active = nullptr; ++ allocation* freed = nullptr; + +- ~default_resource_mgr() +- { std::pmr::set_default_resource(prev); } ++ void forget_allocations(allocation*& list) ++ { ++ while (list) ++ { ++ auto p = list; ++ list = list->next; ++ delete p; ++ } ++ } + +- std::pmr::memory_resource* prev; ++ ~allocation_lists() ++ { ++ forget_allocations(active); // Anything in this list is a leak! ++ forget_allocations(freed); ++ } + }; + ++ allocation_lists* lists; ++ }; ++#endif // aligned-new && rtti ++ ++ // Set the default resource, and restore the previous one on destruction. ++ struct default_resource_mgr ++ { ++ explicit default_resource_mgr(std::pmr::memory_resource* r) ++ : prev(std::pmr::set_default_resource(r)) ++ { } ++ ++ ~default_resource_mgr() ++ { std::pmr::set_default_resource(prev); } ++ ++ std::pmr::memory_resource* prev; ++ }; ++ + #endif // C++17 + + } // namespace __gnu_test +Index: libstdc++-v3/testsuite/20_util/function/91456.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function/91456.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function/91456.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,37 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++ ++struct Immovable { ++ Immovable() = default; ++ Immovable(const Immovable&) = delete; ++ Immovable& operator=(const Immovable&) = delete; ++}; ++ ++Immovable get() { return {}; } ++const Immovable i = get(); // OK ++std::function f{&get}; // fails ++const Immovable i2 = f(); ++ ++const Immovable cget() { return {}; } ++Immovable ci = cget(); // OK ++std::function cf{&cget}; // fails ++Immovable ci2 = cf(); +Index: libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc (.../branches/gcc-9-branch) +@@ -23,7 +23,7 @@ + + #ifndef __cpp_lib_bind_front + # error "Feature test macro for bind_front is missing" +-#elif __cpp_lib_bind_front < 201811L ++#elif __cpp_lib_bind_front < 201902L + # error "Feature test macro for bind_front has wrong value" + #endif + +Index: libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,91 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++2a" } ++// { dg-do run { target c++2a } } ++ ++#include ++#include ++#include ++#include ++ ++// P1651R0 bind_front should not unwrap reference_wrapper ++ ++#ifndef __cpp_lib_bind_front ++# error "Feature test macro for bind_front is missing" ++#elif __cpp_lib_bind_front < 201907L ++# error "Feature test macro for bind_front has wrong value" ++#endif ++ ++void functionAcceptingStringView(std::string_view) { } ++ ++void ++test01() ++{ ++ std::string s; ++ auto fs = std::bind_front(&functionAcceptingStringView, std::string_view(s)); ++ fs(); ++} ++ ++template ++struct PartialApply { ++ PartialApply(F f) : f(f) {} ++ F f; ++ ++ template decltype(auto) operator()(A const&... a) const { ++ if constexpr (std::is_invocable::value) { ++ return f(a...); ++ } else { ++ return bind_front(*this, a...); ++ } ++ } ++}; ++ ++void ++test02() ++{ ++ struct Thingy { }; ++ std::unique_ptr thingy; ++ auto func = [](const std::unique_ptr&, int) {}; ++ PartialApply{func}(std::ref(thingy))(10); ++} ++ ++void ++test03() ++{ ++ std::string str; ++ auto func = [](const std::string& s, int) -> const std::string& { return s; }; ++ ++ // sref refers to copy of str stored in bind_front result: ++ const std::string& sref = PartialApply{func}(std::ref(str))(10); ++ ++ // pre-P1651R0 this is a use of a dangling reference: ++ const char& c = sref[0]; ++ ++ // post-P1651R0 the bind_front result stores a reference_wrapper by value, ++ // and so sref is bound to str instead of dangling: ++ VERIFY( &c == str.data() ); ++ VERIFY( &sref == &str ); ++} ++ ++int ++main() ++{ ++ test01(); ++ test02(); ++ test03(); ++} +Index: libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc (.../branches/gcc-9-branch) +@@ -24,7 +24,18 @@ + void operator()() noexcept; + }; + +-static_assert( noexcept(std::__invoke(std::declval())), "" ); +-#if __cpp_lib_invoke +-static_assert( noexcept(std::invoke(std::declval())), "" ); +-#endif ++static_assert( noexcept(std::__invoke(std::declval())), ++ "It should be possible to use abstract types with INVOKE" ); ++ ++struct F { ++ void operator()() &; ++ void operator()() && noexcept; ++ int operator()(int); ++ double* operator()(int, int) noexcept; ++}; ++struct D { D(void*); }; ++ ++static_assert( !noexcept(std::__invoke(std::declval())), "" ); ++static_assert( noexcept(std::__invoke(std::declval())), "" ); ++static_assert( !noexcept(std::__invoke(std::declval(), 1)), "" ); ++static_assert( noexcept(std::__invoke(std::declval(), 1, 2)), "" ); +Index: libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,49 @@ ++// Copyright (C) 2016-2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++ ++struct abstract { ++ virtual ~abstract() = 0; ++ void operator()() noexcept; ++}; ++ ++static_assert( noexcept(std::__invoke(std::declval())), ++ "It should be possible to use abstract types with INVOKE" ); ++static_assert( noexcept(std::invoke(std::declval())), ++ "It should be possible to use abstract types with INVOKE" ); ++ ++struct F { ++ void operator()() &; ++ void operator()() && noexcept; ++ int operator()(int); ++ double* operator()(int, int) noexcept; ++}; ++struct D { D(void*); }; ++ ++static_assert( !noexcept(std::__invoke(std::declval())), "" ); ++static_assert( noexcept(std::__invoke(std::declval())), "" ); ++static_assert( !noexcept(std::__invoke(std::declval(), 1)), "" ); ++static_assert( noexcept(std::__invoke(std::declval(), 1, 2)), "" ); ++ ++static_assert( !noexcept(std::invoke(std::declval())), "" ); ++static_assert( noexcept(std::invoke(std::declval())), "" ); ++static_assert( !noexcept(std::invoke(std::declval(), 1)), "" ); ++static_assert( noexcept(std::invoke(std::declval(), 1, 2)), "" ); +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct X { ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void test01() ++{ ++ X x[1]; ++ alignas(X) unsigned char buf[sizeof(X)]; ++ X* p = (X*)buf; ++ ++ std::uninitialized_copy_n(x, 1, p); // { dg-error "here" } ++} ++// { dg-error "must be constructible" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,38 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++// PR libstdc++/89164 ++ ++struct X ++{ ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void test01() ++{ ++ X x[1]; ++ alignas(X) unsigned char buf[sizeof(X)]; ++ X* p = (X*)buf; ++ ++ std::uninitialized_copy(x, x+1, p); // { dg-error "here" } ++} ++// { dg-error "must be constructible" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc (.../branches/gcc-9-branch) +@@ -34,4 +34,4 @@ + T t[1]; + std::uninitialized_copy(t, t+1, result); // { dg-error "here" } + } +-// { dg-prune-output "use of deleted function" } ++// { dg-error "constructible from value" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct X { ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void test01() ++{ ++ X x; ++ alignas(X) unsigned char buf[sizeof(X)]; ++ X* p = (X*)buf; ++ ++ std::uninitialized_fill_n(p, 1, x); // { dg-error "here" } ++} ++// { dg-error "must be constructible" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,35 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-do compile { target c++11 } } ++ ++#include ++ ++struct X { ++ X() = default; ++ X(const X&) = delete; ++}; ++ ++void f() ++{ ++ X x; ++ alignas(X) unsigned char buf[sizeof(X)]; ++ X* p = (X*)buf; ++ ++ std::uninitialized_fill(p, p+1, x); // { dg-error "here" } ++} ++// { dg-error "must be constructible" "" { target *-*-* } 0 } +Index: libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc (.../branches/gcc-9-branch) +@@ -119,9 +119,11 @@ + static_assert( ! is_nt_invocable_r< T, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< NT, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< Ex, F >(), "call throws"); ++ static_assert( ! is_nt_invocable_r< void, F >(), "call throws"); + static_assert( ! is_nt_invocable_r< T, CF >(), "conversion throws"); + static_assert( is_nt_invocable_r< NT, CF >(), "" ); + static_assert( ! is_nt_invocable_r< Ex, CF >(), "conversion fails"); ++ static_assert( is_nt_invocable_r< void, CF >(), ""); + + static_assert( ! is_nt_invocable< F, int >(), "call throws"); + static_assert( is_nt_invocable< F&, int >(), ""); +@@ -140,6 +142,7 @@ + + static_assert( is_nt_invocable_r< char&, CF, int >(), ""); + static_assert( is_nt_invocable_r< char&, CF&, int >(), ""); ++ static_assert( is_nt_invocable_r< void, CF&, int >(), ""); + + static_assert( ! is_nt_invocable_r< T, CF&, int >(), + "conversion throws"); +@@ -146,6 +149,7 @@ + static_assert( is_nt_invocable_r< NT, CF&, int >(), ""); + static_assert( ! is_nt_invocable_r< Ex, CF&, int >(), + "conversion fails, would use explicit constructor"); ++ static_assert( is_nt_invocable_r< void, CF&, int >(), ""); + + static_assert( ! is_nt_invocable< F, int, int >(), + "would call private member"); +Index: libstdc++-v3/testsuite/20_util/is_invocable/91456.cc +=================================================================== +--- a/src/libstdc++-v3/testsuite/20_util/is_invocable/91456.cc (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/testsuite/20_util/is_invocable/91456.cc (.../branches/gcc-9-branch) +@@ -0,0 +1,34 @@ ++// Copyright (C) 2019 Free Software Foundation, Inc. ++// ++// This file is part of the GNU ISO C++ Library. This library is free ++// software; you can redistribute it and/or modify it under the ++// terms of the GNU General Public License as published by the ++// Free Software Foundation; either version 3, or (at your option) ++// any later version. ++ ++// This library is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++ ++// You should have received a copy of the GNU General Public License along ++// with this library; see the file COPYING3. If not see ++// . ++ ++// { dg-options "-std=gnu++17" } ++// { dg-do compile { target c++17 } } ++ ++#include ++ ++#include ++ ++struct Immovable { ++ Immovable() = default; ++ Immovable(const Immovable&) = delete; ++ Immovable& operator=(const Immovable&) = delete; ++}; ++ ++Immovable get() { return {}; } ++const Immovable i = get(); // OK ++std::function f{&get}; // fails ++const Immovable i2 = f(); +Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1829,6 +1829,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1885,6 +1886,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2060,13 +2062,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4402,6 +4408,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1829,6 +1829,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1885,6 +1886,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2060,13 +2062,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4402,6 +4408,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/sparcv9/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4360,6 +4370,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.10/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4360,6 +4370,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/sparcv9/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4362,6 +4372,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/sparc-solaris2.11/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4362,6 +4372,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1975,6 +1975,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -2031,6 +2032,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2206,13 +2208,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4635,6 +4641,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.10/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4361,6 +4371,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.10/amd64/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4361,6 +4371,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.11/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4363,6 +4373,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i386-solaris2.11/amd64/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1804,6 +1804,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1860,6 +1861,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2031,13 +2033,21 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4363,6 +4373,8 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -112,6 +112,7 @@ + FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 ++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26 + FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17 + FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17 + FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17 +@@ -261,6 +262,7 @@ + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4 ++FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4 + FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4 + FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4 +@@ -328,9 +330,66 @@ + FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4 + FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4 + FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4 ++FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSsixEm@@GLIBCXX_3.4 + FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11 ++FUNC:_ZNKSt10filesystem16filesystem_error4whatEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem16filesystem_error5path1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem16filesystem_error5path2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem18directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path11parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path12has_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13has_root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13has_root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path14root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path15has_parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path16lexically_normalEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path17_M_find_extensionEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path17has_relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path18has_root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path18lexically_relativeERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path19lexically_proximateERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List13_Impl_deleterclEPNS1_5_ImplE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List3endEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List5beginEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path7compareERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path9root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path9root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error4whatEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1118directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path11parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path12has_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path14root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path15has_parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path16lexically_normalEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path17_M_find_extensionEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path17has_relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path18has_root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path18lexically_relativeERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path19lexically_proximateERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List3endEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List5beginEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path7compareERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path9root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path9root_pathEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4 + FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11 + FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4 +@@ -876,6 +935,7 @@ + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21 +@@ -936,6 +996,7 @@ + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.21 +@@ -1067,6 +1128,13 @@ + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE6do_outERS0_PKDiS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21 +@@ -1074,6 +1142,13 @@ + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_m@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDsS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE6do_outERS0_PKDsS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_m@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21 +@@ -1276,6 +1351,7 @@ + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 +@@ -1294,6 +1370,7 @@ + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 +@@ -1386,6 +1463,8 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4 +@@ -1393,6 +1472,7 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 +@@ -1409,6 +1489,7 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 +@@ -1467,11 +1548,14 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mRKS1_@@GLIBCXX_3.4.23 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_@@GLIBCXX_3.4 +@@ -1481,11 +1565,14 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mRKS1_@@GLIBCXX_3.4.23 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_@@GLIBCXX_3.4 +@@ -1616,6 +1703,7 @@ + FUNC:_ZNSoD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSoD2Ev@@GLIBCXX_3.4 + FUNC:_ZNSoaSEOSo@@GLIBCXX_3.4.21 ++FUNC:_ZNSolsEDn@@GLIBCXX_3.4.26 + FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4 + FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 + FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 +@@ -1643,6 +1731,8 @@ + FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4 ++FUNC:_ZNSs12__sv_wrapperC1ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSs12__sv_wrapperC2ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 + FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4 + FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4 + FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4 +@@ -1650,6 +1740,7 @@ + FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14 + FUNC:_ZNSs14_M_replace_auxEmmmc@@GLIBCXX_3.4 + FUNC:_ZNSs15_M_replace_safeEmmPKcm@@GLIBCXX_3.4 ++FUNC:_ZNSs17_S_to_string_viewESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 + FUNC:_ZNSs18_S_construct_aux_2EmcRKSaIcE@@GLIBCXX_3.4.14 + FUNC:_ZNSs2atEm@@GLIBCXX_3.4 + FUNC:_ZNSs3endEv@@GLIBCXX_3.4 +@@ -1666,6 +1757,7 @@ + FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEm@@GLIBCXX_3.4 + FUNC:_ZNSs4_Rep9_S_createEmmRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15 ++FUNC:_ZNSs4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSs4rendEv@@GLIBCXX_3.4 + FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4 + FUNC:_ZNSs5beginEv@@GLIBCXX_3.4 +@@ -1724,11 +1816,14 @@ + FUNC:_ZNSs9_M_assignEPcmc@GLIBCXX_3.4 + FUNC:_ZNSs9_M_mutateEmmm@@GLIBCXX_3.4 + FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4 ++FUNC:_ZNSsC1ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14 ++FUNC:_ZNSsC1EOSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1EPKcmRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSsC1ERKSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1ERKSsmRKSaIcE@@GLIBCXX_3.4.23 + FUNC:_ZNSsC1ERKSsmm@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSsmmRKSaIcE@@GLIBCXX_3.4 +@@ -1738,11 +1833,14 @@ + FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 ++FUNC:_ZNSsC2ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15 ++FUNC:_ZNSsC2EOSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2EPKcmRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSsC2ERKSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2ERKSsmRKSaIcE@@GLIBCXX_3.4.23 + FUNC:_ZNSsC2ERKSsmm@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSsmmRKSaIcE@@GLIBCXX_3.4 +@@ -1774,6 +1872,208 @@ + FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10hash_valueERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEmRSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEmRSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathB5cxx11Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIlSt5ratioILl1ELl1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path14_M_split_cmptsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path14_S_convert_locEPKcS2_RKSt6locale@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path15remove_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path16replace_filenameERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path17replace_extensionERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path5_ListC1ERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path5_ListC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathaSERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathdVERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathpLERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1110hash_valueERKNS0_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path15remove_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path16replace_filenameERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path17replace_extensionERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1ERKS2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathaSERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathdVERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathpLERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 + FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4 + FUNC:_ZNSt10istrstreamC1EPKcl@@GLIBCXX_3.4 +@@ -1860,10 +2160,12 @@ + FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 + FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5 + FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_errorC1EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_errorC2EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_errorC2EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC2ERKS_@@GLIBCXX_3.4.21 +@@ -1871,6 +2173,7 @@ + FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_erroraSEOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_erroraSERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt11range_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 +@@ -1903,6 +2206,20 @@ + FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4 + FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15 +@@ -2206,6 +2523,7 @@ + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn@@GLIBCXX_3.4.26 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 +@@ -2231,10 +2549,12 @@ + FUNC:_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 + FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 ++FUNC:_ZNSt13runtime_errorC1EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSt13runtime_errorC2EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC2ERKS_@@GLIBCXX_3.4.21 +@@ -2242,6 +2562,7 @@ + FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt13runtime_erroraSEOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_erroraSERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@@GLIBCXX_3.4.21 +@@ -2353,12 +2674,16 @@ + FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcEC1EPKcm@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIcEC1ERKSsm@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIcEC2EPKcm@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIcEC2ERKSsm@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwEC1EPKcm@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIwEC1ERKSsm@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIwEC2EPKcm@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIwEC2ERKSsm@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4 +@@ -2498,9 +2823,11 @@ + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@@GLIBCXX_3.4.21 +@@ -2520,9 +2847,11 @@ + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 +@@ -2730,9 +3059,11 @@ + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2742,9 +3073,11 @@ + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2756,6 +3089,7 @@ + FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 + FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 + FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11 ++FUNC:_ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@@GLIBCXX_3.4.26 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED2Ev@@GLIBCXX_3.4.21 +@@ -2770,9 +3104,11 @@ + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2782,9 +3118,11 @@ + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2794,9 +3132,11 @@ + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2806,9 +3146,11 @@ + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2849,6 +3191,26 @@ + FUNC:_ZNSt3_V214error_categoryD2Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt3_V215system_categoryEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt3_V216generic_categoryEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt3pmr19new_delete_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20get_default_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20null_memory_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20set_default_resourceEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEmm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr25monotonic_buffer_resource18_M_release_buffersEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource11do_allocateEmm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvmm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource11do_allocateEmm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvmm@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbm@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIcEC1EPKtbm@@GLIBCXX_3.4 +@@ -2982,6 +3344,8 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC2ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@@GLIBCXX_3.4.21 +@@ -2991,10 +3355,12 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@@GLIBCXX_3.4.21 +@@ -3018,6 +3384,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.21 +@@ -3067,6 +3434,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@@GLIBCXX_3.4.21 +@@ -3083,6 +3451,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@@GLIBCXX_3.4.21 +@@ -3125,6 +3494,8 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@@GLIBCXX_3.4.21 +@@ -3134,10 +3505,12 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4.21 +@@ -3161,6 +3534,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_mm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEmw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.21 +@@ -3210,6 +3584,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwmw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@@GLIBCXX_3.4.21 +@@ -3226,6 +3601,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@@GLIBCXX_3.4.21 +@@ -3289,10 +3665,12 @@ + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3318,10 +3696,12 @@ + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3401,9 +3781,11 @@ + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3413,9 +3795,11 @@ + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3425,9 +3809,11 @@ + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3437,9 +3823,11 @@ + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3449,9 +3837,11 @@ + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3461,9 +3851,11 @@ + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3546,9 +3938,15 @@ + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED2Ev@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED2Ev@@GLIBCXX_3.4.21 +@@ -3831,6 +4229,7 @@ + FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4 + FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4 ++FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26 + FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15 +@@ -4211,6 +4610,7 @@ + OBJECT:0:CXXABI_1.3.1 + OBJECT:0:CXXABI_1.3.10 + OBJECT:0:CXXABI_1.3.11 ++OBJECT:0:CXXABI_1.3.12 + OBJECT:0:CXXABI_1.3.2 + OBJECT:0:CXXABI_1.3.3 + OBJECT:0:CXXABI_1.3.4 +@@ -4240,6 +4640,8 @@ + OBJECT:0:GLIBCXX_3.4.23 + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 ++OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +@@ -4326,6 +4728,7 @@ + OBJECT:16:_ZTIDi@@CXXABI_1.3.3 + OBJECT:16:_ZTIDn@@CXXABI_1.3.5 + OBJECT:16:_ZTIDs@@CXXABI_1.3.3 ++OBJECT:16:_ZTIDu@@CXXABI_1.3.12 + OBJECT:16:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2 + OBJECT:16:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2 + OBJECT:16:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15 +@@ -4447,6 +4850,19 @@ + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11 + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11 + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11 ++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_boundedE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_integerE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE12has_infinityE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE13has_quiet_NaNE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE14is_specializedE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE15has_denorm_lossE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE15tinyness_beforeE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE17has_signaling_NaNE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE5trapsE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE8is_exactE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_iec559E@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_moduloE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_signedE@@GLIBCXX_3.4.26 + OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4 + OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4 + OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4 +@@ -4758,6 +5174,8 @@ + OBJECT:24:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 + OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 + OBJECT:24:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 ++OBJECT:24:_ZTINSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26 ++OBJECT:24:_ZTINSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26 + OBJECT:24:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 + OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4 + OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4 +@@ -4767,6 +5185,8 @@ + OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4 + OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE@@GLIBCXX_LDBL_3.4 + OBJECT:24:_ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE@@GLIBCXX_LDBL_3.4 ++OBJECT:24:_ZTINSt3pmr26synchronized_pool_resourceE@@GLIBCXX_3.4.26 ++OBJECT:24:_ZTINSt3pmr28unsynchronized_pool_resourceE@@GLIBCXX_3.4.26 + OBJECT:24:_ZTINSt7__cxx1114collate_bynameIcEE@@GLIBCXX_3.4.21 + OBJECT:24:_ZTINSt7__cxx1114collate_bynameIwEE@@GLIBCXX_3.4.21 + OBJECT:24:_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 +@@ -4865,7 +5285,9 @@ + OBJECT:24:_ZTISt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21 + OBJECT:24:_ZTISt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21 + OBJECT:24:_ZTISt5ctypeIwE@@GLIBCXX_3.4 ++OBJECT:24:_ZTISt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:24:_ZTISt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21 ++OBJECT:24:_ZTISt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:24:_ZTISt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21 + OBJECT:24:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 + OBJECT:24:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 +@@ -4952,6 +5374,8 @@ + OBJECT:2:_ZTSw@@CXXABI_1.3 + OBJECT:2:_ZTSx@@CXXABI_1.3 + OBJECT:2:_ZTSy@@CXXABI_1.3 ++OBJECT:30:_ZTSSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 ++OBJECT:30:_ZTSSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:32:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 + OBJECT:32:_ZNSs4_Rep20_S_empty_rep_storageE@@GLIBCXX_3.4 + OBJECT:32:_ZTIPDd@@CXXABI_1.3.4 +@@ -4960,6 +5384,7 @@ + OBJECT:32:_ZTIPDi@@CXXABI_1.3.3 + OBJECT:32:_ZTIPDn@@CXXABI_1.3.5 + OBJECT:32:_ZTIPDs@@CXXABI_1.3.3 ++OBJECT:32:_ZTIPDu@@CXXABI_1.3.12 + OBJECT:32:_ZTIPKDd@@CXXABI_1.3.4 + OBJECT:32:_ZTIPKDe@@CXXABI_1.3.4 + OBJECT:32:_ZTIPKDf@@CXXABI_1.3.4 +@@ -4966,6 +5391,7 @@ + OBJECT:32:_ZTIPKDi@@CXXABI_1.3.3 + OBJECT:32:_ZTIPKDn@@CXXABI_1.3.5 + OBJECT:32:_ZTIPKDs@@CXXABI_1.3.3 ++OBJECT:32:_ZTIPKDu@@CXXABI_1.3.12 + OBJECT:32:_ZTIPKa@@CXXABI_1.3 + OBJECT:32:_ZTIPKb@@CXXABI_1.3 + OBJECT:32:_ZTIPKc@@CXXABI_1.3 +@@ -5095,6 +5521,8 @@ + OBJECT:40:_ZTSSt14basic_iostreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 + OBJECT:40:_ZTSSt14basic_ofstreamIcSt11char_traitsIcEE@@GLIBCXX_3.4 + OBJECT:40:_ZTSSt14basic_ofstreamIwSt11char_traitsIwEE@@GLIBCXX_3.4 ++OBJECT:40:_ZTVNSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26 ++OBJECT:40:_ZTVNSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26 + OBJECT:40:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15 + OBJECT:40:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15 + OBJECT:40:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 +@@ -5169,6 +5597,15 @@ + OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11 + OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11 + OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11 ++OBJECT:4:_ZNSt14numeric_limitsIDuE10has_denormE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE11round_styleE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE12max_exponentE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE12min_exponentE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE14max_exponent10E@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE14min_exponent10E@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE5radixE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE6digitsE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE8digits10E@@GLIBCXX_3.4.26 + OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4 + OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4 + OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14 +@@ -5585,7 +6022,9 @@ + OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIDiE@@GLIBCXX_3.4.21 + OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21 + OBJECT:88:_ZTVSt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21 ++OBJECT:88:_ZTVSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:88:_ZTVSt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21 ++OBJECT:88:_ZTVSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:88:_ZTVSt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21 + OBJECT:88:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 + OBJECT:88:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 +@@ -5679,7 +6118,9 @@ + OBJECT:8:_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21 + OBJECT:8:_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4.21 + OBJECT:8:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21 ++OBJECT:8:_ZNSt7codecvtIDiDu11__mbstate_tE2idE@@GLIBCXX_3.4.26 + OBJECT:8:_ZNSt7codecvtIDic11__mbstate_tE2idE@@GLIBCXX_3.4.21 ++OBJECT:8:_ZNSt7codecvtIDsDu11__mbstate_tE2idE@@GLIBCXX_3.4.26 + OBJECT:8:_ZNSt7codecvtIDsc11__mbstate_tE2idE@@GLIBCXX_3.4.21 + OBJECT:8:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4 + OBJECT:8:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4 +Index: libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1975,6 +1975,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -2031,6 +2032,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2206,13 +2208,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4635,6 +4641,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -112,6 +112,7 @@ + FUNC:_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv@@GLIBCXX_3.4 + FUNC:_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_@@GLIBCXX_3.4 ++FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.26 + FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb@@GLIBCXX_3.4.17 + FUNC:_ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv@@GLIBCXX_3.4.17 + FUNC:_ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv@@GLIBCXX_3.4.17 +@@ -261,6 +262,7 @@ + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv@@GLIBCXX_3.4 ++FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS0_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSbIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4 + FUNC:_ZNKSi6gcountEv@@GLIBCXX_3.4 + FUNC:_ZNKSi6sentrycvbEv@@GLIBCXX_3.4 +@@ -328,9 +330,66 @@ + FUNC:_ZNKSs8capacityEv@@GLIBCXX_3.4 + FUNC:_ZNKSs8max_sizeEv@@GLIBCXX_3.4 + FUNC:_ZNKSs9_M_ibeginEv@@GLIBCXX_3.4 ++FUNC:_ZNKSscvSt17basic_string_viewIcSt11char_traitsIcEEEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSsixEj@@GLIBCXX_3.4 + FUNC:_ZNKSt10bad_typeid4whatEv@@GLIBCXX_3.4.9 + FUNC:_ZNKSt10error_code23default_error_conditionEv@@GLIBCXX_3.4.11 ++FUNC:_ZNKSt10filesystem16filesystem_error4whatEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem16filesystem_error5path1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem16filesystem_error5path2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem18directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem28recursive_directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path11parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path12has_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13has_root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13has_root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path13relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path14root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path15has_parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path16lexically_normalEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path17_M_find_extensionEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path17has_relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path18has_root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path18lexically_relativeERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path19lexically_proximateERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List13_Impl_deleterclEPNS1_5_ImplE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List3endEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path5_List5beginEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path7compareERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path9root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem4path9root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error4whatEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1116filesystem_error5path2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1118directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator17recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator5depthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iterator7optionsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx1128recursive_directory_iteratordeEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path11parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path12has_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13has_root_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path13relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path14root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path15has_parent_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path16lexically_normalEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path17_M_find_extensionEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path17has_relative_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path18has_root_directoryEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path18lexically_relativeERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path19lexically_proximateERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List3endEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path5_List5beginEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path7compareERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path7compareESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path9root_nameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt10filesystem7__cxx114path9root_pathEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt10istrstream5rdbufEv@@GLIBCXX_3.4 + FUNC:_ZNKSt10lock_error4whatEv@@GLIBCXX_3.4.11 + FUNC:_ZNKSt10moneypunctIcLb0EE10neg_formatEv@@GLIBCXX_3.4 +@@ -734,6 +793,7 @@ + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEcvSt17basic_string_viewIcS2_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv@@GLIBCXX_3.4.21 +@@ -794,6 +854,7 @@ + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEcvSt17basic_string_viewIwS2_EEv@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv@@GLIBCXX_3.4.21 +@@ -925,6 +986,13 @@ + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewe@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE6do_outERS0_PKDiS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDiDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21 +@@ -932,6 +1000,13 @@ + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE10do_unshiftERS0_PDuS3_RS3_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE16do_always_noconvEv@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE5do_inERS0_PKDuS4_RS4_PDsS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE6do_outERS0_PKDsS4_RS4_PDuS6_RS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNKSt7codecvtIDsDu11__mbstate_tE9do_lengthERS0_PKDuS4_j@@GLIBCXX_3.4.26 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv@@GLIBCXX_3.4.21 + FUNC:_ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv@@GLIBCXX_3.4.21 +@@ -1134,6 +1209,7 @@ + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 +@@ -1152,6 +1228,7 @@ + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate@@GLIBCXX_3.4.14 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_@@GLIBCXX_3.4.21 ++FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.26 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc@@GLIBCXX_3.4.21 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 + FUNC:_ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm@@GLIBCXX_3.4 +@@ -1244,6 +1321,8 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_@@GLIBCXX_3.4 +@@ -1251,6 +1330,7 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS0_E@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_@@GLIBCXX_3.4.14 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4 +@@ -1267,6 +1347,7 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.15 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4 +@@ -1325,11 +1406,14 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_@@GLIBCXX_3.4.14 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jRKS1_@@GLIBCXX_3.4.24 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_@@GLIBCXX_3.4 +@@ -1339,11 +1423,14 @@ + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ENS2_12__sv_wrapperERKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_@@GLIBCXX_3.4.15 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_@@GLIBCXX_3.4 ++FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_RKS1_@@GLIBCXX_3.4.26 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jRKS1_@@GLIBCXX_3.4.24 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj@@GLIBCXX_3.4 + FUNC:_ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_@@GLIBCXX_3.4 +@@ -1471,6 +1558,7 @@ + FUNC:_ZNSoD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSoD2Ev@@GLIBCXX_3.4 + FUNC:_ZNSoaSEOSo@@GLIBCXX_3.4.21 ++FUNC:_ZNSolsEDn@@GLIBCXX_3.4.26 + FUNC:_ZNSolsEPFRSoS_E@@GLIBCXX_3.4 + FUNC:_ZNSolsEPFRSt8ios_baseS0_E@@GLIBCXX_3.4 + FUNC:_ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E@@GLIBCXX_3.4 +@@ -1497,6 +1585,8 @@ + FUNC:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag@@GLIBCXX_3.4.14 + FUNC:_ZNSs12_S_empty_repEv@@GLIBCXX_3.4 ++FUNC:_ZNSs12__sv_wrapperC1ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSs12__sv_wrapperC2ESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 + FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_@@GLIBCXX_3.4 + FUNC:_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_@@GLIBCXX_3.4 + FUNC:_ZNSs13_S_copy_charsEPcPKcS1_@@GLIBCXX_3.4 +@@ -1504,6 +1594,7 @@ + FUNC:_ZNSs13shrink_to_fitEv@@GLIBCXX_3.4.14 + FUNC:_ZNSs14_M_replace_auxEjjjc@@GLIBCXX_3.4 + FUNC:_ZNSs15_M_replace_safeEjjPKcj@@GLIBCXX_3.4 ++FUNC:_ZNSs17_S_to_string_viewESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 + FUNC:_ZNSs18_S_construct_aux_2EjcRKSaIcE@@GLIBCXX_3.4.14 + FUNC:_ZNSs2atEj@@GLIBCXX_3.4 + FUNC:_ZNSs3endEv@@GLIBCXX_3.4 +@@ -1520,6 +1611,7 @@ + FUNC:_ZNSs4_Rep8_M_cloneERKSaIcEj@@GLIBCXX_3.4 + FUNC:_ZNSs4_Rep9_S_createEjjRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSs4backEv@@GLIBCXX_3.4.15 ++FUNC:_ZNSs4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSs4rendEv@@GLIBCXX_3.4 + FUNC:_ZNSs4swapERSs@@GLIBCXX_3.4 + FUNC:_ZNSs5beginEv@@GLIBCXX_3.4 +@@ -1578,11 +1670,14 @@ + FUNC:_ZNSs9_M_assignEPcjc@GLIBCXX_3.4 + FUNC:_ZNSs9_M_mutateEjjj@@GLIBCXX_3.4 + FUNC:_ZNSs9push_backEc@@GLIBCXX_3.4 ++FUNC:_ZNSsC1ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1EOSs@@GLIBCXX_3.4.14 ++FUNC:_ZNSsC1EOSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1EPKcRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1EPKcjRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSsC1ERKSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC1ERKSsjRKSaIcE@@GLIBCXX_3.4.23 + FUNC:_ZNSsC1ERKSsjj@@GLIBCXX_3.4 + FUNC:_ZNSsC1ERKSsjjRKSaIcE@@GLIBCXX_3.4 +@@ -1592,11 +1687,14 @@ + FUNC:_ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1IPKcEET_S2_RKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC1IPcEET_S1_RKSaIcE@@GLIBCXX_3.4 ++FUNC:_ZNSsC2ENSs12__sv_wrapperERKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2EOSs@@GLIBCXX_3.4.15 ++FUNC:_ZNSsC2EOSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2EPKcRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2EPKcjRKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSaIcE@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSsC2ERKSsRKSaIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSsC2ERKSsjRKSaIcE@@GLIBCXX_3.4.23 + FUNC:_ZNSsC2ERKSsjj@@GLIBCXX_3.4 + FUNC:_ZNSsC2ERKSsjjRKSaIcE@@GLIBCXX_3.4 +@@ -1628,6 +1726,208 @@ + FUNC:_ZNSt10bad_typeidD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt10bad_typeidD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt10bad_typeidD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10equivalentERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10hash_valueERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem10remove_allERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_4pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11permissionsERKNS_7__cxx114pathENS_5permsENS_12perm_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEy@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_4pathEyRSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEy@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem11resize_fileERKNS_7__cxx114pathEyRSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12copy_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathB5cxx11Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12current_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem12read_symlinkERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14create_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem14symlink_statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15hard_link_countERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathENSt6chrono10time_pointINS_12__file_clockENS3_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathENSt6chrono10time_pointINS_12__file_clockENS4_8durationIxSt5ratioILx1ELx1000000000EEEEEERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem15last_write_timeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_directoryERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16create_hard_linkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC1ERKSsSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathES5_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsRKNS_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorC2ERKSsSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16filesystem_errorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem16weakly_canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18create_directoriesERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem18directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11ERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathB5cxx11Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem19temp_directory_pathEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem24create_directory_symlinkERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator3popEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC1ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorC2ERKNS_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4copyERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path14_M_split_cmptsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path14_S_convert_locEPKcS2_RKSt6locale@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path15remove_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path16replace_filenameERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path17replace_extensionERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path5_ListC1ERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path5_ListC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathaSERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathdVERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem4pathpLERKS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem5spaceERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6removeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6renameERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem6statusERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1110hash_valueERKNS0_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESC_St10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_4pathESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1116filesystem_errorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1118directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator25disable_recursion_pendingEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator3popEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iterator9incrementERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC1ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorC2ERKNS0_4pathENS_17directory_optionsEPSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path15remove_filenameEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path16replace_filenameERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path17replace_extensionERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1ERKS2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path5_ListC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path9_M_appendESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114path9_M_concatESt17basic_string_viewIcSt11char_traitsIcEE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathaSERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathdVERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx114pathpLERKS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8absoluteERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8is_emptyERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem8relativeERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9canonicalERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9copy_fileERKNS_7__cxx114pathES3_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_4pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9file_sizeERKNS_7__cxx114pathERSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_4pathES2_RSt10error_code@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem9proximateERKNS_7__cxx114pathES3_RSt10error_code@@GLIBCXX_3.4.26 + FUNC:_ZNSt10istrstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt10istrstreamC1EPKc@@GLIBCXX_3.4 + FUNC:_ZNSt10istrstreamC1EPKci@@GLIBCXX_3.4 +@@ -1714,10 +2014,12 @@ + FUNC:_ZNSt11char_traitsIcE2eqERKcS2_@GLIBCXX_3.4 + FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@@GLIBCXX_3.4.5 + FUNC:_ZNSt11char_traitsIwE2eqERKwS2_@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_errorC1EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_errorC2EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_errorC2EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt11logic_errorC2ERKS_@@GLIBCXX_3.4.21 +@@ -1725,6 +2027,7 @@ + FUNC:_ZNSt11logic_errorD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt11logic_errorD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt11logic_errorD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt11logic_erroraSEOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt11logic_erroraSERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt11range_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 +@@ -1757,6 +2060,24 @@ + FUNC:_ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@@GLIBCXX_3.4 + FUNC:_ZNSt12__basic_fileIcED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS4_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2EOS6_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2EOS5_@@GLIBCXX_3.4.28 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD2Ev@@GLIBCXX_3.4.15 +@@ -2057,6 +2378,7 @@ + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEDn@@GLIBCXX_3.4.26 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E@@GLIBCXX_3.4 + FUNC:_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E@@GLIBCXX_3.4 +@@ -2081,10 +2403,12 @@ + FUNC:_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13random_device7_M_initERKSs@@GLIBCXX_3.4.18 + FUNC:_ZNSt13random_device9_M_getvalEv@@GLIBCXX_3.4.18 ++FUNC:_ZNSt13runtime_errorC1EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_errorC1EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC1ERKSs@@GLIBCXX_3.4 ++FUNC:_ZNSt13runtime_errorC2EOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_errorC2EPKc@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 + FUNC:_ZNSt13runtime_errorC2ERKS_@@GLIBCXX_3.4.21 +@@ -2092,6 +2416,7 @@ + FUNC:_ZNSt13runtime_errorD0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13runtime_errorD1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt13runtime_errorD2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt13runtime_erroraSEOS_@@GLIBCXX_3.4.26 + FUNC:_ZNSt13runtime_erroraSERKS_@@GLIBCXX_3.4.21 + FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode@@GLIBCXX_3.4.21 +@@ -2203,12 +2528,16 @@ + FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcEC1EPKcj@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIcEC1ERKSsj@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIcEC2EPKcj@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIcEC2ERKSsj@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIcED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwEC1EPKcj@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIwEC1ERKSsj@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIwEC2EPKcj@@GLIBCXX_3.4 ++FUNC:_ZNSt14collate_bynameIwEC2ERKSsj@@GLIBCXX_3.4.26 + FUNC:_ZNSt14collate_bynameIwED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt14collate_bynameIwED2Ev@@GLIBCXX_3.4 +@@ -2348,9 +2677,11 @@ + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_@@GLIBCXX_3.4.21 +@@ -2370,9 +2701,11 @@ + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_@@GLIBCXX_3.4.21 +@@ -2540,9 +2873,11 @@ + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2552,9 +2887,11 @@ + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2566,6 +2903,7 @@ + FUNC:_ZNSt18condition_variableC2Ev@@GLIBCXX_3.4.11 + FUNC:_ZNSt18condition_variableD1Ev@@GLIBCXX_3.4.11 + FUNC:_ZNSt18condition_variableD2Ev@@GLIBCXX_3.4.11 ++FUNC:_ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info@@GLIBCXX_3.4.26 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt19__codecvt_utf8_baseIDiED2Ev@@GLIBCXX_3.4.21 +@@ -2580,9 +2918,11 @@ + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2592,9 +2932,11 @@ + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2604,9 +2946,11 @@ + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4 +@@ -2616,9 +2960,11 @@ + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4 ++FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4 +@@ -2659,6 +3005,26 @@ + FUNC:_ZNSt3_V214error_categoryD2Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt3_V215system_categoryEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt3_V216generic_categoryEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt3pmr19new_delete_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20get_default_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20null_memory_resourceEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr20set_default_resourceEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr25monotonic_buffer_resource13_M_new_bufferEjj@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr25monotonic_buffer_resource18_M_release_buffersEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource11do_allocateEjj@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource13do_deallocateEPvjj@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr26synchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource11do_allocateEjj@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource13do_deallocateEPvjj@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resource7releaseEv@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC1ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceC2ERKNS_12pool_optionsEPNS_15memory_resourceE@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt3pmr28unsynchronized_pool_resourceD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt5ctypeIcE13classic_tableEv@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIcEC1EP15__locale_structPKtbj@@GLIBCXX_3.4 + FUNC:_ZNSt5ctypeIcEC1EPKtbj@@GLIBCXX_3.4 +@@ -2792,6 +3158,8 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC1ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12__sv_wrapperC2ESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_@@GLIBCXX_3.4.21 +@@ -2801,10 +3169,12 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17_S_to_string_viewESt17basic_string_viewIcS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv@@GLIBCXX_3.4.21 +@@ -2828,6 +3198,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_jj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEjc@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEjc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE@@GLIBCXX_3.4.21 +@@ -2877,6 +3248,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcjc@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_@@GLIBCXX_3.4.21 +@@ -2893,6 +3265,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_@@GLIBCXX_3.4.21 +@@ -2935,6 +3308,8 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC1ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12__sv_wrapperC2ESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_@@GLIBCXX_3.4.21 +@@ -2944,10 +3319,12 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17_S_to_string_viewESt17basic_string_viewIwS2_E@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv@@GLIBCXX_3.4.21 +@@ -2971,6 +3348,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_jj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEjw@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEjw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE@@GLIBCXX_3.4.21 +@@ -3020,6 +3398,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwjw@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_@@GLIBCXX_3.4.21 +@@ -3036,6 +3415,7 @@ + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ENS4_12__sv_wrapperERKS3_@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_@@GLIBCXX_3.4.21 +@@ -3099,10 +3479,12 @@ + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3128,10 +3510,12 @@ + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3211,9 +3595,11 @@ + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3223,9 +3609,11 @@ + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3235,9 +3623,11 @@ + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3247,9 +3637,11 @@ + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3259,9 +3651,11 @@ + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev@@GLIBCXX_3.4.21 +@@ -3271,9 +3665,11 @@ + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev@@GLIBCXX_3.4.21 +@@ -3356,9 +3752,15 @@ + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDiDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDic11__mbstate_tED2Ev@@GLIBCXX_3.4.21 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED0Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt7codecvtIDsDu11__mbstate_tED2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED0Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED1Ev@@GLIBCXX_3.4.21 + FUNC:_ZNSt7codecvtIDsc11__mbstate_tED2Ev@@GLIBCXX_3.4.21 +@@ -3640,6 +4042,7 @@ + FUNC:_ZSt18__throw_bad_typeidv@@GLIBCXX_3.4 + FUNC:_ZSt18uncaught_exceptionv@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_ios_failurePKc@@GLIBCXX_3.4 ++FUNC:_ZSt19__throw_ios_failurePKci@@GLIBCXX_3.4.26 + FUNC:_ZSt19__throw_logic_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_range_errorPKc@@GLIBCXX_3.4 + FUNC:_ZSt19__throw_regex_errorNSt15regex_constants10error_typeE@@GLIBCXX_3.4.15 +@@ -4000,6 +4403,7 @@ + OBJECT:0:CXXABI_1.3.1 + OBJECT:0:CXXABI_1.3.10 + OBJECT:0:CXXABI_1.3.11 ++OBJECT:0:CXXABI_1.3.12 + OBJECT:0:CXXABI_1.3.2 + OBJECT:0:CXXABI_1.3.3 + OBJECT:0:CXXABI_1.3.4 +@@ -4028,6 +4432,9 @@ + OBJECT:0:GLIBCXX_3.4.23 + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 ++OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 ++OBJECT:0:GLIBCXX_3.4.28 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +@@ -4051,7 +4458,11 @@ + OBJECT:12:_ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 + OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE@@GLIBCXX_3.4 + OBJECT:12:_ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE@@GLIBCXX_3.4 ++OBJECT:12:_ZTINSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26 ++OBJECT:12:_ZTINSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26 + OBJECT:12:_ZTINSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 ++OBJECT:12:_ZTINSt3pmr26synchronized_pool_resourceE@@GLIBCXX_3.4.26 ++OBJECT:12:_ZTINSt3pmr28unsynchronized_pool_resourceE@@GLIBCXX_3.4.26 + OBJECT:12:_ZTINSt7__cxx1114collate_bynameIcEE@@GLIBCXX_3.4.21 + OBJECT:12:_ZTINSt7__cxx1114collate_bynameIwEE@@GLIBCXX_3.4.21 + OBJECT:12:_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21 +@@ -4150,7 +4561,9 @@ + OBJECT:12:_ZTISt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21 + OBJECT:12:_ZTISt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21 + OBJECT:12:_ZTISt5ctypeIwE@@GLIBCXX_3.4 ++OBJECT:12:_ZTISt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:12:_ZTISt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21 ++OBJECT:12:_ZTISt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:12:_ZTISt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21 + OBJECT:12:_ZTISt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 + OBJECT:12:_ZTISt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 +@@ -4210,6 +4623,7 @@ + OBJECT:16:_ZTIPDi@@CXXABI_1.3.3 + OBJECT:16:_ZTIPDn@@CXXABI_1.3.5 + OBJECT:16:_ZTIPDs@@CXXABI_1.3.3 ++OBJECT:16:_ZTIPDu@@CXXABI_1.3.12 + OBJECT:16:_ZTIPKDd@@CXXABI_1.3.4 + OBJECT:16:_ZTIPKDe@@CXXABI_1.3.4 + OBJECT:16:_ZTIPKDf@@CXXABI_1.3.4 +@@ -4216,6 +4630,7 @@ + OBJECT:16:_ZTIPKDi@@CXXABI_1.3.3 + OBJECT:16:_ZTIPKDn@@CXXABI_1.3.5 + OBJECT:16:_ZTIPKDs@@CXXABI_1.3.3 ++OBJECT:16:_ZTIPKDu@@CXXABI_1.3.12 + OBJECT:16:_ZTIPKa@@CXXABI_1.3 + OBJECT:16:_ZTIPKb@@CXXABI_1.3 + OBJECT:16:_ZTIPKc@@CXXABI_1.3 +@@ -4349,6 +4764,19 @@ + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_iec559E@@GLIBCXX_3.4.11 + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_moduloE@@GLIBCXX_3.4.11 + OBJECT:1:_ZNSt14numeric_limitsIDsE9is_signedE@@GLIBCXX_3.4.11 ++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_boundedE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE10is_integerE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE12has_infinityE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE13has_quiet_NaNE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE14is_specializedE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE15has_denorm_lossE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE15tinyness_beforeE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE17has_signaling_NaNE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE5trapsE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE8is_exactE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_iec559E@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_moduloE@@GLIBCXX_3.4.26 ++OBJECT:1:_ZNSt14numeric_limitsIDuE9is_signedE@@GLIBCXX_3.4.26 + OBJECT:1:_ZNSt14numeric_limitsIaE10is_boundedE@@GLIBCXX_3.4 + OBJECT:1:_ZNSt14numeric_limitsIaE10is_integerE@@GLIBCXX_3.4 + OBJECT:1:_ZNSt14numeric_limitsIaE12has_infinityE@@GLIBCXX_3.4 +@@ -4592,6 +5020,8 @@ + OBJECT:20:_ZTSSt12ctype_bynameIcE@@GLIBCXX_3.4 + OBJECT:20:_ZTSSt12ctype_bynameIwE@@GLIBCXX_3.4 + OBJECT:20:_ZTSSt15underflow_error@@GLIBCXX_3.4 ++OBJECT:20:_ZTVNSt10filesystem16filesystem_errorE@@GLIBCXX_3.4.26 ++OBJECT:20:_ZTVNSt10filesystem7__cxx1116filesystem_errorE@@GLIBCXX_3.4.26 + OBJECT:20:_ZTVNSt13__future_base11_State_baseE@@GLIBCXX_3.4.15 + OBJECT:20:_ZTVNSt13__future_base12_Result_baseE@@GLIBCXX_3.4.15 + OBJECT:20:_ZTVNSt13__future_base19_Async_state_commonE@@GLIBCXX_3.4.17 +@@ -4720,6 +5150,8 @@ + OBJECT:2:_ZTSw@@CXXABI_1.3 + OBJECT:2:_ZTSx@@CXXABI_1.3 + OBJECT:2:_ZTSy@@CXXABI_1.3 ++OBJECT:30:_ZTSSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 ++OBJECT:30:_ZTSSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:32:_ZTINSt7__cxx1110moneypunctIcLb0EEE@@GLIBCXX_3.4.21 + OBJECT:32:_ZTINSt7__cxx1110moneypunctIcLb1EEE@@GLIBCXX_3.4.21 + OBJECT:32:_ZTINSt7__cxx1110moneypunctIwLb0EEE@@GLIBCXX_3.4.21 +@@ -4874,7 +5306,9 @@ + OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIDiE@@GLIBCXX_3.4.21 + OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIDsE@@GLIBCXX_3.4.21 + OBJECT:44:_ZTVSt25__codecvt_utf8_utf16_baseIwE@@GLIBCXX_3.4.21 ++OBJECT:44:_ZTVSt7codecvtIDiDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:44:_ZTVSt7codecvtIDic11__mbstate_tE@@GLIBCXX_3.4.21 ++OBJECT:44:_ZTVSt7codecvtIDsDu11__mbstate_tE@@GLIBCXX_3.4.26 + OBJECT:44:_ZTVSt7codecvtIDsc11__mbstate_tE@@GLIBCXX_3.4.21 + OBJECT:44:_ZTVSt7codecvtIcc11__mbstate_tE@@GLIBCXX_3.4 + OBJECT:44:_ZTVSt7codecvtIwc11__mbstate_tE@@GLIBCXX_3.4 +@@ -4926,6 +5360,15 @@ + OBJECT:4:_ZNSt14numeric_limitsIDsE5radixE@@GLIBCXX_3.4.11 + OBJECT:4:_ZNSt14numeric_limitsIDsE6digitsE@@GLIBCXX_3.4.11 + OBJECT:4:_ZNSt14numeric_limitsIDsE8digits10E@@GLIBCXX_3.4.11 ++OBJECT:4:_ZNSt14numeric_limitsIDuE10has_denormE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE11round_styleE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE12max_exponentE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE12min_exponentE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE14max_exponent10E@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE14min_exponent10E@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE5radixE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE6digitsE@@GLIBCXX_3.4.26 ++OBJECT:4:_ZNSt14numeric_limitsIDuE8digits10E@@GLIBCXX_3.4.26 + OBJECT:4:_ZNSt14numeric_limitsIaE10has_denormE@@GLIBCXX_3.4 + OBJECT:4:_ZNSt14numeric_limitsIaE11round_styleE@@GLIBCXX_3.4 + OBJECT:4:_ZNSt14numeric_limitsIaE12max_digits10E@@GLIBCXX_3.4.14 +@@ -5125,7 +5568,9 @@ + OBJECT:4:_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21 + OBJECT:4:_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE@@GLIBCXX_3.4.21 + OBJECT:4:_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE@@GLIBCXX_3.4.21 ++OBJECT:4:_ZNSt7codecvtIDiDu11__mbstate_tE2idE@@GLIBCXX_3.4.26 + OBJECT:4:_ZNSt7codecvtIDic11__mbstate_tE2idE@@GLIBCXX_3.4.21 ++OBJECT:4:_ZNSt7codecvtIDsDu11__mbstate_tE2idE@@GLIBCXX_3.4.26 + OBJECT:4:_ZNSt7codecvtIDsc11__mbstate_tE2idE@@GLIBCXX_3.4.21 + OBJECT:4:_ZNSt7codecvtIcc11__mbstate_tE2idE@@GLIBCXX_3.4 + OBJECT:4:_ZNSt7codecvtIwc11__mbstate_tE2idE@@GLIBCXX_3.4 +@@ -5324,6 +5769,7 @@ + OBJECT:8:_ZTIDi@@CXXABI_1.3.3 + OBJECT:8:_ZTIDn@@CXXABI_1.3.5 + OBJECT:8:_ZTIDs@@CXXABI_1.3.3 ++OBJECT:8:_ZTIDu@@CXXABI_1.3.12 + OBJECT:8:_ZTIN10__cxxabiv115__forced_unwindE@@CXXABI_1.3.2 + OBJECT:8:_ZTIN10__cxxabiv119__foreign_exceptionE@@CXXABI_1.3.2 + OBJECT:8:_ZTINSt13__future_base11_State_baseE@@GLIBCXX_3.4.15 +Index: libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1829,6 +1829,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1885,6 +1886,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2060,13 +2062,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4401,6 +4407,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1975,6 +1975,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -2031,6 +2032,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2206,13 +2208,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4635,6 +4641,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1975,6 +1975,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -2031,6 +2032,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2206,13 +2208,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4635,6 +4641,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1829,6 +1829,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1885,6 +1886,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2060,13 +2062,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4402,6 +4408,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt +=================================================================== +--- a/src/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt (.../branches/gcc-9-branch) +@@ -1829,6 +1829,7 @@ + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSEOS0_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem28recursive_directory_iteratoraSERKS0_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem28recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsE@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem4copyERKNS_4pathES2_NS_12copy_optionsERSt10error_code@@GLIBCXX_3.4.26 +@@ -1885,6 +1886,7 @@ + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD1Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorD2Ev@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSEOS1_@@GLIBCXX_3.4.26 ++FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratoraSERKS1_@@GLIBCXX_3.4.27 + FUNC:_ZNSt10filesystem7__cxx1128recursive_directory_iteratorppEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv@@GLIBCXX_3.4.26 + FUNC:_ZNSt10filesystem7__cxx114path14_S_convert_locEPKcS3_RKSt6locale@@GLIBCXX_3.4.26 +@@ -2060,13 +2062,17 @@ + FUNC:_ZNSt12__basic_fileIcED2Ev@@GLIBCXX_3.4 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS4_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1EOS6_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1EOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC1Ev@@GLIBCXX_3.4.26 ++FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEC2Ev@@GLIBCXX_3.4.27 + FUNC:_ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE2EEaSEOS5_@@GLIBCXX_3.4.26 + FUNC:_ZNSt12bad_weak_ptrD0Ev@@GLIBCXX_3.4.15 + FUNC:_ZNSt12bad_weak_ptrD1Ev@@GLIBCXX_3.4.15 +@@ -4402,6 +4408,7 @@ + OBJECT:0:GLIBCXX_3.4.24 + OBJECT:0:GLIBCXX_3.4.25 + OBJECT:0:GLIBCXX_3.4.26 ++OBJECT:0:GLIBCXX_3.4.27 + OBJECT:0:GLIBCXX_3.4.3 + OBJECT:0:GLIBCXX_3.4.4 + OBJECT:0:GLIBCXX_3.4.5 +Index: libstdc++-v3/config/abi/pre/gnu.ver +=================================================================== +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver (.../branches/gcc-9-branch) +@@ -2268,11 +2268,11 @@ + + GLIBCXX_3.4.27 { + +- # __shared_ptr<_Dir>::__shared_ptr() ++ # __shared_ptr<_Dir>::__shared_ptr() (base object ctor) + _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev; + _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev; + +- # __shared_ptr::__shared_ptr() ++ # __shared_ptr::__shared_ptr() (base object ctor) + _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev; + _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2Ev; + +@@ -2282,6 +2282,18 @@ + + } GLIBCXX_3.4.26; + ++GLIBCXX_3.4.28 { ++ ++ # __shared_ptr<_Dir>::__shared_ptr(__shared_ptr&&) (base object ctor) ++ _ZNSt12__shared_ptrINSt10filesystem4_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS4_; ++ _ZNSt12__shared_ptrINSt10filesystem7__cxx114_DirELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS5_; ++ ++ # __shared_ptr::__shared_ptr(__shared_ptr&&) (base object ctor) ++ _ZNSt12__shared_ptrINSt10filesystem28recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS5_; ++ _ZNSt12__shared_ptrINSt10filesystem7__cxx1128recursive_directory_iterator10_Dir_stackELN9__gnu_cxx12_Lock_policyE[012]EEC2EOS6_; ++ ++} GLIBCXX_3.4.27; ++ + # Symbols in the support library (libsupc++) have their own tag. + CXXABI_1.3 { + +Index: libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 (.../tags/gcc_9_2_0_release) ++++ b/src/libstdc++-v3/acinclude.m4 (.../branches/gcc-9-branch) +@@ -3820,7 +3820,7 @@ + fi + + # For libtool versioning info, format is CURRENT:REVISION:AGE +-libtool_VERSION=6:27:0 ++libtool_VERSION=6:28:0 + + # Everything parsed; figure out what files and settings to use. + case $enable_symvers in +Index: libphobos/ChangeLog +=================================================================== +--- a/src/libphobos/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libphobos/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,12 @@ ++2019-10-30 Thomas Schwinge ++ ++ Backport from trunk: ++ ++ 2019-09-03 Bernd Edlinger ++ ++ * testsuite/lib/libphobos.exp (libphobos_init): Add multi-lib libgcc ++ dirs to the ld_library_path var. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libphobos/testsuite/lib/libphobos.exp +=================================================================== +--- a/src/libphobos/testsuite/lib/libphobos.exp (.../tags/gcc_9_2_0_release) ++++ b/src/libphobos/testsuite/lib/libphobos.exp (.../branches/gcc-9-branch) +@@ -170,6 +170,25 @@ + append ld_library_path ":${blddir}/src/.libs" + } + ++ # Compute what needs to be added to the existing LD_LIBRARY_PATH. ++ if {$gccdir != ""} { ++ set compiler ${gccdir}/gdc ++ ++ if { [is_remote host] == 0 && [which $compiler] != 0 } { ++ foreach i "[exec $compiler --print-multi-lib]" { ++ set mldir "" ++ regexp -- "\[a-z0-9=_/\.-\]*;" $i mldir ++ set mldir [string trimright $mldir "\;@"] ++ if { "$mldir" == "." } { ++ continue ++ } ++ if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } { ++ append ld_library_path ":${gccdir}/${mldir}" ++ } ++ } ++ } ++ } ++ + set_ld_library_path_env_vars + + libphobos_maybe_build_wrapper "${objdir}/testglue.o" +Index: contrib/ChangeLog +=================================================================== +--- a/src/contrib/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/contrib/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,7 @@ ++2019-08-16 Uros Bizjak ++ ++ * test_summary: Do not escape "=". ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: contrib/test_summary +=================================================================== +--- a/src/contrib/test_summary (.../tags/gcc_9_2_0_release) ++++ b/src/contrib/test_summary (.../branches/gcc-9-branch) +@@ -127,7 +127,7 @@ + if (lang == "") lang = " "$2" "; else lang = " "; + } + $2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; } +-/\===.*Summary/ { print ""; print; blanks=1; } ++/===.*Summary/ { print ""; print; blanks=1; } + /tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; } + /^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { sub ("\r", ""); print; } + /^using:/ { print ""; print; print ""; } +Index: libgcc/config.host +=================================================================== +--- a/src/libgcc/config.host (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config.host (.../branches/gcc-9-branch) +@@ -1072,12 +1072,12 @@ + md_unwind_header=rs6000/darwin-unwind.h + ;; + esac +- tmake_file="$tmake_file rs6000/t-ibm-ldouble" +- extra_parts="$extra_parts crt2.o" ++ tmake_file="$tmake_file rs6000/t-ppc64-fp rs6000/t-ibm-ldouble" ++ extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o" + ;; + powerpc64-*-darwin*) + tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble" +- extra_parts="$extra_parts crt2.o" ++ extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o" + ;; + powerpc*-*-freebsd*) + tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-savresfgpr rs6000/t-crtstuff rs6000/t-freebsd t-softfp-sfdf t-softfp-excl t-softfp" +Index: libgcc/ChangeLog +=================================================================== +--- a/src/libgcc/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,45 @@ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-07-03 Iain Sandoe ++ ++ * config.host (powerpc-*-darwin*,powerpc64-*-darwin*): Revise crt ++ list. ++ * config/rs6000/t-darwin: Build crt3_2 for older systems. Revise ++ mmacosx-version-min for crts to run across all system versions. ++ * config/rs6000/t-darwin64 (LIB2ADD): Remove. ++ * config/t-darwin: Revise mmacosx-version-min for crts to run across ++ system versions >= 10.4. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-06-25 Iain Sandoe ++ ++ * config.host: Add libef_ppc.a to the extra files for powerpc-darwin. ++ * config/rs6000/t-darwin: (PPC_ENDFILE_SRC, PPC_ENDFILE_OBJS): New. ++ Build objects for the out of line save/restore register functions ++ so that they can be used for any supported Darwin version. ++ * config/t-darwin: Default the build Darwin version to Darwin8 ++ (MacOS 10.4). ++ ++2019-10-15 John David Anglin ++ ++ * config/pa/fptr.c (_dl_read_access_allowed): Change argument to ++ unsigned int. Adjust callers. ++ (__canonicalize_funcptr_for_compare): Change plabel type to volatile ++ unsigned int *. Load relocation offset before function pointer. ++ Add barrier to ensure ordering. ++ ++2019-10-12 John David Anglin ++ ++ * config/pa/lib2funcs.S (__gcc_plt_call): Load branch target to %r21. ++ Load PIC register after branch target. Fix white space. ++ * config/pa/milli64.S ($$dyncall): Separate LINUX and non LINUX ++ implementations. Load PIC register after branch target. Don't ++ clobber function pointer when it points to function descriptor. ++ Use nullification instead of branch in LINUX implementation. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: libgcc/config/t-darwin +=================================================================== +--- a/src/libgcc/config/t-darwin (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/t-darwin (.../branches/gcc-9-branch) +@@ -1,22 +1,16 @@ + # Set this as a minimum (unless overriden by arch t-files) since it's a + # reasonable lowest common denominator that works for all our archs. +-HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.5 ++HOST_LIBGCC2_CFLAGS += -mmacosx-version-min=10.4 + + crt3.o: $(srcdir)/config/darwin-crt3.c +- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< ++ $(crt_compile) -mmacosx-version-min=10.4 -c $< + + crttms.o: $(srcdir)/config/darwin-crt-tm.c +- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DSTART -c $< ++ $(crt_compile) -mmacosx-version-min=10.4 -DSTART -c $< + + crttme.o: $(srcdir)/config/darwin-crt-tm.c +- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -DEND -c $< ++ $(crt_compile) -mmacosx-version-min=10.4 -DEND -c $< + +-# -pipe because there's an assembler bug, 4077127, which causes +-# it to not properly process the first # directive, causing temporary +-# file names to appear in stabs, causing the bootstrap to fail. Using -pipe +-# works around this by not having any temporary file names. +-HOST_LIBGCC2_CFLAGS += -pipe +- + # Use unwind-dw2-fde-darwin + LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \ + $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c +@@ -23,4 +17,4 @@ + + # Patch to __Unwind_Find_Enclosing_Function for Darwin10. + d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c +- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -mmacosx-version-min=10.6 -c $< ++ $(crt_compile) -mmacosx-version-min=10.6 -c $< +Index: libgcc/config/rs6000/t-darwin +=================================================================== +--- a/src/libgcc/config/rs6000/t-darwin (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/rs6000/t-darwin (.../branches/gcc-9-branch) +@@ -1,25 +1,57 @@ +-DARWIN_EXTRA_CRT_BUILD_CFLAGS = -mlongcall -mmacosx-version-min=10.4 + + crt2.o: $(srcdir)/config/rs6000/darwin-crt2.c +- $(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -c $< ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< + ++# The sources for this indicate that there are some parts that ++# don't apply >= 10.4 ++crt3_2.o: $(srcdir)/config/darwin-crt3.c ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< ++ ++# The outlined register save/restore functions need to run anywhere, and ++# they must be leaf functions suitable for use in an endfile. ++ ++PPC_ENDFILE_SRC = \ ++ $(srcdir)/config/rs6000/darwin-gpsave.S \ ++ $(srcdir)/config/rs6000/darwin-fpsave.S \ ++ $(srcdir)/config/rs6000/darwin-vecsave.S ++ ++PPC_ENDFILE_OBJS = \ ++ darwin-gpsave.o \ ++ darwin-fpsave.o \ ++ darwin-vecsave.o ++ ++darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-gpsave.S ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< ++ ++darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-fpsave.S ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< ++ ++darwin-vecsave.o: $(srcdir)/config/rs6000/darwin-vecsave.S ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< ++ ++# We build these into a library, so that they are only linked as needed and not ++# forced into every object. ++ ++libef_ppc.a: $(PPC_ENDFILE_OBJS) ++ $(AR_CREATE_FOR_TARGET) $@ $(PPC_ENDFILE_OBJS) ++ $(RANLIB_FOR_TARGET) $@ ++ ++dw_ppc.o: $(srcdir)/config/rs6000/darwin-world.S ++ $(crt_compile) -mmacosx-version-min=10.1 -c $< ++ + LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \ + $(srcdir)/config/darwin-64.c \ +- $(srcdir)/config/rs6000/darwin-fpsave.S \ +- $(srcdir)/config/rs6000/darwin-gpsave.S \ +- $(srcdir)/config/rs6000/darwin-world.S \ +- $(srcdir)/config/rs6000/ppc64-fp.c ++ $(srcdir)/config/rs6000/darwin-world.S + +-LIB2ADD_ST = \ +- $(srcdir)/config/rs6000/darwin-vecsave.S +- + # The .S files above are designed to run on all processors, even though + # they use AltiVec instructions. + # -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib. +-# -mmacosx-version-min=10.4 is used to provide compatibility for code from +-# earlier OSX versions. +-HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4 + ++HOST_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL ++ ++# Although the default for 10.4 is G3, we need the unwinder to be built ++# with vector support so that the "save/rest_world" outlined functions are ++# correctly invoked. + unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -maltivec + unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec + +Index: libgcc/config/rs6000/t-darwin64 +=================================================================== +--- a/src/libgcc/config/rs6000/t-darwin64 (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/rs6000/t-darwin64 (.../branches/gcc-9-branch) +@@ -1,7 +1 @@ + LIB2_SIDITI_CONV_FUNCS = yes +- +-LIB2ADD = $(srcdir)/config/rs6000/darwin-tramp.S \ +- $(srcdir)/config/darwin-64.c \ +- $(srcdir)/config/rs6000/darwin-fpsave.S \ +- $(srcdir)/config/rs6000/darwin-gpsave.S \ +- $(srcdir)/config/rs6000/darwin-world.S +Index: libgcc/config/pa/milli64.S +=================================================================== +--- a/src/libgcc/config/pa/milli64.S (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/pa/milli64.S (.../branches/gcc-9-branch) +@@ -222,19 +222,26 @@ + .proc + .callinfo millicode + .entry ++#ifdef LINUX ++ extru,<> %r22,30,1,%r0 ; nullify if plabel bit set ++ bv,n %r0(%r22) ; branch to target ++ ldw -2(%r22),%r21 ; load address of target ++ bv %r0(%r21) ; branch to the real target ++ ldw 2(%r22),%r19 ; load new LTP value ++#else + bb,>=,n %r22,30,LREF(1) ; branch if not plabel address +- depi 0,31,2,%r22 ; clear the two least significant bits +- ldw 4(%r22),%r19 ; load new LTP value +- ldw 0(%r22),%r22 ; load address of target ++ ldw -2(%r22),%r21 ; load address of target to r21 ++ ldsid (%sr0,%r21),%r1 ; get the "space ident" selected by r21 ++ ldw 2(%r22),%r19 ; load new LTP value ++ mtsp %r1,%sr0 ; move that space identifier into sr0 ++ be 0(%sr0,%r21) ; branch to the real target ++ stw %r2,-24(%r30) ; save return address into frame marker + LSYM(1) +-#ifdef LINUX +- bv %r0(%r22) ; branch to the real target +-#else + ldsid (%sr0,%r22),%r1 ; get the "space ident" selected by r22 + mtsp %r1,%sr0 ; move that space identifier into sr0 +- be 0(%sr0,%r22) ; branch to the real target ++ be 0(%sr0,%r22) ; branch to the target ++ stw %r2,-24(%r30) ; save return address into frame marker + #endif +- stw %r2,-24(%r30) ; save return address into frame marker + .exit + .procend + #endif +Index: libgcc/config/pa/lib2funcs.S +=================================================================== +--- a/src/libgcc/config/pa/lib2funcs.S (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/pa/lib2funcs.S (.../branches/gcc-9-branch) +@@ -55,13 +55,13 @@ + ; An inline version of dyncall so we don't have to worry + ; about long calls to millicode, PIC and other complexities. + bb,>=,n %r22,30,L$foo +- depi 0,31,2,%r22 +- ldw 4(%r22),%r19 +- ldw 0(%r22),%r22 ++ depi 0,31,2,%r22 ++ ldw 0(%r22),%r21 ++ ldw 4(%r22),%r19 + L$foo +- ldsid (%r22),%r1 +- mtsp %r1,%sr0 +- ble 0(%sr0,%r22) ++ ldsid (%r21),%r1 ++ mtsp %r1,%sr0 ++ ble 0(%sr0,%r21) + copy %r31,%r2 + ldw -8(%r30),%r2 + +Index: libgcc/config/pa/fptr.c +=================================================================== +--- a/src/libgcc/config/pa/fptr.c (.../tags/gcc_9_2_0_release) ++++ b/src/libgcc/config/pa/fptr.c (.../branches/gcc-9-branch) +@@ -53,7 +53,7 @@ + extern unsigned int _GLOBAL_OFFSET_TABLE_; + + static inline int +-_dl_read_access_allowed (unsigned int *addr) ++_dl_read_access_allowed (unsigned int addr) + { + int result; + +@@ -76,7 +76,8 @@ + { + static unsigned int fixup_plabel[2] __attribute__((used)); + fixup_t fixup; +- unsigned int *got, *iptr, *plabel; ++ volatile unsigned int *plabel; ++ unsigned int *got, *iptr, reloc_offset; + int i; + + /* -1 and page 0 are special. -1 is used in crtend to mark the end of +@@ -91,8 +92,8 @@ + to the entry of the PLT stub just before the global offset table. + The second word in the plabel contains the relocation offset for the + function. */ +- plabel = (unsigned int *) ((unsigned int) fptr & ~3); +- if (!_dl_read_access_allowed (plabel)) ++ plabel = (volatile unsigned int *) ((unsigned int) fptr & ~3); ++ if (!_dl_read_access_allowed ((unsigned int)plabel)) + return (unsigned int) fptr; + + /* Load first word of candidate descriptor. It should be a pointer +@@ -99,9 +100,12 @@ + with word alignment and point to memory that can be read. */ + got = (unsigned int *) plabel[0]; + if (((unsigned int) got & 3) != 0 +- || !_dl_read_access_allowed (got)) ++ || !_dl_read_access_allowed ((unsigned int)got)) + return (unsigned int) fptr; + ++ /* We need to load the relocation offset before the function address. */ ++ reloc_offset = plabel[1]; ++ __sync_synchronize(); + got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB); + + /* Return the address of the function if the plabel has been resolved. */ +@@ -137,7 +141,7 @@ + + /* Call fixup to resolve the function address. got[1] contains the + link_map pointer and plabel[1] the relocation offset. */ +- fixup ((struct link_map *) got[1], plabel[1]); ++ fixup ((struct link_map *) got[1], reloc_offset); + + return plabel[0]; + } +Index: gcc/tree-vrp.c +=================================================================== +--- a/src/gcc/tree-vrp.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vrp.c (.../branches/gcc-9-branch) +@@ -1702,9 +1702,7 @@ + { + /* For pointer types, we are really only interested in asserting + whether the expression evaluates to non-NULL. */ +- if (!range_includes_zero_p (&vr0) && !range_includes_zero_p (&vr1)) +- vr->set_nonnull (expr_type); +- else if (range_is_null (&vr0) || range_is_null (&vr1)) ++ if (range_is_null (&vr0) || range_is_null (&vr1)) + vr->set_null (expr_type); + else + vr->set_varying (); +@@ -1772,10 +1770,13 @@ + combine_bound (code, wmin, min_ovf, expr_type, min_op0, min_op1); + combine_bound (code, wmax, max_ovf, expr_type, max_op0, max_op1); + +- /* If we have overflow for the constant part and the resulting +- range will be symbolic, drop to VR_VARYING. */ +- if (((bool)min_ovf && sym_min_op0 != sym_min_op1) +- || ((bool)max_ovf && sym_max_op0 != sym_max_op1)) ++ /* If the resulting range will be symbolic, we need to eliminate any ++ explicit or implicit overflow introduced in the above computation ++ because compare_values could make an incorrect use of it. That's ++ why we require one of the ranges to be a singleton. */ ++ if ((sym_min_op0 != sym_min_op1 || sym_max_op0 != sym_max_op1) ++ && ((bool)min_ovf || (bool)max_ovf ++ || (min_op0 != max_op0 && min_op1 != max_op1))) + { + vr->set_varying (); + return; +@@ -1782,8 +1783,6 @@ + } + + /* Adjust the range for possible overflow. */ +- min = NULL_TREE; +- max = NULL_TREE; + set_value_range_with_overflow (type, min, max, expr_type, + wmin, wmax, min_ovf, max_ovf); + if (type == VR_VARYING) +Index: gcc/c-family/c-warn.c +=================================================================== +--- a/src/gcc/c-family/c-warn.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c-family/c-warn.c (.../branches/gcc-9-branch) +@@ -2784,6 +2784,8 @@ + /* Check alignment of the data member. */ + if (TREE_CODE (field) == FIELD_DECL + && (DECL_PACKED (field) || TYPE_PACKED (TREE_TYPE (field))) ++ /* Ignore FIELDs not laid out yet. */ ++ && DECL_FIELD_OFFSET (field) + && (!rvalue || TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE)) + { + /* Check the expected alignment against the field alignment. */ +Index: gcc/c-family/ChangeLog +=================================================================== +--- a/src/gcc/c-family/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c-family/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,38 @@ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-10-01 Jakub Jelinek ++ ++ PR c++/91925 ++ * c-warn.c (check_alignment_of_packed_member): Ignore FIELD_DECLs ++ with NULL DECL_FIELD_OFFSET. ++ ++ 2019-09-27 Jakub Jelinek ++ ++ PR c++/88203 ++ * c-common.h (c_omp_predefined_variable): Declare. ++ * c-omp.c (c_omp_predefined_variable): New function. ++ (c_omp_predetermined_sharing): Return OMP_CLAUSE_DEFAULT_SHARED ++ for predefined variables. ++ ++2019-09-02 Martin Liska ++ ++ Backport from mainline ++ 2019-09-02 Martin Liska ++ ++ PR c++/91155 ++ * c-common.c (fname_as_string): Use cxx_printable_name for ++ __PRETTY_FUNCTION__ same as was used before r265711. ++ ++2019-08-31 Iain Sandoe ++ ++ Backport from mainline ++ 2019-08-23 Iain Sandoe ++ ++ PR pch/61250 ++ * c-lex.c (c_lex_with_flags): Don't call ++ c_common_no_more_pch () from here. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/c-family/c-lex.c +=================================================================== +--- a/src/gcc/c-family/c-lex.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c-family/c-lex.c (.../branches/gcc-9-branch) +@@ -394,7 +394,6 @@ + c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, + int lex_flags) + { +- static bool no_more_pch; + const cpp_token *tok; + enum cpp_ttype type; + unsigned char add_flags = 0; +@@ -628,12 +627,6 @@ + if (cpp_flags) + *cpp_flags = tok->flags | add_flags; + +- if (!no_more_pch) +- { +- no_more_pch = true; +- c_common_no_more_pch (); +- } +- + timevar_pop (TV_CPP); + + return type; +Index: gcc/c-family/c-omp.c +=================================================================== +--- a/src/gcc/c-family/c-omp.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c-family/c-omp.c (.../branches/gcc-9-branch) +@@ -2023,6 +2023,25 @@ + } + } + ++/* Return true for __func__ and similar function-local predefined ++ variables (which are in OpenMP predetermined shared, allowed in ++ shared/firstprivate clauses). */ ++ ++bool ++c_omp_predefined_variable (tree decl) ++{ ++ if (VAR_P (decl) ++ && DECL_ARTIFICIAL (decl) ++ && TREE_READONLY (decl) ++ && TREE_STATIC (decl) ++ && DECL_NAME (decl) ++ && (DECL_NAME (decl) == ridpointers[RID_C99_FUNCTION_NAME] ++ || DECL_NAME (decl) == ridpointers[RID_FUNCTION_NAME] ++ || DECL_NAME (decl) == ridpointers[RID_PRETTY_FUNCTION_NAME])) ++ return true; ++ return false; ++} ++ + /* True if OpenMP sharing attribute of DECL is predetermined. */ + + enum omp_clause_default_kind +@@ -2036,5 +2055,8 @@ + && INTEGRAL_TYPE_P (TREE_TYPE (decl))) + return OMP_CLAUSE_DEFAULT_SHARED; + ++ if (c_omp_predefined_variable (decl)) ++ return OMP_CLAUSE_DEFAULT_SHARED; ++ + return OMP_CLAUSE_DEFAULT_UNSPECIFIED; + } +Index: gcc/c-family/c-common.h +=================================================================== +--- a/src/gcc/c-family/c-common.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c-family/c-common.h (.../branches/gcc-9-branch) +@@ -1184,6 +1184,7 @@ + tree, tree *); + extern tree c_omp_declare_simd_clauses_to_numbers (tree, tree); + extern void c_omp_declare_simd_clauses_to_decls (tree, tree); ++extern bool c_omp_predefined_variable (tree); + extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree); + + /* Return next tree in the chain for chain_next walking of tree nodes. */ +Index: gcc/c/ChangeLog +=================================================================== +--- a/src/gcc/c/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,33 @@ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-09-27 Jakub Jelinek ++ ++ PR c++/88203 ++ * c-parser.c (c_parser_predefined_identifier): New function. ++ (c_parser_postfix_expression): Use it. ++ (c_parser_omp_variable_list): Parse predefined identifiers. ++ * c-typeck.c (c_finish_omp_clauses): Allow predefined variables ++ in shared and firstprivate clauses, even when they are predetermined ++ shared. ++ ++ 2019-08-09 Jakub Jelinek ++ ++ PR c/91401 ++ * c-parser.c (c_parser_omp_clause_dist_schedule): Fix up typos in the ++ check_no_duplicate_clause call. Comment it out, instead emit a ++ warning for duplicate dist_schedule clauses. ++ ++2019-08-31 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-08-23 Iain Sandoe ++ ++ PR pch/61250 ++ * c-parser.c (c_parse_file): Call c_common_no_more_pch () ++ after determining that the first token is not ++ PRAGMA_GCC_PCH_PREPROCESS. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/c/c-parser.c +=================================================================== +--- a/src/gcc/c/c-parser.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c/c-parser.c (.../branches/gcc-9-branch) +@@ -8012,6 +8012,41 @@ + tgmath_fixed, tgmath_real, tgmath_complex + }; + ++/* Helper function for c_parser_postfix_expression. Parse predefined ++ identifiers. */ ++ ++static struct c_expr ++c_parser_predefined_identifier (c_parser *parser) ++{ ++ location_t loc = c_parser_peek_token (parser)->location; ++ switch (c_parser_peek_token (parser)->keyword) ++ { ++ case RID_FUNCTION_NAME: ++ pedwarn (loc, OPT_Wpedantic, "ISO C does not support %qs predefined " ++ "identifier", "__FUNCTION__"); ++ break; ++ case RID_PRETTY_FUNCTION_NAME: ++ pedwarn (loc, OPT_Wpedantic, "ISO C does not support %qs predefined " ++ "identifier", "__PRETTY_FUNCTION__"); ++ break; ++ case RID_C99_FUNCTION_NAME: ++ pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support " ++ "%<__func__%> predefined identifier"); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ ++ struct c_expr expr; ++ expr.original_code = ERROR_MARK; ++ expr.original_type = NULL; ++ expr.value = fname_decl (loc, c_parser_peek_token (parser)->keyword, ++ c_parser_peek_token (parser)->value); ++ set_c_expr_source_range (&expr, loc, loc); ++ c_parser_consume_token (parser); ++ return expr; ++} ++ + /* Parse a postfix expression (C90 6.3.1-6.3.2, C99 6.5.1-6.5.2, + C11 6.5.1-6.5.2). Compound literals aren't handled here; callers have to + call c_parser_postfix_expression_after_paren_type on encountering them. +@@ -8232,31 +8267,9 @@ + switch (c_parser_peek_token (parser)->keyword) + { + case RID_FUNCTION_NAME: +- pedwarn (loc, OPT_Wpedantic, "ISO C does not support " +- "%<__FUNCTION__%> predefined identifier"); +- expr.value = fname_decl (loc, +- c_parser_peek_token (parser)->keyword, +- c_parser_peek_token (parser)->value); +- set_c_expr_source_range (&expr, loc, loc); +- c_parser_consume_token (parser); +- break; + case RID_PRETTY_FUNCTION_NAME: +- pedwarn (loc, OPT_Wpedantic, "ISO C does not support " +- "%<__PRETTY_FUNCTION__%> predefined identifier"); +- expr.value = fname_decl (loc, +- c_parser_peek_token (parser)->keyword, +- c_parser_peek_token (parser)->value); +- set_c_expr_source_range (&expr, loc, loc); +- c_parser_consume_token (parser); +- break; + case RID_C99_FUNCTION_NAME: +- pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not support " +- "%<__func__%> predefined identifier"); +- expr.value = fname_decl (loc, +- c_parser_peek_token (parser)->keyword, +- c_parser_peek_token (parser)->value); +- set_c_expr_source_range (&expr, loc, loc); +- c_parser_consume_token (parser); ++ expr = c_parser_predefined_identifier (parser); + break; + case RID_VA_ARG: + { +@@ -11950,15 +11963,9 @@ + { + auto_vec tokens; + unsigned int tokens_avail = 0; ++ bool first = true; + +- if (kind != OMP_CLAUSE_DEPEND +- && (c_parser_next_token_is_not (parser, CPP_NAME) +- || c_parser_peek_token (parser)->id_kind != C_ID_ID)) +- c_parser_error (parser, "expected identifier"); +- +- while (kind == OMP_CLAUSE_DEPEND +- || (c_parser_next_token_is (parser, CPP_NAME) +- && c_parser_peek_token (parser)->id_kind == C_ID_ID)) ++ while (1) + { + bool array_section_p = false; + if (kind == OMP_CLAUSE_DEPEND) +@@ -11979,6 +11986,7 @@ + break; + + c_parser_consume_token (parser); ++ first = false; + continue; + } + +@@ -12029,17 +12037,36 @@ + parser->tokens_avail = tokens.length (); + } + +- tree t = lookup_name (c_parser_peek_token (parser)->value); ++ tree t = NULL_TREE; + +- if (t == NULL_TREE) ++ if (c_parser_next_token_is (parser, CPP_NAME) ++ && c_parser_peek_token (parser)->id_kind == C_ID_ID) + { +- undeclared_variable (c_parser_peek_token (parser)->location, +- c_parser_peek_token (parser)->value); +- t = error_mark_node; ++ t = lookup_name (c_parser_peek_token (parser)->value); ++ ++ if (t == NULL_TREE) ++ { ++ undeclared_variable (c_parser_peek_token (parser)->location, ++ c_parser_peek_token (parser)->value); ++ t = error_mark_node; ++ } ++ ++ c_parser_consume_token (parser); + } ++ else if (c_parser_next_token_is (parser, CPP_KEYWORD) ++ && (c_parser_peek_token (parser)->keyword == RID_FUNCTION_NAME ++ || (c_parser_peek_token (parser)->keyword ++ == RID_PRETTY_FUNCTION_NAME) ++ || (c_parser_peek_token (parser)->keyword ++ == RID_C99_FUNCTION_NAME))) ++ t = c_parser_predefined_identifier (parser).value; ++ else ++ { ++ if (first) ++ c_parser_error (parser, "expected identifier"); ++ break; ++ } + +- c_parser_consume_token (parser); +- + if (t == error_mark_node) + ; + else if (kind != 0) +@@ -12176,6 +12203,7 @@ + break; + + c_parser_consume_token (parser); ++ first = false; + } + + return list; +@@ -14707,7 +14735,10 @@ + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<,%> or %<)%>"); + +- check_no_duplicate_clause (list, OMP_CLAUSE_SCHEDULE, "schedule"); ++ /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, ++ "dist_schedule"); */ ++ if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE)) ++ warning_at (loc, 0, "too many %qs clauses", "dist_schedule"); + if (t == error_mark_node) + return list; + +@@ -19859,6 +19890,8 @@ + + if (c_parser_peek_token (&tparser)->pragma_kind == PRAGMA_GCC_PCH_PREPROCESS) + c_parser_pragma_pch_preprocess (&tparser); ++ else ++ c_common_no_more_pch (); + + the_parser = ggc_alloc (); + *the_parser = tparser; +Index: gcc/c/c-typeck.c +=================================================================== +--- a/src/gcc/c/c-typeck.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/c/c-typeck.c (.../branches/gcc-9-branch) +@@ -14713,6 +14713,13 @@ + case OMP_CLAUSE_DEFAULT_UNSPECIFIED: + break; + case OMP_CLAUSE_DEFAULT_SHARED: ++ if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED ++ || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE) ++ && c_omp_predefined_variable (t)) ++ /* The __func__ variable and similar function-local ++ predefined variables may be listed in a shared or ++ firstprivate clause. */ ++ break; + share_name = "shared"; + break; + case OMP_CLAUSE_DEFAULT_PRIVATE: +Index: gcc/cgraph.c +=================================================================== +--- a/src/gcc/cgraph.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cgraph.c (.../branches/gcc-9-branch) +@@ -1779,8 +1779,6 @@ + void + cgraph_node::remove (void) + { +- cgraph_node *n; +- + if (symtab->ipa_clones_dump_file && symtab->cloned_nodes.contains (this)) + fprintf (symtab->ipa_clones_dump_file, + "Callgraph removal;%s;%d;%s;%d;%d\n", asm_name (), order, +@@ -1797,8 +1795,13 @@ + */ + force_output = false; + forced_by_abi = false; +- for (n = nested; n; n = n->next_nested) ++ cgraph_node *next = nested; ++ for (cgraph_node *n = nested; n; n = next) ++ { ++ next = n->next_nested; + n->origin = NULL; ++ n->next_nested = NULL; ++ } + nested = NULL; + if (origin) + { +@@ -1852,7 +1855,7 @@ + */ + if (symtab->state != LTO_STREAMING) + { +- n = cgraph_node::get (decl); ++ cgraph_node *n = cgraph_node::get (decl); + if (!n + || (!n->clones && !n->clone_of && !n->global.inlined_to + && ((symtab->global_info_ready || in_lto_p) +@@ -3449,6 +3452,30 @@ + e->aux = 0; + } + } ++ ++ if (nested != NULL) ++ { ++ for (cgraph_node *n = nested; n != NULL; n = n->next_nested) ++ { ++ if (n->origin == NULL) ++ { ++ error ("missing origin for a node in a nested list"); ++ error_found = true; ++ } ++ else if (n->origin != this) ++ { ++ error ("origin points to a different parent"); ++ error_found = true; ++ break; ++ } ++ } ++ } ++ if (next_nested != NULL && origin == NULL) ++ { ++ error ("missing origin for a node in a nested list"); ++ error_found = true; ++ } ++ + if (error_found) + { + dump (stderr); +Index: gcc/lra-int.h +=================================================================== +--- a/src/gcc/lra-int.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lra-int.h (.../branches/gcc-9-branch) +@@ -401,6 +401,7 @@ + + /* lra-spills.c: */ + ++extern bool lra_need_for_scratch_reg_p (void); + extern bool lra_need_for_spills_p (void); + extern void lra_spill (void); + extern void lra_final_code_change (void); +Index: gcc/optabs.c +=================================================================== +--- a/src/gcc/optabs.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/optabs.c (.../branches/gcc-9-branch) +@@ -5819,6 +5819,25 @@ + icode = get_vcond_icode (mode, cmp_op_mode, unsignedp); + if (icode == CODE_FOR_nothing) + { ++ if (tcode == LT_EXPR ++ && op0a == op0 ++ && TREE_CODE (op0) == VECTOR_CST) ++ { ++ /* A VEC_COND_EXPR condition could be folded from EQ_EXPR/NE_EXPR ++ into a constant when only get_vcond_eq_icode is supported. ++ Verify < 0 and != 0 behave the same and change it to NE_EXPR. */ ++ unsigned HOST_WIDE_INT nelts; ++ if (!VECTOR_CST_NELTS (op0).is_constant (&nelts)) ++ { ++ if (VECTOR_CST_STEPPED_P (op0)) ++ return 0; ++ nelts = vector_cst_encoded_nelts (op0); ++ } ++ for (unsigned int i = 0; i < nelts; ++i) ++ if (tree_int_cst_sgn (vector_cst_elt (op0, i)) == 1) ++ return 0; ++ tcode = NE_EXPR; ++ } + if (tcode == EQ_EXPR || tcode == NE_EXPR) + icode = get_vcond_eq_icode (mode, cmp_op_mode); + if (icode == CODE_FOR_nothing) +Index: gcc/DATESTAMP +=================================================================== +--- a/src/gcc/DATESTAMP (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/DATESTAMP (.../branches/gcc-9-branch) +@@ -1 +1 @@ +-20190812 ++20191102 +Index: gcc/gimple-streamer-out.c +=================================================================== +--- a/src/gcc/gimple-streamer-out.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/gimple-streamer-out.c (.../branches/gcc-9-branch) +@@ -57,7 +57,7 @@ + /* Emit statement STMT on the main stream of output block OB. */ + + static void +-output_gimple_stmt (struct output_block *ob, gimple *stmt) ++output_gimple_stmt (struct output_block *ob, struct function *fn, gimple *stmt) + { + unsigned i; + enum gimple_code code; +@@ -80,7 +80,7 @@ + as_a (stmt)), + 1); + bp_pack_value (&bp, gimple_has_volatile_ops (stmt), 1); +- hist = gimple_histogram_value (cfun, stmt); ++ hist = gimple_histogram_value (fn, stmt); + bp_pack_value (&bp, hist != NULL, 1); + bp_pack_var_len_unsigned (&bp, stmt->subcode); + +@@ -139,7 +139,7 @@ + so that we do not have to deal with type mismatches on + merged symbols during IL read in. The first operand + of GIMPLE_DEBUG must be a decl, not MEM_REF, though. */ +- if (op && (i || !is_gimple_debug (stmt))) ++ if (!flag_wpa && op && (i || !is_gimple_debug (stmt))) + { + basep = &op; + if (TREE_CODE (*basep) == ADDR_EXPR) +@@ -147,7 +147,7 @@ + while (handled_component_p (*basep)) + basep = &TREE_OPERAND (*basep, 0); + if (VAR_P (*basep) +- && !auto_var_in_fn_p (*basep, current_function_decl) ++ && !auto_var_in_fn_p (*basep, fn->decl) + && !DECL_REGISTER (*basep)) + { + bool volatilep = TREE_THIS_VOLATILE (*basep); +@@ -228,7 +228,7 @@ + print_gimple_stmt (streamer_dump_file, stmt, 0, TDF_SLIM); + } + +- output_gimple_stmt (ob, stmt); ++ output_gimple_stmt (ob, fn, stmt); + + /* Emit the EH region holding STMT. */ + region = lookup_stmt_eh_lp_fn (fn, stmt); +Index: gcc/lra.c +=================================================================== +--- a/src/gcc/lra.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lra.c (.../branches/gcc-9-branch) +@@ -2587,7 +2587,11 @@ + lra_create_live_ranges (lra_reg_spill_p, true); + live_p = true; + if (! lra_need_for_spills_p ()) +- break; ++ { ++ if (lra_need_for_scratch_reg_p ()) ++ continue; ++ break; ++ } + } + lra_spill (); + /* Assignment of stack slots changes elimination offsets for +Index: gcc/tree.c +=================================================================== +--- a/src/gcc/tree.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree.c (.../branches/gcc-9-branch) +@@ -5514,8 +5514,7 @@ + free_lang_data_in_binfo (TYPE_BINFO (type)); + /* We need to preserve link to bases and virtual table for all + polymorphic types to make devirtualization machinery working. */ +- if (!BINFO_VTABLE (TYPE_BINFO (type)) +- || !flag_devirtualize) ++ if (!BINFO_VTABLE (TYPE_BINFO (type))) + TYPE_BINFO (type) = NULL; + } + } +@@ -5937,8 +5936,9 @@ + { + for (tree *tem = &BLOCK_VARS (t); *tem; ) + { +- if (TREE_CODE (*tem) != VAR_DECL +- || !auto_var_in_fn_p (*tem, DECL_CONTEXT (*tem))) ++ if (TREE_CODE (*tem) != LABEL_DECL ++ && (TREE_CODE (*tem) != VAR_DECL ++ || !auto_var_in_fn_p (*tem, DECL_CONTEXT (*tem)))) + { + gcc_assert (TREE_CODE (*tem) != RESULT_DECL + && TREE_CODE (*tem) != PARM_DECL); +@@ -6107,6 +6107,13 @@ + { + tree arg = gimple_op (stmt, i); + find_decls_types (arg, fld); ++ /* find_decls_types doesn't walk TREE_PURPOSE of TREE_LISTs, ++ which we need for asm stmts. */ ++ if (arg ++ && TREE_CODE (arg) == TREE_LIST ++ && TREE_PURPOSE (arg) ++ && gimple_code (stmt) == GIMPLE_ASM) ++ find_decls_types (TREE_PURPOSE (arg), fld); + } + } + } +@@ -11357,6 +11364,73 @@ + } + } + ++/* Given an initializer INIT for a TYPE, return true if INIT is zero ++ so that it can be replaced by value initialization. This function ++ distinguishes betwen empty strings as initializers for arrays and ++ for pointers (which make it return false). */ ++ ++bool ++type_initializer_zero_p (tree type, tree init) ++{ ++ if (type == error_mark_node || init == error_mark_node) ++ return false; ++ ++ STRIP_NOPS (init); ++ ++ if (POINTER_TYPE_P (type)) ++ return TREE_CODE (init) != STRING_CST && initializer_zerop (init); ++ ++ if (TREE_CODE (init) != CONSTRUCTOR) ++ return initializer_zerop (init); ++ ++ if (TREE_CODE (type) == ARRAY_TYPE) ++ { ++ tree elt_type = TREE_TYPE (type); ++ elt_type = TYPE_MAIN_VARIANT (elt_type); ++ if (elt_type == char_type_node) ++ return initializer_zerop (init); ++ ++ tree elt_init; ++ unsigned HOST_WIDE_INT i; ++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, elt_init) ++ if (!type_initializer_zero_p (elt_type, elt_init)) ++ return false; ++ return true; ++ } ++ ++ if (TREE_CODE (type) != RECORD_TYPE) ++ return initializer_zerop (init); ++ ++ tree fld = TYPE_FIELDS (type); ++ ++ tree fld_init; ++ unsigned HOST_WIDE_INT i; ++ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), i, fld_init) ++ { ++ /* Advance to the next member, skipping over everything that ++ canot be initialized (including unnamed bit-fields). */ ++ while (TREE_CODE (fld) != FIELD_DECL ++ || DECL_ARTIFICIAL (fld) ++ || (DECL_BIT_FIELD (fld) && !DECL_NAME (fld))) ++ { ++ fld = DECL_CHAIN (fld); ++ if (!fld) ++ return true; ++ continue; ++ } ++ ++ tree fldtype = TREE_TYPE (fld); ++ if (!type_initializer_zero_p (fldtype, fld_init)) ++ return false; ++ ++ fld = DECL_CHAIN (fld); ++ if (!fld) ++ break; ++ } ++ ++ return true; ++} ++ + /* Check if vector VEC consists of all the equal elements and + that the number of elements corresponds to the type of VEC. + The function returns first element of the vector +Index: gcc/tree.h +=================================================================== +--- a/src/gcc/tree.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree.h (.../branches/gcc-9-branch) +@@ -4525,6 +4525,12 @@ + extern bool initializer_zerop (const_tree, bool * = NULL); + extern bool initializer_each_zero_or_onep (const_tree); + ++/* Analogous to initializer_zerop but also examines the type for ++ which the initializer is being used. Unlike initializer_zerop, ++ considers empty strings to be zero initializers for arrays and ++ non-zero for pointers. */ ++extern bool type_initializer_zero_p (tree, tree); ++ + extern wide_int vector_cst_int_elt (const_tree, unsigned int); + extern tree vector_cst_elt (const_tree, unsigned int); + +Index: gcc/tree-pass.h +=================================================================== +--- a/src/gcc/tree-pass.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-pass.h (.../branches/gcc-9-branch) +@@ -562,6 +562,7 @@ + extern rtl_opt_pass *make_pass_initialize_regs (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_combine (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_if_after_combine (gcc::context *ctxt); ++extern rtl_opt_pass *make_pass_jump_after_combine (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_ree (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_partition_blocks (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_match_asm_constraints (gcc::context *ctxt); +@@ -579,7 +580,6 @@ + extern rtl_opt_pass *make_pass_branch_prob (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_value_profile_transformations (gcc::context + *ctxt); +-extern rtl_opt_pass *make_pass_postreload_jump (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_postreload_cse (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_gcse2 (gcc::context *ctxt); + extern rtl_opt_pass *make_pass_split_after_reload (gcc::context *ctxt); +Index: gcc/ipa-cp.c +=================================================================== +--- a/src/gcc/ipa-cp.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ipa-cp.c (.../branches/gcc-9-branch) +@@ -5190,4 +5190,5 @@ + max_count = profile_count::uninitialized (); + overall_size = 0; + max_new_size = 0; ++ ipcp_free_transformation_sum (); + } +Index: gcc/rtlanal.c +=================================================================== +--- a/src/gcc/rtlanal.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/rtlanal.c (.../branches/gcc-9-branch) +@@ -4793,7 +4793,7 @@ + || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND + ? val_signbit_known_set_p (inner_mode, nonzero) + : extend_op != ZERO_EXTEND) +- || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x)))) ++ || !MEM_P (SUBREG_REG (x))) + && xmode_width > inner_width) + nonzero + |= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode)); +Index: gcc/builtins.c +=================================================================== +--- a/src/gcc/builtins.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/builtins.c (.../branches/gcc-9-branch) +@@ -11236,3 +11236,90 @@ + *p = (char)tree_to_uhwi (t); + return true; + } ++ ++/* Return true if the builtin DECL is implemented in a standard library. ++ Otherwise returns false which doesn't guarantee it is not (thus the list of ++ handled builtins below may be incomplete). */ ++ ++bool ++builtin_with_linkage_p (tree decl) ++{ ++ if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL) ++ switch (DECL_FUNCTION_CODE (decl)) ++ { ++ CASE_FLT_FN (BUILT_IN_ACOS): ++ CASE_FLT_FN (BUILT_IN_ACOSH): ++ CASE_FLT_FN (BUILT_IN_ASIN): ++ CASE_FLT_FN (BUILT_IN_ASINH): ++ CASE_FLT_FN (BUILT_IN_ATAN): ++ CASE_FLT_FN (BUILT_IN_ATANH): ++ CASE_FLT_FN (BUILT_IN_ATAN2): ++ CASE_FLT_FN (BUILT_IN_CBRT): ++ CASE_FLT_FN (BUILT_IN_CEIL): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_CEIL): ++ CASE_FLT_FN (BUILT_IN_COPYSIGN): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_COPYSIGN): ++ CASE_FLT_FN (BUILT_IN_COS): ++ CASE_FLT_FN (BUILT_IN_COSH): ++ CASE_FLT_FN (BUILT_IN_ERF): ++ CASE_FLT_FN (BUILT_IN_ERFC): ++ CASE_FLT_FN (BUILT_IN_EXP): ++ CASE_FLT_FN (BUILT_IN_EXP2): ++ CASE_FLT_FN (BUILT_IN_EXPM1): ++ CASE_FLT_FN (BUILT_IN_FABS): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FABS): ++ CASE_FLT_FN (BUILT_IN_FDIM): ++ CASE_FLT_FN (BUILT_IN_FLOOR): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FLOOR): ++ CASE_FLT_FN (BUILT_IN_FMA): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMA): ++ CASE_FLT_FN (BUILT_IN_FMAX): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMAX): ++ CASE_FLT_FN (BUILT_IN_FMIN): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMIN): ++ CASE_FLT_FN (BUILT_IN_FMOD): ++ CASE_FLT_FN (BUILT_IN_FREXP): ++ CASE_FLT_FN (BUILT_IN_HYPOT): ++ CASE_FLT_FN (BUILT_IN_ILOGB): ++ CASE_FLT_FN (BUILT_IN_LDEXP): ++ CASE_FLT_FN (BUILT_IN_LGAMMA): ++ CASE_FLT_FN (BUILT_IN_LLRINT): ++ CASE_FLT_FN (BUILT_IN_LLROUND): ++ CASE_FLT_FN (BUILT_IN_LOG): ++ CASE_FLT_FN (BUILT_IN_LOG10): ++ CASE_FLT_FN (BUILT_IN_LOG1P): ++ CASE_FLT_FN (BUILT_IN_LOG2): ++ CASE_FLT_FN (BUILT_IN_LOGB): ++ CASE_FLT_FN (BUILT_IN_LRINT): ++ CASE_FLT_FN (BUILT_IN_LROUND): ++ CASE_FLT_FN (BUILT_IN_MODF): ++ CASE_FLT_FN (BUILT_IN_NAN): ++ CASE_FLT_FN (BUILT_IN_NEARBYINT): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_NEARBYINT): ++ CASE_FLT_FN (BUILT_IN_NEXTAFTER): ++ CASE_FLT_FN (BUILT_IN_NEXTTOWARD): ++ CASE_FLT_FN (BUILT_IN_POW): ++ CASE_FLT_FN (BUILT_IN_REMAINDER): ++ CASE_FLT_FN (BUILT_IN_REMQUO): ++ CASE_FLT_FN (BUILT_IN_RINT): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT): ++ CASE_FLT_FN (BUILT_IN_ROUND): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND): ++ CASE_FLT_FN (BUILT_IN_SCALBLN): ++ CASE_FLT_FN (BUILT_IN_SCALBN): ++ CASE_FLT_FN (BUILT_IN_SIN): ++ CASE_FLT_FN (BUILT_IN_SINH): ++ CASE_FLT_FN (BUILT_IN_SINCOS): ++ CASE_FLT_FN (BUILT_IN_SQRT): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_SQRT): ++ CASE_FLT_FN (BUILT_IN_TAN): ++ CASE_FLT_FN (BUILT_IN_TANH): ++ CASE_FLT_FN (BUILT_IN_TGAMMA): ++ CASE_FLT_FN (BUILT_IN_TRUNC): ++ CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC): ++ return true; ++ default: ++ break; ++ } ++ return false; ++} +Index: gcc/builtins.h +=================================================================== +--- a/src/gcc/builtins.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/builtins.h (.../branches/gcc-9-branch) +@@ -150,5 +150,6 @@ + + extern void warn_string_no_nul (location_t, const char *, tree, tree); + extern tree unterminated_array (tree, tree * = NULL, bool * = NULL); ++extern bool builtin_with_linkage_p (tree); + + #endif /* GCC_BUILTINS_H */ +Index: gcc/generic-match-head.c +=================================================================== +--- a/src/gcc/generic-match-head.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/generic-match-head.c (.../branches/gcc-9-branch) +@@ -28,6 +28,7 @@ + #include "ssa.h" + #include "cgraph.h" + #include "fold-const.h" ++#include "fold-const-call.h" + #include "stor-layout.h" + #include "tree-dfa.h" + #include "builtins.h" +Index: gcc/fold-const.c +=================================================================== +--- a/src/gcc/fold-const.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fold-const.c (.../branches/gcc-9-branch) +@@ -4935,10 +4935,9 @@ + /* First make sure that arithmetics in this type is valid, then make sure + that it wraps around. */ + if (TREE_CODE (etype) == ENUMERAL_TYPE || TREE_CODE (etype) == BOOLEAN_TYPE) +- etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype), +- TYPE_UNSIGNED (etype)); ++ etype = lang_hooks.types.type_for_size (TYPE_PRECISION (etype), 1); + +- if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_OVERFLOW_WRAPS (etype)) ++ if (TREE_CODE (etype) == INTEGER_TYPE && !TYPE_UNSIGNED (etype)) + { + tree utype, minv, maxv; + +@@ -4956,6 +4955,8 @@ + else + return NULL_TREE; + } ++ else if (POINTER_TYPE_P (etype)) ++ etype = unsigned_type_for (etype); + return etype; + } + +@@ -5046,9 +5047,6 @@ + if (etype == NULL_TREE) + return NULL_TREE; + +- if (POINTER_TYPE_P (etype)) +- etype = unsigned_type_for (etype); +- + high = fold_convert_loc (loc, etype, high); + low = fold_convert_loc (loc, etype, low); + exp = fold_convert_loc (loc, etype, exp); +Index: gcc/lra-spills.c +=================================================================== +--- a/src/gcc/lra-spills.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lra-spills.c (.../branches/gcc-9-branch) +@@ -548,6 +548,19 @@ + } + } + ++/* Return true if we need scratch reg assignments. */ ++bool ++lra_need_for_scratch_reg_p (void) ++{ ++ int i; max_regno = max_reg_num (); ++ ++ for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++) ++ if (lra_reg_info[i].nrefs != 0 && lra_get_regno_hard_regno (i) < 0 ++ && lra_former_scratch_p (i)) ++ return true; ++ return false; ++} ++ + /* Return true if we need to change some pseudos into memory. */ + bool + lra_need_for_spills_p (void) +Index: gcc/tree-ssa-dse.c +=================================================================== +--- a/src/gcc/tree-ssa-dse.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-dse.c (.../branches/gcc-9-branch) +@@ -984,7 +984,7 @@ + { + need_eh_cleanup = BITMAP_ALLOC (NULL); + +- renumber_gimple_stmt_uids (); ++ renumber_gimple_stmt_uids (cfun); + + /* We might consider making this a property of each pass so that it + can be [re]computed on an as-needed basis. Particularly since +Index: gcc/gcov.c +=================================================================== +--- a/src/gcc/gcov.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/gcov.c (.../branches/gcc-9-branch) +@@ -725,10 +725,10 @@ + /* Return true when PATH contains a zero cycle arc count. */ + + static bool +-path_contains_zero_cycle_arc (arc_vector_t &path) ++path_contains_zero_or_negative_cycle_arc (arc_vector_t &path) + { + for (unsigned i = 0; i < path.size (); i++) +- if (path[i]->cs_count == 0) ++ if (path[i]->cs_count <= 0) + return true; + return false; + } +@@ -754,7 +754,7 @@ + { + block_info *w = arc->dst; + if (w < start +- || arc->cs_count == 0 ++ || arc->cs_count <= 0 + || !linfo.has_block (w)) + continue; + +@@ -765,7 +765,7 @@ + handle_cycle (path, count); + loop_found = true; + } +- else if (!path_contains_zero_cycle_arc (path) ++ else if (!path_contains_zero_or_negative_cycle_arc (path) + && find (blocked.begin (), blocked.end (), w) == blocked.end ()) + loop_found |= circuit (w, path, start, blocked, block_lists, linfo, + count); +@@ -780,7 +780,7 @@ + { + block_info *w = arc->dst; + if (w < start +- || arc->cs_count == 0 ++ || arc->cs_count <= 0 + || !linfo.has_block (w)) + continue; + +Index: gcc/tree-ssa-sccvn.c +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-sccvn.c (.../branches/gcc-9-branch) +@@ -132,8 +132,6 @@ + /* There's no BB_EXECUTABLE but we can use BB_VISITED. */ + #define BB_EXECUTABLE BB_VISITED + +-static tree *last_vuse_ptr; +-static vn_lookup_kind vn_walk_kind; + static vn_lookup_kind default_vn_walk_kind; + + /* vn_nary_op hashtable helpers. */ +@@ -1678,18 +1676,33 @@ + return NULL_TREE; + } + ++struct vn_walk_cb_data ++{ ++ vn_walk_cb_data (vn_reference_t vr_, tree *last_vuse_ptr_, ++ vn_lookup_kind vn_walk_kind_, bool tbaa_p_) ++ : vr (vr_), last_vuse_ptr (last_vuse_ptr_), vn_walk_kind (vn_walk_kind_), ++ tbaa_p (tbaa_p_) ++ {} ++ ++ vn_reference_t vr; ++ tree *last_vuse_ptr; ++ vn_lookup_kind vn_walk_kind; ++ bool tbaa_p; ++}; ++ + /* Callback for walk_non_aliased_vuses. Adjusts the vn_reference_t VR_ + with the current VUSE and performs the expression lookup. */ + + static void * +-vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse, void *vr_) ++vn_reference_lookup_2 (ao_ref *op ATTRIBUTE_UNUSED, tree vuse, void *data_) + { +- vn_reference_t vr = (vn_reference_t)vr_; ++ vn_walk_cb_data *data = (vn_walk_cb_data *)data_; ++ vn_reference_t vr = data->vr; + vn_reference_s **slot; + hashval_t hash; + +- if (last_vuse_ptr) +- *last_vuse_ptr = vuse; ++ if (data->last_vuse_ptr) ++ *data->last_vuse_ptr = vuse; + + /* Fixup vuse and hash. */ + if (vr->vuse) +@@ -1959,10 +1972,11 @@ + *DISAMBIGUATE_ONLY is set to true. */ + + static void * +-vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *vr_, ++vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_, + bool *disambiguate_only) + { +- vn_reference_t vr = (vn_reference_t)vr_; ++ vn_walk_cb_data *data = (vn_walk_cb_data *)data_; ++ vn_reference_t vr = data->vr; + gimple *def_stmt = SSA_NAME_DEF_STMT (vuse); + tree base = ao_ref_base (ref); + HOST_WIDE_INT offseti, maxsizei; +@@ -1989,7 +2003,7 @@ + get_alias_set (lhs), + TREE_TYPE (lhs), lhs_ops); + if (lhs_ref_ok +- && !refs_may_alias_p_1 (ref, &lhs_ref, true)) ++ && !refs_may_alias_p_1 (ref, &lhs_ref, data->tbaa_p)) + { + *disambiguate_only = true; + return NULL; +@@ -2005,21 +2019,21 @@ + we find a VN result with exactly the same value as the + possible clobber. In this case we can ignore the clobber + and return the found value. */ +- if (vn_walk_kind == VN_WALKREWRITE ++ if (data->vn_walk_kind == VN_WALKREWRITE + && is_gimple_reg_type (TREE_TYPE (lhs)) + && types_compatible_p (TREE_TYPE (lhs), vr->type) + && ref->ref) + { +- tree *saved_last_vuse_ptr = last_vuse_ptr; ++ tree *saved_last_vuse_ptr = data->last_vuse_ptr; + /* Do not update last_vuse_ptr in vn_reference_lookup_2. */ +- last_vuse_ptr = NULL; ++ data->last_vuse_ptr = NULL; + tree saved_vuse = vr->vuse; + hashval_t saved_hashcode = vr->hashcode; +- void *res = vn_reference_lookup_2 (ref, gimple_vuse (def_stmt), vr); ++ void *res = vn_reference_lookup_2 (ref, gimple_vuse (def_stmt), data); + /* Need to restore vr->vuse and vr->hashcode. */ + vr->vuse = saved_vuse; + vr->hashcode = saved_hashcode; +- last_vuse_ptr = saved_last_vuse_ptr; ++ data->last_vuse_ptr = saved_last_vuse_ptr; + if (res && res != (void *)-1) + { + vn_reference_t vnresult = (vn_reference_t) res; +@@ -2072,7 +2086,9 @@ + } + } + +- if (*disambiguate_only) ++ /* If we are looking for redundant stores do not create new hashtable ++ entries from aliasing defs with made up alias-sets. */ ++ if (*disambiguate_only || !data->tbaa_p) + return (void *)-1; + + /* If we cannot constrain the size of the reference we cannot +@@ -2342,7 +2358,7 @@ + + /* 5) For aggregate copies translate the reference through them if + the copy kills ref. */ +- else if (vn_walk_kind == VN_WALKREWRITE ++ else if (data->vn_walk_kind == VN_WALKREWRITE + && gimple_assign_single_p (def_stmt) + && (DECL_P (gimple_assign_rhs1 (def_stmt)) + || TREE_CODE (gimple_assign_rhs1 (def_stmt)) == MEM_REF +@@ -2462,7 +2478,7 @@ + *ref = r; + + /* Do not update last seen VUSE after translating. */ +- last_vuse_ptr = NULL; ++ data->last_vuse_ptr = NULL; + + /* Keep looking for the adjusted *REF / VR pair. */ + return NULL; +@@ -2470,7 +2486,7 @@ + + /* 6) For memcpy copies translate the reference through them if + the copy kills ref. */ +- else if (vn_walk_kind == VN_WALKREWRITE ++ else if (data->vn_walk_kind == VN_WALKREWRITE + && is_gimple_reg_type (vr->type) + /* ??? Handle BCOPY as well. */ + && (gimple_call_builtin_p (def_stmt, BUILT_IN_MEMCPY) +@@ -2620,7 +2636,7 @@ + *ref = r; + + /* Do not update last seen VUSE after translating. */ +- last_vuse_ptr = NULL; ++ data->last_vuse_ptr = NULL; + + /* Keep looking for the adjusted *REF / VR pair. */ + return NULL; +@@ -2681,13 +2697,13 @@ + { + ao_ref r; + unsigned limit = PARAM_VALUE (PARAM_SCCVN_MAX_ALIAS_QUERIES_PER_ACCESS); +- vn_walk_kind = kind; ++ vn_walk_cb_data data (&vr1, NULL, kind, true); + if (ao_ref_init_from_vn_reference (&r, set, type, vr1.operands)) + *vnresult = +- (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, ++ (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, true, + vn_reference_lookup_2, + vn_reference_lookup_3, +- vuse_valueize, limit, &vr1); ++ vuse_valueize, limit, &data); + gcc_checking_assert (vr1.operands == shared_lookup_references); + } + +@@ -2702,11 +2718,12 @@ + not exist in the hash table or if the result field of the structure + was NULL.. VNRESULT will be filled in with the vn_reference_t + stored in the hashtable if one exists. When TBAA_P is false assume +- we are looking up a store and treat it as having alias-set zero. */ ++ we are looking up a store and treat it as having alias-set zero. ++ *LAST_VUSE_PTR will be updated with the VUSE the value lookup succeeded. */ + + tree + vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind, +- vn_reference_t *vnresult, bool tbaa_p) ++ vn_reference_t *vnresult, bool tbaa_p, tree *last_vuse_ptr) + { + vec operands; + struct vn_reference_s vr1; +@@ -2720,7 +2737,7 @@ + vr1.operands = operands + = valueize_shared_reference_ops_from_ref (op, &valuezied_anything); + vr1.type = TREE_TYPE (op); +- vr1.set = tbaa_p ? get_alias_set (op) : 0; ++ vr1.set = get_alias_set (op); + vr1.hashcode = vn_reference_compute_hash (&vr1); + if ((cst = fully_constant_vn_reference_p (&vr1))) + return cst; +@@ -2737,14 +2754,12 @@ + || !ao_ref_init_from_vn_reference (&r, vr1.set, vr1.type, + vr1.operands)) + ao_ref_init (&r, op); +- if (! tbaa_p) +- r.ref_alias_set = r.base_alias_set = 0; +- vn_walk_kind = kind; ++ vn_walk_cb_data data (&vr1, last_vuse_ptr, kind, tbaa_p); + wvnresult = +- (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, ++ (vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse, tbaa_p, + vn_reference_lookup_2, + vn_reference_lookup_3, +- vuse_valueize, limit, &vr1); ++ vuse_valueize, limit, &data); + gcc_checking_assert (vr1.operands == shared_lookup_references); + if (wvnresult) + { +@@ -4099,10 +4114,8 @@ + tree result; + + last_vuse = gimple_vuse (stmt); +- last_vuse_ptr = &last_vuse; + result = vn_reference_lookup (op, gimple_vuse (stmt), +- default_vn_walk_kind, NULL, true); +- last_vuse_ptr = NULL; ++ default_vn_walk_kind, NULL, true, &last_vuse); + + /* We handle type-punning through unions by value-numbering based + on offset and size of the access. Be prepared to handle a +Index: gcc/tree-ssa-sccvn.h +=================================================================== +--- a/src/gcc/tree-ssa-sccvn.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-sccvn.h (.../branches/gcc-9-branch) +@@ -234,7 +234,8 @@ + tree vn_reference_lookup_pieces (tree, alias_set_type, tree, + vec , + vn_reference_t *, vn_lookup_kind); +-tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *, bool); ++tree vn_reference_lookup (tree, tree, vn_lookup_kind, vn_reference_t *, bool, ++ tree * = NULL); + void vn_reference_lookup_call (gcall *, vn_reference_t *, vn_reference_t); + vn_reference_t vn_reference_insert_pieces (tree, alias_set_type, tree, + vec , +Index: gcc/ChangeLog +=================================================================== +--- a/src/gcc/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,1147 @@ ++2019-11-01 John David Anglin ++ ++ Backport from mainline ++ 2019-10-03 John David Anglin ++ ++ * config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence. ++ (pa_attr_length_call): Adjust length for 64-bit plabel sequence. ++ ++2019-11-01 John David Anglin ++ ++ Backport from mainline ++ 2019-10-03 John David Anglin ++ ++ * config/pa/pa.h (MAX_PCREL17F_OFFSET): Adjust. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-13 Iain Sandoe ++ ++ * config/darwin.c (machopic_indirection_name): Rework the ++ function to emit linker-visible symbols only for indirections ++ in the data section. Clean up the code and update comments. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-09 Iain Sandoe ++ ++ * config/darwin.c (darwin_override_options): Make the check for ++ Objective-C ABI version more specific for 64bit code. ++ ++ Backport from mainline ++ 2019-10-06 Iain Sandoe ++ ++ * config/darwin.c (darwin_override_options): Adjust objective-c ++ ABI version error messages to avoid punctuation and contracted ++ negations. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-07-03 Iain Sandoe ++ ++ * config/darwin.h (REAL_LIBGCC_SPEC): Adjust for earlier Darwin. ++ (STARTFILE_SPEC): Split crt3 into a separate spec. ++ (DARWIN_EXTRA_SPECS): Add crt2 and crt3 spec. ++ (DARWIN_CRT2_SPEC): New. ++ (DARWIN_CRT3_SPEC): New. ++ (MIN_LD64_OMIT_STUBS): Revise to 62.1. ++ * config/rs6000/darwin.h (DARWIN_CRT2_SPEC): Revise conditions. ++ (DARWIN_CRT3_SPEC): New. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-06-27 Iain Sandoe ++ ++ * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the ++ spec. ++ ++ Backport from mainline ++ 2019-06-25 Iain Sandoe ++ ++ * config/rs6000/darwin.h (ENDFILE_SPEC): New. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-06-18 Iain Sandoe ++ ++ * config/darwin.c (darwin_emit_unwind_label): New. ++ (darwin_override_options): Set darwin_emit_unwind_label as needed. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline ++ 2019-08-13 Iain Sandoe ++ ++ * config/darwin.c (machopic_indirect_call_target): Rename symbol stub ++ flag. ++ (darwin_override_options): Likewise. ++ * config/darwin.h: Likewise. ++ * config/darwin.opt: Likewise. ++ * config/i386/i386.c (output_pic_addr_const): Likewise. ++ * config/rs6000/darwin.h: Likewise. ++ * config/rs6000/rs6000.c (rs6000_call_darwin_1): Likewise. ++ * config/i386/darwin.h (TARGET_MACHO_PICSYM_STUBS): Rename to ... ++ ... this TARGET_MACHO_SYMBOL_STUBS. ++ (FUNCTION_PROFILER):Likewise. ++ * config/i386/i386.h: Likewise. ++ ++ Backport from mainline ++ 2019-06-16 Iain Sandoe ++ ++ * config/darwin.c (machopic_indirect_call_target): Use renamed ++ darwin_picsymbol_stubs to decide on output. ++ (darwin_override_options): Handle darwin_picsymbol_stubs. ++ * config/darwin.h (MIN_LD64_OMIT_STUBS): New. ++ (LD64_VERSION): Revise default. ++ * config/darwin.opt: (mpic-symbol-stubs): New option. ++ (darwin_picsymbol_stubs): New variable. ++ * config/i386/darwin.h (TARGET_MACHO_BRANCH_ISLANDS): ++ rename to TARGET_MACHO_PICSYM_STUBS. ++ * config/i386/i386.c (output_pic_addr_const): Likewise. ++ * config/i386/i386.h Likewise. ++ * config/rs6000/darwin.h: Likewise. ++ * config/rs6000/rs6000.c (rs6000_call_darwin_1): Use renamed ++ darwin_picsymbol_stubs. ++ ++2019-10-30 Dragan Mladjenovic ++ ++ Backport from mainline ++ 2019-07-09 Dragan Mladjenovic ++ ++ * cfgcleanup.c (old_insns_match_p): Check if used hard regs set is equal ++ for both call instructions. ++ ++2019-10-30 Thomas Schwinge ++ ++ Backport from trunk: ++ ++ 2019-05-06 Richard Biener ++ ++ * dwarf2out.c (mem_loc_descriptor): Initialize int_mode. ++ ++2019-10-28 UroÅ¡ Bizjak ++ ++ PR target/92225 ++ * config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE4_2 ++ condition for V2DImode. ++ ++2019-10-28 Ilya Leoshkevich ++ ++ Backport from mainline ++ PR rtl-optimization/92007 ++ * cfgcleanup.c (thread_jump): Add an assertion that we don't ++ call it after reload if hot/cold partitioning has been done. ++ (class pass_postreload_jump): Rename to ++ pass_jump_after_combine. ++ (make_pass_postreload_jump): Rename to ++ make_pass_jump_after_combine. ++ * passes.def(pass_postreload_jump): Move before reload, rename ++ to pass_jump_after_combine. ++ * tree-pass.h (make_pass_postreload_jump): Rename to ++ make_pass_jump_after_combine. ++ ++2019-10-28 Peter Bergner ++ Jiufu Guo ++ ++ PR target/70010 ++ * config/rs6000/rs6000.c (rs6000_can_inline_p): Prohibit inlining if ++ the callee explicitly disables some isa_flags the caller is using. ++ ++2019-10-27 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-17 Iain Sandoe ++ ++ PR target/65342 ++ * config/rs6000/darwin.md (movdi_low, movsi_low_st): Delete. ++ (movdi_low_st): Delete. ++ * config/rs6000/rs6000.c ++ (darwin_rs6000_legitimate_lo_sum_const_p): New. ++ (mem_operand_gpr): Validate Mach-O LO_SUM cases separately. ++ * config/rs6000/rs6000.md (movsi_low): Delete. ++ ++2019-10-27 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-12 Iain Sandoe ++ ++ PR target/67183 ++ * config/darwin.c (machopic_indirection): New field to flag ++ non-lazy-symbol-pointers in the data section. ++ (machopic_indirection_name): Compute if an indirection should ++ appear in the data section. ++ (machopic_output_data_section_indirection): New callback split ++ from machopic_output_indirection. ++ (machopic_output_stub_indirection): Likewise. ++ (machopic_output_indirection): Retain the code for non-lazy ++ symbol pointers in their regular section. ++ (machopic_finish): Use the new callbacks to order the indirection ++ output. ++ ++2019-10-27 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-12 Iain Sandoe ++ ++ * config/darwin-protos.h (machopic_finish): Delete. ++ * config/darwin.c (machopic_finish): Make static. ++ ++ Backport from mainline ++ 2019-10-09 Iain Sandoe ++ ++ * config/darwin.c (machopic_indirect_data_reference): Set flag to ++ indicate that the new symbol is an indirection. ++ (machopic_indirect_call_target): Likewise. ++ * config/darwin.h (MACHO_SYMBOL_FLAG_INDIRECTION): New. ++ (MACHO_SYMBOL_INDIRECTION_P): New. ++ (MACHO_SYMBOL_FLAG_STATIC): Adjust bit number. ++ ++ Backport from mainline ++ 2019-10-08 Iain Sandoe ++ ++ * config/darwin.c (machopic_indirect_data_reference): Check for ++ required indirections before making direct access to defined ++ values. ++ (machopic_output_indirection): Place the indirected pointes for ++ required indirections into the non-lazy symbol pointers section. ++ (darwin_encode_section_info): ++ * config/darwin.h (MACHO_SYMBOL_FLAG_MUST_INDIRECT): New. ++ (MACHO_SYMBOL_MUST_INDIRECT_P): New. ++ ++ Backport from mainline ++ 2019-10-07 Iain Sandoe ++ ++ * config/darwin.c (machopic_output_indirection): Don't put ++ hidden symbol indirections into the .data section, use the ++ non-lazy symbol pointers section as normal. ++ (darwin_encode_section_info): Record if a symbol is hidden. ++ * config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New. ++ (MACHO_SYMBOL_HIDDEN_VIS_P): New. ++ ++ Backport from mainline ++ 2019-10-07 Iain Sandoe ++ ++ * config/darwin.c (machopic_symbol_defined_p): Use symbol flag ++ predicates instead of accessing bits directly. ++ (machopic_indirect_call_target): Likewise. ++ (machopic_output_indirection): Likewise. ++ (darwin_encode_section_info): Improve description. Use renamed ++ symbol flags. Use predicate macros for variables and functions. ++ * config/darwin.h: ++ Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE. ++ Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED. ++ Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC. ++ (MACHO_SYMBOL_VARIABLE_P): New. ++ (MACHO_SYMBOL_DEFINED_P):New. ++ (MACHO_SYMBOL_STATIC_P): New. ++ * config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete. ++ (SYMBOL_FLAG_SUBT_DEP): New. ++ * config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New. ++ ++2019-10-25 Jan Hubicka ++ ++ Backport from mainline ++ 2019-10-11 Jan Hubicka ++ * gimple-streamer-out.c (output_gimple_stmt): Add explicit function ++ parameter. ++ * lto-streamer-out.c: Include tree-dfa.h. ++ (output_cfg): Do not use cfun. ++ (lto_prepare_function_for_streaming): New. ++ (output_function): Do not push cfun; do not initialize loop optimizer. ++ * lto-streamer.h (lto_prepare_function_for_streaming): Declare. ++ * passes.c (ipa_write_summaries): Use it. ++ (ipa_write_optimization_summaries): Do not modify bodies. ++ * tree-dfa.c (renumber_gimple_stmt_uids): Add function parameter. ++ * tree.dfa.h (renumber_gimple_stmt_uids): Update prototype. ++ * tree-ssa-dse.c (pass_dse::execute): Update use of ++ renumber_gimple_stmt_uids. ++ * tree-ssa-math-opts.c (pass_optimize_widening_mul::execute): Likewise. ++ ++ 2019-10-12 Jan Hubicka ++ * lto-streamer-out.c (collect_block_tree_leafs): Renumber statements ++ so non-virutal are before virutals. ++ (output_function): Avoid body modifications. ++ ++2019-10-25 Richard Earnshaw ++ ++ Backport from mainline ++ 2019-05-08 Mihail Ionescu ++ Richard Earnshaw ++ PR target/88167 ++ * config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New ++ function. ++ (thumb1_epilogue_unused_call_clobbered_lo_regs): New function. ++ (thumb1_compute_save_core_reg_mask): Don't force a spare work ++ register if both the epilogue and prologue can use call-clobbered ++ regs. ++ (thumb1_unexpanded_epilogue): Use ++ thumb1_epilogue_unused_call_clobbered_lo_regs. Reverse the logic for ++ picking temporaries for restoring high regs to match that of the ++ prologue where possible. ++ (thumb1_expand_prologue): Add any usable call-clobbered low registers to ++ the list of work registers. Detect if the return address is still live ++ at the end of the prologue and avoid using it for a work register if so. ++ If the return address is not live, add LR to the list of pushable regs ++ after the first pass. ++ ++2019-10-25 Jan Hubicka ++ ++ Backport from mainline ++ 2019-10-24 Jan Hubicka ++ * symbols-summary.h (fast_function_summary::release, ++ fast_call_summary::release): Free m_vector. ++ ++2019-10-25 Jan Hubicka ++ ++ Backport from mainline ++ ++ 2019-10-18 Jakub Jelinek ++ PR middle-end/92153 ++ * ggc-page.c (release_pages): Read g->alloc_size before free rather ++ than after it. ++ ++ 2019-10-11 Jan Hubicka ++ * ggc-page.c (release_pages): Output statistics when !quiet_flag. ++ (ggc_collect): Dump later to not interfere with release_page dump. ++ (ggc_trim): New function. ++ * ggc-none.c (ggc_trim): New. ++ * ggc.h (ggc_trim): Declare. ++ ++2019-10-24 Mihail Ionescu ++ ++ Backport from mainline ++ 2019-10-18 Andre Vieira ++ ++ * config/arm/t-multilib: Add new multilib variants and new ++ mappings. ++ ++2019-10-24 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-23 Iain Sandoe ++ * config/rs6000/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Guard ++ against out of range max skip or log values. ++ ++2019-10-23 Peter Bergner ++ ++ Backport from mainline ++ 2019-10-08 Tulio Magno Quites Machado Filho ++ ++ * config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and ++ LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and ++ MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain. ++ ++2019-10-23 Martin Liska ++ ++ Backport from mainline ++ 2019-09-26 Martin Liska ++ ++ PR tree-optimization/91885 ++ * tree-vectorizer.c (try_vectorize_loop_1): ++ Add TODO_update_ssa_only_virtuals similarly to what slp ++ pass does. ++ ++2019-10-23 Eric Botcazou ++ ++ PR tree-optimization/92131 ++ * tree-vrp.c (extract_range_from_plus_minus_expr): If the resulting ++ range would be symbolic, drop to varying for any explicit overflow ++ in the constant part or if neither range is a singleton. ++ ++2019-10-23 Richard Biener ++ ++ Backport from mainline ++ 2019-10-17 Richard Biener ++ ++ PR debug/91887 ++ * dwarf2out.c (gen_formal_parameter_die): Also try to match ++ context_die against a DW_TAG_GNU_formal_parameter_pack parent. ++ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-10-17 Jakub Jelinek ++ ++ PR tree-optimization/92056 ++ * tree-object-size.c (cond_expr_object_size): Return early if then_ ++ processing resulted in unknown size. ++ ++ 2019-10-05 Jakub Jelinek ++ ++ PR tree-optimization/91734 ++ * generic-match-head.c: Include fold-const-call.h. ++ * match.pd (sqrt(x) cmp c): Check the boundary value and ++ in case inexact computation of c*c affects comparison of the boundary, ++ turn LT_EXPR into LE_EXPR, GE_EXPR into GT_EXPR, LE_EXPR into LT_EXPR ++ or GT_EXPR into GE_EXPR. Punt for sqrt comparisons against NaN and ++ for -frounding-math. For c2, try the next smaller or larger floating ++ point constant depending on comparison code and if it has the same ++ sqrt as c2, use it instead of c2. ++ ++ 2019-09-29 Jakub Jelinek ++ ++ PR bootstrap/90543 ++ * optc-save-gen.awk: Fix up printing string option differences. ++ ++ 2019-09-27 Jakub Jelinek ++ ++ PR middle-end/91920 ++ * gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL ++ variables as shared. ++ ++ 2019-09-11 Jakub Jelinek ++ ++ PR tree-optimization/91723 ++ * tree-vect-stmts.c (vectorizable_call): Use types_compatible_p check ++ instead of pointer equality when checking if argument vectypes are ++ the same. ++ ++ 2019-09-07 Jakub Jelinek ++ ++ PR tree-optimization/91665 ++ * tree-vect-loop.c (vectorizable_reduction): Punt if base has type ++ incompatible with the type of PHI result. ++ ++ 2019-09-06 Jakub Jelinek ++ ++ * function.c (assign_parm_find_data_types): Use RECORD_OR_UNION_TYPE_P ++ before testing TYPE_TRANSPARENT_AGGR. ++ * calls.c (initialize_argument_information, load_register_parameters): ++ Likewise. ++ ++ 2019-09-05 Jakub Jelinek ++ ++ PR middle-end/91001 ++ PR middle-end/91105 ++ PR middle-end/91106 ++ * calls.c (load_register_parameters): For TYPE_TRANSPARENT_AGGR ++ types, use type of their first field instead of type of ++ args[i].tree_value. ++ ++ 2019-09-02 Jakub Jelinek ++ ++ PR go/91617 ++ * fold-const.c (range_check_type): For enumeral and boolean ++ type, pass 1 to type_for_size langhook instead of ++ TYPE_UNSIGNED (etype). Return unsigned_type_for result whenever ++ etype isn't TYPE_UNSIGNED INTEGER_TYPE. ++ (build_range_check): Don't call unsigned_type_for for pointer types. ++ * match.pd (X / C1 op C2): Don't call unsigned_type_for on ++ range_check_type result. ++ ++ 2019-09-01 Jakub Jelinek ++ ++ PR middle-end/91623 ++ * optabs.c (expand_vec_cond_expr): If op0 is a VECTOR_CST and only ++ EQ_EXPR/NE_EXPR is supported, verify that op0 only contains ++ zeros or negative elements and use NE_EXPR instead of LT_EXPR against ++ zero vector. ++ ++ PR lto/91572 ++ * tree.c (find_decls_types_in_node): Also walk TREE_PURPOSE of ++ GIMPLE_ASM TREE_LIST operands. ++ ++ 2019-08-29 Jakub Jelinek ++ ++ PR tree-optimization/91351 ++ * tree-cfg.c (generate_range_test): Use range_check_type instead of ++ unsigned_type_for. ++ * tree-cfgcleanup.c (convert_single_case_switch): Punt if ++ range_check_type returns NULL. ++ * tree-switch-conversion.c (switch_conversion::build_one_array): ++ Use range_check_type instead of unsigned_type_for, don't perform ++ linear opt if it returns NULL. ++ (bit_test_cluster::find_bit_tests): Formatting fix. ++ (bit_test_cluster::emit): Use range_check_type instead of ++ unsigned_type_for. ++ (switch_decision_tree::try_switch_expansion): Punt if range_check_type ++ returns NULL. ++ ++2019-10-18 Georg-Johann Lay ++ ++ Backport from 2019-10-18 trunk r277143. ++ ++ PR target/86040 ++ * config/avr/avr.c (avr_out_lpm): Do not shortcut-return. ++ ++2019-10-18 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-05 Iain Sandoe ++ ++ PR target/59888 ++ * config/darwin.c (darwin_rodata_section): Add relocation flag, ++ choose const_data section for constants with relocations. ++ (machopic_select_section): Pass relocation flag to ++ darwin_rodata_section (). ++ ++2019-10-18 Iain Sandoe ++ ++ Backport from mainline ++ 2019-09-21 Iain Sandoe ++ ++ * config/darwin.c (machopic_legitimize_pic_address): Check ++ for lra, rather than reload. ++ ++2019-10-17 John David Anglin ++ ++ * config/pa/pa.c (pa_output_indirect_call): Fix typos in last change. ++ ++2019-10-17 Richard Earnshaw ++ ++ Backport from mainline ++ 2019-05-03 Richard Earnshaw ++ ++ PR target/89400 ++ * config/arm/arm.md (unaligned_loadsi): Add variant for thumb1. ++ Restrict 'all' variant to 32-bit configurations. ++ (unaligned_loadhiu): Likewise. ++ (unaligned_storehi): Likewise. ++ (unaligned_storesi): Likewise. ++ (unaligned_loadhis): Disable when compiling for thumb1. ++ ++2019-10-16 Iain Sandoe ++ ++ Backport from mainline ++ 2019-10-03 Iain Sandoe ++ ++ PR target/87243 ++ * config/darwin-driver.c (maybe_get_sysroot_from_sdkroot): New. ++ (darwin_driver_init): Use the sysroot provided by SDKROOT when that ++ is available and the user has not set one on the command line. ++ ++2019-10-16 Iain Sandoe ++ ++ Backport from mainline ++ 2019-07-03 Iain Sandoe ++ ++ * config/darwin.h (DRIVER_SELF_SPECS): Remove the linker cases. ++ (RDYNAMIC): Rename to, DARWIN_RDYNAMIC. ++ (DARWIN_PIE_SPEC, DARWIN_NOPIE_SPEC): Adjust to remove the Xlinker ++ clauses. ++ (LINK_COMMAND_SPEC_A): Add DARWIN_RDYNAMIC, DARWIN_PIE_SPEC and ++ DARWIN_NOPIE_SPEC. ++ ++ Backport from mainline ++ 2019-06-19 Iain Sandoe ++ ++ * config/darwin.h (DRIVER_SELF_SPECS): Add RDYNAMIC, DARWIN_PIE_SPEC ++ and DARWIN_NOPIE_SPEC. ++ (RDYNAMIC): New, modified from DARWIN_EXPORT_DYNAMIC. ++ (DARWIN_PIE_SPEC): Collate from darwin.h and darwin9.h. ++ (DARWIN_NOPIE_SPEC): Collate from darwin10.h. ++ (DARWIN_NOCOMPACT_UNWIND): New from darwin10.h ++ (DARWIN_EXPORT_DYNAMIC): Delete. ++ * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move no_compact_unwind ++ and pie options processing to darwin.h. ++ * config/darwin9.h (DARWIN_PIE_SPEC): Move pie processing to darwin.h ++ ++2019-10-16 Richard Biener ++ ++ Backport from mainline ++ 2019-10-04 Richard Biener ++ ++ PR lto/91968 ++ * tree.c (find_decls_types_r): Do not remove LABEL_DECLs from ++ BLOCK_VARS. ++ ++ 2019-09-19 Richard Biener ++ ++ PR tree-optimization/91812 ++ * tree-ssa-phiprop.c (propagate_with_phi): Do not replace ++ volatile loads. ++ ++ 2019-09-17 Richard Biener ++ ++ PR debug/91772 ++ * dwarf2out.c (dwarf2out_late_global_decl): If early dwarf ++ was missing generate locations only once. ++ ++ 2019-09-17 Richard Biener ++ ++ PR tree-optimization/91790 ++ * tree-vect-stmts.c (vectorizable_load): For BB vectorization ++ use the correct DR for setting up realignment. ++ ++2019-10-14 Will Schmidt ++ ++ Backport from trunk ++ 2019-09-26 Will Schmidt ++ ++ * config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX, ++ LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI, ++ LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI, ++ LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI, ++ LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI, ++ LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF, ++ LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI, ++ LD_ELEMREV_V16QI): Use the PURE attribute. ++ ++2019-10-10 UroÅ¡ Bizjak ++ ++ PR target/92022 ++ * config/alpha/alpha.c (alpha_handle_trap_shadows): Skip DEBUG_INSN. ++ ++2019-10-10 Oleg Endo ++ ++ Backport from mainline ++ 2019-10-10 Oleg Endo ++ ++ PR target/88630 ++ * config/sh/sh.h (TARGET_FPU_SH4_300): New macro. ++ * config/sh/sh.c (sh_option_override): Enable fsca and fsrra insns ++ also for TARGET_FPU_SH4_300. ++ (sh_emit_mode_set): Check for TARGET_FPU_SH4_300 instead of ++ TARGET_SH4_300. ++ * config/sh/sh.md (toggle_pr): Add TARGET_FPU_SH4_300 condition. ++ (negsf2): Expand to either negsf2_fpscr or negsf2_no_fpscr. ++ (*negsf2_i): Split into ... ++ (negsf2_fpscr, negsf2_no_fpscr): ... these new patterns. ++ (abssf2): Expand to either abssf2_fpsc or abssf2_no_fpsc. ++ (**abssf2_i): Split into ... ++ (abssf2_fpscr, abssf2_no_fpscr): ... these new patterns. ++ (negdf2): Expand to either negdf2_fpscr or negdf2_no_fpscr. ++ (*negdf2_i): Split into ... ++ (negdf2_fpscr, negdf2_no_fpscr): ... these new patterns. ++ (absdf2): Expand to either absdf2_fpscr or absdf2_no_fpsc. ++ (**abssf2_i): Split into ... ++ (absdf2_fpscr, absdf2_no_fpscr): ... these new patterns. ++ ++2019-10-10 Andreas Krebbel ++ ++ Backport from mainline ++ 2019-10-10 Andreas Krebbel ++ ++ * common/config/s390/s390-common.c (PF_ARCH13): Rename to... ++ (PF_Z15): ... this. ++ * config.gcc: Add z15 as option for --with-arch and --with-tune ++ configure switches. ++ * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Add ++ error reporting for unsupported builtins. ++ * config/s390/s390-opts.h (enum processor_type): Rename ++ PROCESSOR_8561_ARCH13 to PROCESSOR_8561_Z15. ++ * config/s390/8561.md: Rename arch13 to z15 throughout the file. ++ * config/s390/driver-native.c (s390_host_detect_local_cpu): ++ Likewise. ++ * config/s390/s390-builtins.def: Likewise. ++ * config/s390/s390.c (processor_table): Add z15 as option and keep arch13 as alternative. ++ (s390_expand_builtin): Add missing check for unsupported builtins. ++ (s390_canonicalize_comparison): Rename TARGET_ARCH13 to TARGET_Z15. ++ (s390_rtx_costs): Likewise. ++ (s390_get_sched_attrmask): Rename arch13 to z15. ++ (s390_get_unit_mask): Likewise. ++ (s390_is_fpd): Likewise. ++ (s390_is_fxd): Likewise. ++ * config/s390/s390.h (enum processor_flags): Likewise. ++ * config/s390/s390.md: Likewise. ++ * config/s390/vector.md: Likewise. ++ * config/s390/vx-builtins.md: Likewise. ++ * config/s390/s390.opt: Add z15 to processor_type value. ++ ++2019-10-07 Bill Schmidt ++ ++ Backport from mainline ++ 2019-10-01 Bill Schmidt ++ ++ PR target/91275 ++ * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap ++ vpmsumd. ++ ++2019-10-05 Andrea Corallo ++ ++ Backport from mainline ++ 2019-10-03 Andrea Corallo ++ * gcc/ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum ++ when finished. ++ * ipa-prop.c (ipcp_free_transformation_sum): New function. ++ * ipa-prop.h (ipcp_free_transformation_sum): Add declaration. ++ ++2019-10-04 Dragan Mladjenovic ++ ++ Backport from mainline ++ 2019-10-03 Dragan Mladjenovic ++ ++ PR target/91769 ++ * config/mips/mips.c (mips_split_move): Use reg_overlap_mentioned_p ++ instead of REGNO equality check on addr.reg. ++ ++2019-10-04 Dragan Mladjenovic ++ ++ Backport from mainline ++ 2019-07-07 Richard Sandiford ++ ++ * config/mips/mips.c (mips_split_move): Zero-initialize addr ++ and check whether addr.reg is nonnull before using it. ++ ++2019-10-02 Bernd Edlinger ++ ++ Backport from mainline ++ ++ 2019-09-13 Bernd Edlinger ++ ++ PR fortran/91716 ++ * trans-array.c (gfc_conv_array_initializer): Always assign the ++ array type of the field to the string constant. ++ ++2019-10-01 Oleg Endo ++ ++ Backport from mainline ++ ++ 2019-10-01 Oleg Endo ++ ++ PR target/88562 ++ * config/sh/sh.c (sh_extending_set_of_reg::use_as_extended_reg): Use ++ sh_check_add_incdec_notes to preserve REG_INC notes when replacing ++ a memory access insn. ++ ++ ++2019-10-01 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2019-09-24 Kyrylo Tkachov ++ ++ * config/aarch64/aarch64.md (mov): Don't call ++ aarch64_split_dimode_const_store on volatile MEM. ++ ++2019-10-01 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2019-09-26 Matt Turner ++ ++ PR driver/69471 ++ * config/aarch64/aarch64.opt (march=): Add Negative(march=). ++ (mtune=): Add Negative(mtune=). ++ (mcpu=): Add Negative(mcpu=). ++ * config/arm/arm.opt: Likewise. ++ ++2019-09-28 Oleg Endo ++ ++ Backport from mainline ++ 2019-09-28 Oleg Endo ++ ++ PR target/86805 ++ * config/sh/sh.c (TARGET_HAVE_SPECULATION_SAFE_VALUE): Define. ++ ++2019-09-28 Oleg Endo ++ ++ Backport from mainline ++ 2019-09-28 Oleg Endo ++ ++ PR target/80672 ++ * config/sh/sh.c (parse_validate_atomic_model_option): Use ++ std::string::compare instead of std::string::find. ++ ++2019-09-25 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2019-08-22 Kyrylo Tkachov ++ ++ * config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32 ++ intrinsics if __ARM_FP. ++ Use __ARM_FEATURE_CRC32 ifdef guard. ++ ++2019-09-23 Max Filippov ++ ++ Backport from mainline ++ 2019-06-18 Max Filippov ++ ++ * config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack ++ pointer adjustment for the case of no callee-saved registers and ++ stack frame bigger than 128 bytes. ++ ++2019-09-22 Iain Sandoe ++ ++ Backport from mainline ++ 2019-06-16 Iain Sandoe ++ ++ * config/darwin.opt (prebind, noprebind, seglinkedit, ++ noseglinkedit): Add RejectNegative. ++ ++ Backport from mainline ++ 2019-06-14 Iain Sandoe ++ ++ * config/darwin.opt: Add RejectNegative where needed, reorder ++ and add minimal functional descriptions. ++ ++2019-09-20 John David Anglin ++ ++ * config/pa/pa.c (pa_trampoline_init): Remove spurious extended ++ character. ++ ++2019-09-20 Andreas Krebbel ++ ++ Backport from mainline ++ 2019-06-06 Andreas Krebbel ++ ++ PR rtl-optimization/88751 ++ * ira.c (ira): Use the number of the actually referenced registers ++ when calculating the threshold. ++ ++2019-09-20 Kito Cheng ++ ++ Backport from mainline ++ 2019-09-18 Jim Wilson ++ ++ PR target/91683 ++ * config/riscv/riscv-protos.h (riscv_split_symbol): New bool parameter. ++ (riscv_move_integer): Likewise. ++ * config/riscv/riscv.c (riscv_split_integer): Pass FALSE for new ++ riscv_move_integer arg. ++ (riscv_legitimize_move): Likewise. ++ (riscv_force_temporary): New parameter in_splitter. Don't call ++ force_reg if true. ++ (riscv_unspec_offset_high): Pass FALSE for new riscv_force_temporary ++ arg. ++ (riscv_add_offset): Likewise. ++ (riscv_split_symbol): New parameter in_splitter. Pass to ++ riscv_force_temporary. ++ (riscv_legitimize_address): Pass FALSE for new riscv_split_symbol ++ arg. ++ (riscv_move_integer): New parameter in_splitter. New local ++ can_create_psuedo. Don't call riscv_split_integer or force_reg when ++ in_splitter TRUE. ++ (riscv_legitimize_const_move): Pass FALSE for new riscv_move_integer, ++ riscv_split_symbol, and riscv_force_temporary args. ++ * config/riscv/riscv.md (low+1): Pass TRUE for new ++ riscv_move_integer arg. ++ (low+2): Pass TRUE for new riscv_split_symbol arg. ++ ++2019-09-20 Eric Botcazou ++ ++ PR target/91269 ++ * config/sparc/sparc.h (HARD_REGNO_CALLER_SAVE_MODE): Define. ++ ++2019-09-19 Kito Cheng ++ ++ Backport from mainline ++ 2019-09-05 Jakub Jelinek ++ Jim Wilson ++ ++ PR target/91635 ++ * config/riscv/riscv.md (zero_extendsidi2, zero_extendhi2, ++ extend2): Don't split if ++ paradoxical_subreg_p (operands[0]). ++ (*lshrsi3_zero_extend_3+1, *lshrsi3_zero_extend_3+2): Add clobber and ++ use as intermediate value. ++ ++2019-09-11 Eric Botcazou ++ ++ PR rtl-optimization/89795 ++ * rtlanal.c (nonzero_bits1) : Do not propagate results from ++ inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set. ++ ++2019-09-09 Jakub Jelinek ++ ++ PR target/87853 ++ * config/i386/emmintrin.h (_mm_cmpeq_epi8): Use casts to __v16qi ++ instead of __v16qs. ++ ++ PR target/91704 ++ * config/i386/avxintrin.h (__v32qs): New typedef. ++ * config/i386/avx2intrin.h (_mm256_cmpgt_epi8): Use casts to __v32qs ++ instead of __v32qi. ++ ++2019-09-04 Wilco Dijkstra ++ ++ Backport from mainline ++ 2019-08-13 Wilco Dijkstra ++ ++ PR target/81800 ++ * gcc/config/aarch64/aarch64.md (lrint): Disable lrint pattern if GPF ++ operand is larger than a long int. ++ ++2019-09-03 Jakub Jelinek ++ ++ PR tree-optimization/91597 ++ * tree-vrp.c (extract_range_from_binary_expr): Remove unsafe ++ BIT_AND_EXPR optimization for pointers, even if both operand ++ ranges don't include NULL, the result can be NULL. ++ ++2019-09-02 Martin Liska ++ ++ Backport from mainline ++ 2019-09-02 Martin Liska ++ ++ PR gcov-profile/91601 ++ * gcov.c (path_contains_zero_cycle_arc): Rename to ... ++ (path_contains_zero_or_negative_cycle_arc): ... this and handle ++ also negative edges. ++ (circuit): Handle also negative edges as they can happen ++ in some situations. ++ ++2019-09-01 Eric Botcazou ++ ++ PR target/91472 ++ * config/sparc/sparc.c (sparc_cannot_force_const_mem): Return true ++ during LRA/reload in PIC mode if the PIC register hasn't been used yet. ++ (sparc_pic_register_p): Test reload_in_progress for consistency's sake. ++ ++2019-08-31 Iain Sandoe ++ ++ Backport from mainline ++ 2019-08-23 Iain Sandoe ++ ++ PR pch/61250 ++ * ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure ++ and issue any diagnostics needed before collecting the pre-PCH ++ state. ++ ++2019-08-30 Segher Boessenkool ++ ++ Backport from trunk ++ 2019-08-22 Segher Boessenkool ++ ++ PR target/91481 ++ * config/rs6000/rs6000.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, ++ and UNSPEC_DARN_RAW. ++ (unspecv): New enumerator values UNSPECV_DARN, UNSPECV_DARN_32, and ++ UNSPECV_DARN_RAW. ++ (darn_32): Use an unspec_volatile, and UNSPECV_DARN_32. ++ (darn_raw): Use an unspec_volatile, and UNSPECV_DARN_RAW. ++ (darn): Use an unspec_volatile, and UNSPECV_DARN. ++ ++2019-08-30 Segher Boessenkool ++ ++ Backport from trunk ++ 2019-08-22 Segher Boessenkool ++ ++ * config/rs6000/altivec.md (unspec): Delete UNSPEC_DARN, UNSPEC_DARN_32, ++ UNSPEC_DARN_RAW, UNSPEC_CMPRB, UNSPEC_CMPRB2, UNSPEC_CMPEQB; move to... ++ * config/rs6000/rs6000.md (unspec): ... here. ++ * config/rs6000/altivec.md (darn_32, darn_raw, darn, cmprb, ++ *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, ++ cmpeqb, *cmpeqb_internal): Delete, move to... ++ * config/rs6000/rs6000.md (darn_32, darn_raw, darn, cmprb, ++ *cmprb_internal, setb_signed, setb_unsigned, cmprb2, *cmprb2_internal, ++ cmpeqb, *cmpeqb_internal): ... here. ++ ++2019-08-30 Richard Biener ++ ++ Backport from mainline ++ 2019-04-29 Richard Biener ++ ++ PR tree-optimization/90278 ++ * tree-ssa-forwprop.c (pass_forwprop::execute): Transfer/clean ++ EH on comparison simplification. ++ ++2019-08-29 Richard Biener ++ ++ PR tree-optimization/91568 ++ * tree-vectorizer.h (_slp_tree::max_nunits): Add. ++ (vect_update_max_nunits): Add overload for poly_uint64. ++ * tree-vect-slp.c (vect_create_new_slp_node): Initialize it. ++ (vect_build_slp_tree): Record max_nunits into the subtree ++ and merge it upwards. ++ (vect_print_slp_tree): Print max_nunits. ++ ++2019-08-28 Richard Biener ++ ++ Backport from mainline ++ 2019-05-27 Richard Biener ++ ++ PR tree-optimization/90637 ++ * tree-ssa-sink.c (statement_sink_location): Honor the ++ computed sink location for single-uses. ++ ++2019-08-26 Xiong Hu Luo ++ ++ Backport r274411 from trunk to gcc-9-branch. ++ 2019-08-14 Xiong Hu Luo ++ ++ PR lto/91287 ++ * builtins.c (builtin_with_linkage_p): New function. ++ * builtins.h (builtin_with_linkage_p): New function. ++ * symtab.c (write_symbol): Remove redundant assert. ++ * lto-streamer-out.c (symtab_node::output_to_lto_symbol_table_p): ++ Remove FIXME and use builtin_with_linkage_p. ++ ++2019-08-25 UroÅ¡ Bizjak ++ ++ PR target/91533 ++ Backport from mainline ++ 2019-06-30 UroÅ¡ Bizjak ++ ++ * config/i386/sse.md (ssse3_abs2): Rename from abs2. ++ * config/i386/i386-builtin.def (__builtin_ia32_pabsb): ++ Use CODE_FOR_ssse3_absv8qi2. ++ (__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2. ++ (__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2. ++ ++2019-08-23 Mihailo Stojanovic ++ ++ Backport from mainline ++ 2019-08-23 Mihailo Stojanovic ++ ++ * config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI ++ machine mode for unspec_volatile operand. ++ ++2019-08-23 Martin Liska ++ ++ PR ipa/91508 ++ Backport from mainline ++ 2019-08-15 Martin Liska ++ ++ PR ipa/91438 ++ * cgraph.c (cgraph_node::remove): When setting ++ n->origin = NULL for all nested functions, reset ++ also next_nested. ++ ++2019-08-23 Martin Liska ++ ++ Backport from mainline ++ 2019-08-15 Martin Liska ++ ++ * cgraph.c (cgraph_node::verify_node): Verify origin, nested ++ and next_nested. ++ ++2019-08-23 Martin Liska ++ ++ Backport from mainline ++ 2019-08-15 Martin Liska ++ ++ PR ipa/91404 ++ * passes.c (order): Remove. ++ (uid_hash_t): Likewise). ++ (remove_cgraph_node_from_order): Remove from set ++ of pointers (cgraph_node *). ++ (insert_cgraph_node_to_order): New. ++ (duplicate_cgraph_node_to_order): New. ++ (do_per_function_toporder): Register all 3 cgraph hooks. ++ Skip removed_nodes now as we know about all of them. ++ ++2019-08-21 Iain Sandoe ++ ++ Backport from mainline ++ 2019-08-18 Iain Sandoe ++ ++ * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts ++ for cpu and machine. Factor 64/32b builtins. ++ ++2019-08-20 Eric Botcazou ++ ++ PR rtl-optimization/91347 ++ * dse.c (scan_insn): Call add_wild_read for non-const/memset tail calls ++ before reload if HARD_FRAME_POINTER_IS_ARG_POINTER. ++ ++2019-08-19 Richard Earnshaw ++ ++ Backport from mainline ++ 2019-09-09 Richard Earnshaw ++ ++ PR target/91386 ++ * config/aarch64/aarch64.c (aarch64_gen_adjusted_ldpstp): Use copy_rtx ++ to preserve the contents of the original insns. ++ ++2019-08-16 Bernd Edlinger ++ ++ Backport from mainline ++ 2019-08-16 Bernd Edlinger ++ ++ PR tree-optimization/91109 ++ * lra-int.h (lra_need_for_scratch_reg_p): Declare. ++ * lra.c (lra): Use lra_need_for_scratch_reg_p. ++ * lra-spills.c (lra_need_for_scratch_reg_p): New function. ++ ++ 2019-08-07 Bernd Edlinger ++ ++ PR tree-optimization/91109 ++ * lra-remat.c (update_scratch_ops): Remove assignment of the ++ hard register. ++ ++2019-08-15 Steve Ellcey ++ ++ Backport from mainline ++ 2019-08-02 Steve Ellcey ++ ++ * omp-simd-clone.c (simd_clone_adjust_return_type): Remove call to ++ build_distinct_type_copy. ++ (simd_clone_adjust_argument_types): Ditto. ++ (simd_clone_adjust): Call build_distinct_type_copy here. ++ (expand_simd_clones): Ditto. ++ ++2019-08-15 Richard Biener ++ ++ PR tree-optimization/91445 ++ Backport from mainline ++ 2019-07-05 Richard Biener ++ ++ PR tree-optimization/91091 ++ * tree-ssa-alias.h (get_continuation_for_phi): Add tbaa_p parameter. ++ (walk_non_aliased_vuses): Likewise. ++ * tree-ssa-alias.c (maybe_skip_until): Pass down tbaa_p. ++ (get_continuation_for_phi): New tbaa_p parameter and pass ++ it down. ++ (walk_non_aliased_vuses): Likewise. ++ * tree-ssa-pre.c (translate_vuse_through_block): Likewise. ++ * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): ++ Likewise. ++ * tree-ssa-sccvn.c (struct vn_walk_cb_data): Add tbaa_p flag. ++ (vn_reference_lookup_3): Handle and pass down tbaa_p flag. ++ (vn_reference_lookup_pieces): Adjust. ++ (vn_reference_lookup): Remove alias-set altering, instead pass ++ down false as tbaa_p. ++ ++ 2019-07-04 Richard Biener ++ ++ * tree-ssa-sccvn.h (vn_reference_lookup): Add last_vuse_ptr ++ argument. ++ * tree-ssa-sccvn.c (last_vuse_ptr, vn_walk_kind): Move ++ globals into... ++ (struct vn_walk_cb_data): New callback data struct. ++ (vn_reference_lookup_2): Adjust. ++ (vn_reference_lookup_3): Likewise. ++ (vn_reference_lookup_pieces): Likewise. ++ (vn_reference_lookup): Likewise, get last_vuse_ptr argument. ++ (visit_reference_op_load): Adjust. ++ ++2019-08-14 Martin Sebor ++ ++ Backport from mainline ++ ++ 2019-08-01 Martin Sebor ++ ++ PR c++/90947 ++ * tree.c (type_initializer_zero_p): Define. ++ * tree.h (type_initializer_zero_p): New function. ++ ++ 2019-08-05 Martin Sebor ++ ++ * doc/extend.texi (Common Variable Attributes): Document alias ++ attribute. ++ ++2019-08-12 Richard Biener ++ ++ Backport from mainline ++ 2019-08-12 Richard Biener ++ ++ PR lto/91375 ++ * tree.c (free_lang_data_in_type): Do not free TYPE_BINFO dependent on ++ flag_devirtualize. ++ ++ 2019-08-12 Richard Biener ++ ++ PR driver/91130 ++ * lto-wrapper.c (get_options_from_collect_gcc_options): Remove ++ lang_mask option, always use CL_DRIVER. ++ (find_and_merge_options): Adjust. ++ (run_gcc): Likewise. ++ ++ 2019-08-07 Richard Earnshaw ++ ++ PR driver/91130 ++ * lto-wrapper.c (find_and_merge_options): Use CL_DRIVER when ++ processing COLLECT_GCC_OPTIONS. ++ (run_gcc): Likewise. ++ ++2019-08-12 Jakub Jelinek ++ ++ * BASE-VER: Set to 9.2.1. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +@@ -513,7 +1657,7 @@ + + 2019-07-11 UroÅ¡ Bizjak + +- Backported from mainline ++ Backport from mainline + 2019-07-06 Richard Sandiford + + * config/i386/sse.md (*andnot3_bcst): Fix VI/VI48_AVX512VL typo. +Index: gcc/testsuite/gcc.target/powerpc/darn-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/darn-3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do compile { target { powerpc*-*-* } } } */ ++/* { dg-skip-if "" { powerpc*-*-aix* } } */ ++/* { dg-options "-O2 -mdejagnu-cpu=power9" } */ ++ ++static int darn32(void) { return __builtin_darn_32(); } ++ ++int four(void) ++{ ++ int sum = 0; ++ int i; ++ for (i = 0; i < 4; i++) ++ sum += darn32(); ++ return sum; ++} ++ ++/* { dg-final { scan-assembler-times {(?n)\mdarn .*,0\M} 4 } } */ +Index: gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pure-builtin-redundant-load.c (.../branches/gcc-9-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target powerpc_vsx_ok } */ ++/* { dg-options "-O2 -fdump-tree-fre-all -mvsx" } */ ++ ++/* Verify we remove a redundant load that occurs both before and after ++we call a vector load builtin. ++This testcase is introduced as we updated a number of our vector load ++built-ins with the attribute of PURE instead of MEM, to indicate that ++those builtins only read from memory, versus reading from and writing ++to the same. ++This means we can identify the redundant load instructions in an earlier ++pass, and optimize them away. */ ++ ++#include ++ ++vector signed short load_data; ++ ++vector signed short foo() ++{ ++ vector signed short r11,r12,r13; ++ r11 = load_data; ++ r12 = vec_xl (0, &load_data[0]); ++ r13 = load_data; ++ return (r11 + r12 + r13); ++} ++ ++vector signed short biz() ++{ ++ vector signed short r21,r22,r23; ++ r21 = load_data; ++ r22 = vec_lvehx (0, &load_data[0]); ++ r23 = load_data; ++ return (r21 + r22 + r23); ++} ++ ++vector signed short bar() ++{ ++ vector signed short r31,r32,r33; ++ r31 = load_data; ++ r32 = vec_lvx (0, &load_data[0]); ++ r33 = load_data; ++ return (r31 + r32 + r33); ++} ++ ++/* { dg-final { scan-tree-dump-times "Removing dead stmt r13_. = load_data;" 1 "fre1" } } */ ++/* { dg-final { scan-tree-dump-times "Removing dead stmt r23_. = load_data;" 1 "fre1" } } */ ++/* { dg-final { scan-tree-dump-times "Removing dead stmt r33_. = load_data;" 1 "fre1" } } */ +Index: gcc/testsuite/gcc.target/powerpc/pr70010.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010.c (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -finline-functions -Wno-psabi -mvsx" } */ ++/* { dg-final { scan-assembler {\mbl \.?vadd_no_vsx\M} } } */ ++ ++typedef int vec_t __attribute__((vector_size(16))); ++ ++static vec_t ++__attribute__((__target__("no-vsx"))) ++vadd_no_vsx (vec_t a, vec_t b) ++{ ++ return a + b; ++} ++ ++vec_t ++__attribute__((__target__("vsx"))) ++call_vadd_no_vsx (vec_t x, vec_t y, vec_t z) ++{ ++ return vadd_no_vsx (x, y) - z; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -flto -mno-vsx" } */ ++/* { dg-require-effective-target lto } */ ++ ++vector int c, a, b; ++ ++static inline void __attribute__ ((__always_inline__, target ("no-vsx"))) ++foo () ++{ ++ c = a + b; ++} ++ ++int ++main () ++{ ++ foo (); ++ c = a + b; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-4.c (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mvsx" } */ ++ ++vector int c, a, b; ++ ++static inline void __attribute__ ((__always_inline__, target ("no-vsx"))) ++foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */ ++{ ++ c = a + b; ++} ++ ++int ++main () ++{ ++ foo (); /* { dg-message "called from here" } */ ++ c = a + b; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr91275.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr91275.c (.../branches/gcc-9-branch) +@@ -0,0 +1,26 @@ ++/* Test that we generate vpmsumd correctly without a swap error. */ ++ ++/* { dg-do run { target { p8vector_hw } } } */ ++/* { dg-options "-O2 -std=gnu11" } */ ++ ++#include ++ ++int main() { ++ ++ const unsigned long long r0l = 0x8e7dfceac070e3a0; ++ vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v; ++ const vector unsigned long long pd ++ = (vector unsigned long long) {0xc2LLU << 56, 0}; ++ ++ v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd); ++ ++#if __LITTLE_ENDIAN__ ++ if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff) ++ __builtin_abort (); ++#else ++ if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff) ++ __builtin_abort (); ++#endif ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -flto -mvsx" } */ ++/* { dg-require-effective-target lto } */ ++ ++vector int c, a, b; ++ ++static inline void __attribute__ ((__always_inline__, target ("no-vsx"))) ++foo () /* { dg-error "inlining failed in call to .* target specific option mismatch" } */ ++{ ++ c = a + b; ++} ++ ++int ++main () ++{ ++ foo (); /* { dg-message "called from here" } */ ++ c = a + b; ++} +Index: gcc/testsuite/gcc.target/powerpc/pr70010-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/powerpc/pr70010-3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -mno-vsx" } */ ++ ++vector int c, a, b; ++ ++static inline void __attribute__ ((__always_inline__, target ("no-vsx"))) ++foo () ++{ ++ c = a + b; ++} ++ ++int ++main () ++{ ++ foo (); ++ c = a + b; ++} +Index: gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++/* Test that using an Armv8-a hard-float target doesn't ++ break CRC intrinsics. */ ++ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_hard_vfp_ok } */ ++/* { dg-options "-mfloat-abi=hard -march=armv8-a+simd+crc" } */ ++ ++#include ++ ++uint32_t ++foo (uint32_t a, uint32_t b) ++{ ++ return __crc32cw (a, b); ++} +Index: gcc/testsuite/gcc.target/arm/pr88167-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb1_ok } */ ++/* { dg-options "-O2 -mthumb" } */ ++ ++void *retaddr; ++ ++void foo (void) { ++ retaddr = __builtin_return_address (0); ++ ++ /* Used for enforcing registers stacking. */ ++ asm volatile ("" : : : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", ++ "r8", "r9", "r10", "r11", "r12"); ++} ++ ++/* { dg-final { scan-assembler-not "mov\tlr," } } */ +Index: gcc/testsuite/gcc.target/arm/pr88167-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/pr88167-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/pr88167-2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* { dg-do run } */ ++/* { dg-options "-O2" } */ ++/* { dg-skip-if "" { ! { arm_thumb1 } } } */ ++ ++int __attribute__((noclone, noinline)) ++foo (int a, long long b) { ++ /* Used for enforcing registers stacking. */ ++ asm volatile ("" : : : "r0", "r1", "r2", "r3", ++ "r8", "r9", "r10", "r11", "r12"); ++ return (int) b; ++} ++ ++int main () ++{ ++ if (foo (1, 0x1000000000000003LL) != 3) ++ __builtin_abort (); ++ __builtin_exit (0); ++} +Index: gcc/testsuite/gcc.target/arm/multilib.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/arm/multilib.exp (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/arm/multilib.exp (.../branches/gcc-9-branch) +@@ -753,6 +753,28 @@ + {-march=armv8-m.main+fp.dp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" + {-march=armv8-m.main+fp+dsp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" + {-march=armv8-m.main+fp.dp+dsp -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp" ++ {-march=armv7-r+fp -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp" ++ {-march=armv7-r+fp -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard" ++ {-march=armv7-r+fp+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp" ++ {-march=armv7-r+fp+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard" ++ {-march=armv7-r+vfpv3-d16-fp16 -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp" ++ {-march=armv7-r+vfpv3-d16-fp16 -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard" ++ {-march=armv7-r+vfpv3-d16-fp16+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7+fp/softfp" ++ {-march=armv7-r+vfpv3-d16-fp16+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7+fp/hard" ++ {-march=armv7-r+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv7-r+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv7-r+fp.sp+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv7-r+fp.sp+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv7-r+vfpv3xd -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv7-r+vfpv3xd -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv7-r+vfpv3xd+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv7-r+vfpv3xd+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv7-r+vfpv3xd-fp16+idiv -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv7-r+vfpv3xd-fp16+idiv -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv8-r+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv8-r+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" ++ {-march=armv8-r+crc+fp.sp -mfpu=auto -mfloat-abi=softfp} "thumb/v7-r+fp.sp/softfp" ++ {-march=armv8-r+crc+fp.sp -mfpu=auto -mfloat-abi=hard} "thumb/v7-r+fp.sp/hard" + } { + check_multi_dir $opts $dir + } +Index: gcc/testsuite/gcc.target/sparc/20161111-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/sparc/20161111-1.c (.../branches/gcc-9-branch) +@@ -14,4 +14,4 @@ + return retval; + } + +-/* { dg-final { scan-assembler-not "and\t%" } } */ ++/* { dg-final { scan-assembler-not "and\t%" { xfail *-*-* } } } */ +Index: gcc/testsuite/gcc.target/mips/get-fcsr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/get-fcsr-3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,9 @@ ++/* { dg-options "-mabi=64 -mhard-float" } */ ++ ++NOMIPS16 unsigned int ++foo (void) ++{ ++ return __builtin_mips_get_fcsr () & 0x1; ++} ++ ++/* { dg-final { scan-assembler "cfc1" } } */ +Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */ ++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */ ++ ++extern void foo (void*); ++ ++extern void bar (void*); ++ ++void ++test (void* p) ++{ ++ if (!p) ++ foo(p); ++ else ++ bar(p); ++} ++ ++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */ ++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */ +Index: gcc/testsuite/gcc.target/mips/pr91769.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/pr91769.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/pr91769.c (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++/* PR target/91769 */ ++/* { dg-do compile } */ ++/* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" "-g" } { "" } } */ ++/* { dg-options "-EL -mgp32 -mhard-float" } */ ++ ++NOCOMPRESSION double ++foo (void) ++{ ++ register double* pf __asm__ ("$a1"); ++ __asm__ __volatile__ ("":"=r"(pf)); ++ double f = *pf; ++ ++ if (f != f) ++ f = -f; ++ return f; ++} ++ ++/* { dg-final { scan-assembler-not "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tldc1\t\\\$.*,0\\(\\\$5\\)" } } */ ++/* { dg-final { scan-assembler "lw\t\\\$4,0\\(\\\$5\\)\n\tlw\t\\\$5,4\\(\\\$5\\)\n\tmtc1\t\\\$4,\\\$.*\n\tmthc1\t\\\$5,\\\$.*" } } */ +Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */ ++/* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */ ++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */ ++ ++static int foo (void* p) { __asm__ (""::"r"(p):"$t0"); return 0; } ++ ++static int bar (void* p) { return 1; } ++ ++int ++test (void* p) ++{ ++ int res = !p ? foo(p) : bar(p); ++ ++ register int tmp __asm__("$t0") = -1; ++ __asm__ (""::"r"(tmp)); ++ ++ return res; ++} ++ ++/* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */ ++/* { dg-final { scan-assembler "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */ ++/* { dg-final { scan-assembler-not "\\.set\tnomacro\n\tjalr\t\\\$25" } } */ +Index: gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,23 @@ ++/* { dg-do compile } */ ++/* { dg-options "-mabicalls -fpic -mno-mips16 -mno-micromips" } */ ++/* { dg-additional-options "-fno-inline -fipa-ra -mcompact-branches=never" } */ ++/* { dg-skip-if "needs codesize optimization" { *-*-* } { "-O0" "-O1" "-O2" "-O3" } { "" } } */ ++ ++static int foo (void* p) { return 0; } ++ ++static int bar (void* p) { return 1; } ++ ++int ++test (void* p) ++{ ++ int res = !p ? foo(p) : bar(p); ++ ++ register int tmp __asm__("$t0") = -1; ++ __asm__ (""::"r"(tmp)); ++ ++ return res; ++} ++ ++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,foo" } } */ ++/* { dg-final { scan-assembler-not "\\\.reloc\t1f,R_MIPS_JALR,bar" } } */ ++/* { dg-final { scan-assembler "\\.set\tnomacro\n\tjalr\t\\\$25" } } */ +Index: gcc/testsuite/gcc.target/riscv/shift-shift-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/riscv/shift-shift-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/riscv/shift-shift-4.c (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv32i -mabi=ilp32 -O2" } */ ++ ++/* One zero-extend shift can be eliminated by modifying the constant in the ++ greater than test. Started working after modifying the splitter ++ lshrsi3_zero_extend_3+1 to use a temporary reg for the first split dest. */ ++int ++sub (int i) ++{ ++ i &= 0x7fffffff; ++ return i > 0x7f800000; ++} ++/* { dg-final { scan-assembler-not "srli" } } */ +Index: gcc/testsuite/gcc.target/riscv/shift-shift-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/riscv/shift-shift-5.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/riscv/shift-shift-5.c (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++/* { dg-do compile } */ ++/* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */ ++ ++/* Fails if lshrsi3_zero_extend_3+1 uses a temp reg which has no REG_DEST ++ note. */ ++unsigned long ++sub (long l) ++{ ++ union u { ++ struct s { int a : 19; unsigned int b : 13; int x; } s; ++ long l; ++ } u; ++ u.l = l; ++ return u.s.b; ++} ++/* { dg-final { scan-assembler "srliw" } } */ +Index: gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++/* Check that storing the 64-bit immediate to a volatile location is done ++ with a single store. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2" } */ ++ ++typedef unsigned long long u64; ++ ++void bar (u64 *x) ++{ ++ *(volatile u64 *)x = 0xabcdef10abcdef10ULL; ++} ++ ++/* { dg-final { scan-assembler-times "str\tx..?, .*" 1 } } */ ++/* { dg-final { scan-assembler-not "str\tw..?, .*" } } */ +Index: gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target ilp32 } */ ++/* { dg-options "-O3 -fno-math-errno -fno-fp-int-builtin-inexact" } */ ++ ++#define TEST(name, float_type, int_type, fn) void f_##name (float_type x) \ ++{ \ ++ volatile int_type b = __builtin_##fn (x); \ ++} ++ ++TEST (dld, double, long, lrint) ++TEST (flf, float , long, lrintf) ++ ++TEST (did, double, int, lrint) ++TEST (fif, float , int, lrintf) ++ ++/* { dg-final { scan-assembler-times "fcvtzs\tw\[0-9\]+, \[d,s\]\[0-9\]+" 2 } } */ ++/* { dg-final { scan-assembler-times "bl\tlrint" 2 } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-1.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr91704.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr91704.c (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++/* PR target/91704 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -funsigned-char -mavx2 -mavx512f -masm=att" } */ ++/* { dg-final { scan-assembler-times "\tvpcmpgtb\t%ymm" 1 } } */ ++/* { dg-final { scan-assembler-not "\tvpsubusb\t" } } */ ++/* { dg-final { scan-assembler-not "\tvpcmpeqb\t" } } */ ++ ++#include ++ ++__m256i ++foo (__m256i x, __m256i y) ++{ ++ return _mm256_cmpgt_epi8 (x, y); ++} +Index: gcc/testsuite/gcc.target/i386/ret-thunk-9.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-9.c (.../branches/gcc-9-branch) +@@ -17,7 +17,7 @@ + /* { dg-final { scan-assembler "_?__x86_return_thunk:" } } */ + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times {\tpause} 2 } } */ + /* { dg-final { scan-assembler-times {\tlfence} 2 } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {\tpause} 1 } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-2.c (.../branches/gcc-9-branch) +@@ -20,5 +20,5 @@ + /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ + + /* Darwin m32 defaults to PIC but common symbols need to be indirected. */ +-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ + +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-2.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c (.../branches/gcc-9-branch) +@@ -17,7 +17,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-3.c (.../branches/gcc-9-branch) +@@ -24,4 +24,4 @@ + + /* For Darwin, we need PIC to allow PIE, but also we must indirect weak symbols so that + they can be indirected. Again, dyld knows how to deal with this. */ +-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-3.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c (.../branches/gcc-9-branch) +@@ -16,7 +16,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler-times {jmp[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler-times {call[ \t]*\.?LIND} 2 } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/pr87853.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr87853.c (.../branches/gcc-9-branch) +@@ -0,0 +1,20 @@ ++/* PR target/87853 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -funsigned-char -msse2 -mno-sse3 -masm=att" } */ ++/* { dg-final { scan-assembler-times "\tpcmpgtb\t%xmm" 2 } } */ ++/* { dg-final { scan-assembler-not "\tpsubusb\t" } } */ ++/* { dg-final { scan-assembler-not "\tpcmpeqb\t" } } */ ++ ++#include ++ ++__m128i ++foo (__m128i x, __m128i y) ++{ ++ return _mm_cmpgt_epi8 (x, y); ++} ++ ++__m128i ++bar (__m128i x, __m128i y) ++{ ++ return _mm_cmplt_epi8 (x, y); ++} +Index: gcc/testsuite/gcc.target/i386/pr32219-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-4.c (.../branches/gcc-9-branch) +@@ -21,4 +21,4 @@ + /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ + + /* Darwin m32 equivalent (indirect and PIC). */ +-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-4.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr92225.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr92225.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr92225.c (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++/* PR target/92225 */ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -ftree-vectorize -msse2 -mno-sse4" } */ ++ ++void a (long); ++ ++unsigned *b; ++ ++void ++c () ++{ ++ long d = 2; ++ int e = 0; ++ ++ for (; e < 1024; e++) ++ if (b[e] > d) ++ d = b[e]; ++ a (d); ++} +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c (.../branches/gcc-9-branch) +@@ -17,7 +17,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-14.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-14.c (.../branches/gcc-9-branch) +@@ -19,6 +19,6 @@ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c (.../branches/gcc-9-branch) +@@ -16,7 +16,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/ret-thunk-15.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/ret-thunk-15.c (.../branches/gcc-9-branch) +@@ -19,6 +19,6 @@ + /* { dg-final { scan-assembler-times {\tlfence} 1 } } */ + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*bar" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_bar} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_bar\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not "pushq\[ \t\]%rax" } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c (.../branches/gcc-9-branch) +@@ -15,7 +15,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ + /* { dg-final { scan-assembler-not {jmp[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-7.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-7.c (.../branches/gcc-9-branch) +@@ -23,4 +23,4 @@ + /* { dg-final { scan-assembler-not "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %eax" { target { ia32 && { ! *-*-darwin* } } } } } */ + + /* Darwin m32 equivalent (indirect and PIC). */ +-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c (.../branches/gcc-9-branch) +@@ -14,7 +14,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {\tpause} } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c (.../branches/gcc-9-branch) +@@ -15,6 +15,6 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "call\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */ +Index: gcc/testsuite/gcc.target/i386/pr32219-8.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr32219-8.c (.../branches/gcc-9-branch) +@@ -21,4 +21,4 @@ + /* { dg-final { scan-assembler "movl\[ \t\]xxx@GOT\\(%\[^,\]*\\), %" { target { ia32 && { ! *-*-darwin* } } } } } */ + + /* Darwin m32 default to PIC but needs indirection for the weak symbol. */ +-/* { dg-final { scan-assembler {movl[ \t]l_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t][Ll]_xxx\$non_lazy_ptr-L1\$pb\(%eax\),[ \t]%eax} { target { ia32 && *-*-darwin* } } } } */ +Index: gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c (.../branches/gcc-9-branch) +@@ -17,7 +17,7 @@ + + /* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*dispatch" { target *-*-linux* } } } */ + /* { dg-final { scan-assembler {movq[ \t]*_dispatch} { target { lp64 && *-*-darwin* } } } } */ +-/* { dg-final { scan-assembler {movl[ \t]*l_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ ++/* { dg-final { scan-assembler {movl[ \t]*[Ll]_dispatch\$non_lazy_ptr-L[0-9]+\$pb} { target { ia32 && *-*-darwin* } } } } */ + /* { dg-final { scan-assembler "jmp\[ \t\]*_?__x86_indirect_thunk_(r|e)ax" } } */ + /* { dg-final { scan-assembler {jmp[ \t]*\.?LIND} } } */ + /* { dg-final { scan-assembler {call[ \t]*\.?LIND} } } */ +Index: gcc/testsuite/gcc.target/i386/pr91623.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.target/i386/pr91623.c (.../branches/gcc-9-branch) +@@ -0,0 +1,32 @@ ++/* PR middle-end/91623 */ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -msse4.1 -mno-sse4.2" } */ ++ ++typedef long long V __attribute__((__vector_size__(16))); ++V e, h; ++int d; ++const int i; ++ ++void foo (void); ++ ++void ++bar (int k, int l) ++{ ++ if (d && 0 <= k - 1 && l) ++ foo (); ++} ++ ++void ++baz (void) ++{ ++ V n = (V) { 1 }; ++ V g = (V) {}; ++ V o = g; ++ for (int f = 0; f < i; ++f) ++ { ++ V a = o == n; ++ h = a; ++ bar (f, i); ++ o = e; ++ } ++} +Index: gcc/testsuite/gfortran.dg/do_subscript_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_3.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_3.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,22 @@ ++! { dg-do compile } ++! PR fortran/91424 ++! Check that only one warning is issued inside blocks, and that ++! warnings are also issued for contained subroutines. ++ ++program main ++ real :: a(5) ++ block ++ integer :: j ++ do j=0, 5 ! { dg-warning "out of bounds" } ++ a(j) = 2. ! { dg-warning "out of bounds" } ++ end do ++ end block ++ call x ++contains ++ subroutine x ++ integer :: i ++ do i=1,6 ! { dg-warning "out of bounds" } ++ a(i) = 2. ! { dg-warning "out of bounds" } ++ end do ++ end subroutine x ++end program main +Index: gcc/testsuite/gfortran.dg/pr91565.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91565.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91565.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++! { dg-do compile } ++! PR fortran/91565 ++! Contributed by Gerhard Steinmetz ++program p ++ integer, parameter :: a(2) = [2,2] ! { dg-error "\(1\)" } ++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "not a permutation" } ++end ++ ++subroutine foo ++ integer, parameter :: a(1) = 1 ! { dg-error "\(1\)" } ++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "are different" } ++end ++ ++subroutine bar ++ integer, parameter :: a(1,2) = 1 ! { dg-error "\(1\)" } ++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "are different" } ++end +Index: gcc/testsuite/gfortran.dg/pr91359_2.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91359_2.f (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91359_2.f (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++! { dg-do run } ++! PR fortran/91359 ++! Orginal code contributed by Brian T. Carcich ++! ++ logical function zero() result(a) ++ goto 2 ++1 return ++2 a = .false. ++ if (.not.a) goto 1 ++ return ++ end ++ ++ program test_zero ++ logical zero ++ if (zero()) stop 'FAIL: zero() returned .TRUE.' ++ stop 'OKAY: zero() returned .FALSE.' ++ end +Index: gcc/testsuite/gfortran.dg/associate_49.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/associate_49.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,34 @@ ++! { dg-do run } ++! ++! Test the fix for PR91588, in which the declaration of 'a' caused ++! an ICE. ++! ++! Contributed by Gerhardt Steinmetz ++! ++program p ++ character(4), parameter :: parm = '7890' ++ associate (z => '1234') ++ block ++ integer(len(z)) :: a ++ if (kind(a) .ne. 4) stop 1 ++ end block ++ end associate ++ associate (z => '123') ++ block ++ integer(len(z)+1) :: a ++ if (kind(a) .ne. 4) stop 2 ++ end block ++ end associate ++ associate (z => 1_8) ++ block ++ integer(kind(z)) :: a ++ if (kind(a) .ne. 8) stop 3 ++ end block ++ end associate ++ associate (z => parm) ++ block ++ integer(len(z)) :: a ++ if (kind(a) .ne. 4) stop 4 ++ end block ++ end associate ++end +Index: gcc/testsuite/gfortran.dg/pr85543.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr85543.f90 (.../branches/gcc-9-branch) +@@ -6,3 +6,4 @@ + real(z()) function f() ! { dg-error "in initialization expression at" } + end + end ++! { dg-prune-output "Bad kind expression for function" } +Index: gcc/testsuite/gfortran.dg/pr91801.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91801.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91801.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/91801 ++! Code contributed by Gerhard Steinmetz ++program p ++ integer, parameter :: a(2) = [2,0] ! { dg-error "Element with a value of" } ++ print *, reshape([1,2,3,4,5,6], [2,3], order=a) ! { dg-error "for the RESHAPE intrinsic near" } ++end +Index: gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_28.f90 (.../branches/gcc-9-branch) +@@ -21,7 +21,7 @@ + + type,abstract,extends(c_base) :: c_derived + contains +- procedure :: f_base => f_derived ! { dg-error "Type mismatch in function result \\(CLASS\\(\\*\\)/CLASS\\(c_base\\)\\)" } ++ procedure :: f_base => f_derived ! { dg-error "Type mismatch in function result" } + end type c_derived + + contains +Index: gcc/testsuite/gfortran.dg/gomp/pr87752.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/gomp/pr87752.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/gomp/pr87752.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++! PR fortran/87752 ++! { dg-do compile } ++! { dg-additional-options "-Ofast" } ++ ++subroutine foo (n, u, v) ++ integer :: n ++ real, pointer :: u(:), v(:) ++ !$omp parallel do simd ++ do i = 1, n ++ u(:) = v(:) ++ end do ++end +Index: gcc/testsuite/gfortran.dg/deferred_character_34.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/deferred_character_34.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/deferred_character_34.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,10 @@ ++! { dg-do run } ++! PR fortran/90561 ++! This used to ICE. ++! Original test case by Gerhard Steinmetz. ++program p ++ character(:), allocatable :: z(:) ++ z = [character(2):: 'ab', 'xy'] ++ z = z(2) ++ if (any(z /= 'xy')) stop 1 ++end +Index: gcc/testsuite/gfortran.dg/pr70754.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr70754.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr70754.f90 (.../branches/gcc-9-branch) +@@ -18,12 +18,13 @@ + integer (ii4), dimension(40,40) :: c + integer i, j + +- do i=1,20 +- b(i,j) = 123 * a(i,j) + 34 * a(i,j+1) & +- + 34 * a(i,j-1) + a(i+1,j+1) & +- + a(i+1,j-1) + a(i-1,j+1) & +- + a(i-1,j-1) +- c(i,j) = 123 ++ j = 10 ++ do i=11,30 ++ b(i,j) = 123 * a(i,j) + 34 * a(i,j+1) & ++ + 34 * a(i,j-1) + a(i+1,j+1) & ++ + a(i+1,j-1) + a(i-1,j+1) & ++ + a(i-1,j-1) ++ c(i,j) = 123 + end do + + where ((xyz(:,:,2) /= 0) .and. (c /= 0)) +Index: gcc/testsuite/gfortran.dg/pr91642.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91642.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91642.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++! { dg-do compile } ++! PR fortran/91642 ++! Code contributed by Gerhard Steinmetz ++program p ++ integer i ++ integer :: iol ++ integer, external :: null ++ i = 0 ++ inquire (iolength=iol) i, null() ++ if (iol == 4) stop 1 ++end ++ ++subroutine q ++ integer i ++ integer :: iol ++ i = 0 ++ inquire (iolength=iol) i, null() ! { dg-error "cannot appear in INQUIRE" } ++ if (iol == 4) stop 1 ++end +Index: gcc/testsuite/gfortran.dg/char_result_mod_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_mod_19.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++! { dg-do run } ++! { dg-additional-sources char_result_19.f90 } ++! ++! Module for char_result_19.f90 ++! Tests fix for PR86248 ++! ++module test_module ++ implicit none ++ public :: func_1 ++ private ++ character(len=*),dimension(0:2),parameter :: darray = (/"el0 ","el11","el2 "/) ++contains ++ function func_1 (func_1_input) result(f) ++ integer, intent(in) :: func_1_input ++ character(len = len_trim (darray(func_1_input))) :: f ++ f = darray(func_1_input) ++ end function func_1 ++end module test_module +Index: gcc/testsuite/gfortran.dg/pr91587.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91587.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91587.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++! { dg-do compile } ++! PR fortran/91587 ++! Code contributed by Gerhard Steinmetz ++program p ++ backspace(err=!) ! { dg-error "Invalid value for" } ++ flush(err=!) ! { dg-error "Invalid value for" } ++ rewind(err=!) ! { dg-error "Invalid value for" } ++end ++ ++subroutine bar ! An other matcher runs, and gives a different error. ++ endfile(err=!) ! { dg-error "Expecting END" } ++end +Index: gcc/testsuite/gfortran.dg/pr78719_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78719_3.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78719_3.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,32 @@ ++! { dg-do compile } ++! PR fortran/78719 ++! Code contributed by Gerhard Steinmetz ++program p ++ ++ type t ++ integer :: n ++ end type ++ ++ class(t) :: g ! { dg-error "must be dummy, allocatable or pointer" } ++ ++ abstract interface ++ subroutine h ++ end ++ end interface ++ ++ procedure(h), pointer :: s ++ ++ s => f ++ call s ++ s => g ! { dg-error "Invalid procedure pointer" } ++ call s ++ ++ contains ++ ++ subroutine f ++ end ++ ++ subroutine g ! { dg-error "has an explicit interface" } ++ end ++ ++end program p ! { dg-error "Syntax error" } +Index: gcc/testsuite/gfortran.dg/typebound_call_22.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03 (.../branches/gcc-9-branch) +@@ -26,4 +26,4 @@ + call x%bar () + end program + +-! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" } } ++! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" { xfail *-*-* } } } +Index: gcc/testsuite/gfortran.dg/use_rename_8.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/use_rename_8.f90 (.../branches/gcc-9-branch) +@@ -19,8 +19,8 @@ + USE MOO, ONLY: X => B + END SUBROUTINE T + +-SUBROUTINE C +- USE MOO, ONLY: C ! { dg-error "is also the name of the current program unit" } ++SUBROUTINE C ! { dg-error "\(1\)" } ++ USE MOO, ONLY: C ! { dg-error "conflicts with the" } + END SUBROUTINE C + + SUBROUTINE D +@@ -36,15 +36,15 @@ + USE MOO, ONLY: X => F + END SUBROUTINE F + +-SUBROUTINE X +- USE MOO, ONLY: X => G ! { dg-error "is also the name of the current program unit" } ++SUBROUTINE X ! { dg-error "\(1\)" } ++ USE MOO, ONLY: X => G ! { dg-error "conflicts with the rename" } + END SUBROUTINE X + +-SUBROUTINE Y +- USE MOO, ONLY: Y => H ! { dg-error "is also the name of the current program unit" } ++SUBROUTINE Y ! { dg-error "\(1\)" } ++ USE MOO, ONLY: Y => H ! { dg-error "conflicts with the rename" } + END SUBROUTINE Y + +-SUBROUTINE Z +- USE MOO, ONLY: Z => I, Z => I ! { dg-error "is also the name of the current program unit" } ++SUBROUTINE Z ! { dg-error "\(1\)" } ++ USE MOO, ONLY: Z => I, Z => I ! { dg-error "conflicts with the rename" } + END SUBROUTINE Z + +Index: gcc/testsuite/gfortran.dg/pr89943_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89943_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89943_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! PR fortran/89943 ++! Code contributed by Alberto Luaces ++module Foo_mod ++ ++ implicit none ++ ++ interface ++ module function runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer runFoo4c ++ integer(c_int32_t) , intent(in) :: ndim ++ end function runFoo4C ++ end interface ++ ++ contains ++ ++end module Foo_mod ++ ++submodule(Foo_mod) Foo_smod ++ ++ contains ++ ++ module function runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer runFoo4c ++ integer(c_int32_t) , intent(in) :: ndim ++ end function runFoo4C ++ ++end submodule Foo_smod ++ +Index: gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++! { dg-do compile } ++! { dg-additional-options "-Wunused-dummy-argument" } ++! PR 91557 - this used to generate a bogus warning ++! Test case by Gerhard Steinmetz ++program p ++ integer :: a, b ++ a = 1 ++ call g ++contains ++ subroutine g ++ integer :: x, y ++ call h (x, y) ++ if ( a > 0 ) y = y - 1 ++ b = y - x + 1 ++ end ++end +Index: gcc/testsuite/gfortran.dg/pr47054_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr47054_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr47054_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,41 @@ ++! { dg-do compile } ++! { dg-options "-fcray-pointer" } ++! PR fortran/47054 ++! Code contributed by Deji Akingunola ++subroutine host_sub(F_su,F_nk) ++ implicit none ++ ++ integer :: F_nk ++ real,dimension(F_nk) :: F_su ++ integer G_ni, G_nj ++ real*8 G_xg_8, G_yg_8 ++ pointer (paxg_8, G_xg_8(G_ni)) ++ pointer (payg_8, G_yg_8(G_nj)) ++ common / G_p / paxg_8,payg_8 ++ common / G / G_ni, G_nj ++ ++ call internal_sub(F_su,F_nk) ++ return ++contains ++ ++ subroutine internal_sub(F_su,F_nk) ++ implicit none ++ integer G_ni, G_nj ++ real*8 G_xg_8, G_yg_8 ++ pointer (paxg_8, G_xg_8(G_ni)) ++ pointer (payg_8, G_yg_8(G_nj)) ++ common / G_p / paxg_8,payg_8 ++ common / G / G_ni, G_nj ++ ++ integer :: F_nk ++ real,dimension(F_nk) :: F_su ++ integer k,k2 ++ ++ k2 = 0 ++ do k = 1, F_nk, 2 ++ k2 = k2+1 ++ F_su(k) = F_su(k) + 1.0 ++ enddo ++ return ++ end subroutine internal_sub ++end subroutine host_sub +Index: gcc/testsuite/gfortran.dg/pr91553.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91553.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91553.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,8 @@ ++! { dg-do run } ++! Code contributed by Gerhard Steinmetz ++program p ++ complex z(1) ++ z = (1.0, 2.0) * [real :: (3.0 + 4.0)] ++ if (real(z(1)) /= 7.) stop 1 ++ if (aimag(z(1)) /= 14.) stop 2 ++end +Index: gcc/testsuite/gfortran.dg/pr91564.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91564.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91564.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++! { dg-do compile } ++! PR fortran/91564 ++! Contributed by Gerhard Steinmetz. ++program p ++ integer i, j ++ call kill (1, 2, 3) ! { dg-error "shall be an INTENT" } ++ i = 42 ++ call bar(i, j) ++end ++ ++subroutine bar(n, m) ++ integer, intent(in) :: n ++ integer, intent(inout) :: m ++ call kill (1, 3, n) ! { dg-error "shall be an INTENT" } ++ call kill (1, 3, m) ++end subroutine bar +Index: gcc/testsuite/gfortran.dg/pr91727.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91727.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91727.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! Code contributed by Gerhard Steinmetz. ++program p ++ type t ++ class(*), allocatable :: a ++ end type ++ type(t) :: x ++ allocate (x%a, source=[1]) ! { dg-error "have the same rank as" } ++end +Index: gcc/testsuite/gfortran.dg/pr87993.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr87993.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr87993.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,8 @@ ++! { dg-do run } ++! Code contributed by Gerhard Steinmetz ++program p ++ integer, parameter :: a(2) = 1 ++ integer, parameter :: b = a%kind ++ if (any(a /= 1)) stop 1 ++ if (b /= kind(a)) stop 2 ++end +Index: gcc/testsuite/gfortran.dg/do_subscript_6.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_6.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-std=legacy" } ++! PR 91550 - this used to cause an ICE ++! Test case by Gerhard Steinmetz ++program p ++ real :: a(3) ++ integer :: i ++ do i = 1, 3, .1 ! { dg-error "cannot be zero" } ++ a(i) = i ++ end do ++end +Index: gcc/testsuite/gfortran.dg/pr91641.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91641.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91641.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,7 @@ ++! { dg-do compile } ++! PR fortran/91641 ++! Code conyributed by Gerhard Steinmetz ++program p ++ real, pointer :: z(:) ++ print *, is_contiguous (null(z)) ! { dg-error "shall be an associated" } ++end +Index: gcc/testsuite/gfortran.dg/pr91471.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91471.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91471.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! PR fortran/91471 ++! Code contributed by Sameeran Joshi ++! ++! This invalid code (x(1) is referenced, but never set) caused an ICE due ++! to hitting a gfc_internal_error() in primary.c (gfc_variable_attr). The ++! fix is to remove that gfc_internal_error(). ++! ++program dynamic ++ implicit none ++ integer, dimension(:), allocatable :: x ++ allocate(x(1)) ++ stop x(1) ++end program dynamic +Index: gcc/testsuite/gfortran.dg/pr78719_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78719_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78719_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,32 @@ ++! { dg-do compile } ++! PR fortran/78719 ++! Code contributed by Gerhard Steinmetz ++program p ++ ++ type t ++ integer :: n ++ end type ++ ++ real :: g ++ ++ abstract interface ++ subroutine h ++ end ++ end interface ++ ++ procedure(h), pointer :: s ++ ++ s => f ++ call s ++ s => g ! { dg-error "Invalid procedure pointer" } ++ call s ++ ++ contains ++ ++ subroutine f ++ end ++ ++ subroutine g ! { dg-error "has an explicit interface" } ++ end ++ ++end program p ! { dg-error "Syntax error" } +Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++/* Test the fix for PR91926. */ ++ ++/* Contributed by José Rui Faustino de Sousa */ ++ ++#include ++ ++int ifb_echo(void*); ++ ++int ifb_echo(void *this) ++{ ++ return this == NULL ? 1 : 2; ++} +Index: gcc/testsuite/gfortran.dg/pr91785.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91785.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91785.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,8 @@ ++! { dg-do compile } ++! PR fortran/91785 ++! Code contributed by Gerhard Steinmetz ++program p ++ complex :: a(*) ! { dg-error "Assumed size array at" } ++ real :: b(2) ++ b = a%im ! { dg-error "upper bound in the last dimension" } ++end +Index: gcc/testsuite/gfortran.dg/use_15.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/use_15.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/use_15.f90 (.../branches/gcc-9-branch) +@@ -28,8 +28,8 @@ + end subroutine + + +-subroutine my_sub3 (a) +- use test_mod2, my_sub3 => my_sub2 ! { dg-error "is also the name of the current program unit" } ++subroutine my_sub3 (a) ! { dg-error "\(1\)" } ++ use test_mod2, my_sub3 => my_sub2 ! { dg-error "conflicts with the rename" } + real a + print *, a + end subroutine +Index: gcc/testsuite/gfortran.dg/pr71649.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr71649.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr71649.f90 (.../branches/gcc-9-branch) +@@ -1,13 +1,13 @@ + ! { dg-do compile } + ! PR71649 Internal Compiler Error +-SUBROUTINE Compiler_Options ( Options, Version, WriteOpt ) +- USE ISO_FORTRAN_ENV, ONLY : Compiler_Version, Compiler_Options ! { dg-error "already declared" } ++SUBROUTINE Compiler_Options ( Options, Version, WriteOpt ) ! { dg-error "\(1\)" } ++ USE ISO_FORTRAN_ENV, ONLY : Compiler_Version, Compiler_Options ! { dg-error "conflicts with the" } + IMPLICIT NONE + CHARACTER (LEN=*), INTENT(OUT) :: Options + CHARACTER (LEN=*), INTENT(OUT) :: Version + LOGICAL, INTENT(IN), OPTIONAL :: WriteOpt +- Version = Compiler_Version() +- Options = Compiler_Options() ! { dg-error "Unexpected use of subroutine name" } ++ Version = Compiler_Version() ! { dg-error "has no IMPLICIT type" } ++ Options = Compiler_Options() ! { dg-error "Unexpected use of subroutine name" } + RETURN + END SUBROUTINE Compiler_Options + +Index: gcc/testsuite/gfortran.dg/pr89943_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89943_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89943_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,31 @@ ++! { dg-do compile } ++! PR fortran/89943 ++! Code contributed by Alberto Luaces ++module Foo_mod ++ ++ implicit none ++ ++ interface ++ module subroutine runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer(c_int32_t) , intent(in) :: ndim ++ end subroutine runFoo4C ++ end interface ++ ++ contains ++ ++end module Foo_mod ++ ++submodule(Foo_mod) Foo_smod ++ ++ contains ++ ++ module subroutine runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer(c_int32_t) , intent(in) :: ndim ++ end subroutine runFoo4C ++ ++end submodule Foo_smod ++ +Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,41 @@ ++! { dg-do run } ++! ++! Correct an error in the eveluation of the CFI descriptor attribute for ++! the case where the bind_C formal argument is not an assumed shape array ++! and not allocatable or pointer. ++! ++! Contributed by Gilles Gouaillardet ++! ++MODULE FOO ++INTERFACE ++SUBROUTINE dummy(buf) BIND(C, name="sync") ++type(*), dimension(..) :: buf ++END SUBROUTINE ++END INTERFACE ++END MODULE ++ ++PROGRAM main ++ USE FOO ++ IMPLICIT NONE ++ integer(8) :: before, after ++ ++ INTEGER, parameter :: n = 1 ++ ++ INTEGER, ALLOCATABLE :: buf(:) ++ INTEGER :: buf2(n) ++ INTEGER :: i ++ ++ ALLOCATE(buf(n)) ++ before = LOC(buf(1)) ++ CALL dummy (buf) ++ after = LOC(buf(1)) ++ ++ if (before .NE. after) stop 1 ++ ++ before = LOC(buf2(1)) ++ CALL dummy (buf) ++ after = LOC(buf2(1)) ++ ++ if (before .NE. after) stop 2 ++ ++END PROGRAM +Index: gcc/testsuite/gfortran.dg/pr91568.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91568.f (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91568.f (.../branches/gcc-9-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-Ofast" } ++ subroutine h3dall(z,hvec,hder,nterms) ++ complex *16 hvec(0:1),hder(0:1) ++ complex *16 z,zinv,ztmp/1.0/ ++ zinv=1.0/z ++ do i=1,nterms ++ ztmp=zinv*i ++ hder(i)=hvec(i-1)-ztmp*hvec(i) ++ enddo ++ end +Index: gcc/testsuite/gfortran.dg/pr47054_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr47054_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr47054_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! { dg-options "-fcray-pointer" } ++! PR fortran/47054 ++subroutine host_sub ++ implicit none ++ real xg ++ pointer (paxg, xg) ++ call internal_sub ++ contains ++ subroutine internal_sub ++ implicit none ++ real xg ++ pointer (paxg, xg) ++ end subroutine internal_sub ++end subroutine host_sub +Index: gcc/testsuite/gfortran.dg/pr91649.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91649.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91649.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,23 @@ ++! { dg-do compile } ++! PR fortran/91649 ++! Code originally contributed by Gerhard Steinmetz ++subroutine p ++ logical :: back = .true. ++ integer :: x(1) = findloc([1, 2, 1], '1', back=back) ! { dg-error "must be in type conformance" } ++ print *, x ++end ++ ++subroutine q ++ type t ++ end type ++ logical :: back = .false. ++ integer :: x(1) = findloc([1, 2, 1], t(), back=back) ! { dg-error "must be of intrinsic type" } ++ print *, x ++end ++ ++subroutine s ++ character(4) :: c = '1234' ++ integer :: x(1) = findloc([1, 2, 1], c, back=.true.) ! { dg-error "must be in type conformance" } ++ print *, x ++end ++ +Index: gcc/testsuite/gfortran.dg/pr91552.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91552.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91552.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,10 @@ ++! { dg-do run } ++! PR fortran/91552 ++! Code contributed by Gerhard Steinmetz. ++program p ++ real :: y(3), z(4) ++ y = 2.0 * [real :: 1, [2], 3] ++ z = 2.0 * [real :: 1, [2, [4]], 3] ++ if (any(y /= [2., 4., 6.])) stop 1 ++ if (any(z /= [2., 4., 8., 6.])) stop 2 ++end +Index: gcc/testsuite/gfortran.dg/pr91715.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91715.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91715.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,5 @@ ++! { dg-do compile } ++! PR fortran/91715 ++! Code contributed Gerhard Steinmetz ++character(1function f() ! { dg-error "Syntax error in CHARACTER" } ++end +Index: gcc/testsuite/gfortran.dg/char_result_19.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/char_result_19.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,24 @@ ++! { dg-do preprocess } ++! { dg-additional-options "-cpp" } ++! ++! Test the fix for PR86248 ++! ++! Contributed by Bill Long ++! ++program test ++ use test_module ++ implicit none ++ integer :: i ++ character(:), allocatable :: chr ++ do i = 0, 2 ++ chr = func_1 (i) ++ select case (i) ++ case (0) ++ if (chr .ne. 'el0') stop i ++ case (1) ++ if (chr .ne. 'el11') stop i ++ case (2) ++ if (chr .ne. 'el2') stop i ++ end select ++ end do ++end program test +Index: gcc/testsuite/gfortran.dg/allocated_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocated_3.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocated_3.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,6 @@ ++! { dg-do compile } ++! PR fortran/91551 ++! Contributed by Gerhard Steinmetz ++program p ++ if (allocated()) stop 1 ! { dg-error "requires an array or scalar allocatable" } ++end +Index: gcc/testsuite/gfortran.dg/function_kinds_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/function_kinds_5.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/function_kinds_5.f90 (.../branches/gcc-9-branch) +@@ -8,3 +8,4 @@ + real (bad_kind(0d0)) function foo () ! { dg-error "must be an intrinsic function" } + foo = real (kind (foo)) + end function ++! { dg-prune-output "Bad kind expression for function" } +Index: gcc/testsuite/gfortran.dg/pr88072.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr88072.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr88072.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,30 @@ ++! { dg-do compile } ++! PR fortran/88072 ++! Original code contributed by Andrew Wood ++module m1 ++ ++ implicit none ++ ++ type, abstract, public :: t1 ++ integer, dimension(:), allocatable :: i ++ contains ++ procedure(f1), deferred :: f ++ end type t1 ++ ++ type, extends(t1), public :: t2 ! { dg-error "must be ABSTRACT because" } ++ contains ++ procedure :: f => f2 ! { dg-error "mismatch for the overriding" } ++ end type t2 ++ ++ abstract interface ++ function f1(this) ! { dg-error "must be dummy, allocatable or" } ++ import ++ class(t1) :: this ++ class(t1) :: f1 ++ end function f1 ++ end interface ++ contains ++ type(t2) function f2(this) ++ class(t2) :: this ++ end function f2 ++end module m1 +Index: gcc/testsuite/gfortran.dg/do_subscript_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_5.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,20 @@ ++! { dg-do compile } ++! { dg-additional-options "-Wdo-subscript" } ++! PR 90563 - this used to be rejected, wrongly ++! Original test case by Tobias Neumann ++program test ++ implicit none ++ integer, parameter :: swap(4) = [2,1,3,4] ++ real :: p(20) ++ integer :: j ++ ++ p = 0.0 ++ ++ ! The following warnings are actually bogus, but we are not yet ++ ! clever enough to suppress them. ++ do j=1,6 ! { dg-warning "out of bounds" } ++ if (j<5) then ++ p(j) = p(swap(j)) ! { dg-warning "out of bounds" } ++ endif ++ enddo ++end program +Index: gcc/testsuite/gfortran.dg/pr91660_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91660_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/91660 ++program foo ++ type(doubleprecision :: x ! { dg-error "Malformed type-spec" } ++ type(double precision :: y ! { dg-error "Malformed type-spec" } ++ type(character(len=3) :: a ! { dg-error "Malformed type-spec" } ++ type(doublecomplex :: b ! { dg-error "Malformed type-spec" } ++ type(double complex :: c ! { dg-error "Malformed type-spec" } ++end program foo +Index: gcc/testsuite/gfortran.dg/pr78719_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78719_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78719_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,29 @@ ++! { dg-do run } ++! PR fortran/78719 ++! Code contributed by Gerhard Steinmetz ++program p ++ ++ type t ++ integer :: n ++ end type ++ ++ abstract interface ++ subroutine h ++ end ++ end interface ++ ++ procedure(h), pointer :: s ++ ++ s => f ++ call s ++ s => g ++ call s ++ ++ contains ++ ++ subroutine f ++ end ++ ++ subroutine g ++ end ++end program p +Index: gcc/testsuite/gfortran.dg/pr78739.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr78739.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr78739.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! { dg-options "-w" } ++! PR fortran/78739 ++! Code contributed Gerhard Steinmetz ++function f(n) ++ f() = n ! { dg-error "conflicts with function name" } ++end ++ ++function g() ++ g(x) = x ! { dg-error "conflicts with function name" } ++end ++ ++function a() ! This should cause an error, but cannot be easily detected! ++ a() = x ++end +Index: gcc/testsuite/gfortran.dg/pr89647.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89647.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89647.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,33 @@ ++! { dg-do compile } ++! Code contributed by Ian Harvey ++ MODULE m1 ++ IMPLICIT NONE ++ PUBLIC :: False ++ PUBLIC :: True ++ CONTAINS ++ FUNCTION False() RESULT(b) ++ LOGICAL :: b ++ b = .FALSE. ++ END FUNCTION False ++ ++ FUNCTION True() RESULT(b) ++ LOGICAL :: b ++ b = .TRUE. ++ END FUNCTION True ++ END MODULE m1 ++ ++ MODULE m2 ++ USE m1 ++ IMPLICIT NONE ++ TYPE, ABSTRACT :: t_parent ++ CONTAINS ++ PROCEDURE(False), DEFERRED, NOPASS :: Binding ++ END TYPE t_parent ++ CONTAINS ++ SUBROUTINE s ++ TYPE, EXTENDS(t_parent) :: t_extension ++ CONTAINS ++ PROCEDURE, NOPASS :: Binding => True ++ END TYPE t_extension ++ END SUBROUTINE s ++ END MODULE m2 +Index: gcc/testsuite/gfortran.dg/pr91589.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91589.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91589.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++! { dg-do compile } ++! ++! Check the fix for PR91589, in which the invalid expression caused an ICE. ++! Other statements using this invalid expression cause "Unclassifiable statement at..." ++! ++! Contributed by Gerhardt Steinmetz ++! ++program p ++ type t ++ integer :: a ++ end type ++ type(t) :: x = t(1) ++ call sub (x%a%a) ! { dg-error "Syntax error in argument list" } ++end ++ +Index: gcc/testsuite/gfortran.dg/pr69455_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr69455_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++! { dg-do run } ++program foo ++ block ++ use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL32, ik => INT32 ++ if (ik /= 4) stop 1 ++ if (wp /= 4) stop 2 ++ end block ++ block ++ use, intrinsic :: ISO_FORTRAN_ENV, only: wp => REAL64, ik => INT64 ++ if (ik /= 8) stop 3 ++ if (wp /= 8) stop 4 ++ end block ++end program foo +Index: gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,39 @@ ++! { dg-do run { target c99_runtime } } ++! { dg-additional-sources ISO_Fortran_binding_13.c } ++! ++! Test the fix for PR91926. The additional source is the main program. ++! ++! Contributed by José Rui Faustino de Sousa ++! ++program ifb_p ++ ++ implicit none ++ ++ integer :: i = 42 ++ ++ interface ++ integer function ifb_echo_aux(this) bind(c, name="ifb_echo") ++ implicit none ++ type(*), dimension(..), & ! removing assumed rank solves segmentation fault ++ optional, intent(in) :: this ++ end function ifb_echo_aux ++ end interface ++ ++ if (ifb_echo_aux() .ne. 1) STOP 1 ! worked ++ if (ifb_echo() .ne. 1) stop 2 ! segmentation fault ++ if (ifb_echo_aux(i) .ne. 2) stop 3 ! worked ++ if (ifb_echo(i) .ne. 2) stop 4 ! worked ++ ++ stop ++ ++contains ++ ++ integer function ifb_echo(this) ++ type(*), dimension(..), & ++ optional, intent(in) :: this ++ ++ ifb_echo = ifb_echo_aux(this) ++ return ++ end function ifb_echo ++ ++end program ifb_p +Index: gcc/testsuite/gfortran.dg/pr91485.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91485.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91485.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,24 @@ ++! { dg-do compile } ++module foo ++ implicit none ++ interface operator(.x.) ++ module procedure product ++ end interface operator(.x.) ++ contains ++ function product(x, y) ++ real, intent(in) :: x, y ++ real :: product ++ product = x * y ++ end function product ++end module foo ++ ++module gfcbug155 ++ implicit none ++ contains ++ subroutine print_prod (x, y) ++ use foo, only : operator(.x.) ++ implicit none ++ real :: x, y ++ print *, x .x. y ++ end subroutine print_prod ++end module gfcbug155 +Index: gcc/testsuite/gfortran.dg/pr89943_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89943_4.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89943_4.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,29 @@ ++! { dg-do compile } ++module Foo_mod ++ ++ implicit none ++ ++ interface ++ module function runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer runFoo4c ++ integer(c_int32_t) , intent(in) :: ndim ++ end function runFoo4C ++ end interface ++ ++ contains ++ ++end module Foo_mod ++ ++submodule(Foo_mod) Foo_smod ++ ++ contains ++ ++ module function runFoo4C(ndim) bind(C, name="runFu") ! { dg-error "Mismatch in BIND" } ++ use, intrinsic :: iso_c_binding ! { dg-error "Unexpected USE statement in" } ++ implicit none ! { dg-error "Unexpected IMPLICIT NONE statement" } ++ integer(c_int32_t) , intent(in) :: ndim ! { dg-error "Unexpected data declaration" } ++ end function runFoo4C ! { dg-error "Expecting END SUBMODULE" } ++ ++end submodule Foo_smod +Index: gcc/testsuite/gfortran.dg/pr91496.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91496.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91496.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,38 @@ ++! { dg-do compile } ++! { dg-options "-fdump-tree-original" } ++! ++subroutine foo (a, b, c, n) ++ implicit none ++ real a(*), b(*), c(*) ++ integer :: i, n ++ external bar ++!DIR$ unroll (4) ++!GCC$ unroll 4 ++ do i = 1, n ++ a(i) = b(i) + c(i) ++ end do ++!DIR$ ivdep ++!GCC$ ivdep ++ do i = 1, n ++ a(i) = b(i) + c(i) ++ end do ++!DIR$ vector ++!GCC$ vector ++ do i = 1, n ++ a(i) = b(i) + c(i) ++ end do ++!DIR$ novector ++!GCC$ novector ++ do i = 1, n ++ a(i) = b(i) + c(i) ++ end do ++!GCC$ ivdep ++!GCC$ vector ++ do i = 1, n ++ a(i) = b(i) + c(i) ++ end do ++!DIR$ noinline ++!GCC$ noinline ! { dg-warning "Unclassifiable GCC directive" } ++ call bar (a) ++end subroutine foo ++! { dg-final { scan-tree-dump-times "ANNOTATE_EXPR" 6 "original" } } +Index: gcc/testsuite/gfortran.dg/pr91714.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91714.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91714.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! Contributed by Gerhard Steinmetz ++program p ++ typea ! { dg-error "Mangled derived type" } ++ integer b ++ end type ! { dg-error "Expecting END PROGRAM" } ++ type(a) :: c ! { dg-error "is being used before it" } ++ c = a(1) ++ print *, c ++end +Index: gcc/testsuite/gfortran.dg/allocated_2.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocated_2.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocated_2.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++! { dg-do compile } ++program foo ++ ++ implicit none ++ ++ integer, allocatable :: x ++ integer, allocatable :: a(:) ++ ++ logical a1, a2 ++ ++ a1 = allocated(scalar=a) ! { dg-error "Scalar entity required" } ++ a2 = allocated(array=x) ! { dg-error "Array entity required" } ++ a1 = allocated(scalar=x, array=a) ! { dg-error "Too many arguments" } ++ a1 = allocated(array=a, scalar=x) ! { dg-error "Too many arguments" } ++ ++end program foo +Index: gcc/testsuite/gfortran.dg/pr87991.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr87991.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr87991.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! { dg-options "-w" } ++! PR fortran/87991 ++program p ++ type t ++ character(:), pointer :: c ++ end type ++ type(t) :: x ++ allocate (character(3) :: x%c) ++ data x%c /'abc'/ ! { dg-error "has the pointer attribute" } ++end +Index: gcc/testsuite/gfortran.dg/bind-c-intent-out.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/bind-c-intent-out.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/bind-c-intent-out.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,41 @@ ++! { dg-do compile } ++! { dg-options "-fdump-tree-original" } ++! ++! PR fortran/91863 ++! ++! Contributed by G. Steinmetz ++! ++ ++subroutine sub(x) bind(c) ++ implicit none (type, external) ++ integer, allocatable, intent(out) :: x(:) ++ ++ allocate(x(3:5)) ++ x(:) = [1, 2, 3] ++end subroutine sub ++ ++ ++program p ++ implicit none (type, external) ++ interface ++ subroutine sub(x) bind(c) ++ integer, allocatable, intent(out) :: x(:) ++ end ++ end interface ++ integer, allocatable :: a(:) ++ ++ call sub(a) ++ if (.not.allocated(a)) stop 1 ++ if (any(shape(a) /= [3])) stop 2 ++ if (lbound(a,1) /= 3 .or. ubound(a,1) /= 5) stop 3 ++ if (any(a /= [1, 2, 3])) stop 4 ++end program p ++ ++! "cfi" only appears in context of "a" -> bind-C descriptor ++! the intent(out) implies freeing in the callee (!), hence the "free" ++! It is the only 'free' as 'a' is part of the main program and, hence, implicitly has the SAVE attribute. ++! The 'cfi = 0' appears before the call due to the deallocate and when preparing the C descriptor ++ ++! { dg-final { scan-tree-dump-times "__builtin_free" 1 "original" } } ++! { dg-final { scan-tree-dump-times "__builtin_free \\(cfi\\.\[0-9\]+\\);" 1 "original" } } ++! { dg-final { scan-tree-dump-times "cfi\\.\[0-9\]+ = 0B;" 2 "original" } } +Index: gcc/testsuite/gfortran.dg/do_subscript_4.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/do_subscript_4.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/do_subscript_4.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,11 @@ ++! { dg-do compile } ++! PR 91424 - this used to warn although the DO loop is zero trip. ++program main ++ implicit none ++ integer :: i ++ real :: a(2) ++ do i=1,3,-1 ++ a(i) = 2. ++ end do ++ print *,a ++end program main +Index: gcc/testsuite/gfortran.dg/pr91942.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91942.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91942.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,10 @@ ++! { dg-do compile } ++! PR fortran/91942 ++! Code contributed by Gerhard Steinmetz ++program p ++ integer :: i ++ backspace (iostat=i%kind) ! { dg-error "Expecting a variable at" } ++ endfile (iostat=i%kind) ! { dg-error "Expecting END PROGRAM" } ++ flush (iostat=i%kind) ! { dg-error "Expecting a variable at" } ++ rewind (iostat=i%kind) ! { dg-error "Expecting a variable at" } ++end +Index: gcc/testsuite/gfortran.dg/pr91566.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91566.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91566.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++! { dg-do compile } ++! Code contributed by Gerhard Steinmetz ++program p ++ call q ++ call r ++end program p ++ ++subroutine q ++ print *, -merge([3,4], 0, [.false.,.true.]) ++end ++ ++subroutine r ++ print *, 2 + merge([3,4], 0, [.false.,.true.]) ++end +Index: gcc/testsuite/gfortran.dg/pr91660_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91660_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! PR fortran/91660 ++! Code contributed by Gerhard Steinmetz ++program p ++ type t ++ end type ++ type (t x ! { dg-error "Malformed type-spec" } ++ x = t() ! { dg-error "Cannot convert" } ++end +Index: gcc/testsuite/gfortran.dg/pr91802.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91802.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91802.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,9 @@ ++! { dg-do compile } ++! { dg-options "-fcoarray=single" } ++! Code contributed by Gerhard Steinmetz ++! PR fortran/91802 ++module m ++ real :: x ++ dimension :: x(1,2,1,2,1,2,1,2) ++ codimension :: x[1,2,1,2,1,2,1,*] ! { dg-error "exceeds 15" } ++end +Index: gcc/testsuite/gfortran.dg/pr69455_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr69455_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++! { dg-do run } ++program foo ++ block ++ use, intrinsic :: iso_c_binding, only: wp => c_float, ik => c_int ++ if (ik /= 4) stop 1 ++ if (wp /= 4) stop 2 ++ end block ++ block ++ use, intrinsic :: iso_c_binding, only: wp => c_double, ik => c_int64_t ++ if (ik /= 8) stop 3 ++ if (wp /= 8) stop 4 ++ end block ++end program foo ++ +Index: gcc/testsuite/gfortran.dg/directive_unroll_5.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/directive_unroll_5.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/directive_unroll_5.f90 (.../branches/gcc-9-branch) +@@ -31,7 +31,7 @@ + integer :: a(n), b(n) + integer (kind=4) :: i + !GCC$ unroll 8 +- write (*,*) "wrong"! { dg-error "directive does not commence a loop" } ++ write (*,*) "wrong"! { dg-error "directive not at the start of a loop" } + DO i=n, 1, -1 + call dummy2(a(i), b(i), i) + ENDDO +Index: gcc/testsuite/gfortran.dg/pr91359_1.f +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91359_1.f (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91359_1.f (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++! { dg-do run } ++! PR fortran/91359 ++! Orginal code contributed by Brian T. Carcich ++! ++ logical function zero() ++ goto 2 ++1 return ++2 zero = .false. ++ if (.not.zero) goto 1 ++ return ++ end ++ ++ program test_zero ++ logical zero ++ if (zero()) stop 'FAIL: zero() returned .TRUE.' ++ stop 'OKAY: zero() returned .FALSE.' ++ end +Index: gcc/testsuite/gfortran.dg/dec_type_print_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/dec_type_print_3.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/dec_type_print_3.f90 (.../branches/gcc-9-branch) +@@ -8,9 +8,9 @@ + + include 'dec_type_print.f90' + +-! { dg-error "Invalid character in name" "" { target *-*-* } 52 } ++! { dg-error "Mangled derived type definition" "" { target *-*-* } 52 } + ! { dg-error "Invalid character in name" "" { target *-*-* } 53 } +-! { dg-error "Invalid character in name" "" { target *-*-* } 54 } ++! { dg-error "Mangled derived type definition" "" { target *-*-* } 54 } + ! { dg-error "Invalid character in name" "" { target *-*-* } 55 } + ! { dg-error "Invalid character in name" "" { target *-*-* } 56 } + ! { dg-error "Invalid character in name" "" { target *-*-* } 57 } +Index: gcc/testsuite/gfortran.dg/pr89943_3.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr89943_3.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr89943_3.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,28 @@ ++! { dg-do compile } ++module Foo_mod ++ ++ implicit none ++ ++ interface ++ module subroutine runFoo4C(ndim) bind(C, name="runFoo") ++ use, intrinsic :: iso_c_binding ++ implicit none ++ integer(c_int32_t) , intent(in) :: ndim ++ end subroutine runFoo4C ++ end interface ++ ++ contains ++ ++end module Foo_mod ++ ++submodule(Foo_mod) Foo_smod ++ ++ contains ++ ++ module subroutine runFoo4C(ndim) bind(C, name="runFu") ! { dg-error "Mismatch in BIND" } ++ use, intrinsic :: iso_c_binding ! { dg-error "Unexpected USE statement" } ++ implicit none ! { dg-error "Unexpected IMPLICIT NONE statement" } ++ integer(c_int32_t) , intent(in) :: ndim ! { dg-error "Unexpected data declaration" } ++ end subroutine runFoo4C ! { dg-error " Expecting END SUBMODULE" } ++ ++end submodule Foo_smod +Index: gcc/testsuite/gfortran.dg/pr91864.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pr91864.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pr91864.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,22 @@ ++program p ++ integer :: i ++ read (*,*) i%kind ! { dg-error "Expecting variable or io-implied-do" } ++end ++ ++subroutine t ++ integer, allocatable :: x(:) ++ integer :: stat ++ allocate (x(3), stat=stat%kind) ! { dg-error "cannot be a constant" } ++end ++ ++subroutine u ++ integer, allocatable :: x(:) ++ integer :: stat ++ allocate (x(3), stat%kind=stat) ! { dg-error "Unexpected constant" } ++end ++ ++subroutine v ++ integer, allocatable :: x(:) ++ integer :: stat ++ deallocate (x, stat%kind=stat) ! { dg-error "Unexpected constant" } ++end +Index: gcc/testsuite/gfortran.dg/allocated_1.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/allocated_1.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/allocated_1.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,24 @@ ++! { dg-do run } ++program foo ++ ++ implicit none ++ ++ integer, allocatable :: x ++ integer, allocatable :: a(:) ++ ++ logical a1, a2 ++ ++ a1 = allocated(scalar=x) ++ if (a1 .neqv. .false.) stop 1 ++ a2 = allocated(array=a) ++ if (a2 .neqv. .false.) stop 2 ++ ++ allocate(x) ++ allocate(a(2)) ++ ++ a1 = allocated(scalar=x) ++ if (a1 .neqv. .true.) stop 3 ++ a2 = allocated(array=a) ++ if (a2 .neqv. .true.) stop 4 ++ ++end program foo +Index: gcc/testsuite/gfortran.dg/pdt_4.f03 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/pdt_4.f03 (.../branches/gcc-9-branch) +@@ -97,9 +97,9 @@ + type (mytype(4, *)) :: arg ! OK + end subroutine + subroutine bar(arg) ! { dg-error "is neither allocatable nor a pointer" } +- type (thytype(8, :, 4) :: arg ++ type (thytype(8, :, 4)) :: arg + end subroutine + subroutine foobar(arg) ! OK +- type (thytype(8, *, 4) :: arg ++ type (thytype(8, *, 4)) :: arg + end subroutine + end +Index: gcc/testsuite/gfortran.dg/class_71.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/class_71.f90 (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gfortran.dg/class_71.f90 (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++! { dg-do compile } ++! ++! PR fortran/91586 ++! ++! Contributed by G. Steinmetz ++! ++program p ++ type t ++ class(*), allocatable :: a ++ end type ++ class(t) :: x, y ! { dg-error "must be dummy, allocatable or pointer" } ++ y = x ! { dg-error "Nonallocatable variable must not be polymorphic in intrinsic assignment" } ++end +Index: gcc/testsuite/gcc.c-torture/execute/20190820-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190820-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,111 @@ ++/* PR rtl-optimization/91347 */ ++/* Reported by John David Anglin */ ++ ++typedef unsigned short __u16; ++typedef __signed__ int __s32; ++typedef unsigned int __u32; ++typedef __signed__ long long __s64; ++typedef unsigned long long __u64; ++typedef __u16 u16; ++typedef __s32 s32; ++typedef __u32 u32; ++typedef __u64 u64; ++typedef _Bool bool; ++typedef s32 int32_t; ++typedef u32 uint32_t; ++typedef u64 uint64_t; ++ ++char hex_asc_upper[16]; ++u16 decpair[100]; ++ ++static __attribute__ ((noipa)) void ++put_dec_full4 (char *buf, unsigned r) ++{ ++ unsigned q; ++ q = (r * 0x147b) >> 19; ++ *((u16 *)buf) = decpair[r - 100*q]; ++ buf += 2; ++ *((u16 *)buf) = decpair[q]; ++} ++ ++static __attribute__ ((noipa)) unsigned ++put_dec_helper4 (char *buf, unsigned x) ++{ ++ uint32_t q = (x * (uint64_t)0x346DC5D7) >> 43; ++ put_dec_full4(buf, x - q * 10000); ++ return q; ++} ++ ++static __attribute__ ((noipa)) char * ++put_dec (char *buf, unsigned long long n) ++{ ++ uint32_t d3, d2, d1, q, h; ++ d1 = ((uint32_t)n >> 16); ++ h = (n >> 32); ++ d2 = (h ) & 0xffff; ++ d3 = (h >> 16); ++ q = 656 * d3 + 7296 * d2 + 5536 * d1 + ((uint32_t)n & 0xffff); ++ q = put_dec_helper4(buf, q); ++ q += 7671 * d3 + 9496 * d2 + 6 * d1; ++ q = put_dec_helper4(buf+4, q); ++ q += 4749 * d3 + 42 * d2; ++ q = put_dec_helper4(buf+8, q); ++ return buf; ++} ++ ++struct printf_spec { ++ unsigned int type:8; ++ signed int field_width:24; ++ unsigned int flags:8; ++ unsigned int base:8; ++ signed int precision:16; ++} __attribute__((__packed__)); ++ ++static __attribute__ ((noipa)) char * ++number (char *buf, char *end, unsigned long long num, struct printf_spec spec) ++{ ++ ++ char tmp[3 * sizeof(num)] __attribute__((__aligned__(2))); ++ char sign; ++ char locase; ++ int need_pfx = ((spec.flags & 64) && spec.base != 10); ++ int i; ++ bool is_zero = num == 0LL; ++ int field_width = spec.field_width; ++ int precision = spec.precision; ++ ++ i = 0; ++ if (num < spec.base) ++ tmp[i++] = hex_asc_upper[num] | locase; ++ else if (spec.base != 10) { ++ int mask = spec.base - 1; ++ int shift = 3; ++ if (spec.base == 16) ++ shift = 4; ++ else ++ __builtin_abort (); ++ do { ++ tmp[i++] = (hex_asc_upper[((unsigned char)num) & mask] | locase); ++ num >>= shift; ++ } while (num); ++ } else { ++ i = put_dec(tmp, num) - tmp; ++ } ++ return buf; ++} ++ ++static __attribute__ ((noipa)) char * ++pointer_string (char *buf, char *end, const void *ptr, struct printf_spec spec) ++{ ++ spec.base = 16; ++ spec.flags = 0; ++ return number(buf, end, 100, spec); ++} ++ ++int ++main (void) ++{ ++ struct printf_spec spec; ++ char *s = pointer_string (0, 0, 0, spec); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20191023-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20191023-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20191023-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,73 @@ ++/* PR tree-optimization/92131 */ ++/* Testcase by Armin Rigo */ ++ ++long b, c, d, e, f, i; ++char g, h, j, k; ++int *aa; ++ ++static void error (void) __attribute__((noipa)); ++static void error (void) { __builtin_abort(); } ++ ++static void see_me_here (void) __attribute__((noipa)); ++static void see_me_here (void) {} ++ ++static void aaa (void) __attribute__((noipa)); ++static void aaa (void) {} ++ ++static void a (void) __attribute__((noipa)); ++static void a (void) { ++ long am, ao; ++ if (aa == 0) { ++ aaa(); ++ if (j) ++ goto ay; ++ } ++ return; ++ay: ++ aaa(); ++ if (k) { ++ aaa(); ++ goto az; ++ } ++ return; ++az: ++ if (i) ++ if (g) ++ if (h) ++ if (e) ++ goto bd; ++ return; ++bd: ++ am = 0; ++ while (am < e) { ++ switch (c) { ++ case 8: ++ goto bh; ++ case 4: ++ return; ++ } ++ bh: ++ if (am >= 0) ++ b = -am; ++ ao = am + b; ++ f = ao & 7; ++ if (f == 0) ++ see_me_here(); ++ if (ao >= 0) ++ am++; ++ else ++ error(); ++ } ++} ++ ++int main (void) ++{ ++ j++; ++ k++; ++ i++; ++ g++; ++ h++; ++ e = 1; ++ a(); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr91635.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91635.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91635.c (.../branches/gcc-9-branch) +@@ -0,0 +1,57 @@ ++/* PR target/91635 */ ++ ++#if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \ ++ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 ++unsigned short b, c; ++int u, v, w, x; ++ ++__attribute__ ((noipa)) int ++foo (unsigned short c) ++{ ++ c <<= __builtin_add_overflow (-c, -1, &b); ++ c >>= 1; ++ return c; ++} ++ ++__attribute__ ((noipa)) int ++bar (unsigned short b) ++{ ++ b <<= -14 & 15; ++ b = b >> -~1; ++ return b; ++} ++ ++__attribute__ ((noipa)) int ++baz (unsigned short e) ++{ ++ e <<= 1; ++ e >>= __builtin_add_overflow (8719476735, u, &v); ++ return e; ++} ++ ++__attribute__ ((noipa)) int ++qux (unsigned int e) ++{ ++ c = ~1; ++ c *= e; ++ c = c >> (-15 & 5); ++ return c + w + x; ++} ++#endif ++ ++int ++main () ++{ ++#if __CHAR_BIT__ == 8 && __SIZEOF_SHORT__ == 2 \ ++ && __SIZEOF_INT__ == 4 && __SIZEOF_LONG_LONG__ == 8 ++ if (foo (0xffff) != 0x7fff) ++ __builtin_abort (); ++ if (bar (5) != 5) ++ __builtin_abort (); ++ if (baz (~0) != 0x7fff) ++ __builtin_abort (); ++ if (qux (2) != 0x7ffe) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/20190901-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/20190901-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,36 @@ ++/* PR target/91472 */ ++/* Reported by John Paul Adrian Glaubitz */ ++ ++typedef unsigned int gmp_uint_least32_t; ++ ++union ieee_double_extract ++{ ++ struct ++ { ++ gmp_uint_least32_t sig:1; ++ gmp_uint_least32_t exp:11; ++ gmp_uint_least32_t manh:20; ++ gmp_uint_least32_t manl:32; ++ } s; ++ double d; ++}; ++ ++double __attribute__((noipa)) ++tests_infinity_d (void) ++{ ++ union ieee_double_extract x; ++ x.s.exp = 2047; ++ x.s.manl = 0; ++ x.s.manh = 0; ++ x.s.sig = 0; ++ return x.d; ++} ++ ++int ++main (void) ++{ ++ double x = tests_infinity_d (); ++ if (x == 0.0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr91597.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91597.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91597.c (.../branches/gcc-9-branch) +@@ -0,0 +1,48 @@ ++/* PR tree-optimization/91597 */ ++ ++enum E { A, B, C }; ++struct __attribute__((aligned (4))) S { enum E e; }; ++ ++enum E ++foo (struct S *o) ++{ ++ if (((__UINTPTR_TYPE__) (o) & 1) == 0) ++ return o->e; ++ else ++ return A; ++} ++ ++int ++bar (struct S *o) ++{ ++ return foo (o) == B || foo (o) == C; ++} ++ ++static inline void ++baz (struct S *o, int d) ++{ ++ if (__builtin_expect (!bar (o), 0)) ++ __builtin_abort (); ++ if (d > 2) return; ++ baz (o, d + 1); ++} ++ ++void ++qux (struct S *o) ++{ ++ switch (o->e) ++ { ++ case A: return; ++ case B: baz (o, 0); break; ++ case C: baz (o, 0); break; ++ } ++} ++ ++struct S s = { C }; ++ ++int ++main () ++{ ++ qux (&s); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/execute/pr91632.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr91632.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr91632.c (.../branches/gcc-9-branch) +@@ -0,0 +1,30 @@ ++/* PR tree-optimization/91632 */ ++/* { dg-additional-options "-fwrapv" } */ ++ ++static int ++__attribute__((noipa)) ++foo (char x) ++{ ++ switch (x) ++ { ++ case '"': ++ case '<': ++ case '>': ++ case '\\': ++ case '^': ++ case '`': ++ case '{': ++ case '|': ++ case '}': ++ return 0; ++ } ++ return 1; ++} ++ ++int ++main () ++{ ++ if (foo ('h') == 0) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr91001.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr91001.c (.../branches/gcc-9-branch) +@@ -0,0 +1,31 @@ ++/* PR middle-end/91001 */ ++/* PR middle-end/91105 */ ++/* PR middle-end/91106 */ ++ ++struct __attribute__((packed)) S { short b; char c; }; ++struct T { short b, c, d; }; ++struct __attribute__((packed)) R { int b; char c; }; ++union __attribute__((aligned(128), transparent_union)) U { struct S c; } u; ++union __attribute__((aligned(32), transparent_union)) V { struct T c; } v; ++union __attribute__((aligned(32), transparent_union)) W { struct R c; } w; ++void foo (union U); ++void bar (union V); ++void baz (union W); ++ ++void ++qux (void) ++{ ++ foo (u); ++} ++ ++void ++quux (void) ++{ ++ bar (v); ++} ++ ++void ++corge (void) ++{ ++ baz (w); ++} +Index: gcc/testsuite/gcc.c-torture/compile/pr92056.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr92056.c (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* PR tree-optimization/92056 */ ++ ++const char *d; ++ ++void ++foo (int c, char *e, const char *a, const char *b) ++{ ++ switch (c) ++ { ++ case 33: ++ for (;; d++) ++ if (__builtin_strcmp (b ? : "", d)) ++ return; ++ break; ++ case 4: ++ __builtin_sprintf (e, a); ++ } ++} +Index: gcc/testsuite/gcc.dg/gomp/pr90637.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/gomp/pr90637.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/gomp/pr90637.c (.../branches/gcc-9-branch) +@@ -0,0 +1,14 @@ ++/* PR tree-optimization/90637 */ ++/* { dg-do compile } */ ++/* { dg-options "-fopenmp -O1 --param sink-frequency-threshold=90" } */ ++ ++int v; ++ ++void ++foo (int c) ++{ ++ int i; ++#pragma omp for simd if (c) lastprivate (v) schedule (static, 16) ++ for (i = 0; i < 64; ++i) ++ v = i; ++} +Index: gcc/testsuite/gcc.dg/pr91885.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr91885.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr91885.c (.../branches/gcc-9-branch) +@@ -0,0 +1,47 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O3 -fprofile-generate" } */ ++/* { dg-require-profiling "-fprofile-generate" } */ ++ ++typedef signed long long int __int64_t; ++typedef unsigned long long int __uint64_t; ++typedef __int64_t int64_t; ++typedef __uint64_t uint64_t; ++inline void ++BLI_endian_switch_int64 (int64_t *val) ++{ ++ uint64_t tval = *val; ++ *val = ((tval >> 56)) | ((tval << 40) & 0x00ff000000000000ll) ++ | ((tval << 24) & 0x0000ff0000000000ll) ++ | ((tval << 8) & 0x000000ff00000000ll) ++ | ((tval >> 8) & 0x00000000ff000000ll) ++ | ((tval >> 24) & 0x0000000000ff0000ll) ++ | ((tval >> 40) & 0x000000000000ff00ll) | ((tval << 56)); ++} ++typedef struct anim_index_entry ++{ ++ unsigned long long seek_pos_dts; ++ unsigned long long pts; ++} anim_index_entry; ++extern struct anim_index_entry * ++MEM_callocN (int); ++struct anim_index ++{ ++ int num_entries; ++ struct anim_index_entry *entries; ++}; ++struct anim_index * ++IMB_indexer_open (const char *name) ++{ ++ char header[13]; ++ struct anim_index *idx; ++ int i; ++ idx->entries = MEM_callocN (8); ++ if (((1 == 0) != (header[8] == 'V'))) ++ { ++ for (i = 0; i < idx->num_entries; i++) ++ { ++ BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].seek_pos_dts); ++ BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].pts); ++ } ++ } ++} +Index: gcc/testsuite/gcc.dg/pr91269.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr91269.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr91269.c (.../branches/gcc-9-branch) +@@ -0,0 +1,70 @@ ++/* PR target/91269 */ ++/* Testcase by Sergei Trofimovich */ ++ ++/* { dg-do assemble } */ ++/* { dg-options "-O2 -Wno-int-conversion" } */ ++/* { dg-additional-options "-fcall-used-g6 -fPIE -mcpu=niagara4" { target sparc*-*-* } } */ ++ ++struct m; ++ ++enum { a = 2 }; ++int b[1]; ++int d[2715]; ++int e, f, h; ++enum { i = 2 } j; ++inline int c(int k) { ++ char *cp; ++ if (k >= 62 && k <= 247) ++ cp = b[k]; ++ if (cp) ++ return 65533; ++ return 2; ++} ++inline int g(int k) { ++ if (k < sizeof(d)) ++ return e; ++ return 0; ++} ++ ++int u(struct m*, char*, char*); ++ ++int l(struct m *k, char n, long o, int *p) { ++ int q, flags = j, r, s, lasttwo = *p; ++ char inptr, outptr; ++ while (inptr) { ++ if (__builtin_expect(h, 0)) ++ break; ++ unsigned ch = inptr; ++ if (lasttwo) { ++ long need = lasttwo >> 3; ++ if (__builtin_expect(need > n, 0)) ++ break; ++ } else if (s == i) { ++ long t = c(ch); ++ if (t != 65533) { ++ int jch = g(ch); ++ if (jch & 8) ++ continue; ++ } ++ } ++ if (ch <= 5) ++ ; ++ else { ++ long t = c(ch); ++ if (t != 65533) ++ ; ++ else { ++ switch (f >> 8) ++ case 79: ++ q = f == 20308 || f == 20350; ++ if (q) ++ if (j) ++ r = u(k, &inptr, &outptr); ++ s = *p; ++ if (r) ++ if (o && flags & a) ++ break; ++ } ++ } ++ } ++} +Index: gcc/testsuite/gcc.dg/pr91734.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr91734.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr91734.c (.../branches/gcc-9-branch) +@@ -0,0 +1,97 @@ ++/* PR tree-optimization/91734 */ ++/* { dg-do run } */ ++/* { dg-add-options ieee } */ ++/* { dg-additional-options "-O2 -std=gnu99" } */ ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f1 (float x) ++{ ++ return __builtin_sqrtf (x) < __FLT_MIN__; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f2 (float x) ++{ ++ return __builtin_sqrtf (x) < 0x1.2dd3d0p-65f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f3 (float x) ++{ ++ return __builtin_sqrtf (x) >= 0x1.2dd3d0p-65f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f4 (float x) ++{ ++ return __builtin_sqrtf (x) >= 0x1.5642e6p+54f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f5 (float x) ++{ ++ return __builtin_sqrtf (x) > 0x1.5642e6p+54f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f6 (float x) ++{ ++ return __builtin_sqrtf (x) < 0x1.4da1cp-19f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f7 (float x) ++{ ++ return __builtin_sqrtf (x) <= 0x1.4da1cp-19f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f8 (float x) ++{ ++ return __builtin_sqrtf (x) < 0x1.50cb62p-65f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f9 (float x) ++{ ++ return __builtin_sqrtf (x) <= 0x1.4fc00cp-73f; ++} ++ ++__attribute__((noipa, optimize ("Ofast"))) int ++f10 (float x) ++{ ++ return __builtin_sqrtf (x) < 0x1.001002p+0f; ++} ++ ++int ++main () ++{ ++ if (__FLT_RADIX__ != 2 ++ || __FLT_MANT_DIG__ != 24 ++ || __FLT_MIN_EXP__ != -125 ++ || __FLT_MAX_EXP__ != 128 ++ || __FLT_HAS_DENORM__ != 1 ++ || __FLT_HAS_INFINITY__ != 1) ++ return 0; ++ if (!f1 (0.0f) || f1 (0x1.0p-149f)) ++ __builtin_abort (); ++ if (!f2 (0x1.63dbc0p-130f)) ++ __builtin_abort (); ++ if (f3 (0x1.63dbc0p-130f)) ++ __builtin_abort (); ++ if (!f4 (0x1.c996d0p+108f) || !f4 (0x1.c996cep+108f) || f4 (0x1.c996ccp+108f)) ++ __builtin_abort (); ++ if (f5 (0x1.c996d0p+108f) || f5 (0x1.c996d2p+108f) || !f5 (0x1.c996d4p+108f)) ++ __builtin_abort (); ++ if (!f6 (0x1.b2ce3p-38f) || f6 (0x1.b2ce32p-38f) || f6 (0x1.b2ce34p-38f)) ++ __builtin_abort (); ++ if (!f7 (0x1.b2ce3p-38f) || !f7 (0x1.b2ce34p-38f) || !f7 (0x1.b2ce36p-38f) || f7 (0x1.b2ce38p-38f)) ++ __builtin_abort (); ++ if (!f8 (0x1.bb166p-130f) || !f8 (0x1.bb168p-130f) || f8 (0x1.bb16ap-130f) || f8 (0x1.bb16cp-130f)) ++ __builtin_abort (); ++ if (!f9 (0x1.8p-146f) || !f9 (0x1.ap-146f) || f9 (0x1.cp-146f) || f9 (0x1.ep-146f)) ++ __builtin_abort (); ++ if (f10 (0x1.002004p+0f)) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr91445.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr91445.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr91445.c (.../branches/gcc-9-branch) +@@ -0,0 +1,22 @@ ++/* { dg-do run } */ ++ ++struct S { _Bool x; }; ++ ++void ++foo (struct S *s) ++{ ++ __builtin_memset (s, 0x11, sizeof (struct S)); ++ s->x = 1; ++} ++ ++int ++main () ++{ ++ struct S s; ++ foo (&s); ++ char c; ++ __builtin_memcpy (&c, &s.x, 1); ++ if (c != 1) ++ __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr91812.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr91812.c (.../branches/gcc-9-branch) +@@ -0,0 +1,26 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } { "" } } */ ++/* { dg-options "-fdump-tree-optimized-blocks" } */ ++ ++unsigned register1; ++unsigned register2; ++ ++void busy_wait_for_register (int x) ++{ ++ volatile unsigned* ptr; ++ switch(x) { ++ case 0x1111: ++ ptr = ®ister1; ++ break; ++ ++ case 0x2222: ++ ptr = ®ister2; ++ break; ++ ++ default: ++ return; ++ } ++ while (*ptr) {} ++} ++ ++/* { dg-final { scan-tree-dump "loop depth 1" "optimized" } } */ +Index: gcc/testsuite/gcc.dg/torture/pr90278.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr90278.c (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-additional-options "-fexceptions -fnon-call-exceptions" } */ ++ ++double ++hc (void) ++{ ++ double dp = 0.0; ++ double ek[1]; ++ ++ ek[0] = 1.0 / dp < 0.0; ++ ++ return ek[0]; ++} +Index: gcc/testsuite/gcc.dg/pr91720.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr91720.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr91720.c (.../branches/gcc-9-branch) +@@ -0,0 +1,22 @@ ++/* PR rtl-optimization/91720 */ ++/* { dg-do run } */ ++/* { dg-options "-Og -fno-forward-propagate -frerun-cse-after-loop -fno-tree-fre" } */ ++ ++unsigned a, b; ++ ++int ++main () ++{ ++#if __CHAR_BIT__ == 8 ++ unsigned c = 1; ++ unsigned long long d = 0; ++ unsigned char e = 0; ++ e = __builtin_sub_overflow (d, e, &a) ? 0 : 0x80; ++ e = e << 7 | e >> c; ++ __builtin_memmove (&d, &a, 2); ++ b = e; ++ if (b != 0x40) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/pr89435.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89435.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89435.c (.../branches/gcc-9-branch) +@@ -0,0 +1,21 @@ ++/* PR rtl-optimization/89435 */ ++/* { dg-do run } */ ++/* { dg-options "-O1 -fno-forward-propagate -fno-tree-forwprop -fno-tree-ccp" } */ ++ ++unsigned short a; ++unsigned int b, c, d, e, f; ++ ++int ++main () ++{ ++#if __CHAR_BIT__ == 8 && __SIZEOF_INT__ == 4 ++ unsigned char g = e = __builtin_mul_overflow_p (5, 542624702, 0); ++ d = __builtin_bswap64 (a); ++ b = __builtin_sub_overflow ((unsigned char) -e, (unsigned int) d, &g); ++ e = __builtin_mul_overflow (b, c, &a); ++ f = g + e; ++ if (f != 0xff) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/vect/pr91665.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/pr91665.c (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++/* PR tree-optimization/91665 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-Ofast" } */ ++ ++short int v; ++ ++void ++foo (short int x, short int y) ++{ ++ short int *p = &v; ++ ++ x = 1; ++ while (x != 0) ++ x += ++y || (*p = x); ++} +Index: gcc/testsuite/gcc.dg/vect/vect-fma-3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vect/vect-fma-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/vect/vect-fma-3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++/* PR tree-optimization/91723 */ ++/* { dg-do compile { target { scalar_all_fma || { i?86-*-* x86_64-*-* } } } } */ ++/* { dg-additional-options "-mfma" { target { i?86-*-* x86_64-*-* } } } */ ++ ++void ++foo (double *restrict r, const double *restrict a, ++ const double *restrict b, const double *restrict c) ++{ ++ for (int i = 0; i < 1024; i++) ++ { ++ double x = __builtin_fma (a[i], b[i], c[i]); ++ x = __builtin_fma (a[i], b[i], x); ++ r[i] = x; ++ } ++} ++ ++/* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" { target vect_double } } } */ +Index: gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -fdump-tree-fre1" } */ ++ ++struct s { int x; }; ++struct t { int x; }; ++ ++void swap(struct s* p, struct t* q) ++{ ++ p->x = q->x; ++ q->x = p->x; ++} ++ ++/* The second statement is redundant. */ ++/* { dg-final { scan-tree-dump-times "x = " 1 "fre1" } } */ ++/* { dg-final { scan-tree-dump-times " = \[^;\]*x;" 1 "fre1" } } */ +Index: gcc/testsuite/gcc.dg/Wnonnull.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/Wnonnull.c (.../branches/gcc-9-branch) +@@ -2,7 +2,10 @@ + { dg-do compile } + { dg-options "-O2 -Wall" } */ + +-#include ++extern __SIZE_TYPE__ strlen (const char *__s) ++ __attribute ((pure)) __attribute ((nonnull (1))); ++extern void *memcpy (void *__restrict __dest, const void *__restrict __src, ++ __SIZE_TYPE__ __n) __attribute ((nonnull (1, 2))); + + char buf[100]; + +@@ -14,9 +17,9 @@ + + __attribute ((nonnull (1, 2))) + inline char* +-my_strcpy (char *restrict dst, const char *restrict src, size_t size) ++my_strcpy (char *restrict dst, const char *restrict src, __SIZE_TYPE__ size) + { +- size_t len = strlen (src); /* { dg-warning "argument 1 null where non-null expected" } */ ++ __SIZE_TYPE__ len = strlen (src); /* { dg-warning "argument 1 null where non-null expected" } */ + if (len < size) + memcpy (dst, src, len + 1); /* { dg-warning "argument 2 null where non-null expected" } */ + else +Index: gcc/testsuite/gcc.dg/pr89795.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr89795.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/gcc.dg/pr89795.c (.../branches/gcc-9-branch) +@@ -0,0 +1,25 @@ ++/* PR rtl-optimization/89795 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -fno-dce -fno-forward-propagate -fno-sched-pressure" } */ ++ ++unsigned char a; ++unsigned b, c, d; ++ ++int ++main () ++{ ++#if __CHAR_BIT__ == 8 ++ unsigned x; ++ int e, f; ++ unsigned char g; ++ e = __builtin_bswap32 (a); ++ f = __builtin_ffs (~(unsigned short) e); ++ a = __builtin_mul_overflow ((unsigned char) 0xf7, f, &g); ++ a |= __builtin_sub_overflow_p (c, 0, (unsigned char) 0); ++ d = g + b; ++ x = d; ++ if (x != 0xf7) ++ __builtin_abort (); ++#endif ++ return 0; ++} +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,708 @@ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-10-22 Iain Sandoe ++ ++ * gcc.dg/Wnonnull.c: Provide prototypes for strlen and memcpy. ++ Use __SIZE_TYPE__ instead of size_t. ++ ++ Backport from mainline. ++ 2019-10-19 Iain Sandoe ++ ++ * gcc.dg/Wnonnull.c: Add attributed function declarations for ++ memcpy and strlen for Darwin. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-10-13 Iain Sandoe ++ ++ * gcc.target/i386/indirect-thunk-1.c: Allow 'l' or 'L' in ++ indirection label prefix, for Darwin. ++ * gcc.target/i386/indirect-thunk-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-5.c: Likewise. ++ * gcc.target/i386/indirect-thunk-attr-6.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-extern-4.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-1.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-2.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-3.c: Likewise. ++ * gcc.target/i386/indirect-thunk-inline-4.c: Likewise. ++ * gcc.target/i386/pr32219-2.c: Likewise. ++ * gcc.target/i386/pr32219-3.c: Likewise. ++ * gcc.target/i386/pr32219-4.c: Likewise. ++ * gcc.target/i386/pr32219-7.c: Likewise. ++ * gcc.target/i386/pr32219-8.c: Likewise. ++ * gcc.target/i386/ret-thunk-14.c: Likewise. ++ * gcc.target/i386/ret-thunk-15.c: Likewise. ++ * gcc.target/i386/ret-thunk-9.c: Likewise. ++ ++2019-10-30 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-08-13 Iain Sandoe ++ ++ * obj-c++.dg/stubify-1.mm: Rename symbol stub option. ++ * obj-c++.dg/stubify-2.mm: Likewise. ++ * objc.dg/stubify-1.m: Likewise. ++ * objc.dg/stubify-2.m: Likewise. ++ ++2019-10-30 Dragan Mladjenovic ++ ++ Backport from mainline ++ 2019-07-09 Dragan Mladjenovic ++ ++ * gcc.target/mips/cfgcleanup-jalr1.c: New test. ++ * gcc.target/mips/cfgcleanup-jalr2.c: New test. ++ * gcc.target/mips/cfgcleanup-jalr3.c: New test. ++ ++2019-10-29 Jakub Jelinek ++ ++ PR c++/92201 ++ * g++.dg/other/pr92201.C: New test. ++ ++2019-10-28  Paul Thomas   ++ ++ Backport from trunk ++ PR fortran/91926 ++ * gfortran.dg/ISO_Fortran_binding_13.f90: New test. ++ * gfortran.dg/ISO_Fortran_binding_13.c: Additional source. ++ * gfortran.dg/ISO_Fortran_binding_14.f90: New test. ++ ++2019-10-28 Jiufu Guo ++ ++ Backport from mainline ++ PR target/70010 ++ * gcc.target/powerpc/pr70010.c: Add -Wno-psabi. ++ * gcc.target/powerpc/pr70010-1.c: Require LTO. ++ * gcc.target/powerpc/pr70010-2.c: Require LTO. ++ ++2019-10-28 UroÅ¡ Bizjak ++ ++ PR target/92225 ++ * gcc.target/i386/pr92225.c: New test. ++ ++2019-10-28 Ilya Leoshkevich ++ ++ Backport from mainline ++ PR rtl-optimization/92007 ++ * g++.dg/opt/pr92007.C: New test (from Arseny Solokha). ++ ++2019-10-28 Peter Bergner ++ Jiufu Guo ++ ++ PR target/70010 ++ * gcc.target/powerpc/pr70010.c: New test. ++ * gcc.target/powerpc/pr70010-1.c: New test. ++ * gcc.target/powerpc/pr70010-2.c: New test. ++ * gcc.target/powerpc/pr70010-3.c: New test. ++ * gcc.target/powerpc/pr70010-4.c: New test. ++ ++2019-10-28 Tobias Burnus ++ ++ Backport from mainline ++ 2019-10-28 Tobias Burnus ++ ++ PR fortran/91863 ++ * gfortran.dg/bind-c-intent-out.f90: New. ++ ++2019-10-27 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/86248 ++ * gfortran.dg/char_result_19.f90: New test. ++ * gfortran.dg/char_result_mod_19.f90: Module for the new test. ++ ++2019-10-25 Richard Earnshaw ++ ++ Backport from mainline ++ 2019-05-08 Mihail Ionescu ++ Richard Earnshaw ++ PR target/88167 ++ * gcc.target/arm/pr88167-1.c: New test. ++ * gcc.target/arm/pr88167-2.c: New test. ++ ++2019-10-24 Mihail Ionescu ++ ++ Backport from mainline ++ 2019-10-18 Andre Vieira ++ ++ * gcc.target/arm/multilib.exp: Add extra tests. ++ ++2019-10-23 Martin Liska ++ ++ Backport from mainline ++ 2019-09-27 Jakub Jelinek ++ ++ PR tree-optimization/91885 ++ * gcc.dg/pr91885.c (__int64_t): Change from long to long long. ++ (__uint64_t): Change from unsigned long to unsigned long long. ++ ++2019-10-23 Martin Liska ++ ++ Backport from mainline ++ 2019-09-26 Martin Liska ++ ++ PR tree-optimization/91885 ++ * gcc.dg/pr91885.c: New test. ++ ++2019-10-23 Eric Botcazou ++ ++ * gcc.c-torture/execute/20191023-1.c: New test. ++ ++2019-10-23 Richard Biener ++ ++ Backport from mainline ++ 2019-10-17 Richard Biener ++ ++ PR debug/91887 ++ * g++.dg/debug/dwarf2/pr91887.C: New testcase. ++ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-10-17 Jakub Jelinek ++ ++ PR tree-optimization/92056 ++ * gcc.c-torture/compile/pr92056.c: New test. ++ ++ PR fortran/87752 ++ * gfortran.dg/gomp/pr87752.f90: New test. ++ ++ 2019-10-05 Jakub Jelinek ++ ++ PR tree-optimization/91734 ++ * gcc.dg/pr91734.c: New test. ++ ++ 2019-10-04 Jakub Jelinek ++ ++ PR c++/91974 ++ * g++.dg/cpp1z/eval-order5.C: New test. ++ ++ 2019-10-01 Jakub Jelinek ++ ++ PR c++/91925 ++ * g++.dg/conversion/packed2.C: New test. ++ ++ 2019-09-27 Jakub Jelinek ++ ++ PR c++/88203 ++ * c-c++-common/gomp/pr88203-1.c: New test. ++ * c-c++-common/gomp/pr88203-2.c: New test. ++ * c-c++-common/gomp/pr88203-3.c: New test. ++ ++ PR middle-end/91920 ++ * c-c++-common/gomp/pr91920.c: New test. ++ ++ 2019-09-11 Jakub Jelinek ++ ++ PR rtl-optimization/89435 ++ PR rtl-optimization/89795 ++ PR rtl-optimization/91720 ++ * gcc.dg/pr89435.c: New test. ++ * gcc.dg/pr89795.c: New test. ++ * gcc.dg/pr91720.c: New test. ++ ++ PR tree-optimization/91723 ++ * gcc.dg/vect/vect-fma-3.c: New test. ++ ++ 2019-09-07 Jakub Jelinek ++ ++ PR tree-optimization/91665 ++ * gcc.dg/vect/pr91665.c: New test. ++ ++ 2019-09-05 Jakub Jelinek ++ ++ PR middle-end/91001 ++ PR middle-end/91105 ++ PR middle-end/91106 ++ * gcc.c-torture/compile/pr91001.c: New test. ++ ++ 2019-09-02 Jakub Jelinek ++ ++ PR tree-optimization/91632 ++ * gcc.c-torture/execute/pr91632.c: New test. ++ ++ 2019-09-01 Jakub Jelinek ++ ++ PR middle-end/91623 ++ * gcc.target/i386/pr91623.c: New test. ++ ++ PR lto/91572 ++ * g++.dg/lto/pr91572_0.C: New test. ++ ++ 2019-08-29 Jakub Jelinek ++ ++ PR tree-optimization/91351 ++ * g++.dg/opt/pr91351.C: New test. ++ ++ 2019-08-09 Jakub Jelinek ++ ++ PR c/91401 ++ * c-c++-common/gomp/pr91401-1.c: New test. ++ * c-c++-common/gomp/pr91401-2.c: New test. ++ ++2019-10-18 Steven G. Kargl ++ ++ PR fortran/69455 ++ * gfortran.dg/pr69455_1.f90: New test. ++ * gfortran.dg/pr69455_2.f90: Ditto. ++ ++2019-10-18 Tobias Burnus ++ ++ Backport from mainline ++ 2019-10-18 Tobias Burnus ++ ++ PR fortran/91586 ++ * gfortran.dg/class_71.f90: New. ++ ++2019-10-17 Steven G. Kargl ++ ++ PR fortran/83113 ++ PR fortran/89943 ++ * gfortran.dg/pr89943_1.f90: New test. ++ * gfortran.dg/pr89943_2.f90: Ditto. ++ * gfortran.dg/pr89943_3.f90: Ditto. ++ * gfortran.dg/pr89943_4.f90: Ditto. ++ ++2019-10-17 Bill Schmidt ++ ++ Backport from mainline ++ 2019-10-15 Bill Schmidt ++ ++ PR target/92093 ++ * gcc.target/powerpc/pr91275.c: Fix type and endian issues. ++ ++2019-10-16 Richard Biener ++ ++ Backport from mainline ++ 2019-10-02 Richard Biener ++ ++ PR c++/91606 ++ * g++.dg/torture/pr91606.C: New testcase. ++ ++ 2019-09-19 Richard Biener ++ ++ PR tree-optimization/91812 ++ * gcc.dg/torture/pr91812.c: New testcase. ++ ++2019-10-14 Will Schmidt ++ ++ Backport from trunk. ++ 2019-09-26 Will Schmidt ++ ++ * gcc.target/powerpc/pure-builtin-redundant-load.c: New. ++ ++2019-10-11 Steven G. Kargl ++ ++ PR fortran/91715 ++ * gfortran.dg/function_kinds_5.f90: Prune run-on error. ++ * gfortran.dg/pr85543.f90: Ditto. ++ * gfortran.dg/pr91715.f90: New test. ++ ++2019-10-11 Steven G. Kargl ++ ++ PR fortran/91649 ++ * gfortran.dg/pr91649.f90: New test. ++ ++2019-10-10 Steven G. Kargl ++ ++ PR fortran/91801 ++ * gfortran.dg/pr91801.f90: New test. ++ ++2019-10-10 UroÅ¡ Bizjak ++ ++ PR target/92022 ++ * g++.dg/pr92022.C: New test. ++ ++2019-10-07 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/84487 ++ * gfortran.dg/typebound_call_22.f03: xfail. ++ ++2019-10-07 Bill Schmidt ++ ++ Backport from mainline ++ 2019-10-01 Bill Schmidt ++ ++ PR target/91275 ++ * gcc.target/powerpc/pr91275.c: New. ++ ++2019-10-05 Steven G. Kargl ++ ++ PR fortran/47054 ++ * gfortran.dg/pr47054_1.f90: New test ++ * gfortran.dg/pr47054_2.f90: Ditto. ++ ++2019-10-05 Steven G. Kargl ++ ++ PR fortran/91942 ++ * gfortran.dg/pr91587.f90: Update dg-error regex. ++ * gfortran.dg/pr91942.f90: New test. ++ ++2019-10-04 Steven G. Kargl ++ ++ PR fortran/91785 ++ * gfortran.dg/pr91785.f90: New test. ++ ++2019-10-04 Dragan Mladjenovic ++ ++ Backport from mainline ++ 2019-10-03 Dragan Mladjenovic ++ ++ PR target/91769 ++ * gcc.target/mips/pr91769.c: New test. ++ ++2019-10-02 Bernd Edlinger ++ ++ Backport from mainline ++ ++ 2019-09-13 Bernd Edlinger ++ ++ PR fortran/91716 ++ * gfortran.dg/pr91716.f90: New test. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91864 ++ * gcc/testsuite/gfortran.dg/pr91864.f90 ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91802 ++ * gfortran.dg/pr91802.f90: New test. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91714 ++ * gfortran.dg/dec_type_print_3.f90: Update dg-error regex. ++ * gfortran.dg/pr91714.f90: New test. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91641 ++ * gfortran.dg/pr91641.f90: New test. ++ ++2019-10-01 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2019-09-24 Kyrylo Tkachov ++ ++ * gcc.target/aarch64/nosplit-di-const-volatile_1.c: New test. ++ ++2019-09-25 Kyrylo Tkachov ++ ++ Backport from mainline ++ 2019-08-22 Kyrylo Tkachov ++ ++ * gcc.target/arm/acle/crc_hf_1.c: New test. ++ ++2019-09-21 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/91588 ++ * gfortran.dg/associate_49.f90: New test. ++ ++2019-09-20 Eric Botcazou ++ ++ * gcc.dg/pr91269.c: New test. ++ ++2019-09-19 Steven G. Kargl ++ ++ PR fortran/91727 ++ * gfortran.dg/pr91727.f90: New test. ++ ++2019-09-19 Kito Cheng ++ ++ Backport from mainline ++ 2019-09-05 Jakub Jelinek ++ Jim Wilson ++ ++ PR target/91635 ++ * gcc.c-torture/execute/pr91635.c: New test. ++ * gcc.target/riscv/shift-shift-4.c: New test. ++ * gcc.target/riscv/shift-shift-5.c: New test. ++ ++2019-09-18 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91550 ++ * gfortran.dg/do_subscript_6.f90: New test. ++ ++2019-09-15 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91557 ++ * gfortran.dg/warn_unused_dummy_argument_5.f90: New test. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91553 ++ * gfortran.dg/pr91553.f90: New test. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91566 ++ * gfortran.dg/pr91566.f90: New test. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91642 ++ * gfortran.dg/pr91642.f90: New test. ++ ++2019-09-11 Eric Botcazou ++ ++ * gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test. ++ ++2019-09-09 Jakub Jelinek ++ ++ PR target/87853 ++ * gcc.target/i386/pr87853.c: New test. ++ ++ PR target/91704 ++ * gcc.target/i386/pr91704.c: New test. ++ ++2019-09-07 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/91589 ++ * gfortran.dg/pr91589.f90: New test. ++ ++2019-09-05 Harald Anlauf ++ ++ Backport from mainline ++ PR fortran/91496 ++ * gfortran.dg/pr91496.f90: New testcase. ++ ++ PR fortran/91496 ++ * gfortran.dg/directive_unroll_5.f90: Adjust error message. ++ ++2019-09-05 Steven G. Kargl ++ ++ PR fortran/91660 ++ * gfortran.dg/pdt_4.f03: Fix invalid code. ++ * gfortran.dg/pr91660_1.f90: New test. ++ * gfortran.dg/pr91660_2.f90: Ditto. ++ ++2019-09-04 Wilco Dijkstra ++ ++ Backport from mainline ++ 2019-08-13 Wilco Dijkstra ++ ++ PR target/81800 ++ * gcc.target/aarch64/no-inline-lrint_3.c: New test. ++ ++2019-09-03 Jakub Jelinek ++ ++ PR tree-optimization/91597 ++ * gcc.c-torture/execute/pr91597.c: New test. ++ ++2019-09-02 Steven G. Kargl ++ ++ PR fortran/91552 ++ * gfortran.dg/pr91552.f90: New test. ++ ++2019-09-02 Martin Liska ++ ++ Backport from mainline ++ 2019-09-02 Martin Liska ++ ++ PR c++/91155 ++ * g++.dg/torture/pr91155.C: New test. ++ ++2019-09-01 Eric Botcazou ++ ++ * gcc.c-torture/execute/20190901-1.c: New test. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91587 ++ * gfortran.dg/pr91587.f90: New test. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91565 ++ * gfortran.dg/pr91565.f90: New test. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91564 ++ * gfortran.dg/pr91564.f90: New test. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91551 ++ * gfortran.dg/allocated_3.f90 ++ ++2019-08-30 Segher Boessenkool ++ ++ Backport from trunk ++ 2019-08-23 Segher Boessenkool ++ ++ PR target/91481 ++ * gcc.target/powerpc/darn-3.c: New testcase. ++ ++2019-08-30 Richard Biener ++ ++ Backport from mainline ++ 2019-04-29 Richard Biener ++ ++ PR tree-optimization/90278 ++ * gcc.dg/torture/pr90278.c: New testcase. ++ ++2019-08-29 Richard Biener ++ ++ PR tree-optimization/91568 ++ * gfortran.dg/pr91568.f: New testcase. ++ ++2019-08-28 Richard Biener ++ ++ Backport from mainline ++ 2019-05-27 Richard Biener ++ ++ PR tree-optimization/90637 ++ * gcc.dg/gomp/pr90637.c: New testcase. ++ ++2019-08-23 Mihailo Stojanovic ++ ++ * gcc.target/mips/get-fcsr-3.c: New test. ++ ++2019-08-20 Eric Botcazou ++ ++ * gcc.c-torture/execute/20190820-1.c: New test. ++ ++2019-08-18 Steven G. Kargl ++ ++ PR fortran/91485 ++ * gfortran.dg/pr91485.f90: New test. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/91471 ++ * gfortran.dg/pr91471.f90: New test. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/78739 ++ * fortran.dg/pr78739.f90: New test. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/78719 ++ * gfortran.dg/pr78719_1.f90: New test. ++ * gfortran.dg/pr78719_2.f90: Ditto. ++ * gfortran.dg/pr78719_3.f90: Ditto. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/82992 ++ * gfortran.dg/pr71649.f90: Adjust error messages. ++ * gfortran.dg/use_15.f90: Ditto. ++ * gfortran.dg/use_rename_8.f90: Ditto. ++ ++2019-08-15 Richard Biener ++ ++ PR tree-optimization/91445 ++ * gcc.dg/torture/pr91445.c: New testcase. ++ ++ Backport from mainline ++ 2019-07-05 Richard Biener ++ ++ PR tree-optimization/91091 ++ * gcc.dg/tree-ssa/pr91091-2.c: New testcase. ++ ++2019-08-14 Martin Sebor ++ ++ Backport from mainline ++ ++ 2019-08-01 Martin Sebor ++ ++ PR c++/90947 ++ * c-c++-common/array-1.c: New test. ++ * g++.dg/abi/mangle73.C: New test. ++ * g++.dg/cpp2a/nontype-class23.C: New test. ++ * g++.dg/init/array53.C: New test. ++ ++2019-08-14 Jonathan Wakely ++ ++ PR c++/91436 ++ * g++.dg/lookup/missing-std-include-5.C: Limit test to C++14 and up. ++ * g++.dg/lookup/missing-std-include-6.C: Don't check make_unique in ++ test that runs for C++11. ++ * g++.dg/lookup/missing-std-include-8.C: Check make_unique here. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/87991 ++ * gfortran.dg/pr87991.f90: New test. ++ ++2013-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/90563 ++ * gfortran.dg/do_subsript_5.f90: New test. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/88072 ++ * gfortran.dg/pr88072.f90: New test. ++ * gfortran.dg/unlimited_polymorphic_28.f90: Fix error message. ++ ++2019-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/90561 ++ * gfortran.dg/deferred_character_34.f90: New test. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/89647 ++ * gfortran.dg/pr89647.f90: New test. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/87993 ++ * gfortran.dg/pr87993.f90: New test. ++ ++2019-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91424 ++ * gfortran.dg/do_subscript_3.f90: New test. ++ * gfortran.dg/do_subscript_4.f90: New test. ++ * gfortran.dg/pr70754.f90: Use indices that to not overflow. ++ ++2019-08-12 Steven G. Kargl ++ ++ PR fortran/91359 ++ * gfortran.dg/pr91359_1.f: New test. ++ * gfortran.dg/pr91359_2.f: Ditto. ++ ++2019-08-12 Steven G. Kargl ++ ++ PR fortran/42546 ++ * gfortran.dg/allocated_1.f90: New test. ++ * gfortran.dg/allocated_2.f90: Ditto. ++ ++2019-08-02 Tom Honermann ++ ++ PR c++/88095 ++ * g++.dg/cpp2a/udlit-class-nttp-ctad.C: New test. ++ * g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C: New test. ++ * g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C: New test. ++ * g++.dg/cpp2a/udlit-class-nttp.C: New test. ++ * g++.dg/cpp2a/udlit-class-nttp-neg.C: New test. ++ * g++.dg/cpp2a/udlit-class-nttp-neg2.C: New test. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +@@ -427,7 +1132,7 @@ + Backport from mainline. + 2019-05-15 Iain Sandoe + +- * lib/target-supports.exp ++ * lib/target-supports.exp + (check_effective_target_powerpc_p8vector_ok): No support for Darwin. + (check_effective_target_powerpc_p9vector_ok): Likewise. + (check_effective_target_powerpc_float128_sw_ok): Likewise. +@@ -720,7 +1425,7 @@ + + Backport from mainline + PR fortran/91077 +- * gfortran.dg/pointer_array_11.f90 : New test. ++ * gfortran.dg/pointer_array_11.f90: New test. + + 2019-07-05 Szabolcs Nagy + +@@ -969,7 +1674,7 @@ + * gcc.target/i386/pr82699-6.c: Likewise + * gcc.target/i386/returninst1.c: Likewise + * gcc.target/i386/returninst2.c: Likewise +- * gcc.target/i386/returninst3.c : Likewise ++ * gcc.target/i386/returninst3.c: Likewise + + 2019-05-30 Iain Sandoe + +@@ -1131,7 +1836,7 @@ + + Backport from trunk + PR fortran/90498 +- * gfortran.dg/associate_48.f90 : New test. ++ * gfortran.dg/associate_48.f90: New test. + + 2019-05-17 Jakub Jelinek + +@@ -3801,21 +4506,21 @@ + 2019-02-23 Paul Thomas + + PR fortran/88117 +- * gfortran.dg/deferred_character_32.f90 : New test ++ * gfortran.dg/deferred_character_32.f90: New test + + 2019-02-23 Paul Thomas + + PR fortran/89385 +- * gfortran.dg/ISO_Fortran_binding_1.f90 : Correct test for ++ * gfortran.dg/ISO_Fortran_binding_1.f90: Correct test for + previously incorrect lbound for allocatable expressions. Also + correct stop values to avoid repetition. +- * gfortran.dg/ISO_Fortran_binding_5.f90 : New test +- * gfortran.dg/ISO_Fortran_binding_5.c : Support previous test. ++ * gfortran.dg/ISO_Fortran_binding_5.f90: New test ++ * gfortran.dg/ISO_Fortran_binding_5.c: Support previous test. + + PR fortran/89366 +- * gfortran.dg/ISO_Fortran_binding_6.f90 : New test +- * gfortran.dg/ISO_Fortran_binding_6.c : Support previous test. +- * gfortran.dg/pr32599.f03 : Set standard to F2008. ++ * gfortran.dg/ISO_Fortran_binding_6.f90: New test ++ * gfortran.dg/ISO_Fortran_binding_6.c: Support previous test. ++ * gfortran.dg/pr32599.f03: Set standard to F2008. + + 2019-02-22 David Malcolm + +@@ -4444,7 +5149,7 @@ + 2019-02-09 Paul Thomas + + PR fortran/89200 +- * gfortran.dg/array_reference_2.f90 : New test. ++ * gfortran.dg/array_reference_2.f90: New test. + + 2019-02-09 Jakub Jelinek + +@@ -4704,17 +5409,17 @@ + 2019-02-02 Paul Thomas + + PR fortran/88393 +- * gfortran.dg/alloc_comp_assign_16.f03 : New test. ++ * gfortran.dg/alloc_comp_assign_16.f03: New test. + + 2019-02-02 Paul Thomas + + PR fortran/88980 +- * gfortran.dg/realloc_on_assign_32.f90 : New test. ++ * gfortran.dg/realloc_on_assign_32.f90: New test. + + 2019-02-02 Paul Thomas + + PR fortran/88685 +- * gfortran.dg/pointer_array_component_3.f90 : New test. ++ * gfortran.dg/pointer_array_component_3.f90: New test. + + 2019-02-02 Jakub Jelinek + +Index: gcc/testsuite/g++.dg/lookup/missing-std-include-8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-8.C (.../branches/gcc-9-branch) +@@ -13,6 +13,15 @@ + // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } + } + ++template ++void test_make_unique () ++{ ++ std::make_unique(); // { dg-error "'make_unique' is not a member of 'std'" } ++ // { dg-message "'std::make_unique' is only available from C\\+\\+14 onwards" "" { target *-*-* } .-1 } ++ // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 } ++ // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } ++} ++ + void test_array () + { + std::array a; // { dg-error "'array' is not a member of 'std'" } +Index: gcc/testsuite/g++.dg/lookup/missing-std-include-5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-5.C (.../branches/gcc-9-branch) +@@ -1,2 +1,3 @@ ++// { dg-do compile { target c++14 } } + using namespace std::complex_literals; // { dg-error "" } + // { dg-message "#include " "" { target *-*-* } .-1 } +Index: gcc/testsuite/g++.dg/lookup/missing-std-include-6.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/lookup/missing-std-include-6.C (.../branches/gcc-9-branch) +@@ -11,15 +11,6 @@ + // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } + } + +-template +-void test_make_unique () +-{ +- auto p = std::make_unique(); // { dg-error "'make_unique' is not a member of 'std'" } +- // { dg-message "'#include '" "" { target *-*-* } .-1 } +- // { dg-error "expected primary-expression before '>' token" "" { target *-*-* } .-2 } +- // { dg-error "expected primary-expression before '\\)' token" "" { target *-*-* } .-3 } +-} +- + std::shared_ptr test_shared_ptr; // { dg-error "'shared_ptr' in namespace 'std' does not name a template type" } + // { dg-message "'#include '" "" { target *-*-* } .-1 } + +Index: gcc/testsuite/g++.dg/conversion/packed2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/conversion/packed2.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/conversion/packed2.C (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++// PR c++/91925 ++// { dg-do compile { target c++11 } } ++// { dg-options "-fpack-struct" } ++ ++struct A {}; ++int foo (A); ++struct B { ++ A a; ++ decltype (foo (a)) p; ++}; ++template T bar (T); ++class C { ++ A a; ++ decltype (bar (a)) p; ++}; +Index: gcc/testsuite/g++.dg/lto/pr91572_0.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/lto/pr91572_0.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/lto/pr91572_0.C (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++// PR lto/91572 ++// { dg-lto-do link } ++// { dg-lto-options { { -O -fPIC -flto } } } ++// { dg-require-effective-target shared } ++// { dg-require-effective-target fpic } ++// { dg-extra-ld-options "-shared" } ++ ++void foo (char); ++namespace N { ++ class A { A (); }; ++ A::A () { asm ("" : : "g" (0)); } ++} +Index: gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/Wsign-conversion-5.C (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++// PR c++/87519 - bogus warning with -Wsign-conversion. ++// { dg-options "-Wsign-conversion" } ++ ++typedef unsigned long int uint64_t; ++ ++void f(unsigned long int a, int q) ++{ ++ a += a + q; // { dg-warning "may change the sign" } ++ ++ // Explicit cast should disable the warning. ++ a = a + static_cast(q); ++ a = a + (uint64_t) q; ++ a = a + uint64_t(q); ++ a = a + static_cast(q); ++ a = a + (const uint64_t) q; ++ a = a + static_cast(q); ++ a = a + static_cast(q); ++} +Index: gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.C (.../branches/gcc-9-branch) +@@ -0,0 +1,5 @@ ++// PR c++/90884 ++// { dg-options "-Wctor-dtor-privacy" } ++// { dg-prune-output "In file included from" } ++ ++#include "ctor-dtor-privacy-4.h" // { dg-bogus "is public" } +Index: gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/warn/ctor-dtor-privacy-4.h (.../branches/gcc-9-branch) +@@ -0,0 +1,7 @@ ++#pragma GCC system_header ++ ++namespace std { ++struct __nonesuch { ++ __nonesuch(__nonesuch const &); ++}; ++} // namespace std +Index: gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/debug/dwarf2/pr91887.C (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++// { dg-do compile } ++// { dg-require-effective-target c++11 } ++// { dg-options "-g -fdebug-types-section" } ++class A { ++public: ++ A(); ++ template A(U); ++}; ++template struct B { typedef A type; }; ++template ++int Bind(R(Args...), typename B::type...) { return 0; } ++void KeepBufferRefs(A, A) { A a, b(Bind(KeepBufferRefs, a, b)); } +Index: gcc/testsuite/g++.dg/pr92022.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/pr92022.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/pr92022.C (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++// { dg-do compile { target alpha*-*-* } } ++// { dg-options "-O1 -g -fno-var-tracking -mcpu=ev4 -mieee" } ++ ++struct a { ++ a(long); ++}; ++long b; ++void c() { ++ a d(1); ++ double e = b; ++ for (; b;) ++ d = e; ++} +Index: gcc/testsuite/g++.dg/opt/pr91351.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr91351.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr91351.C (.../branches/gcc-9-branch) +@@ -0,0 +1,38 @@ ++// PR tree-optimization/91351 ++// { dg-do run } ++// { dg-options "-O2 -fstrict-enums" } ++ ++enum E { e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ++ e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25 }; ++ ++__attribute__((noipa)) void ++foo () ++{ ++ __builtin_abort (); ++} ++ ++__attribute__((noipa)) void ++bar () ++{ ++} ++ ++__attribute__((noipa)) void ++baz (E e) ++{ ++ switch (e) ++ { ++ case e11: ++ case e12: ++ case e13: foo (); break; ++ case e24: break; ++ case e14: ++ case e15: break; ++ default: bar (); break; ++ } ++} ++ ++int ++main () ++{ ++ baz (e3); ++} +Index: gcc/testsuite/g++.dg/opt/pr92007.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/pr92007.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/opt/pr92007.C (.../branches/gcc-9-branch) +@@ -0,0 +1,32 @@ ++// PR rtl-optimization/92007 ++// { dg-do compile } ++// { dg-options "-O2 -fno-tree-dominator-opts -fno-tree-forwprop --param max-cse-insns=0 -Wno-return-type -std=gnu++98 -freorder-blocks-and-partition" } ++ ++void ++sb (int *); ++ ++class d4 { ++public: ++ ~d4(); ++ void gb (); ++ int op () { return no; } ++ int wl () { return tf; } ++ bool ee () try { gb (); } catch (...) { return false; } ++ bool b1 () { return (tf == no) ? false : ee (); } ++ ++private: ++ int no, tf; ++}; ++ ++void ++hs (int *v9) ++{ ++ d4 p6; ++ ++ p6.gb (); ++ if (p6.op () > p6.wl ()) ++ { ++ p6.b1 (); ++ sb (v9); ++ } ++} +Index: gcc/testsuite/g++.dg/parse/operator8.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/parse/operator8.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/parse/operator8.C (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++// PR c++/91521 - wrong error with operator->. ++// { dg-do compile } ++ ++struct foo { ++ int bar() { return 0; } ++ foo* operator->() { return this; } ++}; ++ ++int main() ++{ ++ int pt(foo()->bar()); ++ return pt; ++} +Index: gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic9.C (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++// PR c++/90538 ++// { dg-do compile { target c++11 } } ++ ++template ++void f(Ts... ts) ++{ ++ [=]{ ++ f(ts...); ++ f(ts...); ++ }(); ++} ++ ++void g() ++{ ++ f(1); ++} +Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-68.C (.../branches/gcc-9-branch) +@@ -0,0 +1,40 @@ ++// PR c++/81429 - wrong parsing of constructor with C++11 attribute. ++// { dg-do compile { target c++11 } } ++// { dg-additional-options "-Wunused-parameter -Wno-pedantic" } ++ ++void fn1([[maybe_unused]] int a) { } ++void fn2(int a [[maybe_unused]]) { } ++void fn3(__attribute__((unused)) int a) { } ++void fn4(int a __attribute__((unused))) { } ++ ++struct S1 { ++ S1([[maybe_unused]] int a) { } ++}; ++ ++struct S2 { ++ S2([[maybe_unused]] int f, [[maybe_unused]] int a) { } ++}; ++ ++struct S3 { ++ S3(int a [[maybe_unused]]) { } ++}; ++ ++struct S4 { ++ S4(int f [[maybe_unused]], int a [[maybe_unused]]) { } ++}; ++ ++struct S5 { ++ S5(__attribute__((unused)) int a) { } ++}; ++ ++struct S6 { ++ S6(__attribute__((unused)) int f, __attribute__((unused)) int a) { } ++}; ++ ++struct S7 { ++ S7(int a __attribute__((unused))) { } ++}; ++ ++struct S8 { ++ S8(int f __attribute__((unused)), int a __attribute__((unused))) { } ++}; +Index: gcc/testsuite/g++.dg/cpp0x/nontype5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nontype5.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nontype5.C (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++// PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17. ++// { dg-do compile { target c++11 } } ++ ++template ++constexpr bool is_integral_(...) { ++ return false; ++} ++template ++constexpr bool is_integral_(long) { ++ return true; ++} ++ ++static_assert(is_integral_(42), ""); ++static_assert(!is_integral_(42), ""); ++ ++struct S {}; ++static_assert(!is_integral_(42), ""); +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr1.C (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++// PR c++/92062 - ODR-use ignored for static member of class template. ++// { dg-do run { target c++11 } } ++ ++template struct A { ++ static const bool x; ++ static_assert(&x, ""); // odr-uses A<...>::x ++}; ++ ++int g; ++ ++template ++const bool A::x = (g = 42, false); ++ ++void f(A<0>) {} // A<0> must be complete, so is instantiated ++int main() ++{ ++ if (g != 42) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-69.C (.../branches/gcc-9-branch) +@@ -0,0 +1,40 @@ ++// PR c++/81429 - wrong parsing of constructor with C++11 attribute. ++// { dg-do compile { target c++11 } } ++// { dg-additional-options "-Wno-pedantic" } ++ ++void fn1([[maybe_unused]] int); ++void fn2(int a [[maybe_unused]]); ++void fn3(__attribute__((unused)) int); ++void fn4(int __attribute__((unused))); ++ ++struct S1 { ++ S1([[maybe_unused]] int); ++}; ++ ++struct S2 { ++ S2([[maybe_unused]] int, [[maybe_unused]] int); ++}; ++ ++struct S3 { ++ S3(int a [[maybe_unused]]); ++}; ++ ++struct S4 { ++ S4(int a [[maybe_unused]], int b [[maybe_unused]]); ++}; ++ ++struct S5 { ++ S5(__attribute__((unused)) int); ++}; ++ ++struct S6 { ++ S6(__attribute__((unused)) int, __attribute__((unused)) int); ++}; ++ ++struct S7 { ++ S7(int __attribute__((unused))); ++}; ++ ++struct S8 { ++ S8(int __attribute__((unused)), int __attribute__((unused))); ++}; +Index: gcc/testsuite/g++.dg/cpp0x/nullptr42.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/nullptr42.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/nullptr42.C (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++// PR c++/90473 - wrong code with nullptr in default argument. ++// { dg-do run { target c++11 } } ++ ++int g; ++void f() { g++; } ++ ++void fn1 (void* p = (f(), nullptr)) { } ++void fn2 (int p = (f(), 0)) { } ++ ++int main() ++{ ++ fn1 (); ++ if (g != 1) ++ __builtin_abort (); ++ fn2 (); ++ if (g != 2) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-odr2.C (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++// PR c++/92062 - ODR-use ignored for static member of class template. ++// { dg-do run { target c++11 } } ++ ++template struct A { ++ static const bool x; ++ enum { force_instantiation =! &x}; // odr-uses A<...>::x ++}; ++ ++int g; ++ ++template ++const bool A::x = (g = 42, false); ++ ++void f(A<0>) {} // A<0> must be complete, so is instantiated ++int main() ++{ ++ if (g != 42) ++ __builtin_abort (); ++} +Index: gcc/testsuite/g++.dg/cpp0x/range-for19.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/range-for19.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp0x/range-for19.C (.../branches/gcc-9-branch) +@@ -5,6 +5,6 @@ + int main() + { + auto a; // { dg-error "no initializer" } +- for(auto i: a) // { dg-error "deduce" } ++ for(auto i: a) + ; + } +Index: gcc/testsuite/g++.dg/torture/pr91155.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr91155.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr91155.C (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* PR c++/91155. */ ++ ++template< char C > struct dummy {}; ++ ++template< typename T > const char *test() ++{ ++ __builtin_printf ("test: %s\n", __PRETTY_FUNCTION__); ++ return __PRETTY_FUNCTION__; ++} ++ ++int main() ++{ ++ if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\000\'>]", test< dummy< '\0' > > ()) != 0) ++ {};// __builtin_abort (); ++ if (__builtin_strcmp ("const char* test() [with T = dummy<\'\\\'\'>]", test< dummy< '\'' > > ()) != 0) ++ {};// __builtin_abort (); ++ return 0; ++} +Index: gcc/testsuite/g++.dg/torture/pr91606.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr91606.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr91606.C (.../branches/gcc-9-branch) +@@ -0,0 +1,109 @@ ++/* { dg-do run } */ ++/* { dg-additional-options "-fstrict-aliasing" } */ ++ ++#include ++#include ++#include ++ ++template ++struct variant ++{ ++ constexpr variant(T1 arg) ++ : f1(arg), ++ index(0) ++ {} ++ ++ constexpr variant(T2 arg) ++ : f2(arg), ++ index(1) ++ {} ++ ++ union ++ { ++ T1 f1; ++ T2 f2; ++ }; ++ std::size_t index = 0; ++}; ++ ++template ++constexpr const T1* get_if(const variant* v) ++{ ++ if (v->index != 0) ++ { ++ return nullptr; ++ } ++ return &v->f1; ++} ++ ++template ++constexpr const T2* get_if(const variant* v) ++{ ++ if (v->index != 1) ++ { ++ return nullptr; ++ } ++ return &v->f2; ++} ++ ++template ++struct my_array ++{ ++ constexpr const T* begin() const ++ { ++ return data; ++ } ++ ++ constexpr const T* end() const ++ { ++ return data + N; ++ } ++ ++ T data[N]; ++}; ++ ++template ++constexpr auto get_array_of_variants(Ts ...ptrs) ++{ ++ return std::array...>, sizeof...(Ts)>{ ptrs... }; ++} ++ ++template ++constexpr auto get_member_functions(); ++ ++template ++constexpr int getFuncId(Member (Class::*memFuncPtr)) ++{ ++ int idx = 0u; ++ for (auto &anyFunc : get_member_functions()) ++ { ++ if (auto *specificFunc = get_if(&anyFunc)) ++ { ++ if (*specificFunc == memFuncPtr) ++ { ++ return idx; ++ } ++ } ++ ++idx; ++ } ++ std::abort(); ++} ++ ++struct MyStruct ++{ ++ void fun1(int /*a*/) {} ++ ++ int fun2(char /*b*/, short /*c*/, bool /*d*/) { return 0; } ++ ++}; ++ ++template <> ++constexpr auto get_member_functions() ++{ ++ return get_array_of_variants(&MyStruct::fun1, &MyStruct::fun2); ++} ++ ++int main() ++{ ++ return getFuncId(&MyStruct::fun1); ++} +Index: gcc/testsuite/g++.dg/cpp1y/dr1560.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/dr1560.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/dr1560.C (.../branches/gcc-9-branch) +@@ -1,14 +0,0 @@ +-// Core 1560 +-// { dg-do compile { target c++14 } } +- +-struct A +-{ +- A(); +- A(const A&) = delete; +-}; +- +-void f(bool b) +-{ +- A a; +- b ? a : throw 42; +-} +Index: gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/constexpr-incr2.C (.../branches/gcc-9-branch) +@@ -0,0 +1,66 @@ ++// PR c++/91705 - constexpr evaluation rejects ++/-- on floats. ++// { dg-do compile { target c++14 } } ++ ++#define SA(X) static_assert((X),#X) ++ ++template ++constexpr T fn1(T t) ++{ ++ return ++t; ++} ++ ++constexpr float fn2(float t) ++{ ++ return ++t; ++} ++ ++template ++constexpr T fn3(T t) ++{ ++ return --t; ++} ++ ++constexpr float fn4(float t) ++{ ++ return --t; ++} ++ ++template ++constexpr T fn5(T t) ++{ ++ return t++; ++} ++ ++constexpr float fn6(float t) ++{ ++ return t++; ++} ++ ++template ++constexpr T fn7(T t) ++{ ++ return t--; ++} ++ ++constexpr float fn8(float t) ++{ ++ return t--; ++} ++ ++constexpr double r1 = fn1(2.0f); ++SA(r1 == 3); ++constexpr double r2 = fn2(2.0f); ++SA(r2 == 3); ++constexpr double r3 = fn3(2.0f); ++SA(r3 == 1); ++constexpr double r4 = fn4(2.0f); ++SA(r4 == 1); ++ ++constexpr double r5 = fn5(2.0f); ++SA(r5 == 2); ++constexpr double r6 = fn6(2.0f); ++SA(r6 == 2); ++constexpr double r7 = fn7(2.0f); ++SA(r7 == 2); ++constexpr double r8 = fn8(2.0f); ++SA(r8 == 2); +Index: gcc/testsuite/g++.dg/cpp1y/lambda-init16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/lambda-init16.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/lambda-init16.C (.../branches/gcc-9-branch) +@@ -3,7 +3,7 @@ + + template < class T = int > void f (T) + { +- auto g = [&a = f] () {}; // { dg-error "invalid initialization" } ++ auto g = [&a = f] () {}; // { dg-error "auto" } + } + + int main () +Index: gcc/testsuite/g++.dg/cpp1y/var-templ63.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/var-templ63.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/var-templ63.C (.../branches/gcc-9-branch) +@@ -0,0 +1,5 @@ ++// PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. ++// { dg-do compile { target c++14 } } ++ ++constexpr bool f(const char*) { return true; } ++template const char c = "FOO"[f("BAR") ? 1 : 0]; +Index: gcc/testsuite/g++.dg/cpp1y/nontype1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/nontype1.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/nontype1.C (.../branches/gcc-9-branch) +@@ -0,0 +1,42 @@ ++// PR c++/91129 - wrong error with binary op in template argument. ++// { dg-do compile { target c++14 } } ++ ++template ++struct C ++{ ++ constexpr operator T() const { return v; } ++ constexpr auto operator()() const { return v; } ++}; ++ ++template ++struct A ++{ ++}; ++ ++template ++void foo () ++{ ++ A{}> a0; ++ A{}> a1; ++ A{}> a2; ++ A{}> a3; ++ A{}> a4; ++ A{}> a5; ++ A{}> a6; ++ A{}> a7; ++ A{}> a8; ++ A{}> a9; ++ A{}> a10; ++ A> C{})> a11; ++ A{}> a12; ++ A{}> a13; ++ A{}> a14; ++ A{}> a15; ++ A{}> a16; ++ A{}> a17; ++} ++ ++int main() ++{ ++ foo<10>(); ++} +Index: gcc/testsuite/g++.dg/cpp1y/auto-fn56.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1y/auto-fn56.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1y/auto-fn56.C (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++// PR c++/91378 ++// { dg-do compile { target c++14 } } ++ ++struct B ++{ ++ int i; ++}; ++ ++struct C ++{ ++ template static auto ++ g(B b) noexcept(noexcept(b.i)) { } ++}; ++ ++template ++void h(T t) ++{ ++ C::g({}); ++} +Index: gcc/testsuite/g++.dg/cpp1z/decomp50.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/decomp50.C (.../branches/gcc-9-branch) +@@ -0,0 +1,51 @@ ++// PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr. ++// { dg-do compile { target c++17 } } ++ ++template struct B; ++template struct B<_Tp *> { typedef _Tp& reference; }; ++struct C { ++ template using rebind = _Up *; ++}; ++template class D { ++public: ++ typename B<_Iterator>::reference operator*(); ++ void operator++(); ++}; ++ ++template ++bool operator!=(D<_Iterator, _Container>, D<_Iterator, _Container>); ++template class F { ++public: ++ typedef _Tp value_type; ++}; ++ ++template struct G { ++ template struct H { using type = C::rebind<_Tp>; }; ++ using const_pointer = typename H::type; ++}; ++template > class I { ++ typedef D::const_pointer, int> const_iterator; ++ ++public: ++ const_iterator begin(); ++ const_iterator end(); ++}; ++ ++struct A { ++ struct J { ++ int name; ++ int value; ++ }; ++ I members; ++ template const int *find(Key) { ++ for (const auto &[name, value] : members) ++ // See ++ // for why we don't warn here. ++ return &value; // { dg-bogus "address of local variable" } ++ return nullptr; ++ } ++}; ++int main() { ++ A a; ++ a.find(""); ++} +Index: gcc/testsuite/g++.dg/cpp1z/eval-order5.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp1z/eval-order5.C (.../branches/gcc-9-branch) +@@ -0,0 +1,31 @@ ++// PR c++/91974 ++// { dg-do run } ++// { dg-options "-fstrong-eval-order" } ++ ++extern "C" void abort (); ++ ++bool ok = false; ++ ++void ++foo (int x) ++{ ++ if (x != 0) ++ abort (); ++ ok = true; ++} ++ ++void ++bar (int) ++{ ++ abort (); ++} ++ ++int ++main () ++{ ++ typedef void (*T) (int); ++ T fn = foo; ++ fn ((fn = bar, 0)); ++ if (fn != bar || !ok) ++ abort (); ++} +Index: gcc/testsuite/g++.dg/ext/is_final.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/is_final.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/ext/is_final.C (.../branches/gcc-9-branch) +@@ -43,3 +43,17 @@ + static_assert( __is_final (Ff), "Ff is final" ); + static_assert( __is_final (Ff), "Ff is final" ); + ++// PR 85254 ++ ++template struct final_trait_wrap{ typedef T type; }; ++ ++template struct my_is_final ++{ ++ static const bool value = __is_final(typename final_trait_wrap::type); ++}; ++ ++struct final1 final {}; ++template struct final2 final {}; ++ ++static_assert( my_is_final::value, "final1 is final" ); ++static_assert( my_is_final>::value, "final2 is final" ); +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate that non-literal class types are rejected. ++// { dg-do compile { target c++2a } } ++ ++struct non_literal_class { ++ constexpr non_literal_class(...) { } ++ ~non_literal_class() {} ++ // auto operator<=> (const non_literal_fixed_string&) = default; ++}; ++ ++template // { dg-error "11:is not a valid type for a template non-type parameter because it is not literal" } ++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" } +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C (.../branches/gcc-9-branch) +@@ -0,0 +1,24 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate support for class template argument deduction. ++// { dg-do compile { target c++2a } } ++ ++namespace std { ++using size_t = decltype(sizeof(int)); ++} ++ ++template ++struct fixed_string { ++ constexpr static std::size_t length = N; ++ constexpr fixed_string(...) { } ++ // auto operator<=> (const fixed_string&) = default; ++}; ++template ++fixed_string(const CharT (&str)[N]) -> fixed_string; ++ ++template ++constexpr std::size_t operator"" _udl() { ++ return decltype(fs)::length; ++} ++ ++static_assert("test"_udl == 5); +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C (.../branches/gcc-9-branch) +@@ -0,0 +1,16 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate basic support. ++// { dg-do compile { target c++2a } } ++ ++struct literal_class { ++ constexpr literal_class(...) { } ++ // auto operator<=> (const fixed_string&) = default; ++}; ++ ++template ++constexpr int operator"" _udl() { ++ return 1; ++} ++ ++static_assert("test"_udl == 1); +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C (.../branches/gcc-9-branch) +@@ -0,0 +1,20 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate rejection of class template parameter packs. ++// { dg-do compile { target c++2a } } ++ ++namespace std { ++using size_t = decltype(sizeof(int)); ++} ++ ++template ++struct fixed_string { ++ constexpr static std::size_t length = N; ++ constexpr fixed_string(...) { } ++ // auto operator<=> (const fixed_string&) = default; ++}; ++template ++fixed_string(const CharT (&str)[N]) -> fixed_string; ++ ++template ++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" } +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C (.../branches/gcc-9-branch) +@@ -0,0 +1,12 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate that parameter packs are rejected. ++// { dg-do compile { target c++2a } } ++ ++struct literal_class { ++ constexpr literal_class(...) { } ++ // auto operator<=> (const fixed_string&) = default; ++}; ++ ++template ++int operator"" _udl(); // { dg-error "literal operator template .int operator\"\"_udl\\(\\). has invalid parameter list" } +Index: gcc/testsuite/g++.dg/cpp2a/nontype-class23.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/nontype-class23.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/nontype-class23.C (.../branches/gcc-9-branch) +@@ -0,0 +1,102 @@ ++// PR c++/90947 - Simple lookup table of array of strings is miscompiled ++// Test to verify that the same specializations on non-type template ++// parameters of class types are in fact treated as the same. Unlike ++// nontype-class15.C which involves only one-dimensional arrays this ++// test involves arrays of arrays and arrays of structs. ++// { dg-do compile { target c++2a } } ++ ++struct AA3 ++{ ++ const char a[2][2][2]; ++}; ++ ++template struct BAA3 { }; ++ ++// Redeclare the same variable using different initialization forms ++// of the same constant to verify that they are in fact all recognized ++// as the same. ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++extern BAA3 baa3; ++ ++extern BAA3 baa3_1; ++extern BAA3 baa3_1; ++extern BAA3 baa3_1; ++ ++extern BAA3 baa3_2; ++extern BAA3 baa3_2; ++extern BAA3 baa3_2; ++extern BAA3 baa3_2; ++ ++extern BAA3 baa3_3; ++extern BAA3 baa3_3; ++extern BAA3 baa3_3; ++ ++extern BAA3 baa3_4; ++extern BAA3 baa3_4; ++extern BAA3 baa3_4; ++ ++struct AS2 ++{ ++ struct S { const char a[2], *p; } a[2]; ++}; ++ ++template struct BAS2 { }; ++ ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++extern BAS2 bas2; ++ ++struct AS2_2 ++{ ++ struct S { const char a[2], *p; } a[2][2]; ++}; ++ ++template struct BAS2_2 { }; ++ ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; ++extern BAS2_2 b2_2; +Index: gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C (.../branches/gcc-9-branch) +@@ -0,0 +1,24 @@ ++// PR c++/88095 ++// Test class non-type template parameters for literal operator templates. ++// Validate handling of failed class template argument deduction. ++// { dg-do compile { target c++2a } } ++ ++namespace std { ++using size_t = decltype(sizeof(int)); ++} ++ ++template ++struct fixed_string { ++ constexpr static std::size_t length = N; ++ constexpr fixed_string(...) { } ++ // auto operator<=> (const fixed_string&) = default; ++}; ++// Missing deduction guide. ++ ++template ++constexpr std::size_t operator"" _udl() { ++ return decltype(fs)::length; ++} ++ ++static_assert("test"_udl == 5); // { dg-error "15:no matching function for call to" } ++ // { dg-error "15:class template argument deduction failed" "" { target *-*-* } .-1 } +Index: gcc/testsuite/g++.dg/expr/cond16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/expr/cond16.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/expr/cond16.C (.../branches/gcc-9-branch) +@@ -0,0 +1,25 @@ ++// PR c++/90393 ++// { dg-do run } ++ ++int c, d; ++ ++struct string { ++ string(const char *p): s(p) { ++c; } ++ ~string() { ++d; } ++ string(const string& str): s(str.s) { ++c; } ++ const char* s; ++ bool empty() const { return !s; } ++}; ++ ++string foo() ++{ ++ string s("foo"); ++ return s.empty() ? throw "empty" : s; ++} ++ ++int main() ++{ ++ foo(); ++ if (c != d) ++ __builtin_abort(); ++} +Index: gcc/testsuite/g++.dg/expr/cond15.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/expr/cond15.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/expr/cond15.C (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++// PR c++/90393 ++ ++struct S { ++ S(); ++ S(const S&) {} ++}; ++ ++S f() { ++ const S m; ++ return true ? m : throw 0; ++} ++ ++int main() {} +Index: gcc/testsuite/g++.dg/abi/mangle73.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/mangle73.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/abi/mangle73.C (.../branches/gcc-9-branch) +@@ -0,0 +1,96 @@ ++// { dg-do compile { target c++2a } } ++ ++struct A ++{ ++ char a[2][2]; ++}; ++ ++template struct B { }; ++ ++typedef B AZZZZ; ++typedef B AZZZ_; ++typedef B AZZ__; ++typedef B AZ___; ++typedef B A____; ++ ++typedef B AS_S_; ++typedef B AS_ZZ; ++typedef B AS_Z_; ++typedef B AS___; ++ ++ ++// Verify that the types mangle the same. ++void a_zzzz (AZZZZ) { } ++// { dg-final { scan-assembler "_Z6a_zzzz1BIXtl1AEEE" } } ++ ++void a_zzz_ (AZZZ_) { } ++// { dg-final { scan-assembler "_Z6a_zzz_1BIXtl1AEEE" } } ++ ++void a_zz__ (AZZ__) { } ++// { dg-final { scan-assembler "_Z6a_zz__1BIXtl1AEEE" } } ++ ++void a_z___ (AZ___) { } ++// { dg-final { scan-assembler "_Z6a_z___1BIXtl1AEEE" } } ++ ++void a_____ (A____) { } ++// { dg-final { scan-assembler "_Z6a_____1BIXtl1AEEE" } } ++ ++void a_s_s_ (AS_S_) { } ++// { dg-final { scan-assembler "_Z6a_s_s_1BIXtl1AEEE" } } ++ ++void a_s_zz (AS_ZZ) { } ++// { dg-final { scan-assembler "_Z6a_s_zz1BIXtl1AEEE" } } ++ ++void a_s_z_ (AS_Z_) { } ++// { dg-final { scan-assembler "_Z6a_s_z_1BIXtl1AEEE" } } ++ ++void a_s___ (AS___) { } ++// { dg-final { scan-assembler "_Z6a_s___1BIXtl1AEEE" } } ++ ++ ++struct C ++{ ++ struct { const char a[2][2], *p; } a[2]; ++}; ++ ++template struct D { }; ++ ++typedef D DZZZZZZZZZZ; ++typedef D DZZZZZZZZZ_; ++typedef D DZZZZZZZZ__; ++typedef D DZZZZZZZ___; ++typedef D DZZZZZZ____; ++typedef D DZZZZZ_____; ++typedef D DZZZZ______; ++typedef D DZZZ_______; ++typedef D DZZ________; ++typedef D DZ_________; ++typedef D D__________; ++ ++typedef D DS_S_ZS_S_Z; ++ ++void d_zzzzzzzzzz (DZZZZZZZZZZ) { } ++// { dg-final { scan-assembler "_Z12d_zzzzzzzzzz1DIXtl1CEEE" } } ++void d_zzzzzzzzz_ (DZZZZZZZZZ_) { } ++// { dg-final { scan-assembler "_Z12d_zzzzzzzzz_1DIXtl1CEEE" } } ++void d_zzzzzzzz__ (DZZZZZZZZ__) { } ++// { dg-final { scan-assembler "_Z12d_zzzzzzzz__1DIXtl1CEEE" } } ++void d_zzzzzzz___ (DZZZZZZZ___) { } ++// { dg-final { scan-assembler "_Z12d_zzzzzzz___1DIXtl1CEEE" } } ++void d_zzzzzz____ (DZZZZZZ____) { } ++// { dg-final { scan-assembler "_Z12d_zzzzzz____1DIXtl1CEEE" } } ++void d_zzzzz_____ (DZZZZZ_____) { } ++// { dg-final { scan-assembler "_Z12d_zzzzz_____1DIXtl1CEEE" } } ++void d_zzzz______ (DZZZZ______) { } ++// { dg-final { scan-assembler "_Z12d_zzzz______1DIXtl1CEEE" } } ++void d_zzz_______ (DZZZ_______) { } ++// { dg-final { scan-assembler "_Z12d_zzz_______1DIXtl1CEEE" } } ++void d_zz________ (DZZ________) { } ++// { dg-final { scan-assembler "_Z12d_zz________1DIXtl1CEEE" } } ++void d_z_________ (DZ_________) { } ++// { dg-final { scan-assembler "_Z12d_z_________1DIXtl1CEEE" } } ++void d___________ (D__________) { } ++// { dg-final { scan-assembler "_Z12d___________1DIXtl1CEEE" } } ++ ++void d_s_s_zs_s_z (DS_S_ZS_S_Z) { } ++// { dg-final { scan-assembler "_Z12d_s_s_zs_s_z1DIXtl1CEEE" } } +Index: gcc/testsuite/g++.dg/init/array53.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/init/array53.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/init/array53.C (.../branches/gcc-9-branch) +@@ -0,0 +1,33 @@ ++// PR c++/90947 - Simple lookup table of array of strings is miscompiled ++// Verify that initializers for arrays of elements of a class type with ++// "unusual" data members are correctly recognized as non-zero. ++// { dg-do compile } ++// { dg-options "-O1 -fdump-tree-optimized" } ++ ++struct S ++{ ++ const char *p; ++ static int i; ++ enum { e }; ++ typedef int X; ++ int: 1, b:1; ++ union { ++ int c; ++ }; ++ const char *q; ++}; ++ ++void f (void) ++{ ++ const struct S a[2] = ++ { ++ { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" }, ++ { /* .p = */ "", /* .b = */ 0, /* .c = */ 0, /* .q = */ "" } ++ }; ++ ++ if (!a[0].p || *a[0].p || !a[0].q || *a[0].q ++ || !a[1].p || *a[1].p || !a[1].q || *a[1].q) ++ __builtin_abort (); ++} ++ ++// { dg-final { scan-tree-dump-not "abort" "optimized" } } +Index: gcc/testsuite/g++.dg/other/pr92201.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/other/pr92201.C (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/g++.dg/other/pr92201.C (.../branches/gcc-9-branch) +@@ -0,0 +1,7 @@ ++// PR c++/92201 ++ ++int ++foo (void (*p) ()) ++{ ++ return (*reinterpret_cast (p)) (); ++} +Index: gcc/testsuite/objc.dg/stubify-1.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/stubify-1.m (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/objc.dg/stubify-1.m (.../branches/gcc-9-branch) +@@ -4,7 +4,7 @@ + /* { dg-do compile { target *-*-darwin* } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4" } */ ++/* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +Index: gcc/testsuite/objc.dg/stubify-2.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/stubify-2.m (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/objc.dg/stubify-2.m (.../branches/gcc-9-branch) +@@ -4,7 +4,7 @@ + /* { dg-do compile { target powerpc*-*-darwin* } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ ++/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +Index: gcc/testsuite/obj-c++.dg/stubify-1.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/stubify-1.mm (.../branches/gcc-9-branch) +@@ -4,7 +4,7 @@ + /* { dg-do compile { target *-*-darwin* } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */ ++/* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +Index: gcc/testsuite/obj-c++.dg/stubify-2.mm +=================================================================== +--- a/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/obj-c++.dg/stubify-2.mm (.../branches/gcc-9-branch) +@@ -4,7 +4,7 @@ + /* { dg-do compile { target *-*-darwin* } } */ + /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ + /* { dg-require-effective-target ilp32 } */ +-/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ ++/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -msymbol-stubs" } */ + + typedef struct objc_object { } *id ; + int x = 41 ; +Index: gcc/testsuite/c-c++-common/array-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/array-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/array-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,247 @@ ++// PR c++/90947 - Simple lookup table of array of strings is miscompiled ++// { dg-do compile } ++// { dg-options "-O1 -fdump-tree-optimized" } ++ ++#define assert(expr) ((expr) ? (void)0 : __builtin_abort ()) ++ ++void pr90947 (void) ++{ ++ int vecsize = 4; ++ int index = 0; ++ static const char *a[4][4] = ++ { ++ { ".x", ".y", ".z", ".w" }, ++ { ".xy", ".yz", ".zw", 0 }, ++ { ".xyz", ".yzw", 0, 0 }, ++ { "", 0, 0, 0 }, ++ }; ++ ++ assert (vecsize >= 1 && vecsize <= 4); ++ assert (index >= 0 && index < 4); ++ assert (a[vecsize - 1][index]); ++} ++ ++void f_a1_1 (void) ++{ ++ { ++ const char* a[1][1] = { { 0 } }; ++ assert (0 == a[0][0]); ++ } ++ { ++ const char* a[1][1] = { { "" } }; ++ assert ('\0' == *a[0][0]); ++ } ++} ++ ++void f_a2_1 (void) ++{ ++ { ++ const char* a[2][1] = { { "" }, { "" } }; ++ assert ('\0' == *a[0][0] && '\0' == *a[1][0]); ++ } ++ { ++ const char* a[2][1] = { { 0 }, { "" } }; ++ assert (0 == a[0][0] && '\0' == *a[1][0]); ++ } ++ { ++ const char* a[2][1] = { { }, { "" } }; ++ assert (0 == a[0][0] && '\0' == *a[1][0]); ++ } ++} ++ ++void f_a2_2 (void) ++{ ++ { ++ const char* a[2][2] = { { "", "" }, { "", "" } }; ++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]); ++ assert ('\0' == *a[1][0] && '\0' == *a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { "", "" }, { "", 0 } }; ++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]); ++ assert ('\0' == *a[1][0] && 0 == a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { "", "" }, { "" } }; ++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]); ++ assert ('\0' == *a[1][0] && 0 == a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { "", "" }, { 0, "" } }; ++ assert ('\0' == *a[0][0] && '\0' == *a[0][1]); ++ assert (0 == a[1][0] && '\0' == *a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { "", 0 }, { 0, "" } }; ++ assert ('\0' == *a[0][0] && 0 == a[0][1]); ++ assert (0 == a[1][0] && '\0' == *a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { 0, 0 }, { 0, "" } }; ++ assert (0 == a[0][0] && 0 == a[0][1]); ++ assert (0 == a[1][0] && '\0' == *a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { 0 }, { 0, "" } }; ++ assert (0 == a[0][0] && 0 == a[0][1]); ++ assert (0 == a[1][0] && '\0' == *a[1][1]); ++ } ++ { ++ const char* a[2][2] = { { }, { 0, "" } }; ++ assert (0 == a[0][0] && 0 == a[0][1]); ++ assert (0 == a[1][0] && '\0' == *a[1][1]); ++ } ++} ++ ++void f_a2_2_2 (void) ++{ ++ { ++ const char* a[2][2][2] = ++ { { { "", "" }, { "", "" } }, { { "", "" }, { "", "" } } }; ++ ++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]); ++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]); ++ assert ('\0' == *a[1][0][0] && '\0' == *a[1][0][1]); ++ assert ('\0' == *a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++ ++ { ++ const char* a[2][2][2] = ++ { { { "", "" }, { "", "" } }, { { "", "" }, { 0, "" } } }; ++ ++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]); ++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]); ++ assert ('\0' == *a[1][0][0] && '\0' == *a[1][0][1]); ++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++ ++ { ++ const char* a[2][2][2] = ++ { { { "", "" }, { "", "" } }, { { 0, 0 }, { 0, "" } } }; ++ ++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]); ++ assert ('\0' == *a[0][1][0] && '\0' == *a[0][1][1]); ++ assert (0 == a[1][0][0] && 0 == a[1][0][1]); ++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++ ++ { ++ const char* a[2][2][2] = ++ { { { "", "" }, { 0, 0 } }, { { 0, 0 }, { 0, "" } } }; ++ ++ assert ('\0' == *a[0][0][0] && '\0' == *a[0][0][1]); ++ assert (0 == a[0][1][0] && 0 == a[0][1][1]); ++ assert (0 == a[1][0][0] && 0 == a[1][0][1]); ++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++ ++ { ++ const char* a[2][2][2] = ++ { { { 0, 0 }, { 0, 0 } }, { { 0, 0 }, { 0, "" } } }; ++ ++ assert (0 == a[0][0][0] && 0 == a[0][0][1]); ++ assert (0 == a[0][1][0] && 0 == a[0][1][1]); ++ assert (0 == a[1][0][0] && 0 == a[1][0][1]); ++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++ ++ { ++ const char* a[2][2][2] = ++ { { { }, { } }, { { }, { 0, "" } } }; ++ ++ assert (0 == a[0][0][0] && 0 == a[0][0][1]); ++ assert (0 == a[0][1][0] && 0 == a[0][1][1]); ++ assert (0 == a[1][0][0] && 0 == a[1][0][1]); ++ assert (0 == a[1][1][0] && '\0' == *a[1][1][1]); ++ } ++} ++ ++void f_sa2_2_2 (void) ++{ ++ struct S { const char a[2], *s, c; }; ++ ++ { ++ const struct S a[2][2][2] = { ++ { }, ++ { ++ { { }, { "", "" } }, ++ { } ++ } ++ }; ++ ++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s && 0 == a[0][0][0].c); ++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s && 0 == a[0][0][1].c); ++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s && 0 == a[0][1][0].c); ++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s && 0 == a[0][1][1].c); ++ ++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s && 0 == a[1][0][0].c); ++ assert ('\0' == *a[1][0][1].a && '\0' == *a[1][0][1].s && 0 == a[1][0][1].c); ++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s && 0 == a[1][1][0].c); ++ assert ('\0' == *a[1][1][1].a && 0 == a[1][1][1].s && 0 == a[1][1][1].c); ++ } ++ ++ { ++ const struct S a[2][2][2] = { ++ { }, ++ { ++ { { } }, ++ { { "", "" } } ++ } ++ }; ++ ++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s); ++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s); ++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s); ++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s); ++ ++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s); ++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s); ++ assert ('\0' == *a[1][1][0].a && '\0' == *a[1][1][0].s); ++ assert ('\0' == *a[1][1][1].a && 0 == a[1][1][1].s); ++ } ++ ++ { ++ const struct S a[2][2][2] = { ++ { }, ++ { ++ { { }, { } }, ++ { { }, { "", "", 0 } } ++ } ++ }; ++ ++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s); ++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s); ++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s); ++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s); ++ ++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s); ++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s); ++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s); ++ assert ('\0' == *a[1][1][1].a && '\0' == *a[1][1][1].s); ++ } ++ ++ { ++ const struct S a[2][2][2] = { ++ { ++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } }, ++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } }, ++ }, ++ { ++ { { { 0 }, 0, 0 }, { { 0 } , 0, 0 } }, ++ { { }, { "", "", 0 } } ++ } ++ }; ++ ++ assert ('\0' == *a[0][0][0].a && 0 == a[0][0][0].s); ++ assert ('\0' == *a[0][0][1].a && 0 == a[0][0][1].s); ++ assert ('\0' == *a[0][1][0].a && 0 == a[0][1][0].s); ++ assert ('\0' == *a[0][1][1].a && 0 == a[0][1][1].s); ++ ++ assert ('\0' == *a[1][0][0].a && 0 == a[1][0][0].s); ++ assert ('\0' == *a[1][0][1].a && 0 == a[1][0][1].s); ++ assert ('\0' == *a[1][1][0].a && 0 == a[1][1][0].s); ++ assert ('\0' == *a[1][1][1].a && '\0' == *a[1][1][1].s); ++ } ++} ++ ++// { dg-final { scan-tree-dump-not "abort" "optimized" } } +Index: gcc/testsuite/c-c++-common/gomp/pr88203-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,65 @@ ++/* PR c++/88203 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-std=gnu99" { target c } } */ ++/* { dg-additional-options "-std=gnu++11" { target c++ } } */ ++ ++void foo (const char *, const char *); ++#pragma omp declare target to (foo) ++ ++void ++f1 (void) ++{ ++ #pragma omp parallel default(none) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f2 (void) ++{ ++ #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp parallel default(none) shared(__FUNCTION__) firstprivate(__PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f3 (void) ++{ ++ #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp parallel default(none) firstprivate(__FUNCTION__), shared(__PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f4 (void) ++{ ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp parallel default(none) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f5 (void) ++{ ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp parallel default(none) shared(__FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f6 (void) ++{ ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp parallel default(none) firstprivate(__FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} ++ ++void ++f7 (void) ++{ ++ #pragma omp target map(to: __FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++ #pragma omp task depend(inout:__FUNCTION__, __PRETTY_FUNCTION__) ++ foo (__FUNCTION__, __PRETTY_FUNCTION__); ++} +Index: gcc/testsuite/c-c++-common/gomp/pr91401-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,10 @@ ++/* PR c/91401 */ ++ ++void ++foo (void) ++{ ++ int i; ++ #pragma omp distribute parallel for schedule (static) dist_schedule (static) ++ for (i = 0; i < 64; i++) ++ ; ++} +Index: gcc/testsuite/c-c++-common/gomp/pr88203-3.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-3.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-3.c (.../branches/gcc-9-branch) +@@ -0,0 +1,28 @@ ++/* PR c++/88203 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-std=c99" { target c } } */ ++/* { dg-additional-options "-std=c++11" { target c++ } } */ ++ ++void foo (const char *); ++#pragma omp declare target to (foo) ++ ++void ++f1 (void) ++{ ++ #pragma omp parallel for lastprivate (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'lastprivate'" } */ ++ for (int i = 0; i < 2; i++) ++ foo (__func__); ++ #pragma omp parallel private (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'private'" } */ ++ foo (__func__); ++} ++ ++void ++f2 (void) ++{ ++ foo (__func__); ++ #pragma omp parallel default(none) private (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'private'" } */ ++ foo (__func__); ++ #pragma omp parallel for default(none) lastprivate (__func__) /* { dg-error "'__func__' is predetermined 'shared' for 'lastprivate'" } */ ++ for (int i = 0; i < 2; i++) ++ foo (__func__); ++} +Index: gcc/testsuite/c-c++-common/gomp/pr91401-2.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91401-2.c (.../branches/gcc-9-branch) +@@ -0,0 +1,15 @@ ++#pragma omp declare target ++void f0 (void); ++ ++void ++f1 (void) ++{ ++ int i; ++ #pragma omp distribute dist_schedule(static) dist_schedule(static) /* { dg-warning "too many 'dist_schedule' clauses" } */ ++ for (i = 0; i < 8; ++i) ++ f0 (); ++ #pragma omp distribute dist_schedule(static,2) dist_schedule(static,4) /* { dg-warning "too many 'dist_schedule' clauses" } */ ++ for (i = 0; i < 8; ++i) ++ f0 (); ++} ++#pragma omp end declare target +Index: gcc/testsuite/c-c++-common/gomp/pr91920.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr91920.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr91920.c (.../branches/gcc-9-branch) +@@ -0,0 +1,19 @@ ++/* PR middle-end/91920 */ ++ ++void bar (float *); ++ ++void ++foo (void) ++{ ++ int i; ++ float f[3] = { 0.0f, 0.0f, 0.0f }; ++#pragma omp parallel for default(none) reduction(+:f[:3]) ++ for (i = 0; i < 1000; i++) ++ { ++ int j; ++ float k[3] = { 0.25f, 0.5f, 0.75f }; ++ for (j = 0; j < 3; j++) ++ f[j] += k[j]; ++ } ++ bar (f); ++} +Index: gcc/testsuite/c-c++-common/gomp/pr88203-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/gomp/pr88203-1.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/testsuite/c-c++-common/gomp/pr88203-1.c (.../branches/gcc-9-branch) +@@ -0,0 +1,61 @@ ++/* PR c++/88203 */ ++/* { dg-do compile } */ ++/* { dg-additional-options "-std=c99" { target c } } */ ++/* { dg-additional-options "-std=c++11" { target c++ } } */ ++ ++void foo (const char *); ++#pragma omp declare target to (foo) ++ ++void ++f1 (void) ++{ ++ #pragma omp parallel default(none) ++ foo (__func__); ++} ++ ++void ++f2 (void) ++{ ++ #pragma omp parallel default(none) shared(__func__) ++ foo (__func__); ++} ++ ++void ++f3 (void) ++{ ++ #pragma omp parallel default(none) firstprivate(__func__) ++ foo (__func__); ++} ++ ++void ++f4 (void) ++{ ++ foo (__func__); ++ #pragma omp parallel default(none) ++ foo (__func__); ++} ++ ++void ++f5 (void) ++{ ++ foo (__func__); ++ #pragma omp parallel default(none) shared(__func__) ++ foo (__func__); ++} ++ ++void ++f6 (void) ++{ ++ foo (__func__); ++ #pragma omp parallel default(none) firstprivate(__func__) ++ foo (__func__); ++} ++ ++void ++f7 (void) ++{ ++ #pragma omp target map(to: __func__) ++ foo (__func__); ++ #pragma omp task depend(inout:__func__) ++ foo (__func__); ++} +Index: gcc/cp/typeck.c +=================================================================== +--- a/src/gcc/cp/typeck.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/typeck.c (.../branches/gcc-9-branch) +@@ -4309,7 +4309,7 @@ + || TREE_NO_WARNING (op)) + return; + +- tree cop = fold_non_dependent_expr (op, complain); ++ tree cop = fold_for_warn (op); + + if (TREE_CODE (cop) == ADDR_EXPR + && decl_with_nonnull_addr_p (TREE_OPERAND (cop, 0)) +@@ -4632,9 +4632,8 @@ + || code1 == COMPLEX_TYPE || code1 == VECTOR_TYPE)) + { + enum tree_code tcode0 = code0, tcode1 = code1; +- tree cop1 = fold_non_dependent_expr (op1, complain); + doing_div_or_mod = true; +- warn_for_div_by_zero (location, cop1); ++ warn_for_div_by_zero (location, fold_for_warn (op1)); + + if (tcode0 == COMPLEX_TYPE || tcode0 == VECTOR_TYPE) + tcode0 = TREE_CODE (TREE_TYPE (TREE_TYPE (op0))); +@@ -4673,11 +4672,8 @@ + + case TRUNC_MOD_EXPR: + case FLOOR_MOD_EXPR: +- { +- tree cop1 = fold_non_dependent_expr (op1, complain); +- doing_div_or_mod = true; +- warn_for_div_by_zero (location, cop1); +- } ++ doing_div_or_mod = true; ++ warn_for_div_by_zero (location, fold_for_warn (op1)); + + if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE + && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE +@@ -4770,7 +4766,7 @@ + } + else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { +- tree const_op1 = fold_non_dependent_expr (op1, complain); ++ tree const_op1 = fold_for_warn (op1); + if (TREE_CODE (const_op1) != INTEGER_CST) + const_op1 = op1; + result_type = type0; +@@ -4816,10 +4812,10 @@ + } + else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { +- tree const_op0 = fold_non_dependent_expr (op0, complain); ++ tree const_op0 = fold_for_warn (op0); + if (TREE_CODE (const_op0) != INTEGER_CST) + const_op0 = op0; +- tree const_op1 = fold_non_dependent_expr (op1, complain); ++ tree const_op1 = fold_for_warn (op1); + if (TREE_CODE (const_op1) != INTEGER_CST) + const_op1 = op1; + result_type = type0; +@@ -5516,9 +5512,9 @@ + if (! converted) + { + warning_sentinel w (warn_sign_conversion, short_compare); +- if (TREE_TYPE (op0) != result_type) ++ if (!same_type_p (TREE_TYPE (op0), result_type)) + op0 = cp_convert_and_check (result_type, op0, complain); +- if (TREE_TYPE (op1) != result_type) ++ if (!same_type_p (TREE_TYPE (op1), result_type)) + op1 = cp_convert_and_check (result_type, op1, complain); + + if (op0 == error_mark_node || op1 == error_mark_node) +@@ -9296,8 +9292,10 @@ + tree base = DECL_DECOMP_BASE (whats_returned); + if (TYPE_REF_P (TREE_TYPE (base))) + { +- tree init = DECL_INITIAL (base); +- return maybe_warn_about_returning_address_of_local (init); ++ if (tree init = DECL_INITIAL (base)) ++ return maybe_warn_about_returning_address_of_local (init); ++ else ++ return false; + } + } + bool w = false; +Index: gcc/cp/class.c +=================================================================== +--- a/src/gcc/cp/class.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/class.c (.../branches/gcc-9-branch) +@@ -1907,6 +1907,7 @@ + = TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t); + + TYPE_POLYMORPHIC_P (variants) = TYPE_POLYMORPHIC_P (t); ++ CLASSTYPE_FINAL (variants) = CLASSTYPE_FINAL (t); + + TYPE_BINFO (variants) = TYPE_BINFO (t); + +@@ -2149,10 +2150,10 @@ + + if (!nonprivate_ctor) + { +- warning (OPT_Wctor_dtor_privacy, +- "%q#T only defines private constructors and has no friends", +- t); +- if (copy_or_move) ++ bool w = warning (OPT_Wctor_dtor_privacy, ++ "%q#T only defines private constructors and has " ++ "no friends", t); ++ if (w && copy_or_move) + inform (DECL_SOURCE_LOCATION (copy_or_move), + "%q#D is public, but requires an existing %q#T object", + copy_or_move, t); +Index: gcc/cp/decl.c +=================================================================== +--- a/src/gcc/cp/decl.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/decl.c (.../branches/gcc-9-branch) +@@ -4474,13 +4474,27 @@ + static tree + cp_make_fname_decl (location_t loc, tree id, int type_dep) + { +- const char *const name = (type_dep && in_template_function () +- ? NULL : fname_as_string (type_dep)); ++ const char * name = NULL; ++ bool release_name = false; ++ if (!(type_dep && in_template_function ())) ++ { ++ if (current_function_decl == NULL_TREE) ++ name = "top level"; ++ else if (type_dep == 1) /* __PRETTY_FUNCTION__ */ ++ name = cxx_printable_name (current_function_decl, 2); ++ else if (type_dep == 0) /* __FUNCTION__ */ ++ { ++ name = fname_as_string (type_dep); ++ release_name = true; ++ } ++ else ++ gcc_unreachable (); ++ } + tree type; + tree init = cp_fname_init (name, &type); + tree decl = build_decl (loc, VAR_DECL, id, type); + +- if (name) ++ if (release_name) + free (CONST_CAST (char *, name)); + + /* As we're using pushdecl_with_scope, we must set the context. */ +@@ -5836,9 +5850,10 @@ + /* Pointers initialized to strings must be treated as non-zero + even if the string is empty. */ + tree init_type = TREE_TYPE (elt_init); +- if ((POINTER_TYPE_P (elt_type) != POINTER_TYPE_P (init_type)) +- || !initializer_zerop (elt_init)) ++ if ((POINTER_TYPE_P (elt_type) != POINTER_TYPE_P (init_type))) + last_nonzero = index; ++ else if (!type_initializer_zero_p (elt_type, elt_init)) ++ last_nonzero = index; + + /* This can happen with an invalid initializer (c++/54501). */ + if (d->cur == old_cur && !sized_array_p) +@@ -6114,7 +6129,7 @@ + (CONSTRUCTOR_ELT (stripped_init,0)->value)))) + { + if (complain & tf_error) +- error ("too many braces around scalar initializer" ++ error ("too many braces around scalar initializer " + "for type %qT", type); + init = error_mark_node; + } +@@ -9539,10 +9554,12 @@ + TYPE_PTRMEMFUNC_FLAG (t) = 1; + + field = build_decl (input_location, FIELD_DECL, pfn_identifier, type); ++ DECL_NONADDRESSABLE_P (field) = 1; + fields = field; + + field = build_decl (input_location, FIELD_DECL, delta_identifier, + delta_type_node); ++ DECL_NONADDRESSABLE_P (field) = 1; + DECL_CHAIN (field) = fields; + fields = field; + +@@ -11435,6 +11452,8 @@ + else if (late_return_type + && sfk != sfk_conversion) + { ++ if (late_return_type == error_mark_node) ++ return error_mark_node; + if (cxx_dialect < cxx11) + /* Not using maybe_warn_cpp0x because this should + always be an error. */ +@@ -13042,7 +13061,9 @@ + /* Avoid redundant -Wzero-as-null-pointer-constant warnings at + the call sites. */ + if (TYPE_PTR_OR_PTRMEM_P (decl_type) +- && null_ptr_cst_p (arg)) ++ && null_ptr_cst_p (arg) ++ /* Don't lose side-effects as in PR90473. */ ++ && !TREE_SIDE_EFFECTS (arg)) + return nullptr_node; + + /* [dcl.fct.default] +Index: gcc/cp/constexpr.c +=================================================================== +--- a/src/gcc/cp/constexpr.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/constexpr.c (.../branches/gcc-9-branch) +@@ -3973,6 +3973,10 @@ + tree offset = TREE_OPERAND (t, 1); + gcc_assert (TREE_CONSTANT (offset)); + ++ /* OFFSET is constant, but perhaps not constant enough. We need to ++ e.g. bash FLOAT_EXPRs to REAL_CSTs. */ ++ offset = fold_simple (offset); ++ + /* The operand as an lvalue. */ + op = cxx_eval_constant_expression (ctx, op, true, + non_constant_p, overflow_p); +Index: gcc/cp/ChangeLog +=================================================================== +--- a/src/gcc/cp/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,200 @@ ++2019-10-29 Jakub Jelinek ++ ++ PR c++/92201 ++ * cp-gimplify.c (cp_gimplify_expr): If gimplify_to_rvalue changes the ++ function pointer type, re-add cast to the original one. ++ ++2018-10-26 Ville Voutilainen ++ ++ Backport from mainline ++ ++ 2019-06-01 Ville Voutilainen ++ ++ PR c++/85254 ++ * class.c (fixup_type_variants): Handle CLASSTYPE_FINAL. ++ ++2019-10-24 Marek Polacek ++ ++ * decl.c (reshape_init_r): Add missing space. ++ ++2019-10-22 Marek Polacek ++ ++ Backported from mainline ++ 2019-10-21 Marek Polacek ++ ++ PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr. ++ * typeck.c (maybe_warn_about_returning_address_of_local): Avoid ++ recursing on null initializer and return false instead. ++ ++ PR c++/92062 - ODR-use ignored for static member of class template. ++ * pt.c (has_value_dependent_address): Strip location wrappers. ++ ++2019-10-21 Jakub Jelinek ++ ++ Backported from mainline ++ 2019-10-04 Jakub Jelinek ++ ++ PR c++/91974 ++ * cp-gimplify.c (cp_gimplify_expr) : For ++ -fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated ++ before any arguments. Additionally, ensure CALL_EXPR_FN that isn't ++ invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary. ++ ++ 2019-09-27 Jakub Jelinek ++ ++ PR c++/88203 ++ * parser.c (cp_parser_omp_var_list_no_open): Parse predefined ++ variables. ++ * semantics.c (finish_omp_clauses): Allow predefined variables in ++ shared and firstprivate clauses, even when they are predetermined ++ shared. ++ * cp-gimplify.c (cxx_omp_predetermined_sharing_1): Return ++ OMP_CLAUSE_DEFAULT_SHARED for predefined variables. ++ ++ 2019-08-09 Jakub Jelinek ++ ++ PR c/91401 ++ * parser.c (cp_parser_omp_clause_dist_schedule): Comment out the ++ check_no_duplicate_clause call, instead emit a warning for duplicate ++ dist_schedule clauses. ++ ++2019-10-16 Richard Biener ++ ++ Backport from mainline ++ 2019-10-02 Richard Biener ++ ++ PR c++/91606 ++ * decl.c (build_ptrmemfunc_type): Mark pointer-to-member ++ fat pointer structure members as DECL_NONADDRESSABLE_P. ++ ++2019-10-08 Marek Polacek ++ ++ Backported from mainline ++ 2019-09-15 Marek Polacek ++ ++ PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF. ++ * pt.c (build_non_dependent_expr): Call build_non_dependent_expr for ++ the first operand. ++ ++2019-09-28 Marek Polacek ++ ++ Backported from mainline ++ 2019-09-28 Marek Polacek ++ ++ PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17. ++ * pt.c (invalid_nontype_parm_type_p): Only emit errors when ++ tf_error. ++ ++2019-09-10 Marek Polacek ++ ++ Backported from mainline ++ 2019-09-10 Marek Polacek ++ ++ PR c++/91705 - constexpr evaluation rejects ++/-- on floats. ++ * constexpr.c (cxx_eval_increment_expression): Call fold_simple on ++ the offset. ++ ++2019-09-01 Marek Polacek ++ ++ Backported from mainline ++ 2019-09-01 Marek Polacek ++ ++ PR c++/91129 - wrong error with binary op in template argument. ++ * typeck.c (warn_for_null_address): Use fold_for_warn instead of ++ fold_non_dependent_expr. ++ (cp_build_binary_op): Likewise. ++ ++2019-08-31 Iain Sandoe ++ ++ Backported from mainline ++ 2019-08-23 Iain Sandoe ++ ++ PR pch/61250 ++ * parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch () ++ after determining that the first token is not ++ PRAGMA_GCC_PCH_PREPROCESS. ++ ++2019-08-23 Marek Polacek ++ ++ Backported from mainline ++ 2019-08-23 Marek Polacek ++ ++ PR c++/91521 - wrong error with operator->. ++ * decl.c (grokdeclarator): Return error_mark_node for an invalid ++ trailing return type. ++ ++2019-08-16 Jason Merrill ++ ++ PR c++/90393 - ICE with throw in ?: ++ * call.c (build_conditional_expr_1): Revert changes from ++ PR c++/64372 and c++/86205. ++ ++2019-08-15 Marek Polacek ++ ++ Backported from mainline ++ 2019-08-07 Marek Polacek ++ ++ PR c++/81429 - wrong parsing of constructor with C++11 attribute. ++ * parser.c (cp_parser_constructor_declarator_p): Handle the scenario ++ when a parameter declaration begins with [[attribute]]. ++ ++ 2019-08-08 Marek Polacek ++ ++ PR c++/87519 - bogus warning with -Wsign-conversion. ++ * typeck.c (cp_build_binary_op): Use same_type_p instead of comparing ++ the types directly. ++ ++ 2019-08-13 Marek Polacek ++ ++ PR c++/90473 - wrong code with nullptr in default argument. ++ * call.c (null_ptr_cst_p): Update quote from the standard. ++ * decl.c (check_default_argument): Don't return nullptr when the arg ++ has side-effects. ++ ++ 2019-06-14 Marek Polacek ++ ++ PR c++/90884 - stray note with -Wctor-dtor-privacy. ++ * class.c (maybe_warn_about_overly_private_class): Guard the call to ++ inform. ++ ++2019-08-14 Martin Sebor ++ ++ Backported from mainline ++ 2019-08-01 Martin Sebor ++ ++ PR c++/90947 ++ * decl.c (reshape_init_array_1): Avoid truncating initializer ++ lists containing string literals. ++ ++2019-08-14 Jonathan Wakely ++ ++ PR c++/91436 ++ * name-lookup.c (get_std_name_hint): Fix min_dialect field for ++ complex_literals and make_unique entries. ++ ++2019-08-12 Tom Honermann ++ ++ * parser.c (cp_parser_template_declaration_after_parameters): Enable ++ class template argument deduction for non-type template parameters ++ in literal operator templates. ++ ++2019-08-12 Jason Merrill ++ ++ PR c++/91378 - ICE with noexcept and auto return type. ++ * pt.c (maybe_instantiate_noexcept): push_to_top_level. ++ ++ PR c++/90538 - multiple expansions of capture packs ++ * cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove. ++ * lambda.c (add_capture): Copy parameter packs from init. ++ (lambda_capture_field_type): Always use auto for init-capture. ++ * pt.c (uses_parameter_packs): Return tree. ++ (tsubst) [DECLTYPE_TYPE]: Remove init-capture handling. ++ (gen_elem_of_pack_expansion_instantiation): Don't push ++ local_specialization_stack. ++ (prepend_one_capture): New. ++ (tsubst_lambda_expr): Use it. Don't touch local_specializations. ++ (do_auto_deduction): Avoid redundant error. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +@@ -16,7 +213,7 @@ + + Backported from mainline + 2019-08-02 Marek Polacek +- ++ + PR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda. + * pt.c (value_dependent_expression_p): Consider __PRETTY_FUNCTION__ + inside a template function value-dependent. +Index: gcc/cp/cp-gimplify.c +=================================================================== +--- a/src/gcc/cp/cp-gimplify.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/cp-gimplify.c (.../branches/gcc-9-branch) +@@ -816,6 +816,27 @@ + + case CALL_EXPR: + ret = GS_OK; ++ if (flag_strong_eval_order == 2 ++ && CALL_EXPR_FN (*expr_p) ++ && cp_get_callee_fndecl_nofold (*expr_p) == NULL_TREE) ++ { ++ tree fnptrtype = TREE_TYPE (CALL_EXPR_FN (*expr_p)); ++ enum gimplify_status t ++ = gimplify_expr (&CALL_EXPR_FN (*expr_p), pre_p, NULL, ++ is_gimple_call_addr, fb_rvalue); ++ if (t == GS_ERROR) ++ ret = GS_ERROR; ++ else if (is_gimple_variable (CALL_EXPR_FN (*expr_p)) ++ && TREE_CODE (CALL_EXPR_FN (*expr_p)) != SSA_NAME) ++ CALL_EXPR_FN (*expr_p) ++ = get_initialized_tmp_var (CALL_EXPR_FN (*expr_p), pre_p, ++ NULL); ++ /* GIMPLE considers most pointer conversion useless, but for ++ calls we actually care about the exact function pointer type. */ ++ if (t != GS_ERROR && TREE_TYPE (CALL_EXPR_FN (*expr_p)) != fnptrtype) ++ CALL_EXPR_FN (*expr_p) ++ = build1 (NOP_EXPR, fnptrtype, CALL_EXPR_FN (*expr_p)); ++ } + if (!CALL_EXPR_FN (*expr_p)) + /* Internal function call. */; + else if (CALL_EXPR_REVERSE_ARGS (*expr_p)) +@@ -2050,6 +2071,9 @@ + tree ctx = CP_DECL_CONTEXT (decl); + if (TYPE_P (ctx) && MAYBE_CLASS_TYPE_P (ctx)) + return OMP_CLAUSE_DEFAULT_SHARED; ++ ++ if (c_omp_predefined_variable (decl)) ++ return OMP_CLAUSE_DEFAULT_SHARED; + } + + /* this may not be specified in data-sharing clauses, still we need +Index: gcc/cp/pt.c +=================================================================== +--- a/src/gcc/cp/pt.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/pt.c (.../branches/gcc-9-branch) +@@ -3875,7 +3875,7 @@ + } + + /* Determines if the expression or type T uses any parameter packs. */ +-bool ++tree + uses_parameter_packs (tree t) + { + tree parameter_packs = NULL_TREE; +@@ -3885,7 +3885,7 @@ + ppd.type_pack_expansion_p = false; + cp_walk_tree (&t, &find_parameter_packs_r, &ppd, ppd.visited); + delete ppd.visited; +- return parameter_packs != NULL_TREE; ++ return parameter_packs; + } + + /* Turn ARG, which may be an expression, type, or a TREE_LIST +@@ -6353,6 +6353,8 @@ + static bool + has_value_dependent_address (tree op) + { ++ STRIP_ANY_LOCATION_WRAPPER (op); ++ + /* We could use get_inner_reference here, but there's no need; + this is only relevant for template non-type arguments, which + can only be expressed as &id-expression. */ +@@ -11757,10 +11759,6 @@ + ARGUMENT_PACK_SELECT_INDEX (aps) = index; + } + +- // Any local specialization bindings arising from this substitution +- // cannot be reused for a different INDEX. +- local_specialization_stack lss (lss_copy); +- + /* Substitute into the PATTERN with the (possibly altered) + arguments. */ + if (pattern == in_decl) +@@ -15130,24 +15128,12 @@ + /*function_p*/false, + /*integral_constant_expression*/false); + +- if (DECLTYPE_FOR_INIT_CAPTURE (t)) +- { +- if (type == NULL_TREE) +- { +- if (complain & tf_error) +- error ("empty initializer in lambda init-capture"); +- type = error_mark_node; +- } +- else if (TREE_CODE (type) == TREE_LIST) +- type = build_x_compound_expr_from_list (type, ELK_INIT, complain); +- } +- + --cp_unevaluated_operand; + --c_inhibit_evaluation_warnings; + + if (DECLTYPE_FOR_LAMBDA_CAPTURE (t)) + type = lambda_capture_field_type (type, +- DECLTYPE_FOR_INIT_CAPTURE (t), ++ false /*explicit_init*/, + DECLTYPE_FOR_REF_CAPTURE (t)); + else if (DECLTYPE_FOR_LAMBDA_PROXY (t)) + type = lambda_proxy_type (type); +@@ -18014,6 +18000,33 @@ + return t; + } + ++/* Subroutine of tsubst_lambda_expr: add the FIELD/INIT capture pair to the ++ LAMBDA_EXPR_CAPTURE_LIST passed in LIST. Do deduction for a previously ++ dependent init-capture. */ ++ ++static void ++prepend_one_capture (tree field, tree init, tree &list, ++ tsubst_flags_t complain) ++{ ++ if (tree auto_node = type_uses_auto (TREE_TYPE (field))) ++ { ++ tree type = NULL_TREE; ++ if (!init) ++ { ++ if (complain & tf_error) ++ error ("empty initializer in lambda init-capture"); ++ init = error_mark_node; ++ } ++ else if (TREE_CODE (init) == TREE_LIST) ++ init = build_x_compound_expr_from_list (init, ELK_INIT, complain); ++ if (!type) ++ type = do_auto_deduction (TREE_TYPE (field), init, auto_node, complain); ++ TREE_TYPE (field) = type; ++ cp_apply_type_quals_to_decl (cp_type_quals (type), field); ++ } ++ list = tree_cons (field, init, list); ++} ++ + /* T is a LAMBDA_EXPR. Generate a new LAMBDA_EXPR for the current + instantiation context. Instantiating a pack expansion containing a lambda + might result in multiple lambdas all based on the same lambda in the +@@ -18025,17 +18038,8 @@ + tree oldfn = lambda_function (t); + in_decl = oldfn; + +- /* If we have already specialized this lambda expr, reuse it. See +- PR c++/87322. */ +- if (local_specializations) +- if (tree r = retrieve_local_specialization (t)) +- return r; +- + tree r = build_lambda_expr (); + +- if (local_specializations) +- register_local_specialization (r, t); +- + LAMBDA_EXPR_LOCATION (r) + = LAMBDA_EXPR_LOCATION (t); + LAMBDA_EXPR_DEFAULT_CAPTURE_MODE (r) +@@ -18088,15 +18092,15 @@ + gcc_assert (TREE_CODE (init) == TREE_VEC + && TREE_VEC_LENGTH (init) == len); + for (int i = 0; i < len; ++i) +- LAMBDA_EXPR_CAPTURE_LIST (r) +- = tree_cons (TREE_VEC_ELT (field, i), +- TREE_VEC_ELT (init, i), +- LAMBDA_EXPR_CAPTURE_LIST (r)); ++ prepend_one_capture (TREE_VEC_ELT (field, i), ++ TREE_VEC_ELT (init, i), ++ LAMBDA_EXPR_CAPTURE_LIST (r), ++ complain); + } + else + { +- LAMBDA_EXPR_CAPTURE_LIST (r) +- = tree_cons (field, init, LAMBDA_EXPR_CAPTURE_LIST (r)); ++ prepend_one_capture (field, init, LAMBDA_EXPR_CAPTURE_LIST (r), ++ complain); + + if (id_equal (DECL_NAME (field), "__this")) + LAMBDA_EXPR_THIS_CAPTURE (r) = field; +@@ -24321,12 +24325,11 @@ + } + else if (push_tinst_level (fn)) + { ++ push_to_top_level (); + push_access_scope (fn); + push_deferring_access_checks (dk_no_deferred); + input_location = DECL_SOURCE_LOCATION (fn); + +- tree save_ccp = current_class_ptr; +- tree save_ccr = current_class_ref; + /* If needed, set current_class_ptr for the benefit of + tsubst_copy/PARM_DECL. */ + tree tdecl = DECL_TEMPLATE_RESULT (DECL_TI_TEMPLATE (fn)); +@@ -24352,9 +24355,6 @@ + /*function_p=*/false, + /*i_c_e_p=*/true); + +- current_class_ptr = save_ccp; +- current_class_ref = save_ccr; +- + /* Build up the noexcept-specification. */ + spec = build_noexcept_spec (noex, tf_warning_or_error); + +@@ -24364,6 +24364,7 @@ + pop_deferring_access_checks (); + pop_access_scope (fn); + pop_tinst_level (); ++ pop_from_top_level (); + } + else + spec = noexcept_false_spec; +@@ -25232,8 +25233,9 @@ + { + if (cxx_dialect < cxx2a) + { +- error ("non-type template parameters of class type only available " +- "with %<-std=c++2a%> or %<-std=gnu++2a%>"); ++ if (complain & tf_error) ++ error ("non-type template parameters of class type only available " ++ "with %<-std=c++2a%> or %<-std=gnu++2a%>"); + return true; + } + if (dependent_type_p (type)) +@@ -26715,7 +26717,7 @@ + if (TREE_CODE (expr) == COND_EXPR) + return build3 (COND_EXPR, + TREE_TYPE (expr), +- TREE_OPERAND (expr, 0), ++ build_non_dependent_expr (TREE_OPERAND (expr, 0)), + (TREE_OPERAND (expr, 1) + ? build_non_dependent_expr (TREE_OPERAND (expr, 1)) + : build_non_dependent_expr (TREE_OPERAND (expr, 0))), +@@ -27615,6 +27617,9 @@ + } + else + { ++ if (error_operand_p (init)) ++ return error_mark_node; ++ + tree parms = build_tree_list (NULL_TREE, type); + tree tparms; + +Index: gcc/cp/semantics.c +=================================================================== +--- a/src/gcc/cp/semantics.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/semantics.c (.../branches/gcc-9-branch) +@@ -7790,6 +7790,13 @@ + case OMP_CLAUSE_DEFAULT_UNSPECIFIED: + break; + case OMP_CLAUSE_DEFAULT_SHARED: ++ if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED ++ || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE) ++ && c_omp_predefined_variable (t)) ++ /* The __func__ variable and similar function-local predefined ++ variables may be listed in a shared or firstprivate ++ clause. */ ++ break; + if (VAR_P (t) + && OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FIRSTPRIVATE + && TREE_STATIC (t) +Index: gcc/cp/parser.c +=================================================================== +--- a/src/gcc/cp/parser.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/parser.c (.../branches/gcc-9-branch) +@@ -27596,7 +27596,9 @@ + /* A parameter declaration begins with a decl-specifier, + which is either the "attribute" keyword, a storage class + specifier, or (usually) a type-specifier. */ +- && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer)) ++ && !cp_lexer_next_token_is_decl_specifier_keyword (parser->lexer) ++ /* A parameter declaration can also begin with [[attribute]]. */ ++ && !cp_next_tokens_can_be_std_attribute_p (parser)) + { + tree type; + tree pushed_scope = NULL_TREE; +@@ -27911,7 +27913,10 @@ + { + tree parm_list = TREE_VEC_ELT (parameter_list, 0); + tree parm = INNERMOST_TEMPLATE_PARMS (parm_list); +- if (CLASS_TYPE_P (TREE_TYPE (parm))) ++ if (TREE_CODE (parm) != PARM_DECL) ++ ok = false; ++ else if (MAYBE_CLASS_TYPE_P (TREE_TYPE (parm)) ++ && !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm))) + /* OK, C++20 string literal operator template. We don't need + to warn in lower dialects here because we will have already + warned about the template parameter. */; +@@ -27925,7 +27930,7 @@ + tree type = INNERMOST_TEMPLATE_PARMS (parm_type); + tree parm_list = TREE_VEC_ELT (parameter_list, 1); + tree parm = INNERMOST_TEMPLATE_PARMS (parm_list); +- if (parm == error_mark_node ++ if (TREE_CODE (parm) != PARM_DECL + || TREE_TYPE (parm) != TREE_TYPE (type) + || !TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm))) + ok = false; +@@ -32463,6 +32468,14 @@ + decl = TREE_OPERAND (decl, 0); + cp_lexer_consume_token (parser->lexer); + } ++ else if (cp_parser_is_keyword (token, RID_FUNCTION_NAME) ++ || cp_parser_is_keyword (token, RID_PRETTY_FUNCTION_NAME) ++ || cp_parser_is_keyword (token, RID_C99_FUNCTION_NAME)) ++ { ++ cp_id_kind idk; ++ decl = cp_parser_primary_expression (parser, false, false, false, ++ &idk); ++ } + else + { + name = cp_parser_id_expression (parser, /*template_p=*/false, +@@ -34891,8 +34904,10 @@ + else if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_COMMA_CLOSE_PAREN)) + goto resync_fail; + +- check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, "dist_schedule", +- location); ++ /* check_no_duplicate_clause (list, OMP_CLAUSE_DIST_SCHEDULE, ++ "dist_schedule", location); */ ++ if (omp_find_clause (list, OMP_CLAUSE_DIST_SCHEDULE)) ++ warning_at (location, 0, "too many %qs clauses", "dist_schedule"); + OMP_CLAUSE_CHAIN (c) = list; + return c; + +@@ -40746,7 +40761,10 @@ + + cp_lexer_get_preprocessor_token (NULL, first_token); + if (cp_parser_pragma_kind (first_token) != PRAGMA_GCC_PCH_PREPROCESS) +- return; ++ { ++ c_common_no_more_pch (); ++ return; ++ } + + cp_lexer_get_preprocessor_token (NULL, first_token); + if (first_token->type == CPP_STRING) +Index: gcc/cp/call.c +=================================================================== +--- a/src/gcc/cp/call.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/call.c (.../branches/gcc-9-branch) +@@ -530,9 +530,8 @@ + + /* [conv.ptr] + +- A null pointer constant is an integral constant expression +- (_expr.const_) rvalue of integer type that evaluates to zero or +- an rvalue of type std::nullptr_t. */ ++ A null pointer constant is an integer literal ([lex.icon]) with value ++ zero or a prvalue of type std::nullptr_t. */ + if (NULLPTR_TYPE_P (type)) + return true; + +@@ -5186,18 +5185,15 @@ + arg3_type = unlowered_expr_type (arg3); + if (VOID_TYPE_P (arg2_type) || VOID_TYPE_P (arg3_type)) + { +- /* 'void' won't help in resolving an overloaded expression on the +- other side, so require it to resolve by itself. */ +- if (arg2_type == unknown_type_node) +- { +- arg2 = resolve_nondeduced_context_or_error (arg2, complain); +- arg2_type = TREE_TYPE (arg2); +- } +- if (arg3_type == unknown_type_node) +- { +- arg3 = resolve_nondeduced_context_or_error (arg3, complain); +- arg3_type = TREE_TYPE (arg3); +- } ++ /* Do the conversions. We don't these for `void' type arguments ++ since it can't have any effect and since decay_conversion ++ does not handle that case gracefully. */ ++ if (!VOID_TYPE_P (arg2_type)) ++ arg2 = decay_conversion (arg2, complain); ++ if (!VOID_TYPE_P (arg3_type)) ++ arg3 = decay_conversion (arg3, complain); ++ arg2_type = TREE_TYPE (arg2); ++ arg3_type = TREE_TYPE (arg3); + + /* [expr.cond] + +@@ -5204,28 +5200,41 @@ + One of the following shall hold: + + --The second or the third operand (but not both) is a +- throw-expression (_except.throw_); the result is of the type +- and value category of the other. ++ throw-expression (_except.throw_); the result is of the ++ type of the other and is an rvalue. + + --Both the second and the third operands have type void; the +- result is of type void and is a prvalue. */ ++ result is of type void and is an rvalue. ++ ++ We must avoid calling force_rvalue for expressions of type ++ "void" because it will complain that their value is being ++ used. */ + if (TREE_CODE (arg2) == THROW_EXPR + && TREE_CODE (arg3) != THROW_EXPR) + { ++ if (!VOID_TYPE_P (arg3_type)) ++ { ++ arg3 = force_rvalue (arg3, complain); ++ if (arg3 == error_mark_node) ++ return error_mark_node; ++ } ++ arg3_type = TREE_TYPE (arg3); + result_type = arg3_type; +- is_glvalue = glvalue_p (arg3); + } + else if (TREE_CODE (arg2) != THROW_EXPR + && TREE_CODE (arg3) == THROW_EXPR) + { ++ if (!VOID_TYPE_P (arg2_type)) ++ { ++ arg2 = force_rvalue (arg2, complain); ++ if (arg2 == error_mark_node) ++ return error_mark_node; ++ } ++ arg2_type = TREE_TYPE (arg2); + result_type = arg2_type; +- is_glvalue = glvalue_p (arg2); + } + else if (VOID_TYPE_P (arg2_type) && VOID_TYPE_P (arg3_type)) +- { +- result_type = void_type_node; +- is_glvalue = false; +- } ++ result_type = void_type_node; + else + { + if (complain & tf_error) +@@ -5244,6 +5253,7 @@ + return error_mark_node; + } + ++ is_glvalue = false; + goto valid_operands; + } + /* [expr.cond] +@@ -5361,6 +5371,10 @@ + && same_type_p (arg2_type, arg3_type)) + { + result_type = arg2_type; ++ if (processing_template_decl) ++ /* Let lvalue_kind know this was a glvalue. */ ++ result_type = cp_build_reference_type (result_type, xvalue_p (arg2)); ++ + arg2 = mark_lvalue_use (arg2); + arg3 = mark_lvalue_use (arg3); + goto valid_operands; +@@ -5558,13 +5572,6 @@ + return error_mark_node; + + valid_operands: +- if (processing_template_decl && is_glvalue) +- { +- /* Let lvalue_kind know this was a glvalue. */ +- tree arg = (result_type == arg2_type ? arg2 : arg3); +- result_type = cp_build_reference_type (result_type, xvalue_p (arg)); +- } +- + result = build3_loc (loc, COND_EXPR, result_type, arg1, arg2, arg3); + + /* If the ARG2 and ARG3 are the same and don't have side-effects, +Index: gcc/cp/lambda.c +=================================================================== +--- a/src/gcc/cp/lambda.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/lambda.c (.../branches/gcc-9-branch) +@@ -220,17 +220,8 @@ + tree type; + bool is_this = is_this_parameter (tree_strip_nop_conversions (expr)); + +- if (!is_this && type_dependent_expression_p (expr)) ++ if (!is_this && explicit_init_p) + { +- type = cxx_make_type (DECLTYPE_TYPE); +- DECLTYPE_TYPE_EXPR (type) = expr; +- DECLTYPE_FOR_LAMBDA_CAPTURE (type) = true; +- DECLTYPE_FOR_INIT_CAPTURE (type) = explicit_init_p; +- DECLTYPE_FOR_REF_CAPTURE (type) = by_reference_p; +- SET_TYPE_STRUCTURAL_EQUALITY (type); +- } +- else if (!is_this && explicit_init_p) +- { + tree auto_node = make_auto (); + + type = auto_node; +@@ -240,6 +231,14 @@ + type = build_reference_type (type); + type = do_auto_deduction (type, expr, auto_node); + } ++ else if (!is_this && type_dependent_expression_p (expr)) ++ { ++ type = cxx_make_type (DECLTYPE_TYPE); ++ DECLTYPE_TYPE_EXPR (type) = expr; ++ DECLTYPE_FOR_LAMBDA_CAPTURE (type) = true; ++ DECLTYPE_FOR_REF_CAPTURE (type) = by_reference_p; ++ SET_TYPE_STRUCTURAL_EQUALITY (type); ++ } + else + { + type = non_reference (unlowered_expr_type (expr)); +@@ -602,7 +601,16 @@ + name = get_identifier (buf); + + if (variadic) +- type = make_pack_expansion (type); ++ { ++ type = make_pack_expansion (type); ++ if (explicit_init_p) ++ /* With an explicit initializer 'type' is auto, which isn't really a ++ parameter pack in this context. We will want as many fields as we ++ have elements in the expansion of the initializer, so use its packs ++ instead. */ ++ PACK_EXPANSION_PARAMETER_PACKS (type) ++ = uses_parameter_packs (initializer); ++ } + + /* Make member variable. */ + member = build_decl (input_location, FIELD_DECL, name, type); +Index: gcc/cp/cp-tree.h +=================================================================== +--- a/src/gcc/cp/cp-tree.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/cp-tree.h (.../branches/gcc-9-branch) +@@ -423,7 +423,6 @@ + LAMBDA_EXPR_MUTABLE_P (in LAMBDA_EXPR) + DECL_FINAL_P (in FUNCTION_DECL) + QUALIFIED_NAME_IS_TEMPLATE (in SCOPE_REF) +- DECLTYPE_FOR_INIT_CAPTURE (in DECLTYPE_TYPE) + CONSTRUCTOR_IS_DEPENDENT (in CONSTRUCTOR) + TINFO_USED_TEMPLATE_ID (in TEMPLATE_INFO) + PACK_EXPANSION_SIZEOF_P (in *_PACK_EXPANSION) +@@ -4471,12 +4470,10 @@ + (DECLTYPE_TYPE_CHECK (NODE))->type_common.string_flag + + /* These flags indicate that we want different semantics from normal +- decltype: lambda capture just drops references, init capture +- uses auto semantics, lambda proxies look through implicit dereference. */ ++ decltype: lambda capture just drops references, ++ lambda proxies look through implicit dereference. */ + #define DECLTYPE_FOR_LAMBDA_CAPTURE(NODE) \ + TREE_LANG_FLAG_0 (DECLTYPE_TYPE_CHECK (NODE)) +-#define DECLTYPE_FOR_INIT_CAPTURE(NODE) \ +- TREE_LANG_FLAG_1 (DECLTYPE_TYPE_CHECK (NODE)) + #define DECLTYPE_FOR_LAMBDA_PROXY(NODE) \ + TREE_LANG_FLAG_2 (DECLTYPE_TYPE_CHECK (NODE)) + #define DECLTYPE_FOR_REF_CAPTURE(NODE) \ +@@ -6779,7 +6776,7 @@ + extern tree instantiate_decl (tree, bool, bool); + extern int comp_template_parms (const_tree, const_tree); + extern bool builtin_pack_fn_p (tree); +-extern bool uses_parameter_packs (tree); ++extern tree uses_parameter_packs (tree); + extern bool template_parameter_pack_p (const_tree); + extern bool function_parameter_pack_p (const_tree); + extern bool function_parameter_expanded_from_pack_p (tree, tree); +Index: gcc/cp/name-lookup.c +=================================================================== +--- a/src/gcc/cp/name-lookup.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cp/name-lookup.c (.../branches/gcc-9-branch) +@@ -5656,7 +5656,7 @@ + {"bitset", "", cxx11}, + /* . */ + {"complex", "", cxx98}, +- {"complex_literals", "", cxx98}, ++ {"complex_literals", "", cxx14}, + /* . */ + {"condition_variable", "", cxx11}, + {"condition_variable_any", "", cxx11}, +@@ -5718,7 +5718,7 @@ + {"multimap", "", cxx98}, + /* . */ + {"make_shared", "", cxx11}, +- {"make_unique", "", cxx11}, ++ {"make_unique", "", cxx14}, + {"shared_ptr", "", cxx11}, + {"unique_ptr", "", cxx11}, + {"weak_ptr", "", cxx11}, +Index: gcc/passes.def +=================================================================== +--- a/src/gcc/passes.def (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/passes.def (.../branches/gcc-9-branch) +@@ -434,6 +434,7 @@ + NEXT_PASS (pass_ud_rtl_dce); + NEXT_PASS (pass_combine); + NEXT_PASS (pass_if_after_combine); ++ NEXT_PASS (pass_jump_after_combine); + NEXT_PASS (pass_partition_blocks); + NEXT_PASS (pass_outof_cfg_layout_mode); + NEXT_PASS (pass_split_all_insns); +@@ -450,7 +451,6 @@ + NEXT_PASS (pass_reload); + NEXT_PASS (pass_postreload); + PUSH_INSERT_PASSES_WITHIN (pass_postreload) +- NEXT_PASS (pass_postreload_jump); + NEXT_PASS (pass_postreload_cse); + NEXT_PASS (pass_gcse2); + NEXT_PASS (pass_split_after_reload); +Index: gcc/lto-streamer-out.c +=================================================================== +--- a/src/gcc/lto-streamer-out.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lto-streamer-out.c (.../branches/gcc-9-branch) +@@ -43,6 +43,7 @@ + #include "debug.h" + #include "omp-offload.h" + #include "print-tree.h" ++#include "tree-dfa.h" + + + static void lto_write_tree (struct output_block*, tree, bool); +@@ -1891,7 +1892,7 @@ + + streamer_write_hwi (ob, -1); + +- bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); ++ bb = ENTRY_BLOCK_PTR_FOR_FN (fn); + while (bb->next_bb) + { + streamer_write_hwi (ob, bb->next_bb->index); +@@ -1900,9 +1901,6 @@ + + streamer_write_hwi (ob, -1); + +- /* ??? The cfgloop interface is tied to cfun. */ +- gcc_assert (cfun == fn); +- + /* Output the number of loops. */ + streamer_write_uhwi (ob, number_of_loops (fn)); + +@@ -2063,6 +2061,62 @@ + collect_block_tree_leafs (BLOCK_SUBBLOCKS (root), leafs); + } + ++/* This performs function body modifications that are needed for streaming ++ to work. */ ++ ++void ++lto_prepare_function_for_streaming (struct cgraph_node *node) ++{ ++ struct function *fn = DECL_STRUCT_FUNCTION (node->decl); ++ basic_block bb; ++ ++ if (number_of_loops (fn)) ++ { ++ push_cfun (fn); ++ loop_optimizer_init (AVOID_CFG_MODIFICATIONS); ++ loop_optimizer_finalize (); ++ pop_cfun (); ++ } ++ /* We will renumber the statements. The code that does this uses ++ the same ordering that we use for serializing them so we can use ++ the same code on the other end and not have to write out the ++ statement numbers. We do not assign UIDs to PHIs here because ++ virtual PHIs get re-computed on-the-fly which would make numbers ++ inconsistent. */ ++ set_gimple_stmt_max_uid (fn, 0); ++ FOR_ALL_BB_FN (bb, fn) ++ { ++ for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi); ++ gsi_next (&gsi)) ++ { ++ gphi *stmt = gsi.phi (); ++ ++ /* Virtual PHIs are not going to be streamed. */ ++ if (!virtual_operand_p (gimple_phi_result (stmt))) ++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn)); ++ } ++ for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); ++ gsi_next (&gsi)) ++ { ++ gimple *stmt = gsi_stmt (gsi); ++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn)); ++ } ++ } ++ /* To avoid keeping duplicate gimple IDs in the statements, renumber ++ virtual phis now. */ ++ FOR_ALL_BB_FN (bb, fn) ++ { ++ for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi); ++ gsi_next (&gsi)) ++ { ++ gphi *stmt = gsi.phi (); ++ if (virtual_operand_p (gimple_phi_result (stmt))) ++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fn)); ++ } ++ } ++ ++} ++ + /* Output the body of function NODE->DECL. */ + + static void +@@ -2086,9 +2140,6 @@ + + gcc_assert (current_function_decl == NULL_TREE && cfun == NULL); + +- /* Set current_function_decl and cfun. */ +- push_cfun (fn); +- + /* Make string 0 be a NULL string. */ + streamer_write_char_stream (ob->string_stream, 0); + +@@ -2125,9 +2176,6 @@ + debug info. */ + if (gimple_has_body_p (function)) + { +- /* Fixup loops if required to match discovery done in the reader. */ +- loop_optimizer_init (AVOID_CFG_MODIFICATIONS); +- + streamer_write_uhwi (ob, 1); + output_struct_function_base (ob, fn); + +@@ -2137,45 +2185,6 @@ + /* Output any exception handling regions. */ + output_eh_regions (ob, fn); + +- +- /* We will renumber the statements. The code that does this uses +- the same ordering that we use for serializing them so we can use +- the same code on the other end and not have to write out the +- statement numbers. We do not assign UIDs to PHIs here because +- virtual PHIs get re-computed on-the-fly which would make numbers +- inconsistent. */ +- set_gimple_stmt_max_uid (cfun, 0); +- FOR_ALL_BB_FN (bb, cfun) +- { +- for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi); +- gsi_next (&gsi)) +- { +- gphi *stmt = gsi.phi (); +- +- /* Virtual PHIs are not going to be streamed. */ +- if (!virtual_operand_p (gimple_phi_result (stmt))) +- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun)); +- } +- for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); +- gsi_next (&gsi)) +- { +- gimple *stmt = gsi_stmt (gsi); +- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun)); +- } +- } +- /* To avoid keeping duplicate gimple IDs in the statements, renumber +- virtual phis now. */ +- FOR_ALL_BB_FN (bb, cfun) +- { +- for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi); +- gsi_next (&gsi)) +- { +- gphi *stmt = gsi.phi (); +- if (virtual_operand_p (gimple_phi_result (stmt))) +- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun)); +- } +- } +- + /* Output the code for the function. */ + FOR_ALL_BB_FN (bb, fn) + output_bb (ob, bb, fn); +@@ -2184,9 +2193,6 @@ + streamer_write_record_start (ob, LTO_null); + + output_cfg (ob, fn); +- +- loop_optimizer_finalize (); +- pop_cfun (); + } + else + streamer_write_uhwi (ob, 0); +@@ -2617,12 +2623,6 @@ + const char *comdat; + unsigned char c; + +- gcc_checking_assert (TREE_PUBLIC (t) +- && (TREE_CODE (t) != FUNCTION_DECL +- || !fndecl_built_in_p (t)) +- && !DECL_ABSTRACT_P (t) +- && (!VAR_P (t) || !DECL_HARD_REGISTER (t))); +- + gcc_assert (VAR_OR_FUNCTION_DECL_P (t)); + + name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (t)); +Index: gcc/tree-ssa-math-opts.c +=================================================================== +--- a/src/gcc/tree-ssa-math-opts.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-math-opts.c (.../branches/gcc-9-branch) +@@ -3840,7 +3840,7 @@ + + memset (&widen_mul_stats, 0, sizeof (widen_mul_stats)); + calculate_dominance_info (CDI_DOMINATORS); +- renumber_gimple_stmt_uids (); ++ renumber_gimple_stmt_uids (cfun); + + math_opts_dom_walker (&cfg_changed).walk (ENTRY_BLOCK_PTR_FOR_FN (cfun)); + +Index: gcc/tree-ssa-alias.c +=================================================================== +--- a/src/gcc/tree-ssa-alias.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-alias.c (.../branches/gcc-9-branch) +@@ -2599,8 +2599,8 @@ + + static bool + maybe_skip_until (gimple *phi, tree &target, basic_block target_bb, +- ao_ref *ref, tree vuse, unsigned int &limit, bitmap *visited, +- bool abort_on_visited, ++ ao_ref *ref, tree vuse, bool tbaa_p, unsigned int &limit, ++ bitmap *visited, bool abort_on_visited, + void *(*translate)(ao_ref *, tree, void *, bool *), + void *data) + { +@@ -2634,7 +2634,7 @@ + /* An already visited PHI node ends the walk successfully. */ + if (bitmap_bit_p (*visited, SSA_NAME_VERSION (PHI_RESULT (def_stmt)))) + return !abort_on_visited; +- vuse = get_continuation_for_phi (def_stmt, ref, limit, ++ vuse = get_continuation_for_phi (def_stmt, ref, tbaa_p, limit, + visited, abort_on_visited, + translate, data); + if (!vuse) +@@ -2649,7 +2649,7 @@ + if ((int)limit <= 0) + return false; + --limit; +- if (stmt_may_clobber_ref_p_1 (def_stmt, ref)) ++ if (stmt_may_clobber_ref_p_1 (def_stmt, ref, tbaa_p)) + { + bool disambiguate_only = true; + if (translate +@@ -2681,7 +2681,7 @@ + Returns NULL_TREE if no suitable virtual operand can be found. */ + + tree +-get_continuation_for_phi (gimple *phi, ao_ref *ref, ++get_continuation_for_phi (gimple *phi, ao_ref *ref, bool tbaa_p, + unsigned int &limit, bitmap *visited, + bool abort_on_visited, + void *(*translate)(ao_ref *, tree, void *, bool *), +@@ -2724,7 +2724,8 @@ + arg1 = PHI_ARG_DEF (phi, i); + if (arg1 == arg0) + ; +- else if (! maybe_skip_until (phi, arg0, dom, ref, arg1, limit, visited, ++ else if (! maybe_skip_until (phi, arg0, dom, ref, arg1, tbaa_p, ++ limit, visited, + abort_on_visited, + /* Do not translate when walking over + backedges. */ +@@ -2768,7 +2769,7 @@ + TODO: Cache the vector of equivalent vuses per ref, vuse pair. */ + + void * +-walk_non_aliased_vuses (ao_ref *ref, tree vuse, ++walk_non_aliased_vuses (ao_ref *ref, tree vuse, bool tbaa_p, + void *(*walker)(ao_ref *, tree, void *), + void *(*translate)(ao_ref *, tree, void *, bool *), + tree (*valueize)(tree), +@@ -2809,7 +2810,7 @@ + if (gimple_nop_p (def_stmt)) + break; + else if (gimple_code (def_stmt) == GIMPLE_PHI) +- vuse = get_continuation_for_phi (def_stmt, ref, limit, ++ vuse = get_continuation_for_phi (def_stmt, ref, tbaa_p, limit, + &visited, translated, translate, data); + else + { +@@ -2819,7 +2820,7 @@ + break; + } + --limit; +- if (stmt_may_clobber_ref_p_1 (def_stmt, ref)) ++ if (stmt_may_clobber_ref_p_1 (def_stmt, ref, tbaa_p)) + { + if (!translate) + break; +Index: gcc/lto-wrapper.c +=================================================================== +--- a/src/gcc/lto-wrapper.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lto-wrapper.c (.../branches/gcc-9-branch) +@@ -128,12 +128,11 @@ + #define DUMPBASE_SUFFIX ".ltrans18446744073709551615" + + /* Create decoded options from the COLLECT_GCC and COLLECT_GCC_OPTIONS +- environment according to LANG_MASK. */ ++ environment. */ + + static void + get_options_from_collect_gcc_options (const char *collect_gcc, + const char *collect_gcc_options, +- unsigned int lang_mask, + struct cl_decoded_option **decoded_options, + unsigned int *decoded_options_count) + { +@@ -175,8 +174,7 @@ + argc = obstack_object_size (&argv_obstack) / sizeof (void *) - 1; + argv = XOBFINISH (&argv_obstack, const char **); + +- decode_cmdline_options_to_array (argc, (const char **)argv, +- lang_mask, ++ decode_cmdline_options_to_array (argc, (const char **)argv, CL_DRIVER, + decoded_options, decoded_options_count); + obstack_free (&argv_obstack, NULL); + } +@@ -1008,8 +1006,7 @@ + { + struct cl_decoded_option *f2decoded_options; + unsigned int f2decoded_options_count; +- get_options_from_collect_gcc_options (collect_gcc, +- fopts, CL_LANG_ALL, ++ get_options_from_collect_gcc_options (collect_gcc, fopts, + &f2decoded_options, + &f2decoded_options_count); + if (!fdecoded_options) +@@ -1150,7 +1147,6 @@ + fatal_error (input_location, + "environment variable COLLECT_GCC_OPTIONS must be set"); + get_options_from_collect_gcc_options (collect_gcc, collect_gcc_options, +- CL_LANG_ALL, + &decoded_options, + &decoded_options_count); + +Index: gcc/tree-ssa-alias.h +=================================================================== +--- a/src/gcc/tree-ssa-alias.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-alias.h (.../branches/gcc-9-branch) +@@ -131,11 +131,11 @@ + extern bool call_may_clobber_ref_p_1 (gcall *, ao_ref *); + extern bool stmt_kills_ref_p (gimple *, tree); + extern bool stmt_kills_ref_p (gimple *, ao_ref *); +-extern tree get_continuation_for_phi (gimple *, ao_ref *, ++extern tree get_continuation_for_phi (gimple *, ao_ref *, bool, + unsigned int &, bitmap *, bool, + void *(*)(ao_ref *, tree, void *, bool *), + void *); +-extern void *walk_non_aliased_vuses (ao_ref *, tree, ++extern void *walk_non_aliased_vuses (ao_ref *, tree, bool, + void *(*)(ao_ref *, tree, void *), + void *(*)(ao_ref *, tree, void *, bool *), + tree (*)(tree), unsigned &, void *); +Index: gcc/tree-ssa-sink.c +=================================================================== +--- a/src/gcc/tree-ssa-sink.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-sink.c (.../branches/gcc-9-branch) +@@ -439,7 +439,10 @@ + if (sinkbb == frombb) + return false; + +- *togsi = gsi_for_stmt (use); ++ if (sinkbb == gimple_bb (use)) ++ *togsi = gsi_for_stmt (use); ++ else ++ *togsi = gsi_after_labels (sinkbb); + + return true; + } +Index: gcc/dwarf2out.c +=================================================================== +--- a/src/gcc/dwarf2out.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/dwarf2out.c (.../branches/gcc-9-branch) +@@ -15461,7 +15461,7 @@ + if (mode != GET_MODE (rtl) && GET_MODE (rtl) != VOIDmode) + return NULL; + +- scalar_int_mode int_mode, inner_mode, op1_mode; ++ scalar_int_mode int_mode = BImode, inner_mode, op1_mode; + switch (GET_CODE (rtl)) + { + case POST_INC: +@@ -22284,19 +22284,18 @@ + /* If the contexts differ, we may not be talking about the same + thing. + ??? When in LTO the DIE parent is the "abstract" copy and the +- context_die is the specification "copy". But this whole block +- should eventually be no longer needed. */ +- if (parm_die && parm_die->die_parent != context_die && !in_lto_p) ++ context_die is the specification "copy". */ ++ if (parm_die ++ && parm_die->die_parent != context_die ++ && (parm_die->die_parent->die_tag != DW_TAG_GNU_formal_parameter_pack ++ || parm_die->die_parent->die_parent != context_die) ++ && !in_lto_p) + { +- if (!DECL_ABSTRACT_P (node)) +- { +- /* This can happen when creating an inlined instance, in +- which case we need to create a new DIE that will get +- annotated with DW_AT_abstract_origin. */ +- parm_die = NULL; +- } +- else +- gcc_unreachable (); ++ gcc_assert (!DECL_ABSTRACT_P (node)); ++ /* This can happen when creating a concrete instance, in ++ which case we need to create a new DIE that will get ++ annotated with DW_AT_abstract_origin. */ ++ parm_die = NULL; + } + + if (parm_die && parm_die->die_parent == NULL) +@@ -26647,17 +26646,13 @@ + { + dw_die_ref die = lookup_decl_die (decl); + +- /* We may have to generate early debug late for LTO in case debug ++ /* We may have to generate full debug late for LTO in case debug + was not enabled at compile-time or the target doesn't support + the LTO early debug scheme. */ + if (! die && in_lto_p) ++ dwarf2out_decl (decl); ++ else if (die) + { +- dwarf2out_decl (decl); +- die = lookup_decl_die (decl); +- } +- +- if (die) +- { + /* We get called via the symtab code invoking late_global_decl + for symbols that are optimized out. + +Index: gcc/match.pd +=================================================================== +--- a/src/gcc/match.pd (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/match.pd (.../branches/gcc-9-branch) +@@ -1519,8 +1519,6 @@ + tree etype = range_check_type (TREE_TYPE (@0)); + if (etype) + { +- if (! TYPE_UNSIGNED (etype)) +- etype = unsigned_type_for (etype); + hi = fold_convert (etype, hi); + lo = fold_convert (etype, lo); + hi = const_binop (MINUS_EXPR, etype, hi, lo); +@@ -3381,8 +3379,7 @@ + (cmp { tem; } @1))))) + + /* Fold comparisons against built-in math functions. */ +- (if (flag_unsafe_math_optimizations +- && ! flag_errno_math) ++ (if (flag_unsafe_math_optimizations && ! flag_errno_math) + (for sq (SQRT) + (simplify + (cmp (sq @0) REAL_CST@1) +@@ -3417,56 +3414,108 @@ + if x is negative or NaN. Due to -funsafe-math-optimizations, + the results for other x follow from natural arithmetic. */ + (cmp @0 @1))) +- (if (cmp == GT_EXPR || cmp == GE_EXPR) ++ (if ((cmp == LT_EXPR ++ || cmp == LE_EXPR ++ || cmp == GT_EXPR ++ || cmp == GE_EXPR) ++ && !REAL_VALUE_ISNAN (TREE_REAL_CST (@1)) ++ /* Give up for -frounding-math. */ ++ && !HONOR_SIGN_DEPENDENT_ROUNDING (TREE_TYPE (@0))) + (with + { +- REAL_VALUE_TYPE c2; ++ REAL_VALUE_TYPE c2; ++ enum tree_code ncmp = cmp; ++ const real_format *fmt ++ = REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (@0))); + real_arithmetic (&c2, MULT_EXPR, + &TREE_REAL_CST (@1), &TREE_REAL_CST (@1)); +- real_convert (&c2, TYPE_MODE (TREE_TYPE (@0)), &c2); ++ real_convert (&c2, fmt, &c2); ++ /* See PR91734: if c2 is inexact and sqrt(c2) < c (or sqrt(c2) >= c), ++ then change LT_EXPR into LE_EXPR or GE_EXPR into GT_EXPR. */ ++ if (!REAL_VALUE_ISINF (c2)) ++ { ++ tree c3 = fold_const_call (CFN_SQRT, TREE_TYPE (@0), ++ build_real (TREE_TYPE (@0), c2)); ++ if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST) ++ ncmp = ERROR_MARK; ++ else if ((cmp == LT_EXPR || cmp == GE_EXPR) ++ && real_less (&TREE_REAL_CST (c3), &TREE_REAL_CST (@1))) ++ ncmp = cmp == LT_EXPR ? LE_EXPR : GT_EXPR; ++ else if ((cmp == LE_EXPR || cmp == GT_EXPR) ++ && real_less (&TREE_REAL_CST (@1), &TREE_REAL_CST (c3))) ++ ncmp = cmp == LE_EXPR ? LT_EXPR : GE_EXPR; ++ else ++ { ++ /* With rounding to even, sqrt of up to 3 different values ++ gives the same normal result, so in some cases c2 needs ++ to be adjusted. */ ++ REAL_VALUE_TYPE c2alt, tow; ++ if (cmp == LT_EXPR || cmp == GE_EXPR) ++ tow = dconst0; ++ else ++ real_inf (&tow); ++ real_nextafter (&c2alt, fmt, &c2, &tow); ++ real_convert (&c2alt, fmt, &c2alt); ++ if (REAL_VALUE_ISINF (c2alt)) ++ ncmp = ERROR_MARK; ++ else ++ { ++ c3 = fold_const_call (CFN_SQRT, TREE_TYPE (@0), ++ build_real (TREE_TYPE (@0), c2alt)); ++ if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST) ++ ncmp = ERROR_MARK; ++ else if (real_equal (&TREE_REAL_CST (c3), ++ &TREE_REAL_CST (@1))) ++ c2 = c2alt; ++ } ++ } ++ } + } +- (if (REAL_VALUE_ISINF (c2)) +- /* sqrt(x) > y is x == +Inf, when y is very large. */ +- (if (HONOR_INFINITIES (@0)) +- (eq @0 { build_real (TREE_TYPE (@0), c2); }) +- { constant_boolean_node (false, type); }) +- /* sqrt(x) > c is the same as x > c*c. */ +- (cmp @0 { build_real (TREE_TYPE (@0), c2); })))) +- (if (cmp == LT_EXPR || cmp == LE_EXPR) +- (with +- { +- REAL_VALUE_TYPE c2; +- real_arithmetic (&c2, MULT_EXPR, +- &TREE_REAL_CST (@1), &TREE_REAL_CST (@1)); +- real_convert (&c2, TYPE_MODE (TREE_TYPE (@0)), &c2); +- } +- (if (REAL_VALUE_ISINF (c2)) +- (switch +- /* sqrt(x) < y is always true, when y is a very large +- value and we don't care about NaNs or Infinities. */ +- (if (! HONOR_NANS (@0) && ! HONOR_INFINITIES (@0)) +- { constant_boolean_node (true, type); }) +- /* sqrt(x) < y is x != +Inf when y is very large and we +- don't care about NaNs. */ +- (if (! HONOR_NANS (@0)) +- (ne @0 { build_real (TREE_TYPE (@0), c2); })) +- /* sqrt(x) < y is x >= 0 when y is very large and we +- don't care about Infinities. */ +- (if (! HONOR_INFINITIES (@0)) +- (ge @0 { build_real (TREE_TYPE (@0), dconst0); })) +- /* sqrt(x) < y is x >= 0 && x != +Inf, when y is large. */ +- (if (GENERIC) +- (truth_andif +- (ge @0 { build_real (TREE_TYPE (@0), dconst0); }) +- (ne @0 { build_real (TREE_TYPE (@0), c2); })))) +- /* sqrt(x) < c is the same as x < c*c, if we ignore NaNs. */ +- (if (! HONOR_NANS (@0)) +- (cmp @0 { build_real (TREE_TYPE (@0), c2); }) +- /* sqrt(x) < c is the same as x >= 0 && x < c*c. */ +- (if (GENERIC) +- (truth_andif +- (ge @0 { build_real (TREE_TYPE (@0), dconst0); }) +- (cmp @0 { build_real (TREE_TYPE (@0), c2); }))))))))) ++ (if (cmp == GT_EXPR || cmp == GE_EXPR) ++ (if (REAL_VALUE_ISINF (c2)) ++ /* sqrt(x) > y is x == +Inf, when y is very large. */ ++ (if (HONOR_INFINITIES (@0)) ++ (eq @0 { build_real (TREE_TYPE (@0), c2); }) ++ { constant_boolean_node (false, type); }) ++ /* sqrt(x) > c is the same as x > c*c. */ ++ (if (ncmp != ERROR_MARK) ++ (if (ncmp == GE_EXPR) ++ (ge @0 { build_real (TREE_TYPE (@0), c2); }) ++ (gt @0 { build_real (TREE_TYPE (@0), c2); })))) ++ /* else if (cmp == LT_EXPR || cmp == LE_EXPR) */ ++ (if (REAL_VALUE_ISINF (c2)) ++ (switch ++ /* sqrt(x) < y is always true, when y is a very large ++ value and we don't care about NaNs or Infinities. */ ++ (if (! HONOR_NANS (@0) && ! HONOR_INFINITIES (@0)) ++ { constant_boolean_node (true, type); }) ++ /* sqrt(x) < y is x != +Inf when y is very large and we ++ don't care about NaNs. */ ++ (if (! HONOR_NANS (@0)) ++ (ne @0 { build_real (TREE_TYPE (@0), c2); })) ++ /* sqrt(x) < y is x >= 0 when y is very large and we ++ don't care about Infinities. */ ++ (if (! HONOR_INFINITIES (@0)) ++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); })) ++ /* sqrt(x) < y is x >= 0 && x != +Inf, when y is large. */ ++ (if (GENERIC) ++ (truth_andif ++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); }) ++ (ne @0 { build_real (TREE_TYPE (@0), c2); })))) ++ /* sqrt(x) < c is the same as x < c*c, if we ignore NaNs. */ ++ (if (ncmp != ERROR_MARK && ! HONOR_NANS (@0)) ++ (if (ncmp == LT_EXPR) ++ (lt @0 { build_real (TREE_TYPE (@0), c2); }) ++ (le @0 { build_real (TREE_TYPE (@0), c2); })) ++ /* sqrt(x) < c is the same as x >= 0 && x < c*c. */ ++ (if (ncmp != ERROR_MARK && GENERIC) ++ (if (ncmp == LT_EXPR) ++ (truth_andif ++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); }) ++ (lt @0 { build_real (TREE_TYPE (@0), c2); })) ++ (truth_andif ++ (ge @0 { build_real (TREE_TYPE (@0), dconst0); }) ++ (le @0 { build_real (TREE_TYPE (@0), c2); }))))))))))) + /* Transform sqrt(x) cmp sqrt(y) -> x cmp y. */ + (simplify + (cmp (sq @0) (sq @1)) +Index: gcc/go/gofrontend/expressions.cc +=================================================================== +--- a/src/gcc/go/gofrontend/expressions.cc (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/go/gofrontend/expressions.cc (.../branches/gcc-9-branch) +@@ -2036,7 +2036,11 @@ + + int + do_inlining_cost() const +- { return 1; } ++ { ++ if (this->type_ != NULL && this->type_->named_type() != NULL) ++ return 0x100000; ++ return 1; ++ } + + void + do_export(Export_function_body*) const; +@@ -2451,7 +2455,11 @@ + + int + do_inlining_cost() const +- { return 1; } ++ { ++ if (this->type_ != NULL && this->type_->named_type() != NULL) ++ return 0x100000; ++ return 1; ++ } + + void + do_export(Export_function_body*) const; +@@ -2664,7 +2672,11 @@ + + int + do_inlining_cost() const +- { return 2; } ++ { ++ if (this->type_ != NULL && this->type_->named_type() != NULL) ++ return 0x100000; ++ return 2; ++ } + + void + do_export(Export_function_body*) const; +Index: gcc/ada/sem_spark.adb +=================================================================== +--- a/src/gcc/ada/sem_spark.adb (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/sem_spark.adb (.../branches/gcc-9-branch) +@@ -804,7 +804,7 @@ + + if Present (SPARK_Pragma (Defining_Entity (Body_N))) then + if Get_SPARK_Mode_From_Annotation +- (SPARK_Pragma (Defining_Entity (Body_N, False))) /= Opt.On ++ (SPARK_Pragma (Defining_Entity (Body_N))) /= Opt.On + then + return; + end if; +@@ -1914,7 +1914,7 @@ + CorSp : Node_Id; + + begin +- if Present (SPARK_Pragma (Defining_Entity (Pack, False))) then ++ if Present (SPARK_Pragma (Defining_Entity (Pack))) then + if Get_SPARK_Mode_From_Annotation + (SPARK_Pragma (Defining_Entity (Pack))) /= Opt.On + then +Index: gcc/ada/ChangeLog +=================================================================== +--- a/src/gcc/ada/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,29 @@ ++2019-10-12 Eric Botcazou ++ ++ PR ada/91995 ++ * sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls ++ to Defining_Entity. ++ * sem_elab.adb (Find_Unit_Entity): Likewise. Deal with N_Subunit ++ here in lieu of in Defining_Entity. ++ * sem_spark.adb (Check_Callable_Body): Likewise. ++ (Check_Package_Body): Likewise. ++ * sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters. ++ * sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters, ++ and adjust accordingly. Deal with N_Compilation_Unit. ++ ++2019-10-11 Eric Botcazou ++ ++ * gcc-interface/decl.c (annotate_value) : Really test the ++ sign of the value when deciding to build a NEGATE_EXPR. ++ : Remove redundant line. ++ : Do the negation here. ++ ++2019-09-23 Eric Botcazou ++ ++ * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep ++ on the underlying type of the node. ++ (Call_to_gnu): Likewise with the type of the prefix. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/ada/gcc-interface/decl.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/decl.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/gcc-interface/decl.c (.../branches/gcc-9-branch) +@@ -8255,9 +8255,8 @@ + { + case INTEGER_CST: + /* For negative values, build NEGATE_EXPR of the opposite. Such values +- can appear for discriminants in expressions for variants. Note that, +- sizetype being unsigned, we don't directly use tree_int_cst_sgn. */ +- if (tree_int_cst_sign_bit (gnu_size)) ++ can appear for discriminants in expressions for variants. */ ++ if (tree_int_cst_sgn (gnu_size) < 0) + { + tree t = wide_int_to_tree (sizetype, -wi::to_wide (gnu_size)); + tcode = Negate_Expr; +@@ -8335,9 +8334,8 @@ + && tree_int_cst_sign_bit (TREE_OPERAND (gnu_size, 1))) + { + tcode = Minus_Expr; +- ops[0] = annotate_value (TREE_OPERAND (gnu_size, 0)); +- wide_int op1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1)); +- ops[1] = annotate_value (wide_int_to_tree (sizetype, op1)); ++ wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1)); ++ ops[1] = annotate_value (wide_int_to_tree (sizetype, wop1)); + break; + } + +@@ -8378,9 +8376,9 @@ + Such values can appear in expressions with aligning patterns. */ + if (TREE_CODE (TREE_OPERAND (gnu_size, 1)) == INTEGER_CST) + { +- wide_int op1 = wi::sext (wi::to_wide (TREE_OPERAND (gnu_size, 1)), +- TYPE_PRECISION (sizetype)); +- ops[1] = annotate_value (wide_int_to_tree (sizetype, op1)); ++ wide_int wop1 = -wi::to_wide (TREE_OPERAND (gnu_size, 1)); ++ tree op1 = wide_int_to_tree (sizetype, wop1); ++ ops[1] = annotate_value (build1 (NEGATE_EXPR, sizetype, op1)); + } + break; + +Index: gcc/ada/gcc-interface/trans.c +=================================================================== +--- a/src/gcc/ada/gcc-interface/trans.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/gcc-interface/trans.c (.../branches/gcc-9-branch) +@@ -2248,32 +2248,29 @@ + /* For other address attributes applied to a nested function, + find an inner ADDR_EXPR and annotate it so that we can issue + a useful warning with -Wtrampolines. */ +- else if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (gnu_prefix))) ++ else if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (gnu_prefix)) ++ && (gnu_expr = remove_conversions (gnu_result, false)) ++ && TREE_CODE (gnu_expr) == ADDR_EXPR ++ && decl_function_context (TREE_OPERAND (gnu_expr, 0))) + { +- gnu_expr = remove_conversions (gnu_result, false); ++ set_expr_location_from_node (gnu_expr, gnat_node); + +- if (TREE_CODE (gnu_expr) == ADDR_EXPR +- && decl_function_context (TREE_OPERAND (gnu_expr, 0))) +- { +- set_expr_location_from_node (gnu_expr, gnat_node); ++ /* Also check the inlining status. */ ++ check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0)); + +- /* Also check the inlining status. */ +- check_inlining_for_nested_subprog (TREE_OPERAND (gnu_expr, 0)); ++ /* Moreover, for 'Access or 'Unrestricted_Access with non- ++ foreign-compatible representation, mark the ADDR_EXPR so ++ that we can build a descriptor instead of a trampoline. */ ++ if ((attribute == Attr_Access ++ || attribute == Attr_Unrestricted_Access) ++ && targetm.calls.custom_function_descriptors > 0 ++ && Can_Use_Internal_Rep (Underlying_Type (Etype (gnat_node)))) ++ FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1; + +- /* Moreover, for 'Access or 'Unrestricted_Access with non- +- foreign-compatible representation, mark the ADDR_EXPR so +- that we can build a descriptor instead of a trampoline. */ +- if ((attribute == Attr_Access +- || attribute == Attr_Unrestricted_Access) +- && targetm.calls.custom_function_descriptors > 0 +- && Can_Use_Internal_Rep (Etype (gnat_node))) +- FUNC_ADDR_BY_DESCRIPTOR (gnu_expr) = 1; +- +- /* Otherwise, we need to check that we are not violating the +- No_Implicit_Dynamic_Code restriction. */ +- else if (targetm.calls.custom_function_descriptors != 0) +- Check_Implicit_Dynamic_Code_Allowed (gnat_node); +- } ++ /* Otherwise, we need to check that we are not violating the ++ No_Implicit_Dynamic_Code restriction. */ ++ else if (targetm.calls.custom_function_descriptors != 0) ++ Check_Implicit_Dynamic_Code_Allowed (gnat_node); + } + break; + +@@ -5103,7 +5100,8 @@ + /* If the access type doesn't require foreign-compatible representation, + be prepared for descriptors. */ + if (targetm.calls.custom_function_descriptors > 0 +- && Can_Use_Internal_Rep (Etype (Prefix (Name (gnat_node))))) ++ && Can_Use_Internal_Rep ++ (Underlying_Type (Etype (Prefix (Name (gnat_node)))))) + by_descriptor = true; + } + else if (Nkind (Name (gnat_node)) == N_Attribute_Reference) +Index: gcc/ada/sem_util.adb +=================================================================== +--- a/src/gcc/ada/sem_util.adb (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/sem_util.adb (.../branches/gcc-9-branch) +@@ -5827,11 +5827,7 @@ + -- Defining_Entity -- + --------------------- + +- function Defining_Entity +- (N : Node_Id; +- Empty_On_Errors : Boolean := False; +- Concurrent_Subunit : Boolean := False) return Entity_Id +- is ++ function Defining_Entity (N : Node_Id) return Entity_Id is + begin + case Nkind (N) is + when N_Abstract_Subprogram_Declaration +@@ -5882,25 +5878,12 @@ + => + return Defining_Identifier (N); + ++ when N_Compilation_Unit => ++ return Defining_Entity (Unit (N)); ++ + when N_Subunit => +- declare +- Bod : constant Node_Id := Proper_Body (N); +- Orig_Bod : constant Node_Id := Original_Node (Bod); ++ return Defining_Entity (Proper_Body (N)); + +- begin +- -- Retrieve the entity of the original protected or task body +- -- if requested by the caller. +- +- if Concurrent_Subunit +- and then Nkind (Bod) = N_Null_Statement +- and then Nkind_In (Orig_Bod, N_Protected_Body, N_Task_Body) +- then +- return Defining_Entity (Orig_Bod); +- else +- return Defining_Entity (Bod); +- end if; +- end; +- + when N_Function_Instantiation + | N_Function_Specification + | N_Generic_Function_Renaming_Declaration +@@ -5925,14 +5908,10 @@ + -- can continue semantic analysis. + + elsif Nam = Error then +- if Empty_On_Errors then +- return Empty; +- else +- Err := Make_Temporary (Sloc (N), 'T'); +- Set_Defining_Unit_Name (N, Err); ++ Err := Make_Temporary (Sloc (N), 'T'); ++ Set_Defining_Unit_Name (N, Err); + +- return Err; +- end if; ++ return Err; + + -- If not an entity, get defining identifier + +@@ -5947,11 +5926,7 @@ + return Entity (Identifier (N)); + + when others => +- if Empty_On_Errors then +- return Empty; +- else +- raise Program_Error; +- end if; ++ raise Program_Error; + end case; + end Defining_Entity; + +Index: gcc/ada/sem_util.ads +=================================================================== +--- a/src/gcc/ada/sem_util.ads (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/sem_util.ads (.../branches/gcc-9-branch) +@@ -543,10 +543,7 @@ + -- in the case of a descendant of a generic formal type (returns Int'Last + -- instead of 0). + +- function Defining_Entity +- (N : Node_Id; +- Empty_On_Errors : Boolean := False; +- Concurrent_Subunit : Boolean := False) return Entity_Id; ++ function Defining_Entity (N : Node_Id) return Entity_Id; + -- Given a declaration N, returns the associated defining entity. If the + -- declaration has a specification, the entity is obtained from the + -- specification. If the declaration has a defining unit name, then the +@@ -557,22 +554,6 @@ + -- local entities declared during loop expansion. These entities need + -- debugging information, generated through Qualify_Entity_Names, and + -- the loop declaration must be placed in the table Name_Qualify_Units. +- -- +- -- Set flag Empty_On_Error to change the behavior of this routine as +- -- follows: +- -- +- -- * True - A declaration that lacks a defining entity returns Empty. +- -- A node that does not allow for a defining entity returns Empty. +- -- +- -- * False - A declaration that lacks a defining entity is given a new +- -- internally generated entity which is subsequently returned. A node +- -- that does not allow for a defining entity raises Program_Error. +- -- +- -- The former semantics is appropriate for the back end; the latter +- -- semantics is appropriate for the front end. +- -- +- -- Set flag Concurrent_Subunit to handle rewritings of concurrent bodies +- -- which act as subunits. Such bodies are generally rewritten as null. + + function Denotes_Discriminant + (N : Node_Id; +Index: gcc/ada/sem_ch8.adb +=================================================================== +--- a/src/gcc/ada/sem_ch8.adb (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/sem_ch8.adb (.../branches/gcc-9-branch) +@@ -4256,9 +4256,7 @@ + + -- Common case for compilation unit + +- elsif Defining_Entity (N => Parent (N), +- Empty_On_Errors => True) = Current_Scope +- then ++ elsif Defining_Entity (Parent (N)) = Current_Scope then + null; + + else +@@ -4265,7 +4263,7 @@ + -- If declaration appears in some other scope, it must be in some + -- parent unit when compiling a child. + +- Pack := Defining_Entity (Parent (N), Empty_On_Errors => True); ++ Pack := Defining_Entity (Parent (N)); + + if not In_Open_Scopes (Pack) then + null; +Index: gcc/ada/sem_elab.adb +=================================================================== +--- a/src/gcc/ada/sem_elab.adb (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ada/sem_elab.adb (.../branches/gcc-9-branch) +@@ -5544,13 +5544,23 @@ + N_Procedure_Instantiation) + and then Nkind (Context) = N_Compilation_Unit + then +- return +- Related_Instance (Defining_Entity (N, Concurrent_Subunit => True)); ++ return Related_Instance (Defining_Entity (N)); + ++ -- The unit denotes a concurrent body acting as a subunit. Such bodies ++ -- are generally rewritten into null statements. The proper entity is ++ -- that of the "original node". ++ ++ elsif Nkind (N) = N_Subunit ++ and then Nkind (Proper_Body (N)) = N_Null_Statement ++ and then Nkind_In (Original_Node (Proper_Body (N)), N_Protected_Body, ++ N_Task_Body) ++ then ++ return Defining_Entity (Original_Node (Proper_Body (N))); ++ + -- Otherwise the proper entity is the defining entity + + else +- return Defining_Entity (N, Concurrent_Subunit => True); ++ return Defining_Entity (N); + end if; + end Find_Unit_Entity; + +Index: gcc/common/config/s390/s390-common.c +=================================================================== +--- a/src/gcc/common/config/s390/s390-common.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/common/config/s390/s390-common.c (.../branches/gcc-9-branch) +@@ -47,9 +47,9 @@ + /* z14 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT + | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX + | PF_Z13 | PF_VX | PF_VXE | PF_Z14, +- /* arch13 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT ++ /* z15 */ PF_IEEE_FLOAT | PF_ZARCH | PF_LONG_DISPLACEMENT + | PF_EXTIMM | PF_DFP | PF_Z10 | PF_Z196 | PF_ZEC12 | PF_TX +- | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_ARCH13 ++ | PF_Z13 | PF_VX | PF_VXE | PF_Z14 | PF_VXE2 | PF_Z15 + }; + + /* Change optimizations to be performed, depending on the +Index: gcc/dse.c +=================================================================== +--- a/src/gcc/dse.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/dse.c (.../branches/gcc-9-branch) +@@ -2535,10 +2535,13 @@ + clear_rhs_from_active_local_stores (); + } + } +- else if (SIBLING_CALL_P (insn) && reload_completed) ++ else if (SIBLING_CALL_P (insn) ++ && (reload_completed || HARD_FRAME_POINTER_IS_ARG_POINTER)) + /* Arguments for a sibling call that are pushed to memory are passed + using the incoming argument pointer of the current function. After +- reload that might be (and likely is) frame pointer based. */ ++ reload that might be (and likely is) frame pointer based. And, if ++ it is a frame pointer on the target, even before reload we need to ++ kill frame pointer based stores. */ + add_wild_read (bb_info); + else + /* Every other call, including pure functions, may read any memory +Index: gcc/lra-remat.c +=================================================================== +--- a/src/gcc/lra-remat.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lra-remat.c (.../branches/gcc-9-branch) +@@ -1020,7 +1020,6 @@ + static void + update_scratch_ops (rtx_insn *remat_insn) + { +- int hard_regno; + lra_insn_recog_data_t id = lra_get_insn_recog_data (remat_insn); + struct lra_static_insn_data *static_id = id->insn_static_data; + for (int i = 0; i < static_id->n_operands; i++) +@@ -1031,17 +1030,9 @@ + int regno = REGNO (*loc); + if (! lra_former_scratch_p (regno)) + continue; +- hard_regno = reg_renumber[regno]; + *loc = lra_create_new_reg (GET_MODE (*loc), *loc, + lra_get_allocno_class (regno), + "scratch pseudo copy"); +- if (hard_regno >= 0) +- { +- reg_renumber[REGNO (*loc)] = hard_regno; +- if (lra_dump_file) +- fprintf (lra_dump_file, " Assigning the same %d to r%d\n", +- REGNO (*loc), hard_regno); +- } + lra_register_new_scratch_op (remat_insn, i, id->icode); + } + +Index: gcc/fortran/intrinsic.c +=================================================================== +--- a/src/gcc/fortran/intrinsic.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/intrinsic.c (.../branches/gcc-9-branch) +@@ -4180,6 +4180,50 @@ + if (f == NULL && a == NULL) /* No arguments */ + return true; + ++ /* ALLOCATED has two mutually exclusive keywords, but only one ++ can be present at time and neither is optional. */ ++ if (strcmp (name, "allocated") == 0) ++ { ++ if (!a) ++ { ++ gfc_error ("ALLOCATED intrinsic at %L requires an array or scalar " ++ "allocatable entity", where); ++ return false; ++ } ++ ++ if (a->name) ++ { ++ if (strcmp (a->name, "scalar") == 0) ++ { ++ if (a->next) ++ goto whoops; ++ if (a->expr->rank != 0) ++ { ++ gfc_error ("Scalar entity required at %L", &a->expr->where); ++ return false; ++ } ++ return true; ++ } ++ else if (strcmp (a->name, "array") == 0) ++ { ++ if (a->next) ++ goto whoops; ++ if (a->expr->rank == 0) ++ { ++ gfc_error ("Array entity required at %L", &a->expr->where); ++ return false; ++ } ++ return true; ++ } ++ else ++ { ++ gfc_error ("Invalid keyword %qs in %qs intrinsic function at %L", ++ a->name, name, &a->expr->where); ++ return false; ++ } ++ } ++ } ++ + for (;;) + { /* Put the nonkeyword arguments in a 1:1 correspondence */ + if (f == NULL) +@@ -4199,6 +4243,7 @@ + if (a == NULL) + goto do_sort; + ++whoops: + gfc_error ("Too many arguments in call to %qs at %L", name, where); + return false; + +Index: gcc/fortran/trans-expr.c +=================================================================== +--- a/src/gcc/fortran/trans-expr.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans-expr.c (.../branches/gcc-9-branch) +@@ -4989,9 +4989,10 @@ + tree gfc_desc_ptr; + tree type; + tree cond; ++ tree desc_attr; + int attribute; ++ int cfi_attribute; + symbol_attribute attr = gfc_expr_attr (e); +- stmtblock_t block; + + /* If this is a full array or a scalar, the allocatable and pointer + attributes can be passed. Otherwise it is 'CFI_attribute_other'*/ +@@ -4998,12 +4999,20 @@ + attribute = 2; + if (!e->rank || gfc_get_full_arrayspec_from_expr (e)) + { +- if (fsym->attr.pointer) ++ if (attr.pointer) + attribute = 0; +- else if (fsym->attr.allocatable) ++ else if (attr.allocatable) + attribute = 1; + } + ++ /* If the formal argument is assumed shape and neither a pointer nor ++ allocatable, it is unconditionally CFI_attribute_other. */ ++ if (fsym->as->type == AS_ASSUMED_SHAPE ++ && !fsym->attr.pointer && !fsym->attr.allocatable) ++ cfi_attribute = 2; ++ else ++ cfi_attribute = attribute; ++ + if (e->rank != 0) + { + parmse->force_no_tmp = 1; +@@ -5070,11 +5079,12 @@ + parmse->expr, attr); + } + +- /* Set the CFI attribute field. */ +- tmp = gfc_conv_descriptor_attribute (parmse->expr); ++ /* Set the CFI attribute field through a temporary value for the ++ gfc attribute. */ ++ desc_attr = gfc_conv_descriptor_attribute (parmse->expr); + tmp = fold_build2_loc (input_location, MODIFY_EXPR, +- void_type_node, tmp, +- build_int_cst (TREE_TYPE (tmp), attribute)); ++ void_type_node, desc_attr, ++ build_int_cst (TREE_TYPE (desc_attr), cfi_attribute)); + gfc_add_expr_to_block (&parmse->pre, tmp); + + /* Now pass the gfc_descriptor by reference. */ +@@ -5092,26 +5102,39 @@ + gfor_fndecl_gfc_to_cfi, 2, tmp, gfc_desc_ptr); + gfc_add_expr_to_block (&parmse->pre, tmp); + ++ /* Now set the gfc descriptor attribute. */ ++ tmp = fold_build2_loc (input_location, MODIFY_EXPR, ++ void_type_node, desc_attr, ++ build_int_cst (TREE_TYPE (desc_attr), attribute)); ++ gfc_add_expr_to_block (&parmse->pre, tmp); ++ + /* The CFI descriptor is passed to the bind_C procedure. */ + parmse->expr = cfi_desc_ptr; + +- /* Free the CFI descriptor. */ +- gfc_init_block (&block); +- cond = fold_build2_loc (input_location, NE_EXPR, +- logical_type_node, cfi_desc_ptr, +- build_int_cst (TREE_TYPE (cfi_desc_ptr), 0)); +- tmp = gfc_call_free (cfi_desc_ptr); +- gfc_add_expr_to_block (&block, tmp); +- tmp = build3_v (COND_EXPR, cond, +- gfc_finish_block (&block), +- build_empty_stmt (input_location)); +- gfc_prepend_expr_to_block (&parmse->post, tmp); +- + /* Transfer values back to gfc descriptor. */ + tmp = gfc_build_addr_expr (NULL_TREE, parmse->expr); + tmp = build_call_expr_loc (input_location, + gfor_fndecl_cfi_to_gfc, 2, gfc_desc_ptr, tmp); + gfc_prepend_expr_to_block (&parmse->post, tmp); ++ ++ /* Deal with an optional dummy being passed to an optional formal arg ++ by finishing the pre and post blocks and making their execution ++ conditional on the dummy being present. */ ++ if (fsym->attr.optional && e->expr_type == EXPR_VARIABLE ++ && e->symtree->n.sym->attr.optional) ++ { ++ cond = gfc_conv_expr_present (e->symtree->n.sym); ++ tmp = fold_build2 (MODIFY_EXPR, void_type_node, ++ cfi_desc_ptr, ++ build_int_cst (pvoid_type_node, 0)); ++ tmp = build3_v (COND_EXPR, cond, ++ gfc_finish_block (&parmse->pre), tmp); ++ gfc_add_expr_to_block (&parmse->pre, tmp); ++ tmp = build3_v (COND_EXPR, cond, ++ gfc_finish_block (&parmse->post), ++ build_empty_stmt (input_location)); ++ gfc_add_expr_to_block (&parmse->post, tmp); ++ } + } + + +@@ -6001,8 +6024,14 @@ + gfc_add_expr_to_block (&se->pre, tmp); + } + +- tmp = build_fold_indirect_ref_loc (input_location, +- parmse.expr); ++ tmp = parmse.expr; ++ /* With bind(C), the actual argument is replaced by a bind-C ++ descriptor; in this case, the data component arrives here, ++ which shall not be dereferenced, but still freed and ++ nullified. */ ++ if (TREE_TYPE(tmp) != pvoid_type_node) ++ tmp = build_fold_indirect_ref_loc (input_location, ++ parmse.expr); + if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (tmp))) + tmp = gfc_conv_descriptor_data_get (tmp); + tmp = gfc_deallocate_with_status (tmp, NULL_TREE, NULL_TREE, +@@ -10603,7 +10632,8 @@ + if (expr1->ts.deferred + && gfc_expr_attr (expr1).allocatable + && gfc_check_dependency (expr1, expr2, true)) +- rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre); ++ rse.string_length = ++ gfc_evaluate_now_function_scope (rse.string_length, &rse.pre); + string_length = rse.string_length; + } + else +Index: gcc/fortran/trans-array.c +=================================================================== +--- a/src/gcc/fortran/trans-array.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans-array.c (.../branches/gcc-9-branch) +@@ -6110,9 +6110,12 @@ + tree atype = type; + while (TREE_CODE (TREE_TYPE (atype)) == ARRAY_TYPE) + atype = TREE_TYPE (atype); +- if (TREE_CODE (TREE_TYPE (atype)) == INTEGER_TYPE +- && tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (se.expr))) +- > tree_to_uhwi (TYPE_SIZE_UNIT (atype))) ++ gcc_checking_assert (TREE_CODE (TREE_TYPE (atype)) ++ == INTEGER_TYPE); ++ gcc_checking_assert (TREE_TYPE (TREE_TYPE (se.expr)) ++ == TREE_TYPE (atype)); ++ if (tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (se.expr))) ++ > tree_to_uhwi (TYPE_SIZE_UNIT (atype))) + { + unsigned HOST_WIDE_INT size + = tree_to_uhwi (TYPE_SIZE_UNIT (atype)); +@@ -6119,8 +6122,8 @@ + const char *p = TREE_STRING_POINTER (se.expr); + + se.expr = build_string (size, p); +- TREE_TYPE (se.expr) = atype; + } ++ TREE_TYPE (se.expr) = atype; + } + break; + +Index: gcc/fortran/class.c +=================================================================== +--- a/src/gcc/fortran/class.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/class.c (.../branches/gcc-9-branch) +@@ -2241,6 +2241,9 @@ + if (!derived->attr.unlimited_polymorphic && derived->attr.is_class) + derived = gfc_get_derived_super_type (derived); + ++ if (!derived) ++ return NULL; ++ + /* Find the gsymbol for the module of use associated derived types. */ + if ((derived->attr.use_assoc || derived->attr.used_in_submodule) + && !derived->attr.vtype && !derived->attr.is_class) +Index: gcc/fortran/decl.c +=================================================================== +--- a/src/gcc/fortran/decl.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/decl.c (.../branches/gcc-9-branch) +@@ -99,6 +99,11 @@ + /* Set upon parsing a !GCC$ unroll n directive for use in the next loop. */ + int directive_unroll = -1; + ++/* Set upon parsing supported !GCC$ pragmas for use in the next loop. */ ++bool directive_ivdep = false; ++bool directive_vector = false; ++bool directive_novector = false; ++ + /* Map of middle-end built-ins that should be vectorized. */ + hash_map *gfc_vectorized_builtins; + +@@ -1335,9 +1340,9 @@ + } + + /* Trap declarations of attributes in encompassing scope. The +- signature for this is that ts.kind is set. Legitimate +- references only set ts.type. */ +- if (sym->ts.kind != 0 ++ signature for this is that ts.kind is nonzero for no-CLASS ++ entity. For a CLASS entity, ts.kind is zero. */ ++ if ((sym->ts.kind != 0 || sym->ts.type == BT_CLASS) + && !sym->attr.implicit_type + && sym->attr.proc == 0 + && gfc_current_ns->parent != NULL +@@ -2644,7 +2649,7 @@ + then we want to set the type & bail out. */ + if (flag_cray_pointer && !gfc_comp_struct (gfc_current_state ())) + { +- gfc_find_symbol (name, gfc_current_ns, 1, &sym); ++ gfc_find_symbol (name, gfc_current_ns, 0, &sym); + if (sym != NULL && sym->attr.cray_pointee) + { + m = MATCH_YES; +@@ -3991,7 +3996,6 @@ + return MATCH_YES; + } + +- + m = gfc_match (" type ("); + matched_type = (m == MATCH_YES); + if (matched_type) +@@ -4039,7 +4043,10 @@ + m = MATCH_YES; + + if (matched_type && m == MATCH_YES && gfc_match_char (')') != MATCH_YES) +- m = MATCH_ERROR; ++ { ++ gfc_error ("Malformed type-spec at %C"); ++ return MATCH_ERROR; ++ } + + return m; + } +@@ -4062,8 +4069,12 @@ + && !gfc_notify_std (GFC_STD_F2008, "TYPE with " + "intrinsic-type-spec at %C")) + return MATCH_ERROR; ++ + if (matched_type && gfc_match_char (')') != MATCH_YES) +- return MATCH_ERROR; ++ { ++ gfc_error ("Malformed type-spec at %C"); ++ return MATCH_ERROR; ++ } + + ts->type = BT_REAL; + ts->kind = gfc_default_double_kind; +@@ -4093,7 +4104,10 @@ + return MATCH_ERROR; + + if (matched_type && gfc_match_char (')') != MATCH_YES) +- return MATCH_ERROR; ++ { ++ gfc_error ("Malformed type-spec at %C"); ++ return MATCH_ERROR; ++ } + + ts->type = BT_COMPLEX; + ts->kind = gfc_default_double_kind; +@@ -4114,7 +4128,13 @@ + if (m == MATCH_ERROR) + return m; + +- m = gfc_match_char (')'); ++ gfc_gobble_whitespace (); ++ if (gfc_peek_ascii_char () != ')') ++ { ++ gfc_error ("Malformed type-spec at %C"); ++ return MATCH_ERROR; ++ } ++ m = gfc_match_char (')'); /* Burn closing ')'. */ + } + + if (m != MATCH_YES) +@@ -4397,6 +4417,7 @@ + gfc_next_ascii_char (); + return MATCH_YES; + } ++ gfc_error ("Malformed type-spec at %C"); + return MATCH_NO; + } + } +@@ -4410,7 +4431,10 @@ + } + + if (matched_type && gfc_match_char (')') != MATCH_YES) +- return MATCH_ERROR; ++ { ++ gfc_error ("Malformed type-spec at %C"); ++ return MATCH_ERROR; ++ } + + /* Defer association of the KIND expression of function results + until after USE and IMPORT statements. */ +@@ -6145,13 +6169,17 @@ + found_prefix = true; + } + +- if (!seen_type && ts != NULL +- && gfc_match_decl_type_spec (ts, 0) == MATCH_YES +- && gfc_match_space () == MATCH_YES) ++ if (!seen_type && ts != NULL) + { +- +- seen_type = true; +- found_prefix = true; ++ match m; ++ m = gfc_match_decl_type_spec (ts, 0); ++ if (m == MATCH_ERROR) ++ goto error; ++ if (m == MATCH_YES && gfc_match_space () == MATCH_YES) ++ { ++ seen_type = true; ++ found_prefix = true; ++ } + } + + if (gfc_match ("elemental% ") == MATCH_YES) +@@ -7202,13 +7230,16 @@ + if (sym->attr.is_bind_c == 1) + { + sym->attr.is_bind_c = 0; +- if (sym->old_symbol != NULL) +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", +- &(sym->old_symbol->declared_at)); +- else +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", &gfc_current_locus); ++ ++ if (gfc_state_stack->previous ++ && gfc_state_stack->previous->state != COMP_SUBMODULE) ++ { ++ locus loc; ++ loc = sym->old_symbol != NULL ++ ? sym->old_symbol->declared_at : gfc_current_locus; ++ gfc_error_now ("BIND(C) attribute at %L can only be used for " ++ "variables or common blocks", &loc); ++ } + } + + if (found_match != MATCH_YES) +@@ -7222,6 +7253,24 @@ + found_match = suffix_match; + } + ++ /* F2018 C1550 (R1526) If MODULE appears in the prefix of a module ++ subprogram and a binding label is specified, it shall be the ++ same as the binding label specified in the corresponding module ++ procedure interface body. */ ++ if (sym->attr.is_bind_c && sym->attr.module_procedure && sym->old_symbol ++ && strcmp (sym->name, sym->old_symbol->name) == 0 ++ && strcmp (sym->binding_label, sym->old_symbol->binding_label) != 0) ++ { ++ const char *null = "NULL", *s1, *s2; ++ s1 = sym->binding_label; ++ if (!s1) s1 = null; ++ s2 = sym->old_symbol->binding_label; ++ if (!s2) s2 = null; ++ gfc_error ("Mismatch in BIND(C) names (%qs/%qs) at %C", s1, s2); ++ sym->refs++; /* Needed to avoid an ICE in gfc_release_symbol */ ++ return MATCH_ERROR; ++ } ++ + if(found_match != MATCH_YES) + m = MATCH_ERROR; + else +@@ -7460,16 +7509,16 @@ + not allowed for procedures. */ + if (entry->attr.is_bind_c == 1) + { ++ locus loc; ++ + entry->attr.is_bind_c = 0; +- if (entry->old_symbol != NULL) +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", +- &(entry->old_symbol->declared_at)); +- else +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", &gfc_current_locus); +- } + ++ loc = entry->old_symbol != NULL ++ ? entry->old_symbol->declared_at : gfc_current_locus; ++ gfc_error_now ("BIND(C) attribute at %L can only be used for " ++ "variables or common blocks", &loc); ++ } ++ + /* Check what next non-whitespace character is so we can tell if there + is the required parens if we have a BIND(C). */ + old_loc = gfc_current_locus; +@@ -7668,13 +7717,16 @@ + if (sym->attr.is_bind_c == 1) + { + sym->attr.is_bind_c = 0; +- if (sym->old_symbol != NULL) +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", +- &(sym->old_symbol->declared_at)); +- else +- gfc_error_now ("BIND(C) attribute at %L can only be used for " +- "variables or common blocks", &gfc_current_locus); ++ ++ if (gfc_state_stack->previous ++ && gfc_state_stack->previous->state != COMP_SUBMODULE) ++ { ++ locus loc; ++ loc = sym->old_symbol != NULL ++ ? sym->old_symbol->declared_at : gfc_current_locus; ++ gfc_error_now ("BIND(C) attribute at %L can only be used for " ++ "variables or common blocks", &loc); ++ } + } + + /* C binding names are not allowed for internal procedures. */ +@@ -7716,6 +7768,24 @@ + return MATCH_ERROR; + } + ++ /* F2018 C1550 (R1526) If MODULE appears in the prefix of a module ++ subprogram and a binding label is specified, it shall be the ++ same as the binding label specified in the corresponding module ++ procedure interface body. */ ++ if (sym->attr.module_procedure && sym->old_symbol ++ && strcmp (sym->name, sym->old_symbol->name) == 0 ++ && strcmp (sym->binding_label, sym->old_symbol->binding_label) != 0) ++ { ++ const char *null = "NULL", *s1, *s2; ++ s1 = sym->binding_label; ++ if (!s1) s1 = null; ++ s2 = sym->old_symbol->binding_label; ++ if (!s2) s2 = null; ++ gfc_error ("Mismatch in BIND(C) names (%qs/%qs) at %C", s1, s2); ++ sym->refs++; /* Needed to avoid an ICE in gfc_release_symbol */ ++ return MATCH_ERROR; ++ } ++ + /* Scan the dummy arguments for an alternate return. */ + for (arg = sym->formal; arg; arg = arg->next) + if (!arg->sym) +@@ -10161,6 +10231,20 @@ + return MATCH_ERROR; + } + ++ /* In free source form, need to check for TYPE XXX as oppose to TYPEXXX. ++ But, we need to simply return for TYPE(. */ ++ if (m == MATCH_NO && gfc_current_form == FORM_FREE) ++ { ++ char c = gfc_peek_ascii_char (); ++ if (c == '(') ++ return m; ++ if (!gfc_is_whitespace (c)) ++ { ++ gfc_error ("Mangled derived type definition at %C"); ++ return MATCH_NO; ++ } ++ } ++ + m = gfc_match (" %n ", name); + if (m != MATCH_YES) + return m; +@@ -10168,7 +10252,7 @@ + /* Make sure that we don't identify TYPE IS (...) as a parameterized + derived type named 'is'. + TODO Expand the check, when 'name' = "is" by matching " (tname) " +- and checking if this is a(n intrinsic) typename. his picks up ++ and checking if this is a(n intrinsic) typename. This picks up + misplaced TYPE IS statements such as in select_type_1.f03. */ + if (gfc_peek_ascii_char () == '(') + { +@@ -11472,3 +11556,53 @@ + + return MATCH_YES; + } ++ ++/* Match an !GCC$ IVDEP statement. ++ When we come here, we have already matched the !GCC$ IVDEP string. */ ++ ++match ++gfc_match_gcc_ivdep (void) ++{ ++ if (gfc_match_eos () == MATCH_YES) ++ { ++ directive_ivdep = true; ++ return MATCH_YES; ++ } ++ ++ gfc_error ("Syntax error in !GCC$ IVDEP directive at %C"); ++ return MATCH_ERROR; ++} ++ ++/* Match an !GCC$ VECTOR statement. ++ When we come here, we have already matched the !GCC$ VECTOR string. */ ++ ++match ++gfc_match_gcc_vector (void) ++{ ++ if (gfc_match_eos () == MATCH_YES) ++ { ++ directive_vector = true; ++ directive_novector = false; ++ return MATCH_YES; ++ } ++ ++ gfc_error ("Syntax error in !GCC$ VECTOR directive at %C"); ++ return MATCH_ERROR; ++} ++ ++/* Match an !GCC$ NOVECTOR statement. ++ When we come here, we have already matched the !GCC$ NOVECTOR string. */ ++ ++match ++gfc_match_gcc_novector (void) ++{ ++ if (gfc_match_eos () == MATCH_YES) ++ { ++ directive_novector = true; ++ directive_vector = false; ++ return MATCH_YES; ++ } ++ ++ gfc_error ("Syntax error in !GCC$ NOVECTOR directive at %C"); ++ return MATCH_ERROR; ++} +Index: gcc/fortran/array.c +=================================================================== +--- a/src/gcc/fortran/array.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/array.c (.../branches/gcc-9-branch) +@@ -843,6 +843,10 @@ + + sym->as->cotype = as->cotype; + sym->as->corank = as->corank; ++ /* Check F2018:C822. */ ++ if (sym->as->rank + sym->as->corank > GFC_MAX_DIMENSIONS) ++ goto too_many; ++ + for (i = 0; i < as->corank; i++) + { + sym->as->lower[sym->as->rank + i] = as->lower[i]; +@@ -861,6 +865,10 @@ + sym->as->cray_pointee = as->cray_pointee; + sym->as->cp_was_assumed = as->cp_was_assumed; + ++ /* Check F2018:C822. */ ++ if (sym->as->rank + sym->as->corank > GFC_MAX_DIMENSIONS) ++ goto too_many; ++ + for (i = 0; i < sym->as->corank; i++) + { + sym->as->lower[as->rank + i] = sym->as->lower[i]; +@@ -875,6 +883,12 @@ + + free (as); + return true; ++ ++too_many: ++ ++ gfc_error ("rank + corank of %qs exceeds %d at %C", sym->name, ++ GFC_MAX_DIMENSIONS); ++ return false; + } + + +@@ -1124,6 +1138,31 @@ + } + + ++/* Convert components of an array constructor to the type in ts. */ ++ ++static match ++walk_array_constructor (gfc_typespec *ts, gfc_constructor_base head) ++{ ++ gfc_constructor *c; ++ gfc_expr *e; ++ match m; ++ ++ for (c = gfc_constructor_first (head); c; c = gfc_constructor_next (c)) ++ { ++ e = c->expr; ++ if (e->expr_type == EXPR_ARRAY && e->ts.type == BT_UNKNOWN ++ && !e->ref && e->value.constructor) ++ { ++ m = walk_array_constructor (ts, e->value.constructor); ++ if (m == MATCH_ERROR) ++ return m; ++ } ++ else if (!gfc_convert_type (e, ts, 1) && e->ts.type != BT_UNKNOWN) ++ return MATCH_ERROR; ++ } ++ return MATCH_YES; ++} ++ + /* Match an array constructor. */ + + match +@@ -1253,14 +1292,13 @@ + } + } + +- /* Walk the constructor and ensure type conversion for numeric types. */ ++ /* Walk the constructor, and if possible, do type conversion for ++ numeric types. */ + if (gfc_numeric_ts (&ts)) + { +- c = gfc_constructor_first (head); +- for (; c; c = gfc_constructor_next (c)) +- if (!gfc_convert_type (c->expr, &ts, 1) +- && c->expr->ts.type != BT_UNKNOWN) +- return MATCH_ERROR; ++ m = walk_array_constructor (&ts, head); ++ if (m == MATCH_ERROR) ++ return m; + } + } + else +@@ -2175,6 +2213,9 @@ + dest->end = gfc_copy_expr (src->end); + dest->step = gfc_copy_expr (src->step); + dest->unroll = src->unroll; ++ dest->ivdep = src->ivdep; ++ dest->vector = src->vector; ++ dest->novector = src->novector; + + return dest; + } +Index: gcc/fortran/gfortran.h +=================================================================== +--- a/src/gcc/fortran/gfortran.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/gfortran.h (.../branches/gcc-9-branch) +@@ -2407,6 +2407,9 @@ + { + gfc_expr *var, *start, *end, *step; + unsigned short unroll; ++ bool ivdep; ++ bool vector; ++ bool novector; + } + gfc_iterator; + +@@ -2783,6 +2786,9 @@ + bool gfc_in_match_data (void); + match gfc_match_char_spec (gfc_typespec *); + extern int directive_unroll; ++extern bool directive_ivdep; ++extern bool directive_vector; ++extern bool directive_novector; + + /* SIMD clause enum. */ + enum gfc_simd_clause +Index: gcc/fortran/ChangeLog +=================================================================== +--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,350 @@ ++2019-10-28  Paul Thomas   ++ ++ Backport from trunk ++ PR fortran/91926 ++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the ++ assignment of the attribute field to account correctly for an ++ assumed shape dummy. Assign separately to the gfc and cfi ++ descriptors since the atribute can be different. Add branch to ++ correctly handle missing optional dummies. ++ ++2019-10-28 Tobias Burnus ++ ++ Backport from mainline ++ 2019-10-28 Tobias Burnus ++ ++ PR fortran/91863 ++ * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Don't free data ++ memory as that's done on the Fortran side. ++ (gfc_conv_procedure_call): Handle void* pointers from ++ gfc_conv_gfc_desc_to_cfi_desc. ++ ++2019-10-27 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/86248 ++ * resolve.c (flag_fn_result_spec): Correct a typo before the ++ function declaration. ++ * trans-decl.c (gfc_sym_identifier): Boost the length of 'name' ++ to allow for all variants. Simplify the code by using a pointer ++ to the symbol's proc_name and taking the return out of each of ++ the conditional branches. Allow symbols with fn_result_spec set ++ that do not come from a procedure namespace and have a module ++ name to go through the non-fn_result_spec branch. ++ ++2019-10-22 Steven G. Kargl ++ ++ PR fortran/92174 ++ * decl.c (attr_decl1): Move check for F2018:C822 from here ... ++ * array.c (gfc_set_array_spec): ... to here. ++ ++2019-10-18 Steven G. Kargl ++ ++ PR fortran/69455 ++ * trans-decl.c (generate_local_decl): Avoid misconstructed ++ intrinsic modules in a BLOCK construct. ++ ++2019-10-18 Tobias Burnus ++ ++ Backport from mainline ++ 2019-10-18 Tobias Burnus ++ ++ PR fortran/91586 ++ * class.c (gfc_find_derived_vtab): Return NULL ++ instead of deref'ing NULL pointer. ++ ++2019-10-17 Steven G. Kargl ++ ++ PR fortran/83113 ++ PR fortran/89943 ++ decl.c (gfc_match_function_decl): Ignore duplicate BIND(C) for function ++ declaration in submodule. Implement at check for F2018 C1550. ++ (gfc_match_entry): Use temporary for locus, which allows removal of ++ one gfc_error_now(). ++ (gfc_match_subroutine): Ignore duplicate BIND(C) for subroutine ++ declaration in submodule. Implement at check for F2018 C1550. ++ ++2019-10-11 Steven G. Kargl ++ ++ PR fortran/91715 ++ * decl.c (gfc_match_prefix): If matching a type-spec returns an error, ++ it's an error so re-act correctly. ++ ++2019-10-11 Steven G. Kargl ++ ++ PR fortran/91649 ++ check.c (gfc_check_findloc): Additional checking for valid arguments ++ ++2019-10-10 Steven G. Kargl ++ ++ PR fortran/91801 ++ * simplify.c (gfc_simplify_reshape): Convert a gcc_assert into a ++ gfc_error as a user can easily hit the condition. ++ ++2019-10-07 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/84487 ++ * trans-decl.c (gfc_get_symbol_decl): For __def_init, set ++ DECL_ARTIFICAL and do not set TREE_READONLY. ++ ++2019-10-05 Steven G. Kargl ++ ++ PR fortran/47054 ++ * decl.c (variable_decl): Do not search parent namespace for symbol. ++ ++2019-10-04 Steven G. Kargl ++ ++ PR fortran/91942 ++ * io.c (match_vtag): Check for non-NULL result->symtree. ++ (match_out_tag): Check for invalid constant due to inquiry parameter. ++ (match_filepos): Instead of a syntax error, go to cleanup to get better ++ error messages. ++ ++2019-10-04 Steven G. Kargl ++ ++ PR fortran/91785 ++ * primary.c (gfc_match_varspec): Ensure an inquiry parameter has ++ it locus set. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91864 ++ * gcc/fortran/io.c (match_io_element): An inquiry parameter cannot be ++ read into. ++ * gcc/fortran/match.c (gfc_match_allocate): An inquiry parameter ++ can be neither an allocate-object nor stat variable. ++ (gfc_match_deallocate): An inquiry parameter cannot be deallocated. ++ ++2019-10-01 Steven G. Kargl ++ ++ Backport of r276254+276265 ++ PR fortran/91802 ++ * decl.c (attr_decl1): Check if rank+corank > 15. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91714 ++ * decl.c (gfc_match_decl_type_spec): Issue errors for a few ++ mangled types. ++ ++2019-10-01 Steven G. Kargl ++ ++ PR fortran/91641 ++ * check.c (gfc_check_is_contiguous): null() cannot be an actual ++ argument to is_contiguous(). ++ ++2019-09-21 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/91588 ++ * expr.c (check_inquiry): Remove extended component refs by ++ using symbol pointers. If a function argument is an associate ++ variable with a constant target, copy the target expression in ++ place of the argument expression. Check that the charlen is not ++ NULL before using the string length. ++ ++2019-09-19 Steven G. Kargl ++ ++ PR fortran/91727 ++ * resolve.c (conformable_arrays): If array-spec is NULL, then ++ allocate-object is a scalar. a conformability check only occurs ++ for an array source-expr. ++ ++2019-09-18 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91550 ++ * frontend-passes.c (do_subscript): If step equals ++ zero, a previuos error has been reported; do nothing ++ in this case. ++ * resolve.c (gfc_resolve_iterator): Move error checking ++ after type conversion. ++ ++2019-09-15 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91557 ++ * trans-decl.c (generate_local_decl): Do not warn if the symbol ++ is artificial. ++ * trans-types.c (get_formal_from_actual_arglist): Set artificial ++ attribute on dummy arguments. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91553 ++ * simplify.c (gfc_convert_constant): During conversion check if the ++ constant is enclosed in parenthesis, and simplify expression. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91566 ++ * simplify.c (gfc_simplify_merge): Need to simplify expression ++ after insertation of parenthesis. ++ ++2019-09-14 Steven G. Kargl ++ ++ PR fortran/91642 ++ * io.c (gfc_match_inquire): null() cannot be in an iolength inquire ++ list. ++ ++2019-09-07 Paul Thomas ++ ++ Backport from mainline ++ PR fortran/91589 ++ * primary.c (gfc_match_varspec): Return MATCH_NO on an apparent ++ component ref, when the primary type is intrinsic. ++ ++2019-09-05 Harald Anlauf ++ ++ Backport from mainline ++ PR fortran/91496 ++ * gfortran.h: Extend struct gfc_iterator for loop annotations. ++ * array.c (gfc_copy_iterator): Copy loop annotations by IVDEP, ++ VECTOR, and NOVECTOR pragmas. ++ * decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector) ++ (gfc_match_gcc_novector): New matcher functions handling IVDEP, ++ VECTOR, and NOVECTOR pragmas. ++ * match.h: Declare prototypes of matcher functions handling IVDEP, ++ VECTOR, and NOVECTOR pragmas. ++ * parse.c (decode_gcc_attribute, parse_do_block) ++ (parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas; ++ emit warning for unrecognized pragmas instead of error. ++ * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to ++ emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas. ++ * gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas. ++ ++ PR fortran/91496 ++ * parse.c (parse_executable): Improve error messages for ++ improperly placed pragmas not preceeding a loop. ++ ++2019-09-05 Steven G. Kargl ++ ++ PR fortran/91660 ++ * decl.c (gfc_match_decl_type_spec): Improve and restore error ++ message for malformed types-spec. ++ ++2019-09-02 Steven G. Kargl ++ ++ PR fortran/91552 ++ * array.c (walk_array_constructor): New function. ++ (gfc_match_array_constructor): Use it. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91587 ++ * io.c (match_filepos): MATCH_ERROR should branch to a syntax error. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91565 ++ * simplify.c (gfc_simplify_reshape): Add additional checks of the ++ ORDER dummy argument. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91564 ++ * check.c (gfc_check_kill_sub): Additional checks on status dummy ++ argument. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91551 ++ * intrinsic.c (sort_actual): ALLOCATED has one argument. Check for ++ no argument case. ++ ++2019-08-30 Steven G. Kargl ++ ++ PR fortran/91485 ++ module.c (gfc_match_use): User defined operator cannot conflict with ++ a rename symbol. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/91471 ++ * primary.c (gfc_variable_attr): Remove a gfc_internal_error(), ++ which cannot be reached by conforming Fortran code, but seems to ++ be reachable from nonconforming Fortran code. Treat the AR_UNKNOWN ++ case as a no-op. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/78739 ++ * match.c (gfc_match_st_function): When matching a statement function, ++ need to check if the statement function name shadows the function ++ name. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/78719 ++ * decl.c (get_proc_name): Check for a CLASS entity when trying to ++ add attributes to an entity that already has an explicit interface. ++ ++2019-08-17 Steven G. Kargl ++ ++ PR fortran/82992 ++ * module.c (gfc_match_use): When renaming a module entity, search ++ current namespace for conflicting symbol. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/87991 ++ * resolve.c (check_data_variable): data-stmt-object with pointer ++ attribute requires a data-stmt-value with the target attribute. ++ ++2013-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/90563 ++ * frontend-passes.c (insert_index): Suppress errors while ++ simplifying the resulting expression. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/88072 ++ * misc.c (gfc_typename): Do not point to something that ought not to ++ be pointed at. ++ ++2019-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/90561 ++ * trans.h (gfc_evaluate_now_function_scope): New function. ++ * trans.c (gfc_evaluate_now_function_scope): New function. ++ * trans-expr.c (gfc_trans_assignment): Use it. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/89647 ++ resolve.c (resolve_typebound_procedure): Allow host associated ++ procedure to be a binding target. While here, wrap long line. ++ ++2019-08-13 Steven G. Kargl ++ ++ PR fortran/87993 ++ * expr.c (gfc_simplify_expr): Simplifcation of an array with a kind ++ type inquiry suffix yields a constant expression. ++ ++2019-08-13 Thomas Koenig ++ ++ Backport from trunk ++ PR fortran/91424 ++ * frontend-passes.c (do_subscript): Do not warn for an ++ expression a second time. Do not warn about a zero-trip loop. ++ (doloop_warn): Also look at contained namespaces. ++ ++2019-08-12 Steven G. Kargl ++ ++ PR fortran/91359 ++ * trans-decl.c (gfc_generate_return): Ensure something is returned ++ from a function. ++ ++2019-08-12 Steven G. Kargl ++ ++ PR fortran/42546 ++ * check.c(gfc_check_allocated): Add comment pointing to ... ++ * intrinsic.c(sort_actual): ... the checking done here. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/fortran/trans-stmt.c +=================================================================== +--- a/src/gcc/fortran/trans-stmt.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans-stmt.c (.../branches/gcc-9-branch) +@@ -2171,6 +2171,19 @@ + build_int_cst (integer_type_node, annot_expr_unroll_kind), + build_int_cst (integer_type_node, code->ext.iterator->unroll)); + ++ if (code->ext.iterator->ivdep && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_ivdep_kind), ++ integer_zero_node); ++ if (code->ext.iterator->vector && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_vector_kind), ++ integer_zero_node); ++ if (code->ext.iterator->novector && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_no_vector_kind), ++ integer_zero_node); ++ + /* The loop exit. */ + tmp = fold_build1_loc (loc, GOTO_EXPR, void_type_node, exit_label); + TREE_USED (exit_label) = 1; +@@ -2501,6 +2514,20 @@ + = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, + build_int_cst (integer_type_node, annot_expr_unroll_kind), + build_int_cst (integer_type_node, code->ext.iterator->unroll)); ++ ++ if (code->ext.iterator->ivdep && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_ivdep_kind), ++ integer_zero_node); ++ if (code->ext.iterator->vector && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_vector_kind), ++ integer_zero_node); ++ if (code->ext.iterator->novector && cond != error_mark_node) ++ cond = build3 (ANNOTATE_EXPR, TREE_TYPE (cond), cond, ++ build_int_cst (integer_type_node, annot_expr_no_vector_kind), ++ integer_zero_node); ++ + tmp = fold_build1_loc (loc, GOTO_EXPR, void_type_node, exit_label); + tmp = fold_build3_loc (loc, COND_EXPR, void_type_node, + cond, tmp, build_empty_stmt (loc)); +Index: gcc/fortran/expr.c +=================================================================== +--- a/src/gcc/fortran/expr.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/expr.c (.../branches/gcc-9-branch) +@@ -2220,6 +2220,11 @@ + if (!simplify_ref_chain (p->ref, type, &p)) + return false; + ++ /* If the following conditions hold, we found something like kind type ++ inquiry of the form a(2)%kind while simplify the ref chain. */ ++ if (p->expr_type == EXPR_CONSTANT && !p->ref && !p->rank && !p->shape) ++ return true; ++ + if (!simplify_constructor (p->value.constructor, type)) + return false; + +@@ -2598,6 +2603,8 @@ + + int i = 0; + gfc_actual_arglist *ap; ++ gfc_symbol *sym; ++ gfc_symbol *asym; + + if (!e->value.function.isym + || !e->value.function.isym->inquiry) +@@ -2607,20 +2614,22 @@ + if (e->symtree == NULL) + return MATCH_NO; + +- if (e->symtree->n.sym->from_intmod) ++ sym = e->symtree->n.sym; ++ ++ if (sym->from_intmod) + { +- if (e->symtree->n.sym->from_intmod == INTMOD_ISO_FORTRAN_ENV +- && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS +- && e->symtree->n.sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION) ++ if (sym->from_intmod == INTMOD_ISO_FORTRAN_ENV ++ && sym->intmod_sym_id != ISOFORTRAN_COMPILER_OPTIONS ++ && sym->intmod_sym_id != ISOFORTRAN_COMPILER_VERSION) + return MATCH_NO; + +- if (e->symtree->n.sym->from_intmod == INTMOD_ISO_C_BINDING +- && e->symtree->n.sym->intmod_sym_id != ISOCBINDING_C_SIZEOF) ++ if (sym->from_intmod == INTMOD_ISO_C_BINDING ++ && sym->intmod_sym_id != ISOCBINDING_C_SIZEOF) + return MATCH_NO; + } + else + { +- name = e->symtree->n.sym->name; ++ name = sym->name; + + functions = inquiry_func_gnu; + if (gfc_option.warn_std & GFC_STD_F2003) +@@ -2645,41 +2654,48 @@ + if (!ap->expr) + continue; + ++ asym = ap->expr->symtree ? ap->expr->symtree->n.sym : NULL; ++ + if (ap->expr->ts.type == BT_UNKNOWN) + { +- if (ap->expr->symtree->n.sym->ts.type == BT_UNKNOWN +- && !gfc_set_default_type (ap->expr->symtree->n.sym, 0, gfc_current_ns)) ++ if (asym && asym->ts.type == BT_UNKNOWN ++ && !gfc_set_default_type (asym, 0, gfc_current_ns)) + return MATCH_NO; + +- ap->expr->ts = ap->expr->symtree->n.sym->ts; ++ ap->expr->ts = asym->ts; + } + +- /* Assumed character length will not reduce to a constant expression +- with LEN, as required by the standard. */ +- if (i == 5 && not_restricted && ap->expr->symtree +- && ap->expr->symtree->n.sym->ts.type == BT_CHARACTER +- && (ap->expr->symtree->n.sym->ts.u.cl->length == NULL +- || ap->expr->symtree->n.sym->ts.deferred)) +- { +- gfc_error ("Assumed or deferred character length variable %qs " +- "in constant expression at %L", +- ap->expr->symtree->n.sym->name, +- &ap->expr->where); +- return MATCH_ERROR; +- } +- else if (not_restricted && !gfc_check_init_expr (ap->expr)) +- return MATCH_ERROR; ++ if (asym && asym->assoc && asym->assoc->target ++ && asym->assoc->target->expr_type == EXPR_CONSTANT) ++ { ++ gfc_free_expr (ap->expr); ++ ap->expr = gfc_copy_expr (asym->assoc->target); ++ } + +- if (not_restricted == 0 +- && ap->expr->expr_type != EXPR_VARIABLE +- && !check_restricted (ap->expr)) ++ /* Assumed character length will not reduce to a constant expression ++ with LEN, as required by the standard. */ ++ if (i == 5 && not_restricted && asym ++ && asym->ts.type == BT_CHARACTER ++ && ((asym->ts.u.cl && asym->ts.u.cl->length == NULL) ++ || asym->ts.deferred)) ++ { ++ gfc_error ("Assumed or deferred character length variable %qs " ++ "in constant expression at %L", ++ asym->name, &ap->expr->where); + return MATCH_ERROR; ++ } ++ else if (not_restricted && !gfc_check_init_expr (ap->expr)) ++ return MATCH_ERROR; + +- if (not_restricted == 0 +- && ap->expr->expr_type == EXPR_VARIABLE +- && ap->expr->symtree->n.sym->attr.dummy +- && ap->expr->symtree->n.sym->attr.optional) +- return MATCH_NO; ++ if (not_restricted == 0 ++ && ap->expr->expr_type != EXPR_VARIABLE ++ && !check_restricted (ap->expr)) ++ return MATCH_ERROR; ++ ++ if (not_restricted == 0 ++ && ap->expr->expr_type == EXPR_VARIABLE ++ && asym->attr.dummy && asym->attr.optional) ++ return MATCH_NO; + } + + return MATCH_YES; +Index: gcc/fortran/module.c +=================================================================== +--- a/src/gcc/fortran/module.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/module.c (.../branches/gcc-9-branch) +@@ -525,6 +525,8 @@ + gfc_intrinsic_op op; + match m; + gfc_use_list *use_list; ++ gfc_symtree *st; ++ locus loc; + + use_list = gfc_get_use_list (); + +@@ -632,6 +634,8 @@ + case INTERFACE_USER_OP: + case INTERFACE_GENERIC: + case INTERFACE_DTIO: ++ loc = gfc_current_locus; ++ + m = gfc_match (" =>"); + + if (type == INTERFACE_USER_OP && m == MATCH_YES +@@ -642,6 +646,18 @@ + if (type == INTERFACE_USER_OP) + new_use->op = INTRINSIC_USER; + ++ st = gfc_find_symtree (gfc_current_ns->sym_root, name); ++ if (st && type != INTERFACE_USER_OP) ++ { ++ if (m == MATCH_YES) ++ gfc_error ("Symbol %qs at %L conflicts with the rename symbol " ++ "at %L", name, &st->n.sym->declared_at, &loc); ++ else ++ gfc_error ("Symbol %qs at %L conflicts with the symbol " ++ "at %L", name, &st->n.sym->declared_at, &loc); ++ goto cleanup; ++ } ++ + if (use_list->only_flag) + { + if (m != MATCH_YES) +Index: gcc/fortran/trans.c +=================================================================== +--- a/src/gcc/fortran/trans.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans.c (.../branches/gcc-9-branch) +@@ -118,7 +118,20 @@ + return gfc_evaluate_now_loc (input_location, expr, pblock); + } + ++/* Like gfc_evaluate_now, but add the created variable to the ++ function scope. */ + ++tree ++gfc_evaluate_now_function_scope (tree expr, stmtblock_t * pblock) ++{ ++ tree var; ++ var = gfc_create_var_np (TREE_TYPE (expr), NULL); ++ gfc_add_decl_to_function (var); ++ gfc_add_modify (pblock, var, expr); ++ ++ return var; ++} ++ + /* Build a MODIFY_EXPR node and add it to a given statement block PBLOCK. + A MODIFY_EXPR is an assignment: + LHS <- RHS. */ +Index: gcc/fortran/trans-types.c +=================================================================== +--- a/src/gcc/fortran/trans-types.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans-types.c (.../branches/gcc-9-branch) +@@ -3021,6 +3021,7 @@ + } + } + s->attr.dummy = 1; ++ s->attr.artificial = 1; + s->attr.intent = INTENT_UNKNOWN; + (*f)->sym = s; + } +Index: gcc/fortran/trans.h +=================================================================== +--- a/src/gcc/fortran/trans.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans.h (.../branches/gcc-9-branch) +@@ -507,6 +507,7 @@ + /* If the value is not constant, Create a temporary and copy the value. */ + tree gfc_evaluate_now_loc (location_t, tree, stmtblock_t *); + tree gfc_evaluate_now (tree, stmtblock_t *); ++tree gfc_evaluate_now_function_scope (tree, stmtblock_t *); + + /* Find the appropriate variant of a math intrinsic. */ + tree gfc_builtin_decl_for_float_kind (enum built_in_function, int); +Index: gcc/fortran/io.c +=================================================================== +--- a/src/gcc/fortran/io.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/io.c (.../branches/gcc-9-branch) +@@ -1441,25 +1441,30 @@ + return MATCH_ERROR; + } + +- if (result->symtree->n.sym->attr.intent == INTENT_IN) ++ if (result->symtree) + { +- gfc_error ("Variable %s cannot be INTENT(IN) at %C", tag->name); +- gfc_free_expr (result); +- return MATCH_ERROR; +- } ++ bool impure; + +- bool impure = gfc_impure_variable (result->symtree->n.sym); +- if (impure && gfc_pure (NULL)) +- { +- gfc_error ("Variable %s cannot be assigned in PURE procedure at %C", +- tag->name); +- gfc_free_expr (result); +- return MATCH_ERROR; ++ if (result->symtree->n.sym->attr.intent == INTENT_IN) ++ { ++ gfc_error ("Variable %s cannot be INTENT(IN) at %C", tag->name); ++ gfc_free_expr (result); ++ return MATCH_ERROR; ++ } ++ ++ impure = gfc_impure_variable (result->symtree->n.sym); ++ if (impure && gfc_pure (NULL)) ++ { ++ gfc_error ("Variable %s cannot be assigned in PURE procedure at %C", ++ tag->name); ++ gfc_free_expr (result); ++ return MATCH_ERROR; ++ } ++ ++ if (impure) ++ gfc_unset_implicit_pure (NULL); + } + +- if (impure) +- gfc_unset_implicit_pure (NULL); +- + *v = result; + return MATCH_YES; + } +@@ -1474,8 +1479,17 @@ + + m = match_vtag (tag, result); + if (m == MATCH_YES) +- gfc_check_do_variable ((*result)->symtree); ++ { ++ if ((*result)->symtree) ++ gfc_check_do_variable ((*result)->symtree); + ++ if ((*result)->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("Expecting a variable at %L", &(*result)->where); ++ return MATCH_ERROR; ++ } ++ } ++ + return m; + } + +@@ -2804,7 +2818,7 @@ + + m = match_file_element (fp); + if (m == MATCH_ERROR) +- goto done; ++ goto cleanup; + if (m == MATCH_NO) + { + m = gfc_match_expr (&fp->unit); +@@ -3608,8 +3622,18 @@ + { + m = gfc_match_variable (&expr, 0); + if (m == MATCH_NO) +- gfc_error ("Expected variable in READ statement at %C"); ++ { ++ gfc_error ("Expecting variable in READ statement at %C"); ++ m = MATCH_ERROR; ++ } + ++ if (m == MATCH_YES && expr->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("Expecting variable or io-implied-do in READ statement " ++ "at %L", &expr->where); ++ m = MATCH_ERROR; ++ } ++ + if (m == MATCH_YES + && expr->expr_type == EXPR_VARIABLE + && expr->symtree->n.sym->attr.external) +@@ -3618,7 +3642,6 @@ + &expr->where); + m = MATCH_ERROR; + } +- + } + else + { +@@ -4583,6 +4606,17 @@ + if (m == MATCH_NO) + goto syntax; + ++ for (gfc_code *c = code; c; c = c->next) ++ if (c->expr1 && c->expr1->expr_type == EXPR_FUNCTION ++ && c->expr1->symtree && c->expr1->symtree->n.sym->attr.function ++ && !c->expr1->symtree->n.sym->attr.external ++ && strcmp (c->expr1->symtree->name, "null") == 0) ++ { ++ gfc_error ("NULL() near %L cannot appear in INQUIRE statement", ++ &c->expr1->where); ++ goto cleanup; ++ } ++ + new_st.op = EXEC_IOLENGTH; + new_st.expr1 = inquire->iolength; + new_st.ext.inquire = inquire; +Index: gcc/fortran/frontend-passes.c +=================================================================== +--- a/src/gcc/fortran/frontend-passes.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/frontend-passes.c (.../branches/gcc-9-branch) +@@ -2519,7 +2519,12 @@ + data.sym = sym; + mpz_init_set (data.val, val); + gfc_expr_walker (&n, callback_insert_index, (void *) &data); ++ ++ /* Suppress errors here - we could get errors here such as an ++ out of bounds access for arrays, see PR 90563. */ ++ gfc_push_suppress_errors (); + gfc_simplify_expr (n, 0); ++ gfc_pop_suppress_errors (); + + if (n->expr_type == EXPR_CONSTANT) + { +@@ -2557,6 +2562,12 @@ + if (in_assoc_list) + return 0; + ++ /* We already warned about this. */ ++ if (v->do_not_warn) ++ return 0; ++ ++ v->do_not_warn = 1; ++ + for (ref = v->ref; ref; ref = ref->next) + { + if (ref->type == REF_ARRAY && ref->u.ar.type == AR_ELEMENT) +@@ -2569,6 +2580,7 @@ + bool have_do_start, have_do_end; + bool error_not_proven; + int warn; ++ int sgn; + + dl = lp->c; + if (dl == NULL) +@@ -2597,7 +2609,16 @@ + Do not warn in this case. */ + + if (dl->ext.iterator->step->expr_type == EXPR_CONSTANT) +- mpz_init_set (do_step, dl->ext.iterator->step->value.integer); ++ { ++ sgn = mpz_cmp_ui (dl->ext.iterator->step->value.integer, 0); ++ /* This can happen, but then the error has been ++ reported previusly. */ ++ if (sgn == 0) ++ continue; ++ ++ mpz_init_set (do_step, dl->ext.iterator->step->value.integer); ++ } ++ + else + continue; + +@@ -2609,7 +2630,6 @@ + else + have_do_start = false; + +- + if (dl->ext.iterator->end->expr_type == EXPR_CONSTANT) + { + have_do_end = true; +@@ -2621,6 +2641,16 @@ + if (!have_do_start && !have_do_end) + return 0; + ++ /* No warning inside a zero-trip loop. */ ++ if (have_do_start && have_do_end) ++ { ++ int cmp; ++ ++ cmp = mpz_cmp (do_end, do_start); ++ if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0)) ++ break; ++ } ++ + /* May have to correct the end value if the step does not equal + one. */ + if (have_do_start && have_do_end && mpz_cmp_ui (do_step, 1) != 0) +@@ -2762,6 +2792,12 @@ + doloop_warn (gfc_namespace *ns) + { + gfc_code_walker (&ns->code, doloop_code, do_function, NULL); ++ ++ for (ns = ns->contained; ns; ns = ns->sibling) ++ { ++ if (ns->code == NULL || ns->code->op != EXEC_BLOCK) ++ doloop_warn (ns); ++ } + } + + /* This selction deals with inlining calls to MATMUL. */ +Index: gcc/fortran/resolve.c +=================================================================== +--- a/src/gcc/fortran/resolve.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/resolve.c (.../branches/gcc-9-branch) +@@ -1866,7 +1866,7 @@ + + + /* Check that name is not a derived type. */ +- ++ + static bool + is_dt_name (const char *name) + { +@@ -7059,6 +7059,19 @@ + "Step expression in DO loop")) + return false; + ++ /* Convert start, end, and step to the same type as var. */ ++ if (iter->start->ts.kind != iter->var->ts.kind ++ || iter->start->ts.type != iter->var->ts.type) ++ gfc_convert_type (iter->start, &iter->var->ts, 1); ++ ++ if (iter->end->ts.kind != iter->var->ts.kind ++ || iter->end->ts.type != iter->var->ts.type) ++ gfc_convert_type (iter->end, &iter->var->ts, 1); ++ ++ if (iter->step->ts.kind != iter->var->ts.kind ++ || iter->step->ts.type != iter->var->ts.type) ++ gfc_convert_type (iter->step, &iter->var->ts, 1); ++ + if (iter->step->expr_type == EXPR_CONSTANT) + { + if ((iter->step->ts.type == BT_INTEGER +@@ -7072,19 +7085,6 @@ + } + } + +- /* Convert start, end, and step to the same type as var. */ +- if (iter->start->ts.kind != iter->var->ts.kind +- || iter->start->ts.type != iter->var->ts.type) +- gfc_convert_type (iter->start, &iter->var->ts, 1); +- +- if (iter->end->ts.kind != iter->var->ts.kind +- || iter->end->ts.type != iter->var->ts.type) +- gfc_convert_type (iter->end, &iter->var->ts, 1); +- +- if (iter->step->ts.kind != iter->var->ts.kind +- || iter->step->ts.type != iter->var->ts.type) +- gfc_convert_type (iter->step, &iter->var->ts, 1); +- + if (iter->start->expr_type == EXPR_CONSTANT + && iter->end->expr_type == EXPR_CONSTANT + && iter->step->expr_type == EXPR_CONSTANT) +@@ -7439,7 +7439,7 @@ + for (tail = e2->ref; tail && tail->next; tail = tail->next); + + /* First compare rank. */ +- if ((tail && e1->rank != tail->u.ar.as->rank) ++ if ((tail && (!tail->u.ar.as || e1->rank != tail->u.ar.as->rank)) + || (!tail && e1->rank != e2->rank)) + { + gfc_error ("Source-expr at %L must be scalar or have the " +@@ -13539,6 +13539,25 @@ + } + else + { ++ /* If proc has not been resolved at this point, proc->name may ++ actually be a USE associated entity. See PR fortran/89647. */ ++ if (!proc->resolved ++ && proc->attr.function == 0 && proc->attr.subroutine == 0) ++ { ++ gfc_symbol *tmp; ++ gfc_find_symbol (proc->name, gfc_current_ns->parent, 1, &tmp); ++ if (tmp && tmp->attr.use_assoc) ++ { ++ proc->module = tmp->module; ++ proc->attr.proc = tmp->attr.proc; ++ proc->attr.function = tmp->attr.function; ++ proc->attr.subroutine = tmp->attr.subroutine; ++ proc->attr.use_assoc = tmp->attr.use_assoc; ++ proc->ts = tmp->ts; ++ proc->result = tmp->result; ++ } ++ } ++ + /* Check for F08:C465. */ + if ((!proc->attr.subroutine && !proc->attr.function) + || (proc->attr.proc != PROC_MODULE +@@ -13545,8 +13564,9 @@ + && proc->attr.if_source != IFSRC_IFBODY) + || proc->attr.abstract) + { +- gfc_error ("%qs must be a module procedure or an external procedure with" +- " an explicit interface at %L", proc->name, &where); ++ gfc_error ("%qs must be a module procedure or an external " ++ "procedure with an explicit interface at %L", ++ proc->name, &where); + goto error; + } + } +@@ -15662,8 +15682,6 @@ + return false; + } + +- has_pointer = sym->attr.pointer; +- + if (gfc_is_coindexed (e)) + { + gfc_error ("DATA element %qs at %L cannot have a coindex", sym->name, +@@ -15671,19 +15689,30 @@ + return false; + } + ++ has_pointer = sym->attr.pointer; ++ + for (ref = e->ref; ref; ref = ref->next) + { + if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer) + has_pointer = 1; + +- if (has_pointer +- && ref->type == REF_ARRAY +- && ref->u.ar.type != AR_FULL) +- { +- gfc_error ("DATA element %qs at %L is a pointer and so must " +- "be a full array", sym->name, where); +- return false; +- } ++ if (has_pointer) ++ { ++ if (ref->type == REF_ARRAY && ref->u.ar.type != AR_FULL) ++ { ++ gfc_error ("DATA element %qs at %L is a pointer and so must " ++ "be a full array", sym->name, where); ++ return false; ++ } ++ ++ if (values.vnode->expr->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("DATA object near %L has the pointer attribute " ++ "and the corresponding DATA value is not a valid " ++ "initial-data-target", where); ++ return false; ++ } ++ } + } + + if (e->rank == 0 || has_pointer) +@@ -16525,8 +16554,8 @@ + } + + +-/* Function called by resolve_fntype to flag other symbol used in the +- length type parameter specification of function resuls. */ ++/* Function called by resolve_fntype to flag other symbols used in the ++ length type parameter specification of function results. */ + + static bool + flag_fn_result_spec (gfc_expr *expr, +Index: gcc/fortran/match.c +=================================================================== +--- a/src/gcc/fortran/match.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/match.c (.../branches/gcc-9-branch) +@@ -4219,6 +4219,12 @@ + if (m == MATCH_ERROR) + goto cleanup; + ++ if (tail->expr->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("Unexpected constant at %C"); ++ goto cleanup; ++ } ++ + if (gfc_check_do_variable (tail->expr->symtree)) + goto cleanup; + +@@ -4351,6 +4357,12 @@ + tmp = NULL; + saw_stat = true; + ++ if (stat->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("STAT tag at %L cannot be a constant", &stat->where); ++ goto cleanup; ++ } ++ + if (gfc_check_do_variable (stat->symtree)) + goto cleanup; + +@@ -4627,6 +4639,12 @@ + if (m == MATCH_NO) + goto syntax; + ++ if (tail->expr->expr_type == EXPR_CONSTANT) ++ { ++ gfc_error ("Unexpected constant at %C"); ++ goto cleanup; ++ } ++ + if (gfc_check_do_variable (tail->expr->symtree)) + goto cleanup; + +@@ -5698,7 +5716,29 @@ + gfc_symbol *sym; + gfc_expr *expr; + match m; ++ char name[GFC_MAX_SYMBOL_LEN + 1]; ++ locus old_locus; ++ bool fcn; ++ gfc_formal_arglist *ptr; + ++ /* Read the possible statement function name, and then check to see if ++ a symbol is already present in the namespace. Record if it is a ++ function and whether it has been referenced. */ ++ fcn = false; ++ ptr = NULL; ++ old_locus = gfc_current_locus; ++ m = gfc_match_name (name); ++ if (m == MATCH_YES) ++ { ++ gfc_find_symbol (name, NULL, 1, &sym); ++ if (sym && sym->attr.function && !sym->attr.referenced) ++ { ++ fcn = true; ++ ptr = sym->formal; ++ } ++ } ++ ++ gfc_current_locus = old_locus; + m = gfc_match_symbol (&sym, 0); + if (m != MATCH_YES) + return m; +@@ -5726,6 +5766,13 @@ + return MATCH_ERROR; + } + ++ if (fcn && ptr != sym->formal) ++ { ++ gfc_error ("Statement function %qs at %L conflicts with function name", ++ sym->name, &expr->where); ++ return MATCH_ERROR; ++ } ++ + sym->value = expr; + + if ((gfc_current_state () == COMP_FUNCTION +Index: gcc/fortran/trans-decl.c +=================================================================== +--- a/src/gcc/fortran/trans-decl.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/trans-decl.c (.../branches/gcc-9-branch) +@@ -369,7 +369,8 @@ + static const char * + mangled_identifier (gfc_symbol *sym) + { +- static char name[GFC_MAX_MANGLED_SYMBOL_LEN + 1]; ++ gfc_symbol *proc = sym->ns->proc_name; ++ static char name[3*GFC_MAX_MANGLED_SYMBOL_LEN + 14]; + /* Prevent the mangling of identifiers that have an assigned + binding label (mainly those that are bind(c)). */ + +@@ -376,15 +377,13 @@ + if (sym->attr.is_bind_c == 1 && sym->binding_label) + return sym->binding_label; + +- if (!sym->fn_result_spec) ++ if (!sym->fn_result_spec ++ || (sym->module && !(proc && proc->attr.flavor == FL_PROCEDURE))) + { + if (sym->module == NULL) + return sym_identifier (sym); + else +- { +- snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); +- return name; +- } ++ snprintf (name, sizeof name, "__%s_MOD_%s", sym->module, sym->name); + } + else + { +@@ -391,22 +390,16 @@ + /* This is an entity that is actually local to a module procedure + that appears in the result specification expression. Since + sym->module will be a zero length string, we use ns->proc_name +- instead. */ +- if (sym->ns->proc_name && sym->ns->proc_name->module) +- { +- snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s", +- sym->ns->proc_name->module, +- sym->ns->proc_name->name, +- sym->name); +- return name; +- } ++ to provide the module name instead. */ ++ if (proc && proc->module) ++ snprintf (name, sizeof name, "__%s_MOD__%s_PROC_%s", ++ proc->module, proc->name, sym->name); + else +- { +- snprintf (name, sizeof name, "__%s_PROC_%s", +- sym->ns->proc_name->name, sym->name); +- return name; +- } ++ snprintf (name, sizeof name, "__%s_PROC_%s", ++ proc->name, sym->name); + } ++ ++ return name; + } + + /* Get mangled identifier, adding the symbol to the global table if +@@ -1892,9 +1885,13 @@ + if (sym->attr.associate_var) + GFC_DECL_ASSOCIATE_VAR_P (decl) = 1; + ++ /* We no longer mark __def_init as read-only so it does not take up ++ space in the read-only section and dan go into the BSS instead, ++ see PR 84487. Marking this as artificial means that OpenMP will ++ treat this as predetermined shared. */ + if (sym->attr.vtab + || (sym->name[0] == '_' && gfc_str_startswith (sym->name, "__def_init"))) +- TREE_READONLY (decl) = 1; ++ DECL_ARTIFICIAL (decl) = 1; + + return decl; + } +@@ -5862,9 +5859,11 @@ + } + else if (warn_unused_dummy_argument) + { +- gfc_warning (OPT_Wunused_dummy_argument, +- "Unused dummy argument %qs at %L", sym->name, +- &sym->declared_at); ++ if (!sym->attr.artificial) ++ gfc_warning (OPT_Wunused_dummy_argument, ++ "Unused dummy argument %qs at %L", sym->name, ++ &sym->declared_at); ++ + if (sym->backend_decl != NULL_TREE) + TREE_NO_WARNING(sym->backend_decl) = 1; + } +@@ -5956,7 +5955,14 @@ + + if (sym->ns && sym->ns->construct_entities) + { +- if (sym->attr.referenced) ++ /* Construction of the intrinsic modules within a BLOCK ++ construct, where ONLY and RENAMED entities are included, ++ seems to be bogus. This is a workaround that can be removed ++ if someone ever takes on the task to creating full-fledge ++ modules. See PR 69455. */ ++ if (sym->attr.referenced ++ && sym->from_intmod != INTMOD_ISO_C_BINDING ++ && sym->from_intmod != INTMOD_ISO_FORTRAN_ENV) + gfc_get_symbol_decl (sym); + sym->mark = 1; + } +@@ -6440,6 +6446,20 @@ + TREE_TYPE (result), DECL_RESULT (fndecl), + result); + } ++ else ++ { ++ /* If the function does not have a result variable, result is ++ NULL_TREE, and a 'return' is generated without a variable. ++ The following generates a 'return __result_XXX' where XXX is ++ the function name. */ ++ if (sym == sym->result && sym->attr.function) ++ { ++ result = gfc_get_fake_result_decl (sym, 0); ++ result = fold_build2_loc (input_location, MODIFY_EXPR, ++ TREE_TYPE (result), ++ DECL_RESULT (fndecl), result); ++ } ++ } + } + + return build1_v (RETURN_EXPR, result); +Index: gcc/fortran/match.h +=================================================================== +--- a/src/gcc/fortran/match.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/match.h (.../branches/gcc-9-branch) +@@ -246,8 +246,11 @@ + match gfc_match_dimension (void); + match gfc_match_external (void); + match gfc_match_gcc_attributes (void); ++match gfc_match_gcc_builtin (void); ++match gfc_match_gcc_ivdep (void); ++match gfc_match_gcc_novector (void); + match gfc_match_gcc_unroll (void); +-match gfc_match_gcc_builtin (void); ++match gfc_match_gcc_vector (void); + match gfc_match_import (void); + match gfc_match_intent (void); + match gfc_match_intrinsic (void); +Index: gcc/fortran/parse.c +=================================================================== +--- a/src/gcc/fortran/parse.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/parse.c (.../branches/gcc-9-branch) +@@ -1079,12 +1079,20 @@ + match ("attributes", gfc_match_gcc_attributes, ST_ATTR_DECL); + match ("unroll", gfc_match_gcc_unroll, ST_NONE); + match ("builtin", gfc_match_gcc_builtin, ST_NONE); ++ match ("ivdep", gfc_match_gcc_ivdep, ST_NONE); ++ match ("vector", gfc_match_gcc_vector, ST_NONE); ++ match ("novector", gfc_match_gcc_novector, ST_NONE); + + /* All else has failed, so give up. See if any of the matchers has + stored an error message of some sort. */ + + if (!gfc_error_check ()) +- gfc_error_now ("Unclassifiable GCC directive at %C"); ++ { ++ if (pedantic) ++ gfc_error_now ("Unclassifiable GCC directive at %C"); ++ else ++ gfc_warning_now (0, "Unclassifiable GCC directive at %C, ignored"); ++ } + + reject_statement (); + +@@ -4672,6 +4680,21 @@ + new_st.ext.iterator->unroll = directive_unroll; + directive_unroll = -1; + } ++ if (directive_ivdep) ++ { ++ new_st.ext.iterator->ivdep = directive_ivdep; ++ directive_ivdep = false; ++ } ++ if (directive_vector) ++ { ++ new_st.ext.iterator->vector = directive_vector; ++ directive_vector = false; ++ } ++ if (directive_novector) ++ { ++ new_st.ext.iterator->novector = directive_novector; ++ directive_novector = false; ++ } + } + else + stree = NULL; +@@ -5431,8 +5454,18 @@ + } + + if (directive_unroll != -1) +- gfc_error ("% directive does not commence a loop at %C"); ++ gfc_error ("% directive not at the start of a loop at %C"); + ++ if (directive_ivdep) ++ gfc_error ("% directive not at the start of a loop at %C"); ++ ++ if (directive_vector) ++ gfc_error ("% directive not at the start of a loop at %C"); ++ ++ if (directive_novector) ++ gfc_error ("% " ++ "directive not at the start of a loop at %C"); ++ + st = next_statement (); + } + } +Index: gcc/fortran/check.c +=================================================================== +--- a/src/gcc/fortran/check.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/check.c (.../branches/gcc-9-branch) +@@ -924,6 +924,10 @@ + } + + ++/* Limited checking for ALLOCATED intrinsic. Additional checking ++ is performed in intrinsic.c(sort_actual), because ALLOCATED ++ has two mutually exclusive non-optional arguments. */ ++ + bool + gfc_check_allocated (gfc_expr *array) + { +@@ -2781,6 +2785,22 @@ + + if (!scalar_check (status, 2)) + return false; ++ ++ if (status->expr_type != EXPR_VARIABLE) ++ { ++ gfc_error ("STATUS at %L shall be an INTENT(OUT) variable", ++ &status->where); ++ return false; ++ } ++ ++ if (status->expr_type == EXPR_VARIABLE ++ && status->symtree && status->symtree->n.sym ++ && status->symtree->n.sym->attr.intent == INTENT_IN) ++ { ++ gfc_error ("%qs at %L shall be an INTENT(OUT) variable", ++ status->symtree->name, &status->where); ++ return false; ++ } + } + + return true; +@@ -3343,6 +3363,7 @@ + gfc_check_findloc (gfc_actual_arglist *ap) + { + gfc_expr *a, *v, *m, *d, *k, *b; ++ bool a1, v1; + + a = ap->expr; + if (!intrinsic_type_check (a, 0) || !array_check (a, 0)) +@@ -3349,20 +3370,20 @@ + return false; + + v = ap->next->expr; +- if (!scalar_check (v,1)) ++ if (!intrinsic_type_check (v, 1) || !scalar_check (v,1)) + return false; + +- /* Check if the type is compatible. */ ++ /* Check if the type are both logical. */ ++ a1 = a->ts.type == BT_LOGICAL; ++ v1 = v->ts.type == BT_LOGICAL; ++ if ((a1 && !v1) || (!a1 && v1)) ++ goto incompat; + +- if ((a->ts.type == BT_LOGICAL && v->ts.type != BT_LOGICAL) +- || (a->ts.type != BT_LOGICAL && v->ts.type == BT_LOGICAL)) +- { +- gfc_error ("Argument %qs of %qs intrinsic at %L must be in type " +- "conformance to argument %qs at %L", +- gfc_current_intrinsic_arg[0]->name, +- gfc_current_intrinsic, &a->where, +- gfc_current_intrinsic_arg[1]->name, &v->where); +- } ++ /* Check if the type are both character. */ ++ a1 = a->ts.type == BT_CHARACTER; ++ v1 = v->ts.type == BT_CHARACTER; ++ if ((a1 && !v1) || (!a1 && v1)) ++ goto incompat; + + d = ap->next->next->expr; + m = ap->next->next->next->expr; +@@ -3410,6 +3431,14 @@ + return false; + + return true; ++ ++incompat: ++ gfc_error ("Argument %qs of %qs intrinsic at %L must be in type " ++ "conformance to argument %qs at %L", ++ gfc_current_intrinsic_arg[0]->name, ++ gfc_current_intrinsic, &a->where, ++ gfc_current_intrinsic_arg[1]->name, &v->where); ++ return false; + } + + +@@ -6549,6 +6578,14 @@ + bool + gfc_check_is_contiguous (gfc_expr *array) + { ++ if (array->expr_type == EXPR_NULL ++ && array->symtree->n.sym->attr.pointer == 1) ++ { ++ gfc_error ("Actual argument at %L of %qs intrinsic shall be an " ++ "associated pointer", &array->where, gfc_current_intrinsic); ++ return false; ++ } ++ + if (!array_check (array, 0)) + return false; + +@@ -6556,7 +6593,6 @@ + } + + +- + bool + gfc_check_isatty (gfc_expr *unit) + { +Index: gcc/fortran/primary.c +=================================================================== +--- a/src/gcc/fortran/primary.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/primary.c (.../branches/gcc-9-branch) +@@ -1990,6 +1990,7 @@ + match m; + bool unknown; + bool inquiry; ++ bool intrinsic; + locus old_loc; + char sep; + +@@ -2194,11 +2195,15 @@ + if (m != MATCH_YES) + return MATCH_ERROR; + ++ intrinsic = false; + if (primary->ts.type != BT_CLASS && primary->ts.type != BT_DERIVED) + { + inquiry = is_inquiry_ref (name, &tmp); + if (inquiry) + sym = NULL; ++ ++ if (sep == '%' && primary->ts.type != BT_UNKNOWN) ++ intrinsic = true; + } + else + inquiry = false; +@@ -2258,12 +2263,16 @@ + break; + } + +- if (!inquiry) ++ if (!inquiry && !intrinsic) + component = gfc_find_component (sym, name, false, false, &tmp); + else + component = NULL; + +- if (component == NULL && !inquiry) ++ /* In some cases, returning MATCH_NO gives a better error message. Most ++ cases return "Unclassifiable statement at..." */ ++ if (intrinsic && !inquiry) ++ return MATCH_NO; ++ else if (component == NULL && !inquiry) + return MATCH_ERROR; + + /* Extend the reference chain determined by gfc_find_component or +@@ -2284,6 +2293,8 @@ + + if (tmp && tmp->type == REF_INQUIRY) + { ++ if (!primary->where.lb || !primary->where.nextc) ++ primary->where = gfc_current_locus; + gfc_simplify_expr (primary, 0); + + if (primary->expr_type == EXPR_CONSTANT) +@@ -2559,12 +2570,10 @@ + break; + + case AR_UNKNOWN: +- /* If any of start, end or stride is not integer, there will +- already have been an error issued. */ +- int errors; +- gfc_get_errors (NULL, &errors); +- if (errors == 0) +- gfc_internal_error ("gfc_variable_attr(): Bad array reference"); ++ /* For standard conforming code, AR_UNKNOWN should not happen. ++ For nonconforming code, gfortran can end up here. Treat it ++ as a no-op. */ ++ break; + } + + break; +Index: gcc/fortran/misc.c +=================================================================== +--- a/src/gcc/fortran/misc.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/misc.c (.../branches/gcc-9-branch) +@@ -125,6 +125,7 @@ + static char buffer2[GFC_MAX_SYMBOL_LEN + 7]; + static int flag = 0; + char *buffer; ++ gfc_typespec *ts1; + + buffer = flag ? buffer1 : buffer2; + flag = !flag; +@@ -156,9 +157,8 @@ + sprintf (buffer, "TYPE(%s)", ts->u.derived->name); + break; + case BT_CLASS: +- if (ts->u.derived->components) +- ts = &ts->u.derived->components->ts; +- if (ts->u.derived->attr.unlimited_polymorphic) ++ ts1 = ts->u.derived->components ? &ts->u.derived->components->ts : NULL; ++ if (ts1 && ts1->u.derived && ts1->u.derived->attr.unlimited_polymorphic) + sprintf (buffer, "CLASS(*)"); + else + sprintf (buffer, "CLASS(%s)", ts->u.derived->name); +Index: gcc/fortran/simplify.c +=================================================================== +--- a/src/gcc/fortran/simplify.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/fortran/simplify.c (.../branches/gcc-9-branch) +@@ -4808,8 +4808,12 @@ + gfc_constructor *tsource_ctor, *fsource_ctor, *mask_ctor; + + if (mask->expr_type == EXPR_CONSTANT) +- return gfc_get_parentheses (gfc_copy_expr (mask->value.logical +- ? tsource : fsource)); ++ { ++ result = gfc_copy_expr (mask->value.logical ? tsource : fsource); ++ result = gfc_get_parentheses (result); ++ gfc_simplify_expr (result, 1); ++ return result; ++ } + + if (!mask->rank || !is_constant_array_expr (mask) + || !is_constant_array_expr (tsource) || !is_constant_array_expr (fsource)) +@@ -6684,6 +6688,9 @@ + mpz_init (index); + rank = 0; + ++ for (i = 0; i < GFC_MAX_DIMENSIONS; i++) ++ x[i] = 0; ++ + for (;;) + { + e = gfc_constructor_lookup_expr (shape_exp->value.constructor, rank); +@@ -6708,9 +6715,29 @@ + } + else + { +- for (i = 0; i < rank; i++) +- x[i] = 0; ++ mpz_t size; ++ int order_size, shape_size; + ++ if (order_exp->rank != shape_exp->rank) ++ { ++ gfc_error ("Shapes of ORDER at %L and SHAPE at %L are different", ++ &order_exp->where, &shape_exp->where); ++ return &gfc_bad_expr; ++ } ++ ++ gfc_array_size (shape_exp, &size); ++ shape_size = mpz_get_ui (size); ++ mpz_clear (size); ++ gfc_array_size (order_exp, &size); ++ order_size = mpz_get_ui (size); ++ mpz_clear (size); ++ if (order_size != shape_size) ++ { ++ gfc_error ("Sizes of ORDER at %L and SHAPE at %L are different", ++ &order_exp->where, &shape_exp->where); ++ return &gfc_bad_expr; ++ } ++ + for (i = 0; i < rank; i++) + { + e = gfc_constructor_lookup_expr (order_exp->value.constructor, i); +@@ -6718,9 +6745,22 @@ + + gfc_extract_int (e, &order[i]); + +- gcc_assert (order[i] >= 1 && order[i] <= rank); ++ if (order[i] < 1 || order[i] > rank) ++ { ++ gfc_error ("Element with a value of %d in ORDER at %L must be " ++ "in the range [1, ..., %d] for the RESHAPE intrinsic " ++ "near %L", order[i], &order_exp->where, rank, ++ &shape_exp->where); ++ return &gfc_bad_expr; ++ } ++ + order[i]--; +- gcc_assert (x[order[i]] == 0); ++ if (x[order[i]] != 0) ++ { ++ gfc_error ("ORDER at %L is not a permutation of the size of " ++ "SHAPE at %L", &order_exp->where, &shape_exp->where); ++ return &gfc_bad_expr; ++ } + x[order[i]] = 1; + } + } +@@ -8494,6 +8534,12 @@ + { + if (c->expr->expr_type == EXPR_ARRAY) + tmp = gfc_convert_constant (c->expr, type, kind); ++ else if (c->expr->expr_type == EXPR_OP ++ && c->expr->value.op.op == INTRINSIC_PARENTHESES) ++ { ++ gfc_simplify_expr (c->expr, 1); ++ tmp = f (c->expr, kind); ++ } + else + tmp = f (c->expr, kind); + } +Index: gcc/optc-save-gen.awk +=================================================================== +--- a/src/gcc/optc-save-gen.awk (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/optc-save-gen.awk (.../branches/gcc-9-branch) +@@ -332,7 +332,7 @@ + print " indent_to, \"\","; + print " \"" name "\","; + print " ptr1->x_" name " ? ptr1->x_" name " : \"(null)\","; +- print " ptr2->x_" name " ? ptr1->x_" name " : \"(null)\");"; ++ print " ptr2->x_" name " ? ptr2->x_" name " : \"(null)\");"; + print ""; + } + +Index: gcc/BASE-VER +=================================================================== +--- a/src/gcc/BASE-VER (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/BASE-VER (.../branches/gcc-9-branch) +@@ -1 +1 @@ +-9.2.0 ++9.2.1 +Index: gcc/function.c +=================================================================== +--- a/src/gcc/function.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/function.c (.../branches/gcc-9-branch) +@@ -2449,8 +2449,7 @@ + /* If the parm is to be passed as a transparent union or record, use the + type of the first field for the tests below. We have already verified + that the modes are the same. */ +- if ((TREE_CODE (passed_type) == UNION_TYPE +- || TREE_CODE (passed_type) == RECORD_TYPE) ++ if (RECORD_OR_UNION_TYPE_P (passed_type) + && TYPE_TRANSPARENT_AGGR (passed_type)) + passed_type = TREE_TYPE (first_field (passed_type)); + +Index: gcc/tree-vectorizer.c +=================================================================== +--- a/src/gcc/tree-vectorizer.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vectorizer.c (.../branches/gcc-9-branch) +@@ -941,7 +941,7 @@ + fold_loop_internal_call (loop_vectorized_call, + boolean_true_node); + loop_vectorized_call = NULL; +- ret |= TODO_cleanup_cfg; ++ ret |= TODO_cleanup_cfg | TODO_update_ssa_only_virtuals; + } + } + /* If outer loop vectorization fails for LOOP_VECTORIZED guarded +Index: gcc/tree-vectorizer.h +=================================================================== +--- a/src/gcc/tree-vectorizer.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vectorizer.h (.../branches/gcc-9-branch) +@@ -132,6 +132,9 @@ + unsigned int vec_stmts_size; + /* Reference count in the SLP graph. */ + unsigned int refcnt; ++ /* The maximum number of vector elements for the subtree rooted ++ at this node. */ ++ poly_uint64 max_nunits; + /* Whether the scalar computations use two different operators. */ + bool two_operators; + /* The DEF type of this node. */ +@@ -1350,19 +1353,27 @@ + } + + /* Update maximum unit count *MAX_NUNITS so that it accounts for +- the number of units in vector type VECTYPE. *MAX_NUNITS can be 1 +- if we haven't yet recorded any vector types. */ ++ NUNITS. *MAX_NUNITS can be 1 if we haven't yet recorded anything. */ + + static inline void +-vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype) ++vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits) + { + /* All unit counts have the form current_vector_size * X for some + rational X, so two unit sizes must have a common multiple. + Everything is a multiple of the initial value of 1. */ +- poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype); + *max_nunits = force_common_multiple (*max_nunits, nunits); + } + ++/* Update maximum unit count *MAX_NUNITS so that it accounts for ++ the number of units in vector type VECTYPE. *MAX_NUNITS can be 1 ++ if we haven't yet recorded any vector types. */ ++ ++static inline void ++vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype) ++{ ++ vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype)); ++} ++ + /* Return the vectorization factor that should be used for costing + purposes while vectorizing the loop described by LOOP_VINFO. + Pick a reasonable estimate if the vectorization factor isn't +Index: gcc/tree-vect-loop.c +=================================================================== +--- a/src/gcc/tree-vect-loop.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vect-loop.c (.../branches/gcc-9-branch) +@@ -6445,10 +6445,13 @@ + gcc_assert (TREE_CODE (base) == INTEGER_CST + && TREE_CODE (step) == INTEGER_CST); + cond_reduc_val = NULL_TREE; ++ tree res = PHI_RESULT (STMT_VINFO_STMT (cond_stmt_vinfo)); ++ if (!types_compatible_p (TREE_TYPE (res), TREE_TYPE (base))) ++ ; + /* Find a suitable value, for MAX_EXPR below base, for MIN_EXPR + above base; punt if base is the minimum value of the type for + MAX_EXPR or maximum value of the type for MIN_EXPR for now. */ +- if (tree_int_cst_sgn (step) == -1) ++ else if (tree_int_cst_sgn (step) == -1) + { + cond_reduc_op_code = MIN_EXPR; + if (tree_int_cst_sgn (base) == -1) +Index: gcc/ggc.h +=================================================================== +--- a/src/gcc/ggc.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ggc.h (.../branches/gcc-9-branch) +@@ -243,6 +243,9 @@ + function is called, not during allocations. */ + extern void ggc_collect (void); + ++/* Return unused memory pages to the system. */ ++extern void ggc_trim (void); ++ + /* Assume that all GGC memory is reachable and grow the limits for next collection. */ + extern void ggc_grow (void); + +Index: gcc/gimplify.c +=================================================================== +--- a/src/gcc/gimplify.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/gimplify.c (.../branches/gcc-9-branch) +@@ -7058,6 +7058,8 @@ + kind = lang_hooks.decls.omp_predetermined_sharing (decl); + if (kind != OMP_CLAUSE_DEFAULT_UNSPECIFIED) + default_kind = kind; ++ else if (VAR_P (decl) && TREE_STATIC (decl) && DECL_IN_CONSTANT_POOL (decl)) ++ default_kind = OMP_CLAUSE_DEFAULT_SHARED; + + switch (default_kind) + { +Index: gcc/calls.c +=================================================================== +--- a/src/gcc/calls.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/calls.c (.../branches/gcc-9-branch) +@@ -1971,8 +1971,7 @@ + /* If TYPE is a transparent union or record, pass things the way + we would pass the first field of the union or record. We have + already verified that the modes are the same. */ +- if ((TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == RECORD_TYPE) +- && TYPE_TRANSPARENT_AGGR (type)) ++ if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type)) + type = TREE_TYPE (first_field (type)); + + /* Decide where to pass this arg. +@@ -2750,6 +2749,9 @@ + poly_int64 size = 0; + HOST_WIDE_INT const_size = 0; + rtx_insn *before_arg = get_last_insn (); ++ tree type = TREE_TYPE (args[i].tree_value); ++ if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type)) ++ type = TREE_TYPE (first_field (type)); + /* Set non-negative if we must move a word at a time, even if + just one word (e.g, partial == 4 && mode == DFmode). Set + to -1 if we just use a normal move insn. This value can be +@@ -2762,11 +2764,11 @@ + gcc_assert (partial % UNITS_PER_WORD == 0); + nregs = partial / UNITS_PER_WORD; + } +- else if (TYPE_MODE (TREE_TYPE (args[i].tree_value)) == BLKmode) ++ else if (TYPE_MODE (type) == BLKmode) + { + /* Variable-sized parameters should be described by a + PARALLEL instead. */ +- const_size = int_size_in_bytes (TREE_TYPE (args[i].tree_value)); ++ const_size = int_size_in_bytes (type); + gcc_assert (const_size >= 0); + nregs = (const_size + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD; + size = const_size; +@@ -2893,8 +2895,7 @@ + if (GET_CODE (reg) == PARALLEL) + use_group_regs (call_fusage, reg); + else if (nregs == -1) +- use_reg_mode (call_fusage, reg, +- TYPE_MODE (TREE_TYPE (args[i].tree_value))); ++ use_reg_mode (call_fusage, reg, TYPE_MODE (type)); + else if (nregs > 0) + use_regs (call_fusage, REGNO (reg), nregs); + } +Index: gcc/tree-dfa.c +=================================================================== +--- a/src/gcc/tree-dfa.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-dfa.c (.../branches/gcc-9-branch) +@@ -61,23 +61,23 @@ + /* Renumber all of the gimple stmt uids. */ + + void +-renumber_gimple_stmt_uids (void) ++renumber_gimple_stmt_uids (struct function *fun) + { + basic_block bb; + +- set_gimple_stmt_max_uid (cfun, 0); +- FOR_ALL_BB_FN (bb, cfun) ++ set_gimple_stmt_max_uid (fun, 0); ++ FOR_ALL_BB_FN (bb, fun) + { + gimple_stmt_iterator bsi; + for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi)) + { + gimple *stmt = gsi_stmt (bsi); +- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun)); ++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fun)); + } + for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi)) + { + gimple *stmt = gsi_stmt (bsi); +- gimple_set_uid (stmt, inc_gimple_stmt_max_uid (cfun)); ++ gimple_set_uid (stmt, inc_gimple_stmt_max_uid (fun)); + } + } + } +Index: gcc/tree-dfa.h +=================================================================== +--- a/src/gcc/tree-dfa.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-dfa.h (.../branches/gcc-9-branch) +@@ -20,7 +20,7 @@ + #ifndef GCC_TREE_DFA_H + #define GCC_TREE_DFA_H + +-extern void renumber_gimple_stmt_uids (void); ++extern void renumber_gimple_stmt_uids (struct function *); + extern void renumber_gimple_stmt_uids_in_blocks (basic_block *, int); + extern void dump_variable (FILE *, tree); + extern void debug_variable (tree); +Index: gcc/tree-cfgcleanup.c +=================================================================== +--- a/src/gcc/tree-cfgcleanup.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-cfgcleanup.c (.../branches/gcc-9-branch) +@@ -101,6 +101,8 @@ + if (high) + { + tree lhs, rhs; ++ if (range_check_type (TREE_TYPE (index)) == NULL_TREE) ++ return false; + generate_range_test (bb, index, low, high, &lhs, &rhs); + cond = gimple_build_cond (LE_EXPR, lhs, rhs, NULL_TREE, NULL_TREE); + } +Index: gcc/symbol-summary.h +=================================================================== +--- a/src/gcc/symbol-summary.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/symbol-summary.h (.../branches/gcc-9-branch) +@@ -461,6 +461,8 @@ + if ((*m_vector)[i] != NULL) + this->release ((*m_vector)[i]); + ++ vec_free (m_vector); ++ + this->m_released = true; + } + +@@ -926,6 +928,8 @@ + if ((*m_vector)[i] != NULL) + this->release ((*m_vector)[i]); + ++ vec_free (m_vector); ++ + this->m_released = true; + } + +Index: gcc/cfgcleanup.c +=================================================================== +--- a/src/gcc/cfgcleanup.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/cfgcleanup.c (.../branches/gcc-9-branch) +@@ -53,6 +53,7 @@ + #include "dce.h" + #include "dbgcnt.h" + #include "rtl-iter.h" ++#include "regs.h" + + #define FORWARDER_BLOCK_P(BB) ((BB)->flags & BB_FORWARDER_BLOCK) + +@@ -257,6 +258,10 @@ + bool failed = false; + reg_set_iterator rsi; + ++ /* Jump threading may cause fixup_partitions to introduce new crossing edges, ++ which is not allowed after reload. */ ++ gcc_checking_assert (!reload_completed || !crtl->has_bb_partition); ++ + if (b->flags & BB_NONTHREADABLE_BLOCK) + return NULL; + +@@ -1224,6 +1229,14 @@ + } + } + } ++ ++ HARD_REG_SET i1_used, i2_used; ++ ++ get_call_reg_set_usage (i1, &i1_used, call_used_reg_set); ++ get_call_reg_set_usage (i2, &i2_used, call_used_reg_set); ++ ++ if (!hard_reg_set_equal_p (i1_used, i2_used)) ++ return dir_none; + } + + /* If both i1 and i2 are frame related, verify all the CFA notes +@@ -3269,10 +3282,10 @@ + + namespace { + +-const pass_data pass_data_postreload_jump = ++const pass_data pass_data_jump_after_combine = + { + RTL_PASS, /* type */ +- "postreload_jump", /* name */ ++ "jump_after_combine", /* name */ + OPTGROUP_NONE, /* optinfo_flags */ + TV_JUMP, /* tv_id */ + 0, /* properties_required */ +@@ -3282,20 +3295,20 @@ + 0, /* todo_flags_finish */ + }; + +-class pass_postreload_jump : public rtl_opt_pass ++class pass_jump_after_combine : public rtl_opt_pass + { + public: +- pass_postreload_jump (gcc::context *ctxt) +- : rtl_opt_pass (pass_data_postreload_jump, ctxt) ++ pass_jump_after_combine (gcc::context *ctxt) ++ : rtl_opt_pass (pass_data_jump_after_combine, ctxt) + {} + + /* opt_pass methods: */ + virtual unsigned int execute (function *); + +-}; // class pass_postreload_jump ++}; // class pass_jump_after_combine + + unsigned int +-pass_postreload_jump::execute (function *) ++pass_jump_after_combine::execute (function *) + { + cleanup_cfg (flag_thread_jumps ? CLEANUP_THREADING : 0); + return 0; +@@ -3304,9 +3317,9 @@ + } // anon namespace + + rtl_opt_pass * +-make_pass_postreload_jump (gcc::context *ctxt) ++make_pass_jump_after_combine (gcc::context *ctxt) + { +- return new pass_postreload_jump (ctxt); ++ return new pass_jump_after_combine (ctxt); + } + + namespace { +Index: gcc/tree-ssa-pre.c +=================================================================== +--- a/src/gcc/tree-ssa-pre.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-pre.c (.../branches/gcc-9-branch) +@@ -1184,8 +1184,8 @@ + bitmap visited = NULL; + /* Try to find a vuse that dominates this phi node by skipping + non-clobbering statements. */ +- vuse = get_continuation_for_phi (phi, &ref, cnt, &visited, false, +- NULL, NULL); ++ vuse = get_continuation_for_phi (phi, &ref, true, ++ cnt, &visited, false, NULL, NULL); + if (visited) + BITMAP_FREE (visited); + } +Index: gcc/lto/lto.c +=================================================================== +--- a/src/gcc/lto/lto.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lto/lto.c (.../branches/gcc-9-branch) +@@ -2446,6 +2446,15 @@ + + timevar_push (TV_WHOPR_WPA_IO); + ++ ggc_trim (); ++ ++ cgraph_node *node; ++ /* Do body modifications needed for streaming before we fork out ++ worker processes. */ ++ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) ++ if (!node->clone_of && gimple_has_body_p (node->decl)) ++ lto_prepare_function_for_streaming (node); ++ + /* Generate a prefix for the LTRANS unit files. */ + blen = strlen (ltrans_output_list); + temp_filename = (char *) xmalloc (blen + sizeof ("2147483648.o")); +Index: gcc/lto/ChangeLog +=================================================================== +--- a/src/gcc/lto/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lto/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,19 @@ ++2019-10-26 Jan Hubicka ++ ++ Backport from mainline ++ ++ 2019-10-12 Jan Hubicka ++ * lto.c (lto_wpa_write_files): Do not update bodies of clones. ++ ++ 2019-10-11 Jan Hubicka ++ * lto.c (lto_wpa_write_files): Prepare all bodies for streaming. ++ ++2019-10-25 Jan Hubicka ++ ++ Backport from mainline ++ * lto-partition.c (add_symbol_to_partition_1): Update. ++ (undo_parittion): Update. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/ipa-prop.c +=================================================================== +--- a/src/gcc/ipa-prop.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ipa-prop.c (.../branches/gcc-9-branch) +@@ -3725,6 +3725,18 @@ + ipcp_transformation_sum = ipcp_transformation_t::create_ggc (symtab); + } + ++/* Release the IPA CP transformation summary. */ ++ ++void ++ipcp_free_transformation_sum (void) ++{ ++ if (!ipcp_transformation_sum) ++ return; ++ ++ ipcp_transformation_sum->release (); ++ ipcp_transformation_sum = NULL; ++} ++ + /* Set the aggregate replacements of NODE to be AGGVALS. */ + + void +Index: gcc/ipa-prop.h +=================================================================== +--- a/src/gcc/ipa-prop.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ipa-prop.h (.../branches/gcc-9-branch) +@@ -558,6 +558,7 @@ + void ipa_set_node_agg_value_chain (struct cgraph_node *node, + struct ipa_agg_replacement_value *aggvals); + void ipcp_transformation_initialize (void); ++void ipcp_free_transformation_sum (void); + + /* ipa_edge_args stores information related to a callsite and particularly its + arguments. It can be accessed by the IPA_EDGE_REF macro. */ +Index: gcc/po/es.po +=================================================================== +--- a/src/gcc/po/es.po (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/po/es.po (.../branches/gcc-9-branch) +@@ -43,7 +43,7 @@ + "Project-Id-Version: gcc 9.1.0\n" + "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" + "POT-Creation-Date: 2019-05-02 20:28+0000\n" +-"PO-Revision-Date: 2019-05-17 05:23+0200\n" ++"PO-Revision-Date: 2019-09-30 17:16+0200\n" + "Last-Translator: Antonio Ceballos Roa \n" + "Language-Team: Spanish \n" + "Language: es\n" +@@ -174,17 +174,11 @@ + + #: diagnostic.c:618 + msgid "In file included from" +-msgstr "" ++msgstr "En el fichero incluido desde" + + #: diagnostic.c:619 +-#, fuzzy +-#| msgid "" +-#| ",\n" +-#| " from %s:%u" + msgid " from" +-msgstr "" +-",\n" +-" de %s:%u" ++msgstr " desde" + + #: diagnostic.c:991 + #, c-format +@@ -796,10 +790,9 @@ + "%s.\n" + + #: gcov-tool.c:528 +-#, fuzzy, c-format +-#| msgid "Copyright %s 2018 Free Software Foundation, Inc.\n" ++#, c-format + msgid "Copyright %s 2019 Free Software Foundation, Inc.\n" +-msgstr "Copyright %s 2018 Free Software Foundation, Inc.\n" ++msgstr "Copyright %s 2019 Free Software Foundation, Inc.\n" + + #: gcov-tool.c:531 gcov.c:925 + #, c-format +@@ -867,10 +860,9 @@ + msgstr " -h, --help Muestra esta información, y finaliza\n" + + #: gcov.c:894 +-#, fuzzy, c-format +-#| msgid " -n, --no-output Do not create an output file\n" ++#, c-format + msgid " -i, --json-format Output JSON intermediate format into .gcov.json.gz file\n" +-msgstr " -n, --no-output No crea un fichero de salida\n" ++msgstr " -i, --json-format Salida con formato JSON intermedia en el fichero .gcov.json.gz\n" + + #: gcov.c:895 + #, c-format +@@ -912,10 +904,9 @@ + msgstr " -p, --preserve-paths Preserva todos los nombres de ruta de los componentes\n" + + #: gcov.c:903 +-#, fuzzy, c-format +-#| msgid " -k, --use-colors Emit colored output\n" ++#, c-format + msgid " -q, --use-hotness-colors Emit perf-like colored output for hot lines\n" +-msgstr " -k, --use-colors Emite salida con colores\n" ++msgstr " -q, --use-hotness-colors Emite salida con colores de tipo perf para las líneas calientes\n" + + #: gcov.c:904 + #, c-format +@@ -928,10 +919,9 @@ + msgstr " -s, --source-prefix DIR Prefijo de fuente a omitir\n" + + #: gcov.c:906 +-#, fuzzy, c-format +-#| msgid " -n, --no-output Do not create an output file\n" ++#, c-format + msgid " -t, --stdout Output to stdout instead of a file\n" +-msgstr " -n, --no-output No crea un fichero de salida\n" ++msgstr " -t, --stdout Salida en stdout en lugar de un fichero\n" + + #: gcov.c:907 + #, c-format +@@ -959,10 +949,9 @@ + msgstr "gcov %s%s\n" + + #: gcov.c:1250 +-#, fuzzy, c-format +-#| msgid "Treat the input file as already preprocessed." ++#, c-format + msgid "'%s' file is already processed\n" +-msgstr "Trata al fichero de entrada como previamente preprocesado." ++msgstr "El fichero '%s' ya está procesado\n" + + #: gcov.c:1364 + #, c-format +@@ -990,16 +979,14 @@ + msgstr "\n" + + #: gcov.c:1489 +-#, fuzzy, c-format +-#| msgid "%s: Cannot open output file: %s\n" ++#, c-format + msgid "Cannot open JSON output file %s\n" +-msgstr "%s: No se puede abrir el fichero de salida: %s\n" ++msgstr "No se puede abrir el fichero de salida JSON %s\n" + + #: gcov.c:1497 +-#, fuzzy, c-format +-#| msgid "Error writing output file '%s'\n" ++#, c-format + msgid "Error writing JSON output file %s\n" +-msgstr "Error al escribir el fichero de salida '%s'\n" ++msgstr "Error al escribir el fichero de salida JSON %s\n" + + #: gcov.c:1664 + #, c-format +@@ -1266,10 +1253,8 @@ + msgstr "este es la insn:" + + #: lra-constraints.c:2971 +-#, fuzzy +-#| msgid "unable to generate reloads for:" + msgid "unable to generate reloads for impossible constraints:" +-msgstr "no se pueden generar recargas para:" ++msgstr "no se pueden generar recargas para restricciones imposibles:" + + #: lra-constraints.c:3962 reload.c:3814 + msgid "unable to generate reloads for:" +@@ -1327,12 +1312,13 @@ + msgstr "Ya se mostraron todas las opciones con las características deseadas\n" + + #: opts.c:1581 +-#, fuzzy, c-format +-#| msgid "invalid argument %qs to %qs" ++#, c-format + msgid "" + " Known valid arguments for %s option:\n" + " " +-msgstr "argumento %qs no válido para %qs" ++msgstr "" ++" Argumentos válidos conocidos para la opción %s:\n" ++" " + + #: opts.c:1631 + msgid "The following options are target specific" +@@ -1430,16 +1416,12 @@ + msgstr "creado y usado con diferentes opciones de '%s'" + + #: targhooks.c:2038 +-#, fuzzy +-#| msgid "created and used with different settings of -fpic" + msgid "created and used with different settings of %<-fpic%>" +-msgstr "creado y usado con diferentes opciones de -fpic" ++msgstr "creado y usado con diferentes opciones de %<-fpic%>" + + #: targhooks.c:2040 +-#, fuzzy +-#| msgid "created and used with different settings of -fpie" + msgid "created and used with different settings of %<-fpie%>" +-msgstr "creado y usado con diferentes opciones de -fpie" ++msgstr "creado y usado con diferentes opciones de %<-fpie%>" + + #: tlink.c:387 + #, c-format +@@ -1703,16 +1685,14 @@ + msgstr "El número máximo de instrucciones cuando se hace inclusión en línea por tamaño." + + #: params.def:97 +-#, fuzzy, no-c-format +-#| msgid "Use subroutines for function prologues and epilogues." ++#, no-c-format + msgid "Instruction accounted for function prologue, epilogue and other overhead." +-msgstr "Usa subrutinas para los prólogos y epílogos de función." ++msgstr "Instrucción contabilizada para el prólogo y epílogo de la función y otras sobrecargas." + + #: params.def:103 +-#, fuzzy, no-c-format +-#| msgid "Use subroutines for function prologues and epilogues." ++#, no-c-format + msgid "Time accounted for function prologue, epilogue and other overhead." +-msgstr "Usa subrutinas para los prólogos y epílogos de función." ++msgstr "Tiempo contabilizado para el prólogo y epílogo de la función y otras sobrecargas." + + #: params.def:109 + #, no-c-format +@@ -1946,10 +1926,9 @@ + + # 'desfactorizar' no me gusta. ¿Alguna sugerencia? - cfuga + #: params.def:393 +-#, fuzzy, no-c-format +-#| msgid "The maximum number of insns to duplicate when unfactoring computed gotos." ++#, no-c-format + msgid "The maximum number of insns in loop header duplicated by the copy loop headers pass." +-msgstr "El número máximo de insns a duplicar al desfactorizar gotos calculados." ++msgstr "El número máximo de instrucciones en encabezamiento de bucle a duplicar en el paso de encabezamientos de bucles." + + #: params.def:400 + #, no-c-format +@@ -1982,16 +1961,14 @@ + msgstr "Umbral en el número promedio de bucles considerado por el planificador de cambio de módulo." + + #: params.def:430 +-#, fuzzy, no-c-format +-#| msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot" ++#, no-c-format + msgid "Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot (used in non-LTO mode)." +-msgstr "La selección de fracción de la cuenta maximal de repeticiones del bloque básico en el bloque básico dado de programa que necesita para ser considerado caliente" ++msgstr "La selección de fracción de la cuenta maximal de repeticiones del bloque básico en el bloque básico dado de programa que necesita para ser considerado caliente (utilizado en modo no LTO)." + + #: params.def:435 +-#, fuzzy, no-c-format +-#| msgid "A basic block profile count is considered hot if it contributes to the given permillage of the entire profiled execution." ++#, no-c-format + msgid "A basic block profile count is considered hot if it contributes to the given permillage of the entire profiled execution (used in LTO mode)." +-msgstr "El número de perfiles de bloque básicos se considera caliente si contribuye al pormillaje dado de la ejecución perfilada completa." ++msgstr "El número de perfiles de bloque básicos se considera caliente si contribuye al pormillaje dado de la ejecución perfilada completa (utilizado en modo LTO)." + + #: params.def:440 + #, no-c-format +@@ -2009,8 +1986,7 @@ + msgstr "Selección de fracción de la frecuencia máxima de ejecuciones de bloque básico en la función dada para la que el bloque básico consigue alinear." + + #: params.def:455 +-#, fuzzy, no-c-format +-#| msgid "Loops iterating at least selected number of iterations will get loop alignment.." ++#, no-c-format + msgid "Loops iterating at least selected number of iterations will get loop alignment." + msgstr "Iterar ciclos por lo menos el número seleccionado de iteraciones que logrará alineación de bucles." + +@@ -2121,10 +2097,9 @@ + msgstr "Número máximo (en bytes) de objetos rastreados en btyes por la eliminación de almacenamiento muerto." + + #: params.def:593 +-#, fuzzy, no-c-format +-#| msgid "Maximum number of times that an insn could be scheduled." ++#, no-c-format + msgid "Maximum number of queries into the alias oracle per store." +-msgstr "El número máximo de veces que se puede planificar una insns." ++msgstr "El número máximo de consultas al oráculo de alias por almacenamiento." + + #: params.def:598 + #, no-c-format +@@ -2495,22 +2470,19 @@ + msgstr "Tamaño máximo de una lista de valores asociada con cada parámetro para propagación constante entre procedimientos." + + #: params.def:1092 +-#, fuzzy, no-c-format +-#| msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone.." ++#, no-c-format + msgid "Threshold ipa-cp opportunity evaluation that is still considered beneficial to clone." +-msgstr "Rango de evaluación de oportunidad ipa-cp que aún se considera beneficioso para clonar.." ++msgstr "Rango de evaluación de oportunidad ipa-cp que aún se considera beneficioso para clonar." + + #: params.def:1098 +-#, fuzzy, no-c-format +-#| msgid "Percentage penalty the recursive functions will receive when they are evaluated for cloning.." ++#, no-c-format + msgid "Percentage penalty the recursive functions will receive when they are evaluated for cloning." +-msgstr "Penalización porcentual que recibirán las funciones recursivas cuando se evalúen para clonación.." ++msgstr "Penalización porcentual que recibirán las funciones recursivas cuando se evalúen para clonación." + + #: params.def:1104 +-#, fuzzy, no-c-format +-#| msgid "Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning.." ++#, no-c-format + msgid "Percentage penalty functions containing a single call to another function will receive when they are evaluated for cloning." +-msgstr "Penalización porcentual que recibirán las funciones que contien una sola llamada a otra función cuando se evalúen para clonación.." ++msgstr "Penalización porcentual que recibirán las funciones que contien una sola llamada a otra función cuando se evalúen para clonación." + + #: params.def:1110 + #, no-c-format +@@ -2518,16 +2490,14 @@ + msgstr "Número máximo de elementos de contenido agregado de un parámetro en funciones de salto y celosías." + + #: params.def:1116 +-#, fuzzy, no-c-format +-#| msgid "Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known.." ++#, no-c-format + msgid "Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known." +-msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan a conocer los límites o los pasos de los bucles.." ++msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan a conocer los límites o los pasos de los bucles." + + #: params.def:1122 +-#, fuzzy, no-c-format +-#| msgid "Compile-time bonus IPA-CP assigns to candidates which make an array index known.." ++#, no-c-format + msgid "Compile-time bonus IPA-CP assigns to candidates which make an array index known." +-msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan conocer el índice de un array.." ++msgstr "Bonificación de tiempo de compilación que IPA-CP asigna a los candidatos que dan conocer el índice de un array." + + #: params.def:1128 + #, no-c-format +@@ -2576,10 +2546,9 @@ + msgstr "Permite que se introduzcan carreras de datos nuevos en stores." + + #: params.def:1187 +-#, fuzzy, no-c-format +-#| msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic.." ++#, no-c-format + msgid "Set the maximum number of instructions executed in parallel in reassociated tree. If 0, use the target dependent heuristic." +-msgstr "Establece el número máximo de instrucciones ejecutadas en paralelo en el árbol de reasociación. Si es 0, usa la heurística dependiente del objetivo.." ++msgstr "Establece el número máximo de instrucciones ejecutadas en paralelo en el árbol de reasociación. Si es 0, usa la heurística dependiente del objetivo." + + #: params.def:1193 + #, no-c-format +@@ -2748,10 +2717,9 @@ + msgstr "Número máximo de definiciones posibles visitadas cuando se desvirtualiza especulativamente." + + #: params.def:1375 +-#, fuzzy, no-c-format +-#| msgid "Maximum number of constant stores to merge in the store merging pass." ++#, no-c-format + msgid "Maximum number of assertions to add along the default edge of a switch statement during VRP." +-msgstr "Número máximo de almacenamientos constantes que hay que mezclar en el paso de mezcla de almacenamientos." ++msgstr "Número máximo de aserciones que hay que añadir a lo largo del borde predefinido de una sentencia switch durante VRP." + + #: params.def:1381 + #, no-c-format +@@ -2766,7 +2734,7 @@ + #: params.def:1391 + #, no-c-format + msgid "Maximum unroll factor for the unroll-and-jam transformation." +-msgstr "" ++msgstr "Máximo factor de desenrrollado para la transformación unroll-and-jam." + + #: params.def:1396 + #, no-c-format +@@ -2776,19 +2744,17 @@ + #: params.def:1401 + #, no-c-format + msgid "True if a non-short-circuit operation is optimal." +-msgstr "" ++msgstr "Verdadero si una operación de non-short-circuit es óptima." + + #: params.def:1406 +-#, fuzzy, no-c-format +-#| msgid "Maximum number of instructions in basic block to be considered for SLP vectorization." ++#, no-c-format + msgid "The maximum number of instructions in an inner loop that is being considered for versioning." +-msgstr "El número máximo de instrucciones en bloque básico que se consideran para vectorización SLP." ++msgstr "El número máximo de instrucciones en un bucle interior que se consideran para versionar." + + #: params.def:1412 +-#, fuzzy, no-c-format +-#| msgid "The maximum number of instructions to consider to unroll in a loop." ++#, no-c-format + msgid "The maximum number of instructions in an outer loop that is being considered for versioning, on top of the instructions in inner loops." +-msgstr "El número máximo de instrucciones para considerar el desenrollo en un bucle." ++msgstr "El número máximo de instrucciones ien un bucle exterior que se consideran para versionar, por encima de las instrucciones en los bucles interiores." + + #: c-family/c-format.c:404 + msgid "format" +@@ -3655,15 +3621,14 @@ + #: config/gcn/gcn.c:5637 config/gcn/gcn.c:5648 config/gcn/gcn.c:5651 + #, c-format + msgid "bad ADDR_SPACE_GLOBAL address" +-msgstr "" ++msgstr "dirección ADDR_SPACE_GLOBAL errónea" + + #: config/gcn/gcn.c:5423 config/gcn/gcn.c:5446 config/gcn/gcn.c:5475 + #: config/gcn/gcn.c:5491 config/gcn/gcn.c:5510 config/gcn/gcn.c:5586 + #: config/gcn/gcn.c:5782 config/gcn/gcn.c:5879 +-#, fuzzy, c-format +-#| msgid "invalid operand to %%Z code" ++#, c-format + msgid "invalid operand %%xn code" +-msgstr "operando no válido para el código %%Z" ++msgstr "operando no válido para el código %%xn" + + #: config/gcn/gcn.c:5949 + #, c-format +@@ -3962,22 +3927,19 @@ + msgstr "extracto de cero no válido" + + #: config/or1k/or1k.c:1124 config/or1k/or1k.c:1132 +-#, fuzzy, c-format +-#| msgid "invalid operation" ++#, c-format + msgid "invalid relocation" +-msgstr "operación no válida" ++msgstr "reubicación no válida" + + #: config/or1k/or1k.c:1226 +-#, fuzzy, c-format +-#| msgid "invalid %H value" ++#, c-format + msgid "invalid %%H value" +-msgstr "valor %H no válido" ++msgstr "valor %%H no válido" + + #: config/or1k/or1k.c:1274 +-#, fuzzy, c-format +-#| msgid "unknown punctuation '%c'" ++#, c-format + msgid "unknown operand letter: '%c'" +-msgstr "puntuación '%c' desconocida" ++msgstr "letra de operando desconocida: '%c'" + + #: config/rl78/rl78.c:2009 config/rl78/rl78.c:2095 + #, c-format +@@ -3995,46 +3957,32 @@ + msgstr "Pruebe ejecutar '%s' en el intérprete de órdenes para elevar su límite.\n" + + #: config/rs6000/rs6000.c:3995 +-#, fuzzy +-#| msgid "-mvsx requires hardware floating point" + msgid "%<-mvsx%> requires hardware floating point" +-msgstr "-mvsx requiere coma flotante de hardware" ++msgstr "%<-mvsx%> requiere coma flotante de hardware" + + #: config/rs6000/rs6000.c:4003 +-#, fuzzy +-#| msgid "-mvsx needs indexed addressing" + msgid "%<-mvsx%> needs indexed addressing" +-msgstr "-mvsx necesita direccionamiento indizado" ++msgstr "%<-mvsx%> necesita direccionamiento indexado" + + #: config/rs6000/rs6000.c:4008 +-#, fuzzy +-#| msgid "-mvsx and -mno-altivec are incompatible" + msgid "%<-mvsx%> and %<-mno-altivec%> are incompatible" +-msgstr "-mvsx y -mno-altivec son incompatibles" ++msgstr "%<-mvsx%> y -% son incompatibles" + + #: config/rs6000/rs6000.c:4010 +-#, fuzzy +-#| msgid "-mno-altivec disables vsx" + msgid "%<-mno-altivec%> disables vsx" +-msgstr "-mno-altivec desactiva vsx" ++msgstr "%<-mno-altivec%> desactiva vsx" + + #: config/rs6000/rs6000.c:4136 +-#, fuzzy +-#| msgid "-mquad-memory requires 64-bit mode" + msgid "%<-mquad-memory%> requires 64-bit mode" +-msgstr "-mquad-memory requiere modo de 64 bits" ++msgstr "%<-mquad-memory%> requiere modo de 64 bits" + + #: config/rs6000/rs6000.c:4139 +-#, fuzzy +-#| msgid "-mquad-memory-atomic requires 64-bit mode" + msgid "%<-mquad-memory-atomic%> requires 64-bit mode" +-msgstr "-mquad-memory-atomic requiere modo de 64 bits" ++msgstr "%<-mquad-memory-atomic%> requiere modo de 64 bits" + + #: config/rs6000/rs6000.c:4151 +-#, fuzzy +-#| msgid "-mquad-memory is not available in little endian mode" + msgid "%<-mquad-memory%> is not available in little endian mode" +-msgstr "-mquad-memory no está disponible en modo little endian" ++msgstr "%<-mquad-memory%> no está disponible en modo little endian" + + #: config/rs6000/rs6000.c:10374 + msgid "bad move" +@@ -4100,10 +4048,9 @@ + msgstr "valor %%q no válido" + + #: config/rs6000/rs6000.c:21141 +-#, fuzzy, c-format +-#| msgid "invalid %%J value" ++#, c-format + msgid "invalid %%t value" +-msgstr "valor %%J no válido" ++msgstr "valor %%t no válido" + + #: config/rs6000/rs6000.c:21158 + #, c-format +@@ -4121,10 +4068,9 @@ + msgstr "valor %%v no válido" + + #: config/rs6000/rs6000.c:21234 +-#, fuzzy, c-format +-#| msgid "invalid %%J value" ++#, c-format + msgid "invalid %%V value" +-msgstr "valor %%J no válido" ++msgstr "valor %%V no válido" + + #: config/rs6000/rs6000.c:21251 config/xtensa/xtensa.c:2439 + #, c-format +@@ -4696,10 +4642,8 @@ + msgstr "entra en la sentencia sincronizada o atómica" + + #: cp/decl.c:3254 +-#, fuzzy +-#| msgid "expected statement" + msgid "enters constexpr if statement" +-msgstr "se esperaba una declaración" ++msgstr "entre en la sentencia if de expresión constante" + + #: cp/error.c:375 + msgid "" +@@ -5032,10 +4976,8 @@ + msgstr "Rango simétrico fuera de entero implicado por Standard Fortran en %L" + + #: fortran/arith.c:118 +-#, fuzzy +-#| msgid "Illegal character in BOZ constant at %C" + msgid "Illegal type in character concatenation at %L" +-msgstr "Carácter ilegal en la constante BOZ en %C" ++msgstr "Typo ilegal en concatenación de caracteres en %L" + + #: fortran/arith.c:1384 + msgid "elemental binary operation" +@@ -5397,10 +5339,9 @@ + msgstr "El operando del operador numérico unitario %%<%s%%> en %%L es %s" + + #: fortran/resolve.c:3949 +-#, fuzzy, c-format +-#| msgid "Operands of binary numeric operator %%<%s%%> at %%L are %s/%s" ++#, c-format + msgid "Unexpected derived-type entities in binary intrinsic numeric operator %%<%s%%> at %%L" +-msgstr "Los operandos del operador numérico binario %%<%s%%> en %%L son %s/%s" ++msgstr "Entidades de tipos derivados no esperadas en el operador numérico intrínseco binario %%<%s%%> en %%L" + + #: fortran/resolve.c:3954 + #, c-format +@@ -5517,7 +5458,7 @@ + #: fortran/trans-array.c:9544 + #, c-format + msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration" +-msgstr "" ++msgstr "El valor del parámetro PDT LEN '%s' no concuerda con el de la declaración «dummy»" + + #: fortran/trans-decl.c:6025 + #, c-format +@@ -5719,10 +5660,8 @@ + msgstr "se requiere -E ó -x cuando la entrada es de entrada estándar" + + #: config/darwin.h:126 config/darwin.h:427 +-#, fuzzy +-#| msgid "-pg not supported on this platform" + msgid "gsplit-dwarf is not supported on this platform" +-msgstr "-pg no se admite en esta plataforma" ++msgstr "gsplit-dwarf no se admite en esta plataforma" + + #: config/darwin.h:170 + msgid "rdynamic is not supported" +@@ -5788,8 +5727,6 @@ + + #: config/aarch64/aarch64-freebsd.h:37 config/arm/freebsd.h:49 + #: config/riscv/freebsd.h:44 +-#, fuzzy +-#| msgid "consider using `-pg' instead of `-p' with gprof (1) " + msgid "consider using `-pg' instead of `-p' with gprof (1)" + msgstr "considere usar `-pg' en lugar de `-p' con gprof (1)" + +@@ -5868,7 +5805,7 @@ + + #: config/rs6000/rs6000.h:139 + msgid "Missing -mcpu option in ASM_CPU_SPEC?" +-msgstr "" ++msgstr "¿Falta la opción -mcpu en ASM_CPU_SPEC?" + + #: config/rx/rx.h:80 + msgid "-mas100-syntax is incompatible with -gdwarf" +@@ -5891,10 +5828,8 @@ + msgstr "SH2a no se admite para little-endian" + + #: config/sparc/linux64.h:148 +-#, fuzzy +-#| msgid "-pie is not supported in this configuration" + msgid "-fsanitize=address is not supported in this configuration" +-msgstr "-pie no se admite en esta configuración" ++msgstr "-fsanitize=dirección no se admite en esta configuración" + + #: config/sparc/linux64.h:162 config/sparc/linux64.h:168 + #: config/sparc/netbsd-elf.h:108 config/sparc/netbsd-elf.h:117 +@@ -5960,7 +5895,7 @@ + + #: fortran/lang.opt:214 + msgid "Warn about type and rank mismatches between arguments and parameters." +-msgstr "" ++msgstr "Avisa sobre discordancias de tipo y rango entre argumentos y parámetros." + + #: fortran/lang.opt:218 + msgid "Warn if the type of a variable might be not interoperable with C." +@@ -6243,7 +6178,7 @@ + + #: fortran/lang.opt:565 + msgid "Try to interchange loops if profitable." +-msgstr "" ++msgstr "Intenta intercambiar bucles si es provechoso." + + #: fortran/lang.opt:569 + msgid "Enable front end optimization." +@@ -6259,7 +6194,7 @@ + + #: fortran/lang.opt:581 + msgid "Initialize components of derived type variables according to other init flags." +-msgstr "" ++msgstr "Inicializa componentes de variables de tipo derivado en conformidad con otros indicadores de inicialización." + + #: fortran/lang.opt:585 + msgid "-finit-integer=\tInitialize local integer variables to n." +@@ -6315,7 +6250,7 @@ + + #: fortran/lang.opt:675 + msgid "Path to header file that should be pre-included before each compilation unit." +-msgstr "" ++msgstr "Ruta de fichero de cabecera que debería preincluirse antes de cada unidad de compilación." + + #: fortran/lang.opt:679 + msgid "Enable range checking during compilation." +@@ -6517,7 +6452,7 @@ + + #: c-family/c.opt:276 + msgid "Warn on suspicious calls of standard functions computing absolute values." +-msgstr "" ++msgstr "Advierte de llamadas sospechosas de funciones estándar que calculan valores absolutos." + + #: c-family/c.opt:280 + msgid "Warn about suspicious uses of memory addresses." +@@ -6545,7 +6480,7 @@ + + #: c-family/c.opt:317 + msgid "-Wno-alloc-size-larger-than Disable Walloc-size-larger-than= warning. Equivalent to Walloc-size-larger-than= or larger." +-msgstr "" ++msgstr "-Wno-alloc-size-larger-than Desactiva el aviso Walloc-size-larger-than=. Equivalente a Walloc-size-larger-than= o mayor." + + #: c-family/c.opt:321 + msgid "-Walloc-zero Warn for calls to allocation functions that specify zero bytes." +@@ -6557,7 +6492,7 @@ + + #: c-family/c.opt:331 + msgid "-Wno-alloca-larger-than Disable Walloca-larger-than= warning. Equivalent to Walloca-larger-than= or larger." +-msgstr "" ++msgstr "-Wno-alloca-larger-than Desactiva el aviso Walloca-larger-than=. Equivalente a Walloca-larger-than= o mayor." + + #: c-family/c.opt:343 + msgid "Warn whenever an Objective-C assignment is being intercepted by the garbage collector." +@@ -6588,10 +6523,8 @@ + msgstr "Avisa cuando una macro de preprocesador interna está sin definir o redefinida." + + #: c-family/c.opt:371 +-#, fuzzy +-#| msgid "Warn about features not present in ISO C99, but present in ISO C11." + msgid "Warn about features not present in ISO C11, but present in ISO C2X." +-msgstr "Avisa sobre características no presentes en ISO C99, pero presentes en ISO C11." ++msgstr "Avisa sobre características no presentes en ISO C11, pero presentes en ISO C2X." + + #: c-family/c.opt:375 + msgid "Warn about features not present in ISO C90, but present in ISO C99." +@@ -6641,10 +6574,8 @@ + #: c-family/c.opt:1369 c-family/c.opt:1373 c-family/c.opt:1377 + #: c-family/c.opt:1381 c-family/c.opt:1385 c-family/c.opt:1389 + #: config/i386/i386.opt:967 +-#, fuzzy +-#| msgid "Deprecated in GCC 8. This switch has no effect." + msgid "Deprecated in GCC 9. This switch has no effect." +-msgstr "Obsoleto en GCC 8. Esta opción no tiene efecto." ++msgstr "Obsoleto en GCC 9. Esta opción no tiene efecto." + + #: c-family/c.opt:429 + msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"." +@@ -6676,7 +6607,7 @@ + + #: c-family/c.opt:461 + msgid "Warn about dangling else." +-msgstr "Avisa sobre else colgados." ++msgstr "Avisa sobre else congante." + + #: c-family/c.opt:465 + msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage." +@@ -6696,11 +6627,11 @@ + + #: c-family/c.opt:485 + msgid "Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation." +-msgstr "" ++msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia definida por el usuario." + + #: c-family/c.opt:490 + msgid "Mark implicitly-declared copy operations as deprecated if the class has a user-provided copy operation or destructor." +-msgstr "" ++msgstr "Marca las operaciones de copia declaradas implícitamente como obsoletas si la clase tiene una operación de copia o un destructor definidos por el usuario." + + #: c-family/c.opt:495 + msgid "Warn about positional initialization of structs requiring designated initializers." +@@ -6776,7 +6707,7 @@ + + #: c-family/c.opt:575 + msgid "Warn about function calls with format strings that write past the end of the destination region. Same as -Wformat-overflow=1." +-msgstr "" ++msgstr "Advierte de llamadas a función con cadenas de formato que escriben más allá del final de la región de destino. Igual que -Wformat-overflow=1." + + #: c-family/c.opt:580 + msgid "Warn about possible security problems with format functions." +@@ -6788,7 +6719,7 @@ + + #: c-family/c.opt:588 + msgid "Warn about calls to snprintf and similar functions that truncate output. Same as -Wformat-truncation=1." +-msgstr "" ++msgstr "Advierte de llamadas a snprintf y funciones similares que truncan la salida. Igual que -Wformat-truncation=1." + + #: c-family/c.opt:593 + msgid "Warn about strftime formats yielding 2-digit years." +@@ -6824,7 +6755,7 @@ + + #: c-family/c.opt:630 + msgid "Warn when the address of packed member of struct or union is taken." +-msgstr "" ++msgstr "Avisa cuando se toma la dirección del miembro empaquetado de una estructura o unión." + + #: c-family/c.opt:634 + msgid "Warn about variables which are initialized to themselves." +@@ -6832,7 +6763,7 @@ + + #: c-family/c.opt:638 + msgid "Warn about uses of std::initializer_list that can result in dangling pointers." +-msgstr "" ++msgstr "Avisa sobre usos de std::initializer_list que pueden resultar en punteros " + + #: c-family/c.opt:642 + msgid "Warn about implicit declarations." +@@ -6864,7 +6795,7 @@ + + #: c-family/c.opt:677 + msgid "Warn for suspicious integer expressions in boolean context." +-msgstr "" ++msgstr "Advierte de expresiones enteras sospechosas en contexto booleano." + + #: c-family/c.opt:681 + msgid "Warn when there is a cast to a pointer from an integer of a different size." +@@ -6928,7 +6859,7 @@ + + #: c-family/c.opt:745 + msgid "Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for." +-msgstr "" ++msgstr "Advierte de expansiones de macros no seguras a sentencias múltiples utilizadas como cuerpo de una cláusula como if, while, switch o for." + + #: c-family/c.opt:749 + msgid "Warn on direct multiple inheritance." +@@ -6940,7 +6871,7 @@ + + #: c-family/c.opt:757 + msgid "Warn when fields in a struct with the packed attribute are misaligned." +-msgstr "" ++msgstr "Avisa cuando un struct con el atributo «packed» tiene campos desalineados." + + #: c-family/c.opt:761 + msgid "Warn about missing sized deallocation functions." +@@ -6948,7 +6879,7 @@ + + #: c-family/c.opt:765 + msgid "Warn about suspicious divisions of two sizeof expressions that don't work correctly with pointers." +-msgstr "" ++msgstr "Advierte de divisiones sospechosas de dos expresiones sizeof que no funcionan correctamente con punteros." + + #: c-family/c.opt:769 + msgid "Warn about suspicious length parameters to certain string functions if the argument uses sizeof." +@@ -6960,7 +6891,7 @@ + + #: c-family/c.opt:777 + msgid "Warn about buffer overflow in string manipulation functions like memcpy and strcpy." +-msgstr "" ++msgstr "Advierte de desbordamiento de búfer en funciones que manipulan cadenas, como memcpy y strcpy." + + #: c-family/c.opt:782 + msgid "Under the control of Object Size type, warn about buffer overflow in string manipulation functions like memcpy and strcpy." +@@ -7039,14 +6970,12 @@ + msgstr "Avisa cuando las funciones friend sin plantillas se declaran dentro de una plantilla." + + #: c-family/c.opt:868 +-#, fuzzy +-#| msgid "conversion to void will never use a type conversion operator" + msgid "Warn when a conversion function will never be called due to the type it converts to." +-msgstr "la conversión a void nunca usará un operador de conversión de tipo" ++msgstr "Avisa cuando una función de conversión nunca será llamada debido al tipo al que convierte." + + #: c-family/c.opt:872 + msgid "Warn for unsafe raw memory writes to objects of class types." +-msgstr "" ++msgstr "Avisa en caso de escrituras de memoria en bruto no seguras a objetivos de tipos de clase." + + #: c-family/c.opt:876 + msgid "Warn about non-virtual destructors." +@@ -7130,7 +7059,7 @@ + + #: c-family/c.opt:991 + msgid "Warn if constructor or destructors with priorities from 0 to 100 are used." +-msgstr "" ++msgstr "Avisa si se usan constructores o destructores con prioridades entre 0 y 100." + + #: c-family/c.opt:995 + msgid "Warn if a property for an Objective-C object has no assign semantics specified." +@@ -7150,7 +7079,7 @@ + + #: c-family/c.opt:1015 + msgid "Warn about redundant calls to std::move." +-msgstr "" ++msgstr "Advierte de llamadas redundantes a std::move." + + #: c-family/c.opt:1019 + msgid "Warn about uses of register storage specifier." +@@ -7293,14 +7222,12 @@ + msgstr "Avisa si se usa una matriz de longitud variable." + + #: c-family/c.opt:1199 +-#, fuzzy +-#| msgid "-Wvla-larger-than=\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than bytes." + msgid "-Wvla-larger-than=\tWarn on unbounded uses of variable-length arrays, and on bounded uses of variable-length arrays whose bound can be larger than bytes. bytes." +-msgstr "-Wvla-larger-than=\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que bytes." ++msgstr "-Wvla-larger-than=\tAdvierte de usos no acotados de arrays de longitud variable y de usos acotados de arrays de longitud variable cuyo límite pueda ser más grande que bytes. bytes" + + #: c-family/c.opt:1206 + msgid "-Wno-vla-larger-than Disable Wvla-larger-than= warning. Equivalent to Wvla-larger-than= or larger." +-msgstr "" ++msgstr "-Wno-vla-larger-than Desactiva el aviso Wvla-larger-than=. Equivalente a Wvla-larger-than= o mayor." + + #: c-family/c.opt:1210 + msgid "Warn when a register variable is declared volatile." +@@ -7356,11 +7283,11 @@ + + #: c-family/c.opt:1267 + msgid "Support C++17 allocation of over-aligned types." +-msgstr "" ++msgstr "Admite alojamiento C++17 de tipos sobrealineados." + + #: c-family/c.opt:1271 + msgid "-faligned-new= Use C++17 over-aligned type allocation for alignments greater than N." +-msgstr "" ++msgstr "-faligned-new= Usa alojamiento de tipo sobrealineado de C++17 para alineamientos mayores que N." + + #: c-family/c.opt:1278 + msgid "Allow variadic functions without named parameter." +@@ -7385,7 +7312,7 @@ + + #: c-family/c.opt:1305 + msgid "Enable the char8_t fundamental type and use it as the type for UTF-8 string and character literals." +-msgstr "" ++msgstr "Habilita el tipo fundamental char8_t y lo usa como el tipo para los literales de cadenas UTF-8 y de caracteres." + + #: c-family/c.opt:1393 + msgid "Deprecated in GCC 8. This switch has no effect." +@@ -7412,10 +7339,8 @@ + msgstr "-fconstexpr-loop-limit=\tEspecifica el número de iteraciones de bucle constexpr máximo." + + #: c-family/c.opt:1421 +-#, fuzzy +-#| msgid "-fconstexpr-loop-limit=\tSpecify maximum constexpr loop iteration count." + msgid "-fconstexpr-ops-limit=\tSpecify maximum number of constexpr operations during a single constexpr evaluation." +-msgstr "-fconstexpr-loop-limit=\tEspecifica el número de iteraciones de bucle constexpr máximo." ++msgstr "-fconstexpr-ops-limit=\tEspecifica el número máximo de operaciones constexpr durante una evaluación de constexpr." + + #: c-family/c.opt:1425 + msgid "Emit debug annotations during preprocessing." +@@ -7431,7 +7356,7 @@ + + #: c-family/c.opt:1441 + msgid "Print hierarchical comparisons when template types are mismatched." +-msgstr "" ++msgstr "Imprime comparaciones jerárquicas cuando los tipos de plantilla no coinciden." + + #: c-family/c.opt:1445 + msgid "Preprocess directives only." +@@ -7443,7 +7368,7 @@ + + #: c-family/c.opt:1453 + msgid "-fmacro-prefix-map== Map one directory name to another in __FILE__, __BASE_FILE__, and __builtin_FILE()." +-msgstr "" ++msgstr "-fmacro-prefix-map== Asocia un nombre de directorio a otro en __FILE__, __BASE_FILE__, y __builtin_FILE()." + + #: c-family/c.opt:1457 + msgid "Write all declarations as Ada code transitively." +@@ -7851,16 +7776,12 @@ + + #: c-family/c.opt:2017 c-family/c.opt:2021 c-family/c.opt:2139 + #: c-family/c.opt:2143 +-#, fuzzy +-#| msgid "Conform to the ISO 2017 C standard (expected to be published in 2018)." + msgid "Conform to the ISO 2017 C standard (published in 2018)." +-msgstr "Conforma al estándar ISO 2017 C (publicación prevista en 2018)." ++msgstr "Conforma al estándar ISO 2017 C (publicado en 2018)." + + #: c-family/c.opt:2025 +-#, fuzzy +-#| msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)" + msgid "Conform to the ISO 202X C standard draft (experimental and incomplete support)." +-msgstr "Conforma al estándar ISO 2011 C (soporte experimental e incompleto)" ++msgstr "Conforma al borrador del estándar ISO 202X C (soporte experimental e incompleto)" + + #: c-family/c.opt:2029 c-family/c.opt:2033 c-family/c.opt:2119 + msgid "Conform to the ISO 1990 C standard." +@@ -7915,16 +7836,12 @@ + msgstr "Obsoleto en favor de -std=gnu11." + + #: c-family/c.opt:2091 c-family/c.opt:2095 +-#, fuzzy +-#| msgid "Conform to the ISO 2017 C standard (expected to be published in 2018) with GNU extensions." + msgid "Conform to the ISO 2017 C standard (published in 2018) with GNU extensions." +-msgstr "Conforma al estándar ISO 2017 C (publicación prevista en 2018) con extensiones GNU." ++msgstr "Conforma al estándar ISO 2017 C (publicado en 2018) con extensiones GNU." + + #: c-family/c.opt:2099 +-#, fuzzy +-#| msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)" + msgid "Conform to the ISO 202X C standard draft with GNU extensions (experimental and incomplete support)." +-msgstr "Conforma al estándar ISO 2011 C con extensiones GNU (soporte experimental e incompleto)" ++msgstr "Conforma al borrador del estándar ISO 202X C con extensiones GNU (soporte experimental e incompleto)." + + #: c-family/c.opt:2103 c-family/c.opt:2107 + msgid "Conform to the ISO 1990 C standard with GNU extensions." +@@ -7992,19 +7909,15 @@ + + #: d/lang.opt:51 + msgid "-Hd

\tWrite D interface files to directory ." +-msgstr "" ++msgstr "-Hd \tEscribe los ficheros de interfaz de D en el directorio ." + + #: d/lang.opt:55 +-#, fuzzy +-#| msgid "-o \tPlace output into ." + msgid "-Hf \tWrite D interface to ." +-msgstr "-o \tColoca la salida en el ." ++msgstr "-Hf \tEscribe el interfaz de D en el ." + + #: d/lang.opt:123 +-#, fuzzy +-#| msgid "Warn about casts which discard qualifiers." + msgid "Warn about casts that will produce a null result." +-msgstr "Avisa sobre conversiones que descartan calificadores." ++msgstr "Avisa sobre conversiones que darán resultado nulo." + + #: d/lang.opt:139 + msgid "Warn from speculative compiles such as __traits(compiles)." +@@ -8011,24 +7924,20 @@ + msgstr "" + + #: d/lang.opt:151 +-#, fuzzy +-#| msgid "Generate H8S code." + msgid "Generate JSON file." +-msgstr "Genera código H8S." ++msgstr "Genera fichero JSON." + + #: d/lang.opt:155 +-#, fuzzy +-#| msgid "-MF \tWrite dependency output to the given file." + msgid "-Xf \tWrite JSON output to the given ." +-msgstr "-MF \tEscribe la salida de dependencias al fichero dado." ++msgstr "-Xf \tEscribe salida JSON al dado." + + #: d/lang.opt:159 + msgid "Debug library to use instead of phobos." +-msgstr "" ++msgstr "Biblioteca de depuración que se utilizará en lugar de phobos." + + #: d/lang.opt:163 + msgid "Default library to use instead of phobos." +-msgstr "" ++msgstr "Biblioteca predefinida que se utilizará en lugar de phobos." + + #: d/lang.opt:167 + msgid "Do link the standard D startup files in the compilation." +@@ -8035,56 +7944,44 @@ + msgstr "" + + #: d/lang.opt:174 +-#, fuzzy +-#| msgid "Generate code for built-in atomic operations." + msgid "Generate code for all template instantiations." +-msgstr "Genera código para operaciones atómicas internas." ++msgstr "Genera código para todas las instanciaciones de plantillas." + + #: d/lang.opt:178 +-#, fuzzy +-#| msgid "Generate code for GNU assembler (gas)." + msgid "Generate code for assert contracts." +-msgstr "Genera código para el ensamblador de GNU (gas)." ++msgstr "Genera código para contratos de assert." + + #: d/lang.opt:186 + msgid "-fbounds-check=[on|safeonly|off]\tTurn array bounds checks on, in @safe code only, or off." +-msgstr "" ++msgstr "-fbounds-check=[on|safeonly|off]\tActiva o desactiva las comprobaciones de límites de matrices, solo en código @safe." + + #: d/lang.opt:210 +-#, fuzzy +-#| msgid "incompatible index mode" + msgid "Compile in debug code." +-msgstr "modo de índices incompatibles" ++msgstr "Compila en código de depuración." + + #: d/lang.opt:214 + msgid "-fdebug=\tCompile in debug code, code <= , or code identified by ." +-msgstr "" ++msgstr "-fdebug=\tCompila en código de depuración, código <= , o código identificado por ." + + #: d/lang.opt:218 +-#, fuzzy +-#| msgid "Generate norm instruction." + msgid "Generate documentation." +-msgstr "Genera instrucciones norm." ++msgstr "Genera documentación." + + #: d/lang.opt:222 + msgid "-fdoc-dir=\tWrite documentation file to directory ." +-msgstr "" ++msgstr "-fdoc-dir=\tEscribe el fichero de documentación en el directorio ." + + #: d/lang.opt:226 +-#, fuzzy +-#| msgid "-o \tPlace output into ." + msgid "-fdoc-file=\tWrite documentation to ." +-msgstr "-o \tColoca la salida en el ." ++msgstr "-fdoc-file=\tEscribe la documentación en ." + + #: d/lang.opt:230 + msgid "-fdoc-inc=\tInclude a Ddoc macro ." +-msgstr "" ++msgstr "-fdoc-inc=\tIncluye un de macros Ddoc." + + #: d/lang.opt:234 +-#, fuzzy +-#| msgid "Do not assume that standard C libraries and \"main\" exist." + msgid "Assume that standard D runtime libraries and \"D main\" exist." +-msgstr "No asume que existen las bibliotecas C estándar y \"main\"." ++msgstr "Asume que existen bibliotecas D estándar de tiempo de ejecución y \"D main\"." + + #: d/lang.opt:238 + #, fuzzy +@@ -8094,7 +7991,7 @@ + + #: d/lang.opt:242 + msgid "Ignore unsupported pragmas." +-msgstr "" ++msgstr "Hace caso omiso de pragmas no admitidas." + + #: d/lang.opt:246 + #, fuzzy +@@ -8104,11 +8001,11 @@ + + #: d/lang.opt:250 + msgid "Generate a default D main() function when compiling." +-msgstr "" ++msgstr "Genera una función main() de D predefinida al compilar." + + #: d/lang.opt:254 + msgid "-fmodule-file==\tuse as source file for ." +-msgstr "" ++msgstr "-fmodule-file==\tutiliza como fichero fuente para ." + + #: d/lang.opt:258 + #, fuzzy +@@ -8118,19 +8015,15 @@ + + #: d/lang.opt:262 + msgid "Process all modules specified on the command line, but only generate code for the module specified by the argument." +-msgstr "" ++msgstr "Procesa todos los módulos especificados en la línea de órdenes, pero solo genera código para el módulo especificado por el argumento." + + #: d/lang.opt:266 +-#, fuzzy +-#| msgid "Generate code for built-in atomic operations." + msgid "Generate code for postcondition contracts." +-msgstr "Genera código para operaciones atómicas internas." ++msgstr "Genera código para contratos de postcondiciones." + + #: d/lang.opt:270 +-#, fuzzy +-#| msgid "Generate code for built-in atomic operations." + msgid "Generate code for precondition contracts." +-msgstr "Genera código para operaciones atómicas internas." ++msgstr "Genera código para contratos de precondiciones." + + #: d/lang.opt:274 + #, fuzzy +@@ -8139,14 +8032,12 @@ + msgstr "Muestra la versión del compilador." + + #: d/lang.opt:282 +-#, fuzzy +-#| msgid "Generate code for the supervisor mode (default)." + msgid "Generate code for switches without a default case." +-msgstr "Genera código para el modo supervisor (predeterminado)." ++msgstr "Genera código para las opciones sin caso predefinido." + + #: d/lang.opt:286 + msgid "List information on all language changes." +-msgstr "" ++msgstr "Muestra información sobre todos los cambios del lenguaje." + + #: d/lang.opt:290 + msgid "Give deprecation messages about -ftransition=import anomalies." +@@ -8154,7 +8045,7 @@ + + #: d/lang.opt:294 + msgid "List all usages of complex or imaginary types." +-msgstr "" ++msgstr "Enumera todos los usos de los tipos complejo o imaginario." + + #: d/lang.opt:298 + msgid "Implement DIP1000: Scoped pointers (experimental)." +@@ -8166,11 +8057,11 @@ + + #: d/lang.opt:306 + msgid "List all non-mutable fields which occupy an object instance." +-msgstr "" ++msgstr "Enumera todos los campos no mutables que ocupan la instancia de un objeto." + + #: d/lang.opt:310 + msgid "Revert to single phase name lookup." +-msgstr "" ++msgstr "Revierta a búsqueda de nombres de una sola fase." + + #: d/lang.opt:314 + msgid "List all hidden GC allocations." +@@ -8177,10 +8068,8 @@ + msgstr "" + + #: d/lang.opt:318 +-#, fuzzy +-#| msgid "Use given thread-local storage dialect." + msgid "List all variables going into thread local storage." +-msgstr "Usa el dialecto de almacenamiento thread-local dado." ++msgstr "Enumera todas las variables que van al almacenamiento local del hilo." + + #: d/lang.opt:322 + #, fuzzy +@@ -8193,18 +8082,16 @@ + msgstr "" + + #: d/lang.opt:350 +-#, fuzzy +-#| msgid "Do not assume that standard C libraries and \"main\" exist." + msgid "Do not link the standard D library in the compilation." +-msgstr "No asume que existen las bibliotecas C estándar y \"main\"." ++msgstr "No enlaza la biblioteca D estándar en la compilación." + + #: d/lang.opt:358 + msgid "Link the standard D library statically in the compilation." +-msgstr "" ++msgstr "Enlaza la biblioteca D estándar estáticamente en la compilación." + + #: d/lang.opt:362 + msgid "Link the standard D library dynamically in the compilation." +-msgstr "" ++msgstr "Enlaza la biblioteca D estándar dinámicamente en la compilación." + + #: go/lang.opt:42 + msgid "-fgo-c-header=\tWrite Go struct definitions to file as C code." +@@ -8271,16 +8158,12 @@ + msgstr "-mpointer-size=[no,32,short,64,long]\tEstablece el tamaña predeterminado de los punteros." + + #: config/mcore/mcore.opt:23 +-#, fuzzy +-#| msgid "Generate code for the M*Core M210" + msgid "Generate code for the M*Core M210." +-msgstr "Genera código para el M*Core M210" ++msgstr "Genera código para el M*Core M210." + + #: config/mcore/mcore.opt:27 +-#, fuzzy +-#| msgid "Generate code for the M*Core M340" + msgid "Generate code for the M*Core M340." +-msgstr "Genera código para el M*Core M340" ++msgstr "Genera código para el M*Core M340." + + #: config/mcore/mcore.opt:31 + msgid "Force functions to be aligned to a 4 byte boundary." +@@ -8650,7 +8533,7 @@ + + #: config/m68k/m68k.opt:147 + msgid "Use 32-bit offsets in jump tables rather than 16-bit offsets." +-msgstr "" ++msgstr "Usa desplazamientos de 32 bits en las tablas de saltos en lugar de desplazamientos de 16 bits." + + #: config/m68k/m68k.opt:151 + msgid "Do not use the bit-field instructions." +@@ -8761,11 +8644,11 @@ + + #: config/riscv/riscv.opt:114 + msgid "Take advantage of linker relaxations to reduce the number of instructions required to materialize symbol addresses." +-msgstr "" ++msgstr "Aprovecha los descansos del enlazador para reducir el número de instrucciones requeridas para materializar direcciones de símbolos." + + #: config/riscv/riscv.opt:133 + msgid "Emit RISC-V ELF attribute." +-msgstr "" ++msgstr "Emite el atributo ELF de RISC-V." + + #: config/m32c/m32c.opt:23 + msgid "-msim\tUse simulator runtime." +Index: gcc/po/ChangeLog +=================================================================== +--- a/src/gcc/po/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/po/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,23 @@ ++2019-10-11 Joseph Myers ++ ++ * fi.po: Update. ++ ++2019-09-30 Joseph Myers ++ ++ * es.po: Update. ++ ++2019-08-31 Joseph Myers ++ ++ * es.po: Update. ++ ++2019-08-28 Joseph Myers ++ ++ * es.po: Update. ++ ++2019-08-23 Joseph Myers ++ ++ * zh_CN.po: Update. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: gcc/po/fi.po +=================================================================== +--- a/src/gcc/po/fi.po (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/po/fi.po (.../branches/gcc-9-branch) +@@ -33,7 +33,7 @@ + "Project-Id-Version: gcc 9.1.0\n" + "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" + "POT-Creation-Date: 2019-05-02 20:28+0000\n" +-"PO-Revision-Date: 2019-05-29 18:58+0300\n" ++"PO-Revision-Date: 2019-10-11 20:03+0300\n" + "Last-Translator: Lauri Nurmi \n" + "Language-Team: Finnish \n" + "Language: fi\n" +@@ -67,9 +67,9 @@ + msgstr "lähdetiedostoa %s ei löydy" + + #: collect2.c:1632 +-#, fuzzy, c-format ++#, c-format + msgid "collect2 version %s\n" +-msgstr "gcc-versio %s %s\n" ++msgstr "collect2-versio %s\n" + + #: collect2.c:1737 + #, c-format +@@ -118,9 +118,9 @@ + msgstr "const-/kopioinnin-eteneminen poistettu käytöstä" + + #: diagnostic.c:145 +-#, fuzzy, c-format ++#, c-format + msgid "%s: all warnings being treated as errors" +-msgstr "Käsittele kaikki varoitukset virheinä" ++msgstr "%s: kaikki varoitukset käsitellään virheinä" + + #: diagnostic.c:150 + #, c-format +@@ -6142,9 +6142,8 @@ + msgstr "gfortran ei tue valitsinta -E ilman valitsinta -cpp" + + #: objc/lang-specs.h:30 objc/lang-specs.h:41 +-#, fuzzy + msgid "GNU Objective C no longer supports traditional compilation" +-msgstr "GCC ei enää tue valitsinta -traditional ilman valitsinta -E" ++msgstr "GNU Objective C ei enää tue perinteistä kääntämistä" + + #: objc/lang-specs.h:55 + msgid "objc-cpp-output is deprecated; please use objective-c-cpp-output instead" +@@ -6688,9 +6687,8 @@ + msgstr "Noudata ISO Fortran 95 -standardia" + + #: fortran/lang.opt:827 +-#, fuzzy + msgid "Conform to nothing in particular." +-msgstr "Älä noudata mitään erityisesti" ++msgstr "Älä noudata mitään erityisesti." + + #: fortran/lang.opt:831 + msgid "Accept extensions to support legacy code." +@@ -6732,24 +6730,20 @@ + msgstr "-isystem \tLisää järjestelmän include-polun alkuun" + + #: c-family/c.opt:217 +-#, fuzzy + msgid "Generate make dependencies." +-msgstr "Luo make-riippuvuudet" ++msgstr "Luo make-riippuvuudet." + + #: c-family/c.opt:221 +-#, fuzzy + msgid "Generate make dependencies and compile." +-msgstr "Luo make-riippuvuudet ja käännä" ++msgstr "Luo make-riippuvuudet ja käännä." + + #: c-family/c.opt:225 +-#, fuzzy + msgid "-MF \tWrite dependency output to the given file." +-msgstr "Kirjoita riippuvuustuloste annettuun tiedostoon" ++msgstr "-MF \tKirjoita riippuvuustuloste annettuun tiedostoon." + + #: c-family/c.opt:229 +-#, fuzzy + msgid "Treat missing header files as generated files." +-msgstr "Käsittele puuttuvia otsikkotiedostoja luotavina tiedostoina" ++msgstr "Käsittele puuttuvia otsikkotiedostoja luotavina tiedostoina." + + #: c-family/c.opt:233 + msgid "Like -M but ignore system header files." +@@ -6773,9 +6767,8 @@ + msgstr "" + + #: c-family/c.opt:253 +-#, fuzzy + msgid "Do not generate #line directives." +-msgstr "Älä luo #line-direktiivejä" ++msgstr "Älä luo #line-direktiivejä." + + #: c-family/c.opt:257 + #, fuzzy +@@ -6817,11 +6810,9 @@ + msgid "Enable most warning messages." + msgstr "Subject: Fetchmailin varoitus liian suuresta viestistä" + +-# vähän fuzzy + #: c-family/c.opt:308 +-#, fuzzy + msgid "Warn on any use of alloca." +-msgstr "Varoita pragmain väärästä käytöstä." ++msgstr "Varoita kaikesta allocan käytöstä." + + #: c-family/c.opt:312 + #, fuzzy +@@ -6931,9 +6922,8 @@ + #: c-family/c.opt:1369 c-family/c.opt:1373 c-family/c.opt:1377 + #: c-family/c.opt:1381 c-family/c.opt:1385 c-family/c.opt:1389 + #: config/i386/i386.opt:967 +-#, fuzzy + msgid "Deprecated in GCC 9. This switch has no effect." +-msgstr "Vanhentunut. Tämä valitsin ei vaikuta mihinkään." ++msgstr "Vanhentunut GCC 9:ssä. Tämä valitsin ei vaikuta mihinkään." + + #: c-family/c.opt:429 + msgid "Warn about variables that might be changed by \"longjmp\" or \"vfork\"." +@@ -6964,9 +6954,8 @@ + msgstr "Varoita kun kaikki muodostimet ja hajottimet ovat yksityisiä." + + #: c-family/c.opt:461 +-#, fuzzy + msgid "Warn about dangling else." +-msgstr "Varoita implisiittisistä funktioesittelyistä." ++msgstr "Varoita orvosta elsestä." + + #: c-family/c.opt:465 + msgid "Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage." +@@ -7119,9 +7108,8 @@ + msgstr "Varoita tyyppimääreiden huomiotta jättämisestä." + + #: c-family/c.opt:622 +-#, fuzzy + msgid "Warn whenever attributes are ignored." +-msgstr "Varoita tyyppimääreiden huomiotta jättämisestä." ++msgstr "Varoita attribuuttien huomiotta jättämisestä." + + #: c-family/c.opt:626 + #, fuzzy +@@ -7196,9 +7184,8 @@ + msgstr "" + + #: c-family/c.opt:701 +-#, fuzzy + msgid "Warn when a logical operator is suspiciously always evaluating to true or false." +-msgstr "Varoita vertailusta, joka on aina tosi tai aina epätosi." ++msgstr "Varoita, kun looginen operaattori on aina tosi tai aina epätosi." + + #: c-family/c.opt:705 + msgid "Warn when logical not is used on the left hand side operand of a comparison." +@@ -7429,9 +7416,8 @@ + msgstr "Varoita pakatuista bittikentistä, joiden siirrososoite vaihtui GCC 4.4:ssä" + + #: c-family/c.opt:955 +-#, fuzzy + msgid "Warn about possibly missing parentheses." +-msgstr "Varoita mahdollisesti puuttuvista sulkeista" ++msgstr "Varoita mahdollisesti puuttuvista sulkeista." + + #: c-family/c.opt:963 + msgid "Warn about calling std::move on a local object in a return statement preventing copy elision." +@@ -7975,9 +7961,8 @@ + msgstr "Luokittelematon lause IF-lauseessa kohdassa %C" + + #: c-family/c.opt:1681 +-#, fuzzy + msgid "Recognize C++ keywords like \"compl\" and \"xor\"." +-msgstr "Tunnista C++:n avainsanat kuten ”compl” ja ”xor”" ++msgstr "Tunnista C++:n avainsanat kuten ”compl” ja ”xor”." + + #: c-family/c.opt:1692 + msgid "Look for and use PCH files even when preprocessing." +@@ -8732,9 +8717,8 @@ + msgstr "" + + #: config/mcore/mcore.opt:75 +-#, fuzzy + msgid "Always treat bitfields as int-sized." +-msgstr "Käsittele bittikenttiä aina int-kokoisina" ++msgstr "Käsittele bittikenttiä aina int-kokoisina." + + #: config/linux-android.opt:23 + msgid "Generate code for the Android platform." +@@ -19730,7 +19714,7 @@ + #: cgraphunit.c:976 c/c-decl.c:11507 + #, fuzzy, gcc-internal-format + msgid "%q+F used but never defined" +-msgstr "nimike %q+D määritelty mutta käytettämättä" ++msgstr "nimike %q+D määritelty mutta käyttämättä" + + #: cgraphunit.c:978 c/c-decl.c:11517 + #, fuzzy, gcc-internal-format +@@ -29294,7 +29278,7 @@ + #: c-family/c-warn.c:2021 + #, gcc-internal-format + msgid "label %q+D defined but not used" +-msgstr "nimike %q+D määritelty mutta käytettämättä" ++msgstr "nimike %q+D määritelty mutta käyttämättä" + + #: c-family/c-warn.c:2023 + #, gcc-internal-format +@@ -68642,7 +68626,7 @@ + + #, fuzzy + #~ msgid "variable %q+D set but not used" +-#~ msgstr "nimike %q+D määritelty mutta käytettämättä" ++#~ msgstr "nimike %q+D määritelty mutta käyttämättä" + + #~ msgid "jump to label %q+D" + #~ msgstr "hyppy nimiöön %q+D" +@@ -68659,7 +68643,7 @@ + + #, fuzzy + #~ msgid "parameter %q+D set but not used" +-#~ msgstr "nimike %q+D määritelty mutta käytettämättä" ++#~ msgstr "nimike %q+D määritelty mutta käyttämättä" + + #~ msgid "%q+D declared here" + #~ msgstr "%q+D esitelty täällä" +Index: gcc/po/zh_CN.po +=================================================================== +--- a/src/gcc/po/zh_CN.po (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/po/zh_CN.po (.../branches/gcc-9-branch) +@@ -4,6 +4,7 @@ + # Meng Jie , 2005-2014. + # Jeff Bai , 2015. + # Mingye Wang (Arthur2e5) , 2015, 2016. ++# Boyuan Yang <073plan@gmail.com>, 2019. + # + # Fellow translatiors: + # Many of the fuzzy strings are caused by an addition of a period (".") +@@ -30,11 +31,11 @@ + # + msgid "" + msgstr "" +-"Project-Id-Version: gcc 6.1.0\n" ++"Project-Id-Version: gcc 9.1.0\n" + "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" + "POT-Creation-Date: 2019-05-02 20:28+0000\n" +-"PO-Revision-Date: 2016-04-30 17:13-0400\n" +-"Last-Translator: Mingye Wang (Arthur2e5) \n" ++"PO-Revision-Date: 2019-08-19 15:13-0400\n" ++"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" + "Language-Team: Chinese (simplified) \n" + "Language: zh_CN\n" + "MIME-Version: 1.0\n" +@@ -41,9 +42,8 @@ + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "X-Bugs: Report translation errors to the Language-Team address.\n" +-"X-Poedit-Basepath: C:/MSYS/source/gcc-4.6.0/gcc\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Poedit 1.8.7\n" ++"X-Generator: Poedit 2.2.3\n" + + #: cfgrtl.c:2705 + msgid "flow control insn inside a basic block" +@@ -478,12 +478,10 @@ + msgstr " -o <文件> 输出到 <文件>。\n" + + #: gcc.c:3597 +-#, fuzzy +-#| msgid " -pie Create a position independent executable.\n" + msgid "" + " -pie Create a dynamically linked position independent\n" + " executable.\n" +-msgstr " -pie 生成位置无关可执行文件。\n" ++msgstr " -pie 生成动态链接的位置无关可执行文件。\n" + + #: gcc.c:3599 + msgid " -shared Create a shared library.\n" +@@ -668,10 +666,9 @@ + msgstr " rewrite [选项] <目录> 覆写测试覆盖率文件内容\n" + + #: gcov-tool.c:270 +-#, fuzzy, c-format +-#| msgid " -n, --normalize Normalize the profile\n" ++#, c-format + msgid " -n, --normalize Normalize the profile\n" +-msgstr " -n, --normalize 归一化配置\n" ++msgstr " -n, --normalize 归一化配置\n" + + #: gcov-tool.c:272 + #, c-format +@@ -774,10 +771,9 @@ + "%s。\n" + + #: gcov-tool.c:528 +-#, fuzzy, c-format +-#| msgid "Copyright %s 2014-2016 Free Software Foundation, Inc.\n" ++#, c-format + msgid "Copyright %s 2019 Free Software Foundation, Inc.\n" +-msgstr "版权所有 %s 2014-2015 自由软件基金会。\n" ++msgstr "版权所有 %s 2019 自由软件基金会。\n" + + #: gcov-tool.c:531 gcov.c:925 + #, c-format +@@ -791,15 +787,12 @@ + "包括没有适销性和某一专用目的下的适用性担保。\n" + + #: gcov.c:885 +-#, fuzzy, c-format +-#| msgid "" +-#| "Usage: gcov [OPTION]... SOURCE|OBJ...\n" +-#| "\n" ++#, c-format + msgid "" + "Usage: gcov [OPTION...] SOURCE|OBJ...\n" + "\n" + msgstr "" +-"用法:gconv [选项]... 源文件|对象文件...\n" ++"用法:gconv [选项...] 源文件|对象文件...\n" + "\n" + + #: gcov.c:886 +@@ -844,22 +837,19 @@ + msgstr " -h, --help 打印此帮助并退出\n" + + #: gcov.c:894 +-#, fuzzy, c-format +-#| msgid " -n, --no-output Do not create an output file\n" ++#, c-format + msgid " -i, --json-format Output JSON intermediate format into .gcov.json.gz file\n" +-msgstr " -n, --no-output 不创建输出文件\n" ++msgstr " -i, --json-format 以 JSON 中间格式输出至 .gcov.json.gz 文件\n" + + #: gcov.c:895 +-#, fuzzy, c-format +-#| msgid " -m, --demangled-names Output demangled function names\n" ++#, c-format + msgid " -j, --human-readable Output human readable numbers\n" +-msgstr " -m, --demangled-names 输出解码后的函数名\n" ++msgstr " -j, --human-readable 输出人类可读的数字\n" + + #: gcov.c:896 +-#, fuzzy, c-format +-#| msgid " -n, --no-output Do not create an output file\n" ++#, c-format + msgid " -k, --use-colors Emit colored output\n" +-msgstr " -n, --no-output 不创建输出文件\n" ++msgstr " -k, --use-colors 使用带颜色的输出\n" + + #: gcov.c:897 + #, c-format +@@ -904,10 +894,9 @@ + msgstr " -s, --source-prefix 目录 要略去的来源前缀\n" + + #: gcov.c:906 +-#, fuzzy, c-format +-#| msgid " -n, --no-output Do not create an output file\n" ++#, c-format + msgid " -t, --stdout Output to stdout instead of a file\n" +-msgstr " -n, --no-output 不创建输出文件\n" ++msgstr " -t, --stdout 输出至标准输出而非文件\n" + + #: gcov.c:907 + #, c-format +@@ -920,10 +909,9 @@ + msgstr " -v, --version 打印版本号并退出\n" + + #: gcov.c:909 +-#, fuzzy, c-format +-#| msgid " -v, --verbose Verbose mode\n" ++#, c-format + msgid " -w, --verbose Print verbose informations\n" +-msgstr " -v, --verbo se 输出更多信息\n" ++msgstr " -w, --verbose 输出详细信息\n" + + #: gcov.c:910 + #, fuzzy, c-format +@@ -937,10 +925,9 @@ + msgstr "gcov %s%s\n" + + #: gcov.c:1250 +-#, fuzzy, c-format +-#| msgid "Treat the input file as already preprocessed" ++#, c-format + msgid "'%s' file is already processed\n" +-msgstr "将输入文件当作已经预处理过的" ++msgstr "" + + #: gcov.c:1364 + #, c-format +@@ -968,16 +955,14 @@ + msgstr "\n" + + #: gcov.c:1489 +-#, fuzzy, c-format +-#| msgid "%s: Cannot open output file: %s\n" ++#, c-format + msgid "Cannot open JSON output file %s\n" +-msgstr "%s:无法打开输出文件:%s\n" ++msgstr "无法打开 JSON 输出文件 %s\n" + + #: gcov.c:1497 +-#, fuzzy, c-format +-#| msgid "Error writing output file '%s'\n" ++#, c-format + msgid "Error writing JSON output file %s\n" +-msgstr "写入到输出文件 '%s' 时出错\n" ++msgstr "写入到 JSON 输出文件 %s 时出错\n" + + #: gcov.c:1664 + #, c-format +@@ -3473,8 +3458,9 @@ + msgstr "无效的 move 指令:" + + #: config/avr/avr.c:6279 ++#, fuzzy + msgid "bad shift insn:" +-msgstr "错误的 shift 指令" ++msgstr "错误的 shift 指令:" + + #: config/avr/avr.c:6387 config/avr/avr.c:6868 config/avr/avr.c:7283 + msgid "internal compiler error. Incorrect shift:" +@@ -4204,10 +4190,9 @@ + msgstr "无效 %%q 值" + + #: config/rs6000/rs6000.c:21141 +-#, fuzzy, c-format +-#| msgid "invalid %%J value" ++#, c-format + msgid "invalid %%t value" +-msgstr "无效 %%J 值" ++msgstr "无效 %%t 值" + + #: config/rs6000/rs6000.c:21158 + #, c-format +@@ -4225,21 +4210,19 @@ + msgstr "无效 %%v 值" + + #: config/rs6000/rs6000.c:21234 +-#, fuzzy, c-format +-#| msgid "invalid %%J value" ++#, c-format + msgid "invalid %%V value" +-msgstr "无效 %%J 值" ++msgstr "无效 %%V 值" + + #: config/rs6000/rs6000.c:21251 config/xtensa/xtensa.c:2439 + #, c-format + msgid "invalid %%x value" +-msgstr "无效的 %%x 值" ++msgstr "无效 %%x 值" + + #: config/rs6000/rs6000.c:21308 +-#, fuzzy, c-format +-#| msgid "invalid %%J value" ++#, c-format + msgid "invalid %%z value" +-msgstr "无效 %%J 值" ++msgstr "无效 %%z 值" + + #: config/rs6000/rs6000.c:21377 + #, c-format +@@ -4626,7 +4609,7 @@ + + #: c/c-objc-common.c:213 + msgid "({anonymous})" +-msgstr "{{匿名}}" ++msgstr "({匿名})" + + #. If we have + #. declaration-specifiers declarator decl-specs +@@ -4884,7 +4867,7 @@ + + #: cp/error.c:1186 + msgid " " +-msgstr "<返回值>" ++msgstr "<返回值> " + + #: cp/error.c:1201 + msgid "{anonymous}" +@@ -5196,9 +5179,8 @@ + msgstr "‘%s’和‘%s’用作内建函数‘%s’的参数" + + #: fortran/error.c:853 +-#, fuzzy + msgid "Fortran 2018 deleted feature:" +-msgstr "遵循 ISO Fortran 2008 标准" ++msgstr "Fortran 2018 删除的特性:" + + #: fortran/error.c:855 + #, fuzzy +@@ -5207,7 +5189,7 @@ + + #: fortran/error.c:857 + msgid "Fortran 2018:" +-msgstr "" ++msgstr "Fortran 2018:" + + #: fortran/error.c:859 + #, fuzzy +@@ -5215,9 +5197,8 @@ + msgstr "遵循 ISO Fortran 2008 标准" + + #: fortran/error.c:865 +-#, fuzzy + msgid "GNU Extension:" +-msgstr "使用 PE 格式的 GNU 扩展来对齐 common 数据" ++msgstr "GNU 扩展:" + + #: fortran/error.c:867 + #, fuzzy +@@ -5230,9 +5211,8 @@ + msgstr "对声明中的过时用法给出警告" + + #: fortran/error.c:871 +-#, fuzzy + msgid "Deleted feature:" +-msgstr "%L处的 H 格式限定符已在 Fortran 95 中被删除" ++msgstr "删除的特性:" + + #: fortran/expr.c:3632 + msgid "array assignment" +@@ -5919,10 +5899,8 @@ + msgstr "%qE属性在此平台上不受支持" + + #: config/darwin.h:170 +-#, fuzzy +-#| msgid "-fpic is not supported" + msgid "rdynamic is not supported" +-msgstr "不支持 -fpic" ++msgstr "不支持 rdynamic" + + #: config/darwin.h:258 + msgid "-current_version only allowed with -dynamiclib" +@@ -6307,16 +6285,12 @@ + msgstr "对长度为 0 的格式字符串给出警告" + + #: fortran/lang.opt:354 +-#, fuzzy +-#| msgid "Enable preprocessing" + msgid "Enable preprocessing." +-msgstr "启用预处理" ++msgstr "启用预处理。" + + #: fortran/lang.opt:362 +-#, fuzzy +-#| msgid "Disable preprocessing" + msgid "Disable preprocessing." +-msgstr "禁用预处理" ++msgstr "禁用预处理。" + + #: fortran/lang.opt:370 + #, fuzzy +@@ -6922,10 +6896,8 @@ + msgstr "不生成 #line 指令" + + #: c-family/c.opt:257 +-#, fuzzy +-#| msgid "-U\tUndefine " + msgid "-U\tUndefine ." +-msgstr "-U<宏>\t取消定义宏" ++msgstr "-U<宏>\t取消定义<宏>。" + + #: c-family/c.opt:261 + #, fuzzy +@@ -7116,10 +7088,8 @@ + msgstr "对可能嵌套的注释和长度超过一个物理行长的 C++ 注释给出警告" + + #: c-family/c.opt:437 +-#, fuzzy +-#| msgid "Synonym for -Wcomment" + msgid "Synonym for -Wcomment." +-msgstr "-Wcomment 的同义词" ++msgstr "-Wcomment 的同义词。" + + #: c-family/c.opt:441 + #, fuzzy +@@ -8054,16 +8024,12 @@ + + #: c-family/c.opt:1282 c-family/c.opt:1530 c-family/c.opt:1854 + #: c-family/c.opt:1858 c-family/c.opt:1874 +-#, fuzzy +-#| msgid "No longer supported" + msgid "No longer supported." +-msgstr "不再受支持" ++msgstr "不再支持。" + + #: c-family/c.opt:1286 +-#, fuzzy +-#| msgid "Recognize the \"asm\" keyword" + msgid "Recognize the \"asm\" keyword." +-msgstr "识别“asm”关键字" ++msgstr "识别“asm”关键字。" + + #: c-family/c.opt:1294 + #, fuzzy +@@ -8197,10 +8163,8 @@ + msgstr "不假定标准 C 库和“main”存在" + + #: c-family/c.opt:1505 +-#, fuzzy +-#| msgid "Recognize GNU-defined keywords" + msgid "Recognize GNU-defined keywords." +-msgstr "识别 GNU 定义的关键字" ++msgstr "识别 GNU 定义的关键字。" + + #: c-family/c.opt:1509 + #, fuzzy +@@ -8495,10 +8459,8 @@ + msgstr "未指定“signed”或“unsigned”时默认位段为无符号的" + + #: c-family/c.opt:1834 ada/gcc-interface/lang.opt:85 +-#, fuzzy +-#| msgid "Make \"char\" unsigned by default" + msgid "Make \"char\" unsigned by default." +-msgstr "使“char”类型默认为无符号" ++msgstr "使“char”类型默认为无符号。" + + #: c-family/c.opt:1838 + #, fuzzy +@@ -8759,14 +8721,12 @@ + msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展" + + #: c-family/c.opt:2059 +-#, fuzzy + msgid "Deprecated in favor of -std=gnu++11." +-msgstr "已弃用,请改用 -std=gnu99" ++msgstr "已弃用,请改用 -std=gnu++11。" + + #: c-family/c.opt:2063 +-#, fuzzy + msgid "Deprecated in favor of -std=gnu++14." +-msgstr "已弃用,请改用 -std=gnu99" ++msgstr "已弃用,请改用 -std=gnu++14。" + + #: c-family/c.opt:2067 + #, fuzzy +@@ -8775,9 +8735,8 @@ + msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展" + + #: c-family/c.opt:2071 +-#, fuzzy + msgid "Deprecated in favor of -std=gnu++17." +-msgstr "已弃用,请改用 -std=gnu99" ++msgstr "已弃用,请改用 -std=gnu+17。" + + #: c-family/c.opt:2075 + #, fuzzy +@@ -8798,9 +8757,8 @@ + msgstr "遵循 ISO 1990 C 标准,也支持 GNU 扩展" + + #: c-family/c.opt:2087 +-#, fuzzy + msgid "Deprecated in favor of -std=gnu11." +-msgstr "已弃用,请改用 -std=gnu99" ++msgstr "已弃用,请改用 -std=gnu11。" + + #: c-family/c.opt:2091 c-family/c.opt:2095 + #, fuzzy +@@ -8845,16 +8803,12 @@ + msgstr "已弃用,为 -std=iso9899:1999 所取代" + + #: c-family/c.opt:2150 +-#, fuzzy +-#| msgid "Enable traditional preprocessing" + msgid "Enable traditional preprocessing." +-msgstr "启用传统预处理" ++msgstr "启用传统预处理。" + + #: c-family/c.opt:2154 +-#, fuzzy +-#| msgid "-trigraphs\tSupport ISO C trigraphs" + msgid "-trigraphs\tSupport ISO C trigraphs." +-msgstr "-trigraphs\t支持 ISO C 三元符" ++msgstr "-trigraphs\t支持 ISO C 三元符。" + + #: c-family/c.opt:2158 + #, fuzzy +@@ -9004,7 +8958,7 @@ + + #: d/lang.opt:242 + msgid "Ignore unsupported pragmas." +-msgstr "" ++msgstr "忽略不支持的 pragma。" + + #: d/lang.opt:246 + #, fuzzy +@@ -9272,7 +9226,7 @@ + + #: config/linux-android.opt:23 + msgid "Generate code for the Android platform." +-msgstr "为 Android 操作系统生成代码。" ++msgstr "为 Android 平台生成代码。" + + #: config/mmix/mmix.opt:24 + #, fuzzy +@@ -9700,10 +9654,8 @@ + msgstr "为 ColdFire v4e 生成代码" + + #: config/m68k/m68k.opt:123 +-#, fuzzy +-#| msgid "Specify the target CPU" + msgid "Specify the target CPU." +-msgstr "选择目标 CPU" ++msgstr "指定目标 CPU。" + + #: config/m68k/m68k.opt:127 + #, fuzzy +@@ -11831,10 +11783,8 @@ + msgstr "为 TDA 区域合格的数据设置最大尺寸" + + #: config/v850/v850.opt:82 +-#, fuzzy +-#| msgid "Do not enforce strict alignment" + msgid "Do not enforce strict alignment." +-msgstr "不强制严格对齐" ++msgstr "不强制严格对齐。" + + #: config/v850/v850.opt:86 + #, fuzzy +@@ -11842,22 +11792,16 @@ + msgstr "置放跳跃式表格用于开关叙述进入.data 区段而非.code 区段" + + #: config/v850/v850.opt:93 +-#, fuzzy +-#| msgid "Compile for the v850 processor" + msgid "Compile for the v850 processor." +-msgstr "为 v850 处理器编译" ++msgstr "为 v850 处理器编译。" + + #: config/v850/v850.opt:97 +-#, fuzzy +-#| msgid "Compile for the v850e processor" + msgid "Compile for the v850e processor." +-msgstr "为 v850e 处理器编译" ++msgstr "为 v850e 处理器编译。" + + #: config/v850/v850.opt:101 +-#, fuzzy +-#| msgid "Compile for the v850e1 processor" + msgid "Compile for the v850e1 processor." +-msgstr "为 v850e1 处理器编译" ++msgstr "为 v850e1 处理器编译。" + + #: config/v850/v850.opt:105 + #, fuzzy +@@ -11866,21 +11810,16 @@ + msgstr "为 v850e1 的 v850es 变种编译" + + #: config/v850/v850.opt:109 +-#, fuzzy +-#| msgid "Compile for the v850e2 processor" + msgid "Compile for the v850e2 processor." +-msgstr "为 v850e2 处理器编译" ++msgstr "为 v850e2 处理器编译。" + + #: config/v850/v850.opt:113 +-#, fuzzy +-#| msgid "Compile for the v850e2v3 processor" + msgid "Compile for the v850e2v3 processor." +-msgstr "为 v850e2v3 处理器编译" ++msgstr "为 v850e2v3 处理器编译。" + + #: config/v850/v850.opt:117 +-#, fuzzy + msgid "Compile for the v850e3v5 processor." +-msgstr "为 v850e2v3 处理器编译" ++msgstr "为 v850e2v3 处理器编译。" + + #: config/v850/v850.opt:124 + #, fuzzy +@@ -11919,9 +11858,8 @@ + msgstr "启用使用 RX FPU 指令。这是默认值。" + + #: config/v850/v850.opt:155 +-#, fuzzy + msgid "Enable support for the old GCC ABI." +-msgstr "启用对巨型对象的支持" ++msgstr "启用对旧有 GCC ABI 的支持。" + + #: config/v850/v850.opt:159 + msgid "Support alignments of up to 64-bits." +@@ -11940,26 +11878,20 @@ + msgstr "支持传统多线程" + + #: config/lynx.opt:27 +-#, fuzzy +-#| msgid "Use shared libraries" + msgid "Use shared libraries." +-msgstr "使用共享库" ++msgstr "使用共享库。" + + #: config/lynx.opt:31 +-#, fuzzy +-#| msgid "Support multi-threading" + msgid "Support multi-threading." +-msgstr "支持多线程" ++msgstr "支持多线程。" + + #: config/nvptx/nvptx.opt:22 config/gcn/gcn.opt:47 +-#, fuzzy + msgid "Generate code for a 32-bit ABI." +-msgstr "生成 32 位 SHmedia 代码" ++msgstr "为 32 位 ABI 生成代码。" + + #: config/nvptx/nvptx.opt:26 config/gcn/gcn.opt:51 +-#, fuzzy + msgid "Generate code for a 64-bit ABI." +-msgstr "生成 64 位代码" ++msgstr "为 64 位 ABI 生成代码。" + + #: config/nvptx/nvptx.opt:30 + #, fuzzy +@@ -12034,9 +11966,8 @@ + msgstr "对待数据参考作为接近,far 或中。中是缺省" + + #: config/cr16/cr16.opt:42 +-#, fuzzy + msgid "Generate code for CR16C architecture." +-msgstr "为 Android 操作系统生成代码。" ++msgstr "为 CR16C 架构生成代码。" + + #: config/cr16/cr16.opt:46 + #, fuzzy +@@ -12157,22 +12088,16 @@ + msgstr "" + + #: config/m32r/m32r.opt:34 +-#, fuzzy +-#| msgid "Compile for the m32rx" + msgid "Compile for the m32rx." +-msgstr "为 m32rx 编译" ++msgstr "为 m32rx 编译。" + + #: config/m32r/m32r.opt:38 +-#, fuzzy +-#| msgid "Compile for the m32r2" + msgid "Compile for the m32r2." +-msgstr "为 m32r2 编译" ++msgstr "为 m32r2 编译。" + + #: config/m32r/m32r.opt:42 +-#, fuzzy +-#| msgid "Compile for the m32r" + msgid "Compile for the m32r." +-msgstr "为 m32r 编译" ++msgstr "为 m32r 编译。" + + #: config/m32r/m32r.opt:46 + #, fuzzy +@@ -12259,16 +12184,12 @@ + msgstr "指定 TPF-OS 的主对象" + + #: config/s390/s390.opt:48 +-#, fuzzy +-#| msgid "31 bit ABI" + msgid "31 bit ABI." +-msgstr "31 位 ABI" ++msgstr "31 位 ABI。" + + #: config/s390/s390.opt:52 +-#, fuzzy +-#| msgid "64 bit ABI" + msgid "64 bit ABI." +-msgstr "64 位 ABI" ++msgstr "64 位 ABI。" + + #: config/s390/s390.opt:120 + #, fuzzy +@@ -12284,9 +12205,8 @@ + + #: config/s390/s390.opt:128 + #, fuzzy +-#| msgid "ESA/390 architecture" + msgid "ESA/390 architecture." +-msgstr "ESA/390 结构" ++msgstr "ESA/390 结构。" + + #: config/s390/s390.opt:132 + #, fuzzy +@@ -12739,9 +12659,8 @@ + #: config/sparc/sparc.opt:30 config/sparc/sparc.opt:34 + #: config/visium/visium.opt:37 + #, fuzzy +-#| msgid "Use hardware FP" + msgid "Use hardware FP." +-msgstr "使用硬件浮点单元" ++msgstr "使用硬件浮点单元。" + + #: config/sparc/sparc.opt:38 config/visium/visium.opt:41 + #, fuzzy +@@ -12785,10 +12704,8 @@ + msgstr "启用 clip 指令" + + #: config/sparc/sparc.opt:66 +-#, fuzzy +-#| msgid "Compile for V8+ ABI" + msgid "Compile for V8+ ABI." +-msgstr "为 V8+ ABI 编译" ++msgstr "为 V8+ ABI 编译。" + + #: config/sparc/sparc.opt:70 + #, fuzzy +@@ -12851,16 +12768,12 @@ + msgstr "指针是 32 位" + + #: config/sparc/sparc.opt:118 +-#, fuzzy +-#| msgid "Use 64-bit ABI" + msgid "Use 64-bit ABI." +-msgstr "使用 64 位 ABI" ++msgstr "使用 64 位 ABI。" + + #: config/sparc/sparc.opt:122 +-#, fuzzy +-#| msgid "Use 32-bit ABI" + msgid "Use 32-bit ABI." +-msgstr "使用 32 位 ABI" ++msgstr "使用 32 位 ABI。" + + #: config/sparc/sparc.opt:126 + #, fuzzy +@@ -12967,10 +12880,8 @@ + msgstr "为 32 位指针编译" + + #: config/rs6000/aix64.opt:32 config/rs6000/linux64.opt:28 +-#, fuzzy +-#| msgid "Select code model" + msgid "Select code model." +-msgstr "选择代码模型" ++msgstr "选择代码模型。" + + #: config/rs6000/aix64.opt:49 + #, fuzzy +@@ -13033,10 +12944,8 @@ + msgstr "使用扩展 PowerPC V2.05 通用寄存器浮点转移指令" + + #: config/rs6000/rs6000.opt:153 +-#, fuzzy +-#| msgid "Use AltiVec instructions" + msgid "Use AltiVec instructions." +-msgstr "使用 AltiVec 指令" ++msgstr "使用 AltiVec 指令。" + + #: config/rs6000/rs6000.opt:157 + #, fuzzy +@@ -13242,16 +13151,12 @@ + msgstr "不使用位段指令" + + #: config/rs6000/rs6000.opt:358 +-#, fuzzy +-#| msgid "Use the ELFv1 ABI" + msgid "Use the ELFv1 ABI." +-msgstr "使用 ELFv1 ABI" ++msgstr "使用 ELFv1 ABI。" + + #: config/rs6000/rs6000.opt:362 +-#, fuzzy +-#| msgid "Use the ELFv2 ABI" + msgid "Use the ELFv2 ABI." +-msgstr "使用 ELFv2 ABI" ++msgstr "使用 ELFv2 ABI。" + + #: config/rs6000/rs6000.opt:382 + #, fuzzy +@@ -13477,10 +13382,8 @@ + msgstr "假设所有可变参数函数都有原型" + + #: config/rs6000/sysv4.opt:103 +-#, fuzzy +-#| msgid "Use EABI" + msgid "Use EABI." +-msgstr "使用 EABI" ++msgstr "使用 EABI。" + + #: config/rs6000/sysv4.opt:107 + #, fuzzy +@@ -13776,10 +13679,8 @@ + msgstr "使用除法指令" + + #: config/or1k/or1k.opt:67 +-#, fuzzy +-#| msgid "Use the soft multiply emulation (default)" + msgid "Use multiply emulation." +-msgstr "使用软件模拟乘法(默认)" ++msgstr "使用乘法模拟。" + + #: config/nios2/elf.opt:26 + #, fuzzy +@@ -66815,14 +66716,14 @@ + msgstr "不包含子目录注释" + + #: fortran/scanner.c:336 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "Nonexistent include directory %qs" +-msgstr "忽略不存在的目录“%s”\n" ++msgstr "不存在的 include 目录 %qs" + + #: fortran/scanner.c:341 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qs is not a directory" +-msgstr "不是目录" ++msgstr "%qs 不是目录" + + #: fortran/scanner.c:744 + #, fuzzy, gcc-internal-format, gfc-internal-format +@@ -66893,9 +66794,9 @@ + msgstr "%s:%d:无效的预处理指令" + + #: fortran/scanner.c:2471 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "Cannot open file %qs" +-msgstr "无法打开文件 %s\n" ++msgstr "无法打开文件 %qs" + + #: fortran/simplify.c:92 + #, gcc-internal-format, gfc-internal-format +@@ -69343,9 +69244,9 @@ + msgstr "已弃用%<-mfused-madd%>;请改用%<-ffp-contract=%>" + + #: config/microblaze/microblaze.opt:87 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qs is deprecated; use -fstack-check" +-msgstr "已弃用%qE:%s" ++msgstr "%qs 已弃用;请换用 -fstack-check" + + #: config/microblaze/microblaze.opt:95 + #, gcc-internal-format +@@ -69356,9 +69257,9 @@ + #: config/arc/arc.opt:349 config/arc/arc.opt:353 config/arc/arc.opt:357 + #: config/arc/arc.opt:361 config/arc/arc.opt:364 config/arc/arc.opt:367 + #: config/arc/arc.opt:384 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "%qs is deprecated" +-msgstr "已弃用%qE" ++msgstr "%qs 已弃用" + + #: lto/lang.opt:28 + #, fuzzy, gcc-internal-format +@@ -69392,9 +69293,9 @@ + msgstr "未知的栈重用级别%qs" + + #: common.opt:1777 +-#, fuzzy, gcc-internal-format ++#, gcc-internal-format + msgid "unknown IRA algorithm %qs" +-msgstr "未知的 TLS 模型%qs" ++msgstr "未知的 IRA 算法 %qs" + + #: common.opt:1790 + #, fuzzy, gcc-internal-format +@@ -69435,7 +69336,7 @@ + #: common.opt:2530 + #, gcc-internal-format + msgid "unknown TLS model %qs" +-msgstr "未知的 TLS 模型%qs" ++msgstr "未知的 TLS 模型 %qs" + + #: common.opt:2862 + #, fuzzy, gcc-internal-format +Index: gcc/tree-ssa-forwprop.c +=================================================================== +--- a/src/gcc/tree-ssa-forwprop.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-forwprop.c (.../branches/gcc-9-branch) +@@ -2496,6 +2496,8 @@ + { + int did_something; + did_something = forward_propagate_into_comparison (&gsi); ++ if (maybe_clean_or_replace_eh_stmt (stmt, gsi_stmt (gsi))) ++ bitmap_set_bit (to_purge, bb->index); + if (did_something == 2) + cfg_changed = true; + changed = did_something != 0; +Index: gcc/ggc-page.c +=================================================================== +--- a/src/gcc/ggc-page.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ggc-page.c (.../branches/gcc-9-branch) +@@ -1016,6 +1016,8 @@ + static void + release_pages (void) + { ++ size_t n1 = 0; ++ size_t n2 = 0; + #ifdef USING_MADVISE + page_entry *p, *start_p; + char *start; +@@ -1061,6 +1063,7 @@ + else + G.free_pages = p; + G.bytes_mapped -= mapped_len; ++ n1 += len; + continue; + } + prev = newprev; +@@ -1092,6 +1095,7 @@ + /* Don't count those pages as mapped to not touch the garbage collector + unnecessarily. */ + G.bytes_mapped -= len; ++ n2 += len; + while (start_p != p) + { + start_p->discarded = true; +@@ -1124,6 +1128,7 @@ + } + + munmap (start, len); ++ n1 += len; + G.bytes_mapped -= len; + } + +@@ -1151,11 +1156,21 @@ + { + *gp = g->next; + G.bytes_mapped -= g->alloc_size; ++ n1 += g->alloc_size; + free (g->allocation); + } + else + gp = &g->next; + #endif ++ if (!quiet_flag && (n1 || n2)) ++ { ++ fprintf (stderr, " {GC"); ++ if (n1) ++ fprintf (stderr, " released %luk", (unsigned long)(n1 / 1024)); ++ if (n2) ++ fprintf (stderr, " madv_dontneed %luk", (unsigned long)(n2 / 1024)); ++ fprintf (stderr, "}"); ++ } + } + + /* This table provides a fast way to determine ceil(log_2(size)) for +@@ -2178,13 +2193,12 @@ + return; + + timevar_push (TV_GC); +- if (!quiet_flag) +- fprintf (stderr, " {GC %luk -> ", (unsigned long) G.allocated / 1024); + if (GGC_DEBUG_LEVEL >= 2) + fprintf (G.debug_file, "BEGIN COLLECTING\n"); + + /* Zero the total allocated bytes. This will be recalculated in the + sweep phase. */ ++ size_t allocated = G.allocated; + G.allocated = 0; + + /* Release the pages we freed the last time we collected, but didn't +@@ -2191,6 +2205,10 @@ + reuse in the interim. */ + release_pages (); + ++ /* Output this later so we do not interfere with release_pages. */ ++ if (!quiet_flag) ++ fprintf (stderr, " {GC %luk -> ", (unsigned long) allocated / 1024); ++ + /* Indicate that we've seen collections at this context depth. */ + G.context_depth_collections = ((unsigned long)1 << (G.context_depth + 1)) - 1; + +@@ -2221,11 +2239,27 @@ + fprintf (G.debug_file, "END COLLECTING\n"); + } + +-/* Assume that all GGC memory is reachable and grow the limits for next collection. +- With checking, trigger GGC so -Q compilation outputs how much of memory really is +- reachable. */ ++/* Return free pages to the system. */ + + void ++ggc_trim () ++{ ++ timevar_push (TV_GC); ++ G.allocated = 0; ++ sweep_pages (); ++ release_pages (); ++ if (!quiet_flag) ++ fprintf (stderr, " {GC trimmed to %luk, %luk mapped}", ++ (unsigned long) G.allocated / 1024, ++ (unsigned long) G.bytes_mapped / 1024); ++ timevar_pop (TV_GC); ++} ++ ++/* Assume that all GGC memory is reachable and grow the limits for next ++ collection. With checking, trigger GGC so -Q compilation outputs how much ++ of memory really is reachable. */ ++ ++void + ggc_grow (void) + { + if (!flag_checking) +@@ -2556,6 +2590,9 @@ + + count_old_page_tables = G.by_depth_in_use; + ++ if (fread (&d, sizeof (d), 1, f) != 1) ++ fatal_error (input_location, "cannot read PCH file: %m"); ++ + /* We've just read in a PCH file. So, every object that used to be + allocated is now free. */ + clear_marks (); +@@ -2584,8 +2621,6 @@ + + /* Allocate the appropriate page-table entries for the pages read from + the PCH file. */ +- if (fread (&d, sizeof (d), 1, f) != 1) +- fatal_error (input_location, "can%'t read PCH file: %m"); + + for (i = 0; i < NUM_ORDERS; i++) + { +Index: gcc/ira.c +=================================================================== +--- a/src/gcc/ira.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ira.c (.../branches/gcc-9-branch) +@@ -5198,6 +5198,8 @@ + int ira_max_point_before_emit; + bool saved_flag_caller_saves = flag_caller_saves; + enum ira_region saved_flag_ira_region = flag_ira_region; ++ unsigned int i; ++ int num_used_regs = 0; + + clear_bb_flags (); + +@@ -5213,12 +5215,17 @@ + + ira_conflicts_p = optimize > 0; + ++ /* Determine the number of pseudos actually requiring coloring. */ ++ for (i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++) ++ num_used_regs += !!(DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i)); ++ + /* If there are too many pseudos and/or basic blocks (e.g. 10K + pseudos and 10K blocks or 100K pseudos and 1K blocks), we will + use simplified and faster algorithms in LRA. */ + lra_simple_p + = (ira_use_lra_p +- && max_reg_num () >= (1 << 26) / last_basic_block_for_fn (cfun)); ++ && num_used_regs >= (1 << 26) / last_basic_block_for_fn (cfun)); ++ + if (lra_simple_p) + { + /* It permits to skip live range splitting in LRA. */ +Index: gcc/tree-vect-stmts.c +=================================================================== +--- a/src/gcc/tree-vect-stmts.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vect-stmts.c (.../branches/gcc-9-branch) +@@ -3279,7 +3279,7 @@ + if (!vectype_in) + vectype_in = vectypes[i]; + else if (vectypes[i] +- && vectypes[i] != vectype_in) ++ && !types_compatible_p (vectypes[i], vectype_in)) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, +@@ -8276,7 +8276,9 @@ + || alignment_support_scheme == dr_explicit_realign) + && !compute_in_loop) + { +- msq = vect_setup_realignment (first_stmt_info, gsi, &realignment_token, ++ msq = vect_setup_realignment (first_stmt_info_for_drptr ++ ? first_stmt_info_for_drptr ++ : first_stmt_info, gsi, &realignment_token, + alignment_support_scheme, NULL_TREE, + &at_loop); + if (alignment_support_scheme == dr_explicit_realign_optimized) +Index: gcc/omp-simd-clone.c +=================================================================== +--- a/src/gcc/omp-simd-clone.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/omp-simd-clone.c (.../branches/gcc-9-branch) +@@ -498,7 +498,6 @@ + /* Adjust the function return type. */ + if (orig_rettype == void_type_node) + return NULL_TREE; +- TREE_TYPE (fndecl) = build_distinct_type_copy (TREE_TYPE (fndecl)); + t = TREE_TYPE (TREE_TYPE (fndecl)); + if (INTEGRAL_TYPE_P (t) || POINTER_TYPE_P (t)) + veclen = node->simdclone->vecsize_int; +@@ -724,11 +723,7 @@ + else + new_reversed = void_list_node; + } +- +- tree new_type = build_distinct_type_copy (TREE_TYPE (node->decl)); +- TYPE_ARG_TYPES (new_type) = new_reversed; +- TREE_TYPE (node->decl) = new_type; +- ++ TYPE_ARG_TYPES (TREE_TYPE (node->decl)) = new_reversed; + adjustments.release (); + } + args.release (); +@@ -1164,6 +1159,7 @@ + { + push_cfun (DECL_STRUCT_FUNCTION (node->decl)); + ++ TREE_TYPE (node->decl) = build_distinct_type_copy (TREE_TYPE (node->decl)); + targetm.simd_clone.adjust (node); + + tree retval = simd_clone_adjust_return_type (node); +@@ -1737,6 +1733,8 @@ + simd_clone_adjust (n); + else + { ++ TREE_TYPE (n->decl) ++ = build_distinct_type_copy (TREE_TYPE (n->decl)); + targetm.simd_clone.adjust (n); + simd_clone_adjust_return_type (n); + simd_clone_adjust_argument_types (n); +Index: gcc/tree-ssa-scopedtables.c +=================================================================== +--- a/src/gcc/tree-ssa-scopedtables.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-scopedtables.c (.../branches/gcc-9-branch) +@@ -298,7 +298,7 @@ + && TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME + && (ao_ref_init (&ref, gimple_assign_rhs1 (stmt)), + ref.base_alias_set = ref.ref_alias_set = tbaa_p ? -1 : 0, true) +- && walk_non_aliased_vuses (&ref, vuse2, vuse_eq, NULL, NULL, ++ && walk_non_aliased_vuses (&ref, vuse2, true, vuse_eq, NULL, NULL, + limit, vuse1) != NULL)) + { + if (insert) +Index: gcc/symtab.c +=================================================================== +--- a/src/gcc/symtab.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/symtab.c (.../branches/gcc-9-branch) +@@ -2328,10 +2328,18 @@ + first place. */ + if (VAR_P (decl) && DECL_HARD_REGISTER (decl)) + return false; +- /* FIXME: Builtins corresponding to real functions probably should have +- symbol table entries. */ +- if (TREE_CODE (decl) == FUNCTION_DECL && fndecl_built_in_p (decl)) +- return false; ++ if (TREE_CODE (decl) == FUNCTION_DECL && !definition ++ && fndecl_built_in_p (decl)) ++ { ++ /* Builtins like those for most math functions have actual implementations ++ in libraries so make sure to output references into the symbol table to ++ make those libraries referenced. Note this is incomplete handling for ++ now and only covers math functions. */ ++ if (builtin_with_linkage_p (decl)) ++ return true; ++ else ++ return false; ++ } + + /* We have real symbol that should be in symbol table. However try to trim + down the refernces to libraries bit more because linker will otherwise +Index: gcc/tree-ssa-phiprop.c +=================================================================== +--- a/src/gcc/tree-ssa-phiprop.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-ssa-phiprop.c (.../branches/gcc-9-branch) +@@ -338,8 +338,15 @@ + && (!type + || types_compatible_p + (TREE_TYPE (gimple_assign_lhs (use_stmt)), type)) +- /* We cannot replace a load that may throw or is volatile. */ +- && !stmt_can_throw_internal (cfun, use_stmt))) ++ /* We cannot replace a load that may throw or is volatile. ++ For volatiles the transform can change the number of ++ executions if the load is inside a loop but the address ++ computations outside (PR91812). We could relax this ++ if we guard against that appropriately. For loads that can ++ throw we could relax things if the moved loads all are ++ known to not throw. */ ++ && !stmt_can_throw_internal (cfun, use_stmt) ++ && !gimple_has_volatile_ops (use_stmt))) + continue; + + /* Check if we can move the loads. The def stmt of the virtual use +Index: gcc/tree-object-size.c +=================================================================== +--- a/src/gcc/tree-object-size.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-object-size.c (.../branches/gcc-9-branch) +@@ -890,6 +890,9 @@ + else + expr_object_size (osi, var, then_); + ++ if (object_sizes[object_size_type][varno] == unknown[object_size_type]) ++ return reexamine; ++ + if (TREE_CODE (else_) == SSA_NAME) + reexamine |= merge_object_sizes (osi, var, else_, 0); + else +Index: gcc/ggc-none.c +=================================================================== +--- a/src/gcc/ggc-none.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/ggc-none.c (.../branches/gcc-9-branch) +@@ -72,3 +72,8 @@ + ggc_grow (void) + { + } ++ ++void ++ggc_trim (void) ++{ ++} +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config.gcc (.../branches/gcc-9-branch) +@@ -4700,14 +4700,12 @@ + echo "#undef LINK_OS_EXTRA_SPEC32" + echo "#define LINK_OS_EXTRA_SPEC32" \ + "\"%(link_os_new_dtags)" \ +- "-rpath $prefix/lib -rpath $at/lib" \ +- "-L $prefix/lib -L $at/lib\"" ++ "-rpath $prefix/lib -rpath $at/lib\"" + echo + echo "#undef LINK_OS_EXTRA_SPEC64" + echo "#define LINK_OS_EXTRA_SPEC64" \ + "\"%(link_os_new_dtags)" \ +- "-rpath $prefix/lib64 -rpath $at/lib64" \ +- "-L $prefix/lib64 -L $at/lib64\"" ++ "-rpath $prefix/lib64 -rpath $at/lib64\"" + echo + echo "#undef LINK_OS_NEW_DTAGS_SPEC" + echo "#define LINK_OS_NEW_DTAGS_SPEC" \ +@@ -4720,7 +4718,10 @@ + echo "#define MD_EXEC_PREFIX \"$at/bin/\"" + echo + echo "#undef MD_STARTFILE_PREFIX" +- echo "#define MD_STARTFILE_PREFIX \"$at/lib/\"") \ ++ echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\"" ++ echo ++ echo "#undef MD_STARTFILE_PREFIX_1" ++ echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \ + > advance-toolchain.h + else + echo "Unknown advance-toolchain $with_advance_toolchain" +@@ -4743,7 +4744,7 @@ + for which in arch tune; do + eval "val=\$with_$which" + case ${val} in +- "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 ) ++ "" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 ) + # OK + ;; + *) +Index: gcc/tree-switch-conversion.c +=================================================================== +--- a/src/gcc/tree-switch-conversion.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-switch-conversion.c (.../branches/gcc-9-branch) +@@ -605,7 +605,9 @@ + vec *constructor = m_constructors[num]; + wide_int coeff_a, coeff_b; + bool linear_p = contains_linear_function_p (constructor, &coeff_a, &coeff_b); +- if (linear_p) ++ tree type; ++ if (linear_p ++ && (type = range_check_type (TREE_TYPE ((*constructor)[0].value)))) + { + if (dump_file && coeff_a.to_uhwi () > 0) + fprintf (dump_file, "Linear transformation with A = %" PRId64 +@@ -613,13 +615,12 @@ + coeff_b.to_shwi ()); + + /* We must use type of constructor values. */ +- tree t = unsigned_type_for (TREE_TYPE ((*constructor)[0].value)); + gimple_seq seq = NULL; +- tree tmp = gimple_convert (&seq, t, m_index_expr); +- tree tmp2 = gimple_build (&seq, MULT_EXPR, t, +- wide_int_to_tree (t, coeff_a), tmp); +- tree tmp3 = gimple_build (&seq, PLUS_EXPR, t, tmp2, +- wide_int_to_tree (t, coeff_b)); ++ tree tmp = gimple_convert (&seq, type, m_index_expr); ++ tree tmp2 = gimple_build (&seq, MULT_EXPR, type, ++ wide_int_to_tree (type, coeff_a), tmp); ++ tree tmp3 = gimple_build (&seq, PLUS_EXPR, type, tmp2, ++ wide_int_to_tree (type, coeff_b)); + tree tmp4 = gimple_convert (&seq, TREE_TYPE (name), tmp3); + gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT); + load = gimple_build_assign (name, tmp4); +@@ -1350,7 +1351,7 @@ + entire)); + } + else +- for (int i = end - 1; i >= start; i--) ++ for (int i = end - 1; i >= start; i--) + output.safe_push (clusters[i]); + + end = start; +@@ -1483,7 +1484,7 @@ + unsigned int i, j, k; + unsigned int count; + +- tree unsigned_index_type = unsigned_type_for (index_type); ++ tree unsigned_index_type = range_check_type (index_type); + + gimple_stmt_iterator gsi; + gassign *shift_stmt; +@@ -1793,7 +1794,8 @@ + tree index_type = TREE_TYPE (index_expr); + basic_block bb = gimple_bb (m_switch); + +- if (gimple_switch_num_labels (m_switch) == 1) ++ if (gimple_switch_num_labels (m_switch) == 1 ++ || range_check_type (index_type) == NULL_TREE) + return false; + + /* Find the default case target label. */ +Index: gcc/tree-cfg.c +=================================================================== +--- a/src/gcc/tree-cfg.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-cfg.c (.../branches/gcc-9-branch) +@@ -9151,7 +9151,7 @@ + tree *lhs, tree *rhs) + { + tree type = TREE_TYPE (index); +- tree utype = unsigned_type_for (type); ++ tree utype = range_check_type (type); + + low = fold_convert (utype, low); + high = fold_convert (utype, high); +Index: gcc/passes.c +=================================================================== +--- a/src/gcc/passes.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/passes.c (.../branches/gcc-9-branch) +@@ -1646,14 +1646,6 @@ + } + } + +-/* Because inlining might remove no-longer reachable nodes, we need to +- keep the array visible to garbage collector to avoid reading collected +- out nodes. */ +-static int nnodes; +-static GTY ((length ("nnodes"))) cgraph_node **order; +- +-#define uid_hash_t hash_set > +- + /* Hook called when NODE is removed and therefore should be + excluded from order vector. DATA is a hash set with removed nodes. */ + +@@ -1660,10 +1652,33 @@ + static void + remove_cgraph_node_from_order (cgraph_node *node, void *data) + { +- uid_hash_t *removed_nodes = (uid_hash_t *)data; +- removed_nodes->add (node->get_uid ()); ++ hash_set *removed_nodes = (hash_set *)data; ++ removed_nodes->add (node); + } + ++/* Hook called when NODE is insert and therefore should be ++ excluded from removed_nodes. DATA is a hash set with removed nodes. */ ++ ++static void ++insert_cgraph_node_to_order (cgraph_node *node, void *data) ++{ ++ hash_set *removed_nodes = (hash_set *)data; ++ removed_nodes->remove (node); ++} ++ ++/* Hook called when NODE is duplicated and therefore should be ++ excluded from removed_nodes. DATA is a hash set with removed nodes. */ ++ ++static void ++duplicate_cgraph_node_to_order (cgraph_node *node, cgraph_node *node2, ++ void *data) ++{ ++ hash_set *removed_nodes = (hash_set *)data; ++ gcc_checking_assert (!removed_nodes->contains (node)); ++ removed_nodes->remove (node2); ++} ++ ++ + /* If we are in IPA mode (i.e., current_function_decl is NULL), call + function CALLBACK for every function in the call graph. Otherwise, + call CALLBACK on the current function. +@@ -1677,26 +1692,30 @@ + callback (cfun, data); + else + { +- cgraph_node_hook_list *hook; +- uid_hash_t removed_nodes; +- gcc_assert (!order); +- order = ggc_vec_alloc (symtab->cgraph_count); ++ hash_set removed_nodes; ++ unsigned nnodes = symtab->cgraph_count; ++ cgraph_node **order = XNEWVEC (cgraph_node *, nnodes); + + nnodes = ipa_reverse_postorder (order); + for (i = nnodes - 1; i >= 0; i--) + order[i]->process = 1; +- hook = symtab->add_cgraph_removal_hook (remove_cgraph_node_from_order, +- &removed_nodes); ++ cgraph_node_hook_list *removal_hook ++ = symtab->add_cgraph_removal_hook (remove_cgraph_node_from_order, ++ &removed_nodes); ++ cgraph_node_hook_list *insertion_hook ++ = symtab->add_cgraph_insertion_hook (insert_cgraph_node_to_order, ++ &removed_nodes); ++ cgraph_2node_hook_list *duplication_hook ++ = symtab->add_cgraph_duplication_hook (duplicate_cgraph_node_to_order, ++ &removed_nodes); + for (i = nnodes - 1; i >= 0; i--) + { + cgraph_node *node = order[i]; + + /* Function could be inlined and removed as unreachable. */ +- if (node == NULL || removed_nodes.contains (node->get_uid ())) ++ if (node == NULL || removed_nodes.contains (node)) + continue; + +- /* Allow possibly removed nodes to be garbage collected. */ +- order[i] = NULL; + node->process = 0; + if (node->has_gimple_body_p ()) + { +@@ -1706,11 +1725,12 @@ + pop_cfun (); + } + } +- symtab->remove_cgraph_removal_hook (hook); ++ symtab->remove_cgraph_removal_hook (removal_hook); ++ symtab->remove_cgraph_insertion_hook (insertion_hook); ++ symtab->remove_cgraph_duplication_hook (duplication_hook); ++ ++ free (order); + } +- ggc_free (order); +- order = NULL; +- nnodes = 0; + } + + /* Helper function to perform function body dump. */ +@@ -2699,20 +2719,12 @@ + { + struct cgraph_node *node = order[i]; + +- if (gimple_has_body_p (node->decl)) ++ if (node->definition && node->need_lto_streaming) + { +- /* When streaming out references to statements as part of some IPA +- pass summary, the statements need to have uids assigned and the +- following does that for all the IPA passes here. Naturally, this +- ordering then matches the one IPA-passes get in their stmt_fixup +- hooks. */ +- +- push_cfun (DECL_STRUCT_FUNCTION (node->decl)); +- renumber_gimple_stmt_uids (); +- pop_cfun (); ++ if (gimple_has_body_p (node->decl)) ++ lto_prepare_function_for_streaming (node); ++ lto_set_symtab_encoder_in_partition (encoder, node); + } +- if (node->definition && node->need_lto_streaming) +- lto_set_symtab_encoder_in_partition (encoder, node); + } + + FOR_EACH_DEFINED_FUNCTION (node) +@@ -2780,28 +2792,13 @@ + ipa_write_optimization_summaries (lto_symtab_encoder_t encoder) + { + struct lto_out_decl_state *state = lto_new_out_decl_state (); +- lto_symtab_encoder_iterator lsei; + state->symtab_node_encoder = encoder; + + lto_output_init_mode_table (); + lto_push_out_decl_state (state); +- for (lsei = lsei_start_function_in_partition (encoder); +- !lsei_end_p (lsei); lsei_next_function_in_partition (&lsei)) +- { +- struct cgraph_node *node = lsei_cgraph_node (lsei); +- /* When streaming out references to statements as part of some IPA +- pass summary, the statements need to have uids assigned. + +- For functions newly born at WPA stage we need to initialize +- the uids here. */ +- if (node->definition +- && gimple_has_body_p (node->decl)) +- { +- push_cfun (DECL_STRUCT_FUNCTION (node->decl)); +- renumber_gimple_stmt_uids (); +- pop_cfun (); +- } +- } ++ /* Be sure that we did not forget to renumber stmt uids. */ ++ gcc_checking_assert (flag_wpa); + + gcc_assert (flag_wpa); + pass_manager *passes = g->get_passes (); +@@ -3060,5 +3057,3 @@ + } + return e != NULL; + } +- +-#include "gt-passes.h" +Index: gcc/config/alpha/alpha.c +=================================================================== +--- a/src/gcc/config/alpha/alpha.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/alpha/alpha.c (.../branches/gcc-9-branch) +@@ -8839,6 +8839,9 @@ + case CODE_LABEL: + goto close_shadow; + ++ case DEBUG_INSN: ++ break; ++ + default: + gcc_unreachable (); + } +Index: gcc/config/s390/s390.md +=================================================================== +--- a/src/gcc/config/s390/s390.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390.md (.../branches/gcc-9-branch) +@@ -513,11 +513,11 @@ + ;; Processor type. This attribute must exactly match the processor_type + ;; enumeration in s390.h. + +-(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,arch13" ++(define_attr "cpu" "z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15" + (const (symbol_ref "s390_tune_attr"))) + + (define_attr "cpu_facility" +- "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,arch13,vxe2" ++ "standard,ieee,zarch,cpu_zarch,longdisp,extimm,dfp,z10,z196,zEC12,vx,z13,z14,vxe,z15,vxe2" + (const_string "standard")) + + (define_attr "enabled" "" +@@ -575,8 +575,8 @@ + (match_test "TARGET_VXE")) + (const_int 1) + +- (and (eq_attr "cpu_facility" "arch13") +- (match_test "TARGET_ARCH13")) ++ (and (eq_attr "cpu_facility" "z15") ++ (match_test "TARGET_Z15")) + (const_int 1) + + (and (eq_attr "cpu_facility" "vxe2") +@@ -613,7 +613,7 @@ + ;; Pipeline description for z14 + (include "3906.md") + +-;; Pipeline description for arch13 ++;; Pipeline description for z15 + (include "8561.md") + + ;; Predicates +@@ -642,7 +642,7 @@ + (define_mode_iterator DD_DF [DF DD]) + (define_mode_iterator TD_TF [TF TD]) + +-; 32 bit int<->fp conversion instructions are available since VXE2 (arch13). ++; 32 bit int<->fp conversion instructions are available since VXE2 (z15). + (define_mode_iterator VX_CONV_BFP [DF (SF "TARGET_VXE2")]) + (define_mode_iterator VX_CONV_INT [DI (SI "TARGET_VXE2")]) + +@@ -6749,7 +6749,7 @@ + stoc%C1\t%3,%0 + stoc%D1\t%4,%0" + [(set_attr "op_type" "RRF,RRF,RRF,RSY,RSY,RIE,RIE,RSY,RSY") +- (set_attr "cpu_facility" "*,*,arch13,*,*,z13,z13,*,*")]) ++ (set_attr "cpu_facility" "*,*,z15,*,*,z13,z13,*,*")]) + + ;; + ;;- Multiply instructions. +@@ -7568,7 +7568,7 @@ + (and:GPR (not:GPR (match_operand:GPR 1 "nonimmediate_operand" "")) + (match_operand:GPR 2 "general_operand" ""))) + (clobber (reg:CC CC_REGNUM))] +- "!TARGET_ARCH13 ++ "!TARGET_Z15 + && ! reload_completed + && (GET_CODE (operands[0]) != MEM + /* Ensure that s390_logical_operator_ok_p will succeed even +@@ -7925,7 +7925,7 @@ + (set (match_operand:GPR 0 "register_operand" "=d") + (ANDOR:GPR (not:GPR (match_dup 1)) + (match_dup 2)))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "crk\t%0,%2,%1" + [(set_attr "op_type" "RRF")]) + +@@ -7937,7 +7937,7 @@ + (match_operand:GPR 2 "register_operand" "d")) + (const_int 0))) + (clobber (match_scratch:GPR 0 "=d"))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "crk\t%0,%2,%1" + [(set_attr "op_type" "RRF")]) + +@@ -7947,7 +7947,7 @@ + (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d")) + (match_operand:GPR 2 "register_operand" "d"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARCH13" ++ "TARGET_Z15" + "crk\t%0,%2,%1" + [(set_attr "op_type" "RRF")]) + +@@ -7965,7 +7965,7 @@ + (set (match_operand:GPR 0 "register_operand" "=d") + (ANDOR:GPR (not:GPR (match_dup 1)) + (not:GPR (match_dup 2))))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "nrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -7977,7 +7977,7 @@ + (not:GPR (match_operand:GPR 2 "register_operand" "d"))) + (const_int 0))) + (clobber (match_scratch:GPR 0 "=d"))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "nrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -7987,7 +7987,7 @@ + (ANDOR:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d")) + (not:GPR (match_operand:GPR 2 "register_operand" "d")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARCH13" ++ "TARGET_Z15" + "nrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -8371,7 +8371,7 @@ + (set (match_operand:GPR 0 "register_operand" "=d") + (xor:GPR (not:GPR (match_dup 1)) + (match_dup 2)))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "nxrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -8383,7 +8383,7 @@ + (match_operand:GPR 2 "register_operand" "d"))) + (const_int 0))) + (clobber (match_scratch:GPR 0 "=d"))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "nxrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -8393,7 +8393,7 @@ + (not:GPR (xor:GPR (match_operand:GPR 1 "register_operand" "d") + (match_operand:GPR 2 "register_operand" "d")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARCH13" ++ "TARGET_Z15" + "nxrk\t%0,%1,%2" + [(set_attr "op_type" "RRF")]) + +@@ -11351,34 +11351,34 @@ + ; Population count instruction + ; + +-(define_insn "*popcountdi_arch13_cc" ++(define_insn "*popcountdi_z15_cc" + [(set (reg CC_REGNUM) + (compare (popcount:DI (match_operand:DI 1 "register_operand" "d")) + (const_int 0))) + (set (match_operand:DI 0 "register_operand" "=d") + (match_dup 1))] +- "TARGET_ARCH13 && s390_match_ccmode (insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode (insn, CCTmode)" + "popcnt\t%0,%1,8" + [(set_attr "op_type" "RRF")]) + +-(define_insn "*popcountdi_arch13_cconly" ++(define_insn "*popcountdi_z15_cconly" + [(set (reg CC_REGNUM) + (compare (popcount:DI (match_operand:DI 1 "register_operand" "d")) + (const_int 0))) + (clobber (match_scratch:DI 0 "=d"))] +- "TARGET_ARCH13 && s390_match_ccmode(insn, CCTmode)" ++ "TARGET_Z15 && s390_match_ccmode(insn, CCTmode)" + "popcnt\t%0,%1,8" + [(set_attr "op_type" "RRF")]) + +-(define_insn "*popcountdi_arch13" ++(define_insn "*popcountdi_z15" + [(set (match_operand:DI 0 "register_operand" "=d") + (popcount:DI (match_operand:DI 1 "register_operand" "d"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARCH13" ++ "TARGET_Z15" + "popcnt\t%0,%1,8" + [(set_attr "op_type" "RRF")]) + +-; The pre-arch13 popcount instruction counts the bits of op1 in 8 byte ++; The pre-z15 popcount instruction counts the bits of op1 in 8 byte + ; portions and stores the result in the corresponding bytes in op0. + (define_insn "*popcount_z196" + [(set (match_operand:INT 0 "register_operand" "=d") +@@ -11422,7 +11422,7 @@ + (clobber (reg:CC CC_REGNUM))])] + "TARGET_Z196" + { +- if (!TARGET_ARCH13) ++ if (!TARGET_Z15) + { + emit_insn (gen_popcountdi2_z196 (operands[0], operands[1])); + DONE; +@@ -11453,7 +11453,7 @@ + + ; popcount always counts on the full 64 bit. With the z196 version + ; counting bits per byte we just ignore the upper 4 bytes. With the +-; arch13 version we have to zero out the upper 32 bits first. ++; z15 version we have to zero out the upper 32 bits first. + (define_expand "popcountsi2" + [(set (match_dup 2) + (zero_extend:DI (match_operand:SI 1 "register_operand"))) +@@ -11463,7 +11463,7 @@ + (subreg:SI (match_dup 3) 4))] + "TARGET_Z196" + { +- if (!TARGET_ARCH13) ++ if (!TARGET_Z15) + { + emit_insn (gen_popcountsi2_z196 (operands[0], operands[1])); + DONE; +@@ -11501,7 +11501,7 @@ + (subreg:HI (match_dup 3) 6))] + "TARGET_Z196" + { +- if (!TARGET_ARCH13) ++ if (!TARGET_Z15) + { + emit_insn (gen_popcounthi2_z196 (operands[0], operands[1])); + DONE; +@@ -11516,7 +11516,7 @@ + ; For popcount on a single byte the old z196 style popcount + ; instruction is ideal. Since it anyway does a byte-wise popcount we + ; just use it instead of zero extending the QImode input to DImode and +-; using the arch13 popcount variant. ++; using the z15 popcount variant. + (define_expand "popcountqi2" + [; popcnt op0, op1 + (parallel [(set (match_operand:QI 0 "register_operand" "") +Index: gcc/config/s390/s390.opt +=================================================================== +--- a/src/gcc/config/s390/s390.opt (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390.opt (.../branches/gcc-9-branch) +@@ -110,9 +110,12 @@ + Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14) + + EnumValue +-Enum(processor_type) String(arch13) Value(PROCESSOR_8561_ARCH13) ++Enum(processor_type) String(z15) Value(PROCESSOR_8561_Z15) + + EnumValue ++Enum(processor_type) String(arch13) Value(PROCESSOR_8561_Z15) ++ ++EnumValue + Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly + + mbackchain +Index: gcc/config/s390/s390-c.c +=================================================================== +--- a/src/gcc/config/s390/s390-c.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390-c.c (.../branches/gcc-9-branch) +@@ -905,6 +905,12 @@ + return error_mark_node; + } + ++ if (!TARGET_VXE2 && (ob_flags & B_VXE2)) ++ { ++ error_at (loc, "%qF requires z15 or higher", ob_fndecl); ++ return error_mark_node; ++ } ++ + ob_fcode -= S390_BUILTIN_MAX; + + for (b_arg_chain = TYPE_ARG_TYPES (TREE_TYPE (ob_fndecl)); +@@ -983,6 +989,15 @@ + return error_mark_node; + } + ++ ++ if (!TARGET_VXE2 ++ && bflags_overloaded_builtin_var[last_match_index] & B_VXE2) ++ { ++ error_at (loc, "%qs matching variant requires z15 or higher", ++ IDENTIFIER_POINTER (DECL_NAME (ob_fndecl))); ++ return error_mark_node; ++ } ++ + if (bflags_overloaded_builtin_var[last_match_index] & B_DEP) + warning_at (loc, 0, "%qs matching variant is deprecated.", + IDENTIFIER_POINTER (DECL_NAME (ob_fndecl))); +Index: gcc/config/s390/driver-native.c +=================================================================== +--- a/src/gcc/config/s390/driver-native.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/driver-native.c (.../branches/gcc-9-branch) +@@ -121,10 +121,10 @@ + break; + case 0x8561: + case 0x8562: +- cpu = "arch13"; ++ cpu = "z15"; + break; + default: +- cpu = "arch13"; ++ cpu = "z15"; + break; + } + } +Index: gcc/config/s390/vector.md +=================================================================== +--- a/src/gcc/config/s390/vector.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/vector.md (.../branches/gcc-9-branch) +@@ -70,7 +70,7 @@ + + (define_mode_iterator V_128_NOSINGLE [V16QI V8HI V4SI V4SF V2DI V2DF]) + +-; 32 bit int<->fp vector conversion instructions are available since VXE2 (arch13). ++; 32 bit int<->fp vector conversion instructions are available since VXE2 (z15). + (define_mode_iterator VX_VEC_CONV_BFP [V2DF (V4SF "TARGET_VXE2")]) + (define_mode_iterator VX_VEC_CONV_INT [V2DI (V4SI "TARGET_VXE2")]) + +Index: gcc/config/s390/s390-opts.h +=================================================================== +--- a/src/gcc/config/s390/s390-opts.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390-opts.h (.../branches/gcc-9-branch) +@@ -37,7 +37,7 @@ + PROCESSOR_2827_ZEC12, + PROCESSOR_2964_Z13, + PROCESSOR_3906_Z14, +- PROCESSOR_8561_ARCH13, ++ PROCESSOR_8561_Z15, + PROCESSOR_NATIVE, + PROCESSOR_max + }; +Index: gcc/config/s390/s390.c +=================================================================== +--- a/src/gcc/config/s390/s390.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390.c (.../branches/gcc-9-branch) +@@ -337,7 +337,7 @@ + { "zEC12", "zEC12", PROCESSOR_2827_ZEC12, &zEC12_cost, 10 }, + { "z13", "z13", PROCESSOR_2964_Z13, &zEC12_cost, 11 }, + { "z14", "arch12", PROCESSOR_3906_Z14, &zEC12_cost, 12 }, +- { "arch13", "", PROCESSOR_8561_ARCH13, &zEC12_cost, 13 }, ++ { "z15", "arch13", PROCESSOR_8561_Z15, &zEC12_cost, 13 }, + { "native", "", PROCESSOR_NATIVE, NULL, 0 } + }; + +@@ -811,6 +811,12 @@ + error ("Builtin %qF requires z14 or higher.", fndecl); + return const0_rtx; + } ++ ++ if ((bflags & B_VXE2) && !TARGET_VXE2) ++ { ++ error ("Builtin %qF requires z15 or higher.", fndecl); ++ return const0_rtx; ++ } + } + if (fcode >= S390_OVERLOADED_BUILTIN_VAR_OFFSET + && fcode < S390_ALL_BUILTIN_MAX) +@@ -1795,7 +1801,7 @@ + } + + /* ~a==b -> ~(a^b)==0 ~a!=b -> ~(a^b)!=0 */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && (*code == EQ || *code == NE) + && (GET_MODE (*op0) == DImode || GET_MODE (*op0) == SImode) + && GET_CODE (*op0) == NOT) +@@ -1807,7 +1813,7 @@ + } + + /* a&b == -1 -> ~a|~b == 0 a|b == -1 -> ~a&~b == 0 */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && (*code == EQ || *code == NE) + && (GET_CODE (*op0) == AND || GET_CODE (*op0) == IOR) + && (GET_MODE (*op0) == DImode || GET_MODE (*op0) == SImode) +@@ -3529,7 +3535,7 @@ + + /* It is a real IF-THEN-ELSE. An additional move will be + needed to implement that. */ +- if (!TARGET_ARCH13 ++ if (!TARGET_Z15 + && reload_completed + && !rtx_equal_p (dst, then) + && !rtx_equal_p (dst, els)) +@@ -3551,7 +3557,7 @@ + case IOR: + + /* nnrk, nngrk */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && (mode == SImode || mode == DImode) + && GET_CODE (XEXP (x, 0)) == NOT + && GET_CODE (XEXP (x, 1)) == NOT) +@@ -3598,7 +3604,7 @@ + + case AND: + /* nork, nogrk */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && (mode == SImode || mode == DImode) + && GET_CODE (XEXP (x, 0)) == NOT + && GET_CODE (XEXP (x, 1)) == NOT) +@@ -3770,7 +3776,7 @@ + *total = COSTS_N_INSNS (1); + + /* nxrk, nxgrk ~(a^b)==0 */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && GET_CODE (XEXP (x, 0)) == NOT + && XEXP (x, 1) == const0_rtx + && GET_CODE (XEXP (XEXP (x, 0), 0)) == XOR +@@ -3785,7 +3791,7 @@ + } + + /* nnrk, nngrk, nork, nogrk */ +- if (TARGET_ARCH13 ++ if (TARGET_Z15 + && (GET_CODE (XEXP (x, 0)) == AND || GET_CODE (XEXP (x, 0)) == IOR) + && XEXP (x, 1) == const0_rtx + && (GET_MODE (XEXP (x, 0)) == SImode || GET_MODE (XEXP (x, 0)) == DImode) +@@ -14440,16 +14446,16 @@ + if (get_attr_z14_groupoftwo (insn)) + mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; + break; +- case PROCESSOR_8561_ARCH13: +- if (get_attr_arch13_cracked (insn)) ++ case PROCESSOR_8561_Z15: ++ if (get_attr_z15_cracked (insn)) + mask |= S390_SCHED_ATTR_MASK_CRACKED; +- if (get_attr_arch13_expanded (insn)) ++ if (get_attr_z15_expanded (insn)) + mask |= S390_SCHED_ATTR_MASK_EXPANDED; +- if (get_attr_arch13_endgroup (insn)) ++ if (get_attr_z15_endgroup (insn)) + mask |= S390_SCHED_ATTR_MASK_ENDGROUP; +- if (get_attr_arch13_groupalone (insn)) ++ if (get_attr_z15_groupalone (insn)) + mask |= S390_SCHED_ATTR_MASK_GROUPALONE; +- if (get_attr_arch13_groupoftwo (insn)) ++ if (get_attr_z15_groupoftwo (insn)) + mask |= S390_SCHED_ATTR_MASK_GROUPOFTWO; + break; + default: +@@ -14487,15 +14493,15 @@ + if (get_attr_z14_unit_vfu (insn)) + mask |= 1 << 3; + break; +- case PROCESSOR_8561_ARCH13: ++ case PROCESSOR_8561_Z15: + *units = 4; +- if (get_attr_arch13_unit_lsu (insn)) ++ if (get_attr_z15_unit_lsu (insn)) + mask |= 1 << 0; +- if (get_attr_arch13_unit_fxa (insn)) ++ if (get_attr_z15_unit_fxa (insn)) + mask |= 1 << 1; +- if (get_attr_arch13_unit_fxb (insn)) ++ if (get_attr_z15_unit_fxb (insn)) + mask |= 1 << 2; +- if (get_attr_arch13_unit_vfu (insn)) ++ if (get_attr_z15_unit_vfu (insn)) + mask |= 1 << 3; + break; + default: +@@ -14511,7 +14517,7 @@ + return false; + + return get_attr_z13_unit_fpd (insn) || get_attr_z14_unit_fpd (insn) +- || get_attr_arch13_unit_fpd (insn); ++ || get_attr_z15_unit_fpd (insn); + } + + static bool +@@ -14521,7 +14527,7 @@ + return false; + + return get_attr_z13_unit_fxd (insn) || get_attr_z14_unit_fxd (insn) +- || get_attr_arch13_unit_fxd (insn); ++ || get_attr_z15_unit_fxd (insn); + } + + /* Returns TRUE if INSN is a long-running instruction. */ +Index: gcc/config/s390/s390-builtins.def +=================================================================== +--- a/src/gcc/config/s390/s390-builtins.def (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390-builtins.def (.../branches/gcc-9-branch) +@@ -281,7 +281,7 @@ + #define B_HTM (1 << 1) /* Builtins requiring the transactional execution facility. */ + #define B_VX (1 << 2) /* Builtins requiring the z13 vector extensions. */ + #define B_VXE (1 << 3) /* Builtins requiring the z14 vector extensions. */ +-#define B_VXE2 (1 << 4) /* Builtins requiring the arch13 vector extensions. */ ++#define B_VXE2 (1 << 4) /* Builtins requiring the z15 vector extensions. */ + #define B_DEP (1 << 5) /* Builtin has been deprecated and a warning should be issued. */ + + /* B_DEF defines a standard (not overloaded) builtin +Index: gcc/config/s390/vx-builtins.md +=================================================================== +--- a/src/gcc/config/s390/vx-builtins.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/vx-builtins.md (.../branches/gcc-9-branch) +@@ -2147,7 +2147,7 @@ + "fmaxb\t%v0,%v1,%v2,%b3" + [(set_attr "op_type" "VRR")]) + +-; The element reversal builtins introduced with arch13 have been made ++; The element reversal builtins introduced with z15 have been made + ; available also for older CPUs down to z13. + (define_expand "eltswap" + [(set (match_operand:VEC_HW 0 "nonimmediate_operand" "") +@@ -2181,8 +2181,8 @@ + vster\t%v1,%v0" + [(set_attr "op_type" "*,VRX,VRX")]) + +-; arch13 has instructions for doing element reversal from mem to reg +-; or the other way around. For reg to reg or on pre arch13 machines ++; z15 has instructions for doing element reversal from mem to reg ++; or the other way around. For reg to reg or on pre z15 machines + ; we have to emulate it with vector permute. + (define_insn_and_split "*eltswap_emu" + [(set (match_operand:VEC_HW 0 "nonimmediate_operand" "=vR") +Index: gcc/config/s390/s390.h +=================================================================== +--- a/src/gcc/config/s390/s390.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/s390.h (.../branches/gcc-9-branch) +@@ -41,12 +41,12 @@ + PF_Z14 = 2048, + PF_VXE = 4096, + PF_VXE2 = 8192, +- PF_ARCH13 = 16384 ++ PF_Z15 = 16384 + }; + + /* This is necessary to avoid a warning about comparing different enum + types. */ +-#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_ARCH13 ? PROCESSOR_8561_ARCH13 : s390_tune )) ++#define s390_tune_attr ((enum attr_cpu)(s390_tune > PROCESSOR_8561_Z15 ? PROCESSOR_8561_Z15 : s390_tune )) + + /* These flags indicate that the generated code should run on a cpu + providing the respective hardware facility regardless of the +@@ -100,10 +100,10 @@ + (s390_arch_flags & PF_VXE) + #define TARGET_CPU_VXE_P(opts) \ + (opts->x_s390_arch_flags & PF_VXE) +-#define TARGET_CPU_ARCH13 \ +- (s390_arch_flags & PF_ARCH13) +-#define TARGET_CPU_ARCH13_P(opts) \ +- (opts->x_s390_arch_flags & PF_ARCH13) ++#define TARGET_CPU_Z15 \ ++ (s390_arch_flags & PF_Z15) ++#define TARGET_CPU_Z15_P(opts) \ ++ (opts->x_s390_arch_flags & PF_Z15) + #define TARGET_CPU_VXE2 \ + (s390_arch_flags & PF_VXE2) + #define TARGET_CPU_VXE2_P(opts) \ +@@ -160,9 +160,9 @@ + (TARGET_VX && TARGET_CPU_VXE) + #define TARGET_VXE_P(opts) \ + (TARGET_VX_P (opts) && TARGET_CPU_VXE_P (opts)) +-#define TARGET_ARCH13 (TARGET_ZARCH && TARGET_CPU_ARCH13) +-#define TARGET_ARCH13_P(opts) \ +- (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_ARCH13_P (opts)) ++#define TARGET_Z15 (TARGET_ZARCH && TARGET_CPU_Z15) ++#define TARGET_Z15_P(opts) \ ++ (TARGET_ZARCH_P (opts->x_target_flags) && TARGET_CPU_Z15_P (opts)) + #define TARGET_VXE2 \ + (TARGET_VX && TARGET_CPU_VXE2) + #define TARGET_VXE2_P(opts) \ +Index: gcc/config/s390/8561.md +=================================================================== +--- a/src/gcc/config/s390/8561.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/s390/8561.md (.../branches/gcc-9-branch) +@@ -1,4 +1,4 @@ +-;; Scheduling description for arch13. ++;; Scheduling description for z15. + ;; Copyright (C) 2019 Free Software Foundation, Inc. + ;; Contributed by Robin Dapp (rdapp@linux.ibm.com) + ;; This file is part of GCC. +@@ -17,12 +17,12 @@ + ;; along with GCC; see the file COPYING3. If not see + ;; . + +-(define_attr "arch13_unit_fpd" "" ++(define_attr "z15_unit_fpd" "" + (cond [(eq_attr "mnemonic" "ddb,ddbr,deb,debr,dxbr,sqdb,sqdbr,sqeb,\ + sqebr,sqxbr,vfddb,vfdsb,vfsqdb,vfsqsb,wfddb,wfdsb,wfdxb,wfsqdb,wfsqxb") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_unit_fxa" "" ++(define_attr "z15_unit_fxa" "" + (cond [(eq_attr "mnemonic" "a,afi,ag,agf,agfi,agfr,agh,aghi,aghik,\ + agr,agrk,ah,ahi,ahik,ahy,al,alc,alcg,alcgr,alcr,alfi,alg,algf,algfi,algfr,\ + alghsik,algr,algrk,alhsik,alr,alrk,aly,ar,ark,ay,bras,brasl,etnd,exrl,flogr,\ +@@ -39,7 +39,7 @@ + xgr,xgrk,xihf,xilf,xr,xrk,xy") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_unit_fxb" "" ++(define_attr "z15_unit_fxb" "" + (cond [(eq_attr "mnemonic" "agsi,algsi,alsi,asi,b,bc,bcr,bi,br,brcl,\ + c,cfi,cg,cgf,cgfi,cgfr,cgfrl,cgh,cghi,cghrl,cghsi,cgit,cgr,cgrl,cgrt,ch,\ + chi,chrl,chsi,chy,cit,cl,clfhsi,clfi,clfit,clg,clgf,clgfi,clgfr,clgfrl,\ +@@ -52,11 +52,11 @@ + vlvgp,vst,vstef,vsteg,vstl,vstrl,vstrlr,xi,xiy") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_unit_fxd" "" ++(define_attr "z15_unit_fxd" "" + (cond [(eq_attr "mnemonic" "dlgr,dlr,dr,dsgfr,dsgr") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_unit_lsu" "" ++(define_attr "z15_unit_lsu" "" + (cond [(eq_attr "mnemonic" "a,adb,aeb,ag,agf,agh,agsi,ah,ahy,al,alc,\ + alcg,alg,algf,algsi,alsi,aly,asi,ay,c,cdb,ceb,cg,cgf,cgfrl,cgh,cghrl,cghsi,\ + cgrl,ch,chrl,chsi,chy,cl,clc,clfhsi,clg,clgf,clgfrl,clghrl,clghsi,clgrl,\ +@@ -73,7 +73,7 @@ + vstef,vsteg,vstl,vstrl,vstrlr,x,xg,xi,xiy,xy") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_unit_vfu" "" ++(define_attr "z15_unit_vfu" "" + (cond [(eq_attr "mnemonic" "adb,adbr,adtr,aeb,aebr,axbr,axtr,cdb,\ + cdbr,cdtr,ceb,cebr,cpsdr,cxbr,cxtr,ddtr,dxtr,fidbr,fidbra,fidtr,fiebr,\ + fiebra,fixbr,fixbra,fixtr,lcdbr,lcebr,lcxbr,ldeb,ldebr,ldetr,le,ledbr,ledtr,\ +@@ -115,7 +115,7 @@ + wfmxb,wfnmaxb,wfnmsxb,wfsdb,wfssb,wfsxb,wldeb,wledb") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_cracked" "" ++(define_attr "z15_cracked" "" + (cond [(eq_attr "mnemonic" "bas,basr,cdfbr,cdftr,cdgbr,cdgtr,cdlfbr,\ + cdlftr,cdlgbr,cdlgtr,cefbr,cegbr,celfbr,celgbr,cfdbr,cfebr,cfxbr,cgdbr,cgdtr,\ + cgebr,cgxbr,cgxtr,chhsi,clfdbr,clfdtr,clfebr,clfxbr,clfxtr,clgdbr,clgdtr,\ +@@ -123,13 +123,13 @@ + rxsbg,stpq,vgef,vgeg,vscef,vsceg,vsteb,vsteh") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_expanded" "" ++(define_attr "z15_expanded" "" + (cond [(eq_attr "mnemonic" "cds,cdsg,cdsy,cxfbr,cxftr,cxgbr,cxgtr,\ + cxlfbr,cxlftr,cxlgbr,cxlgtr,dl,dlg,dsg,dsgf,lam,lm,lmg,lmy,sldl,srda,srdl,\ + stam,stm,stmg,stmy,tbegin,tbeginc") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_groupalone" "" ++(define_attr "z15_groupalone" "" + (cond [(eq_attr "mnemonic" "alc,alcg,alcgr,alcr,axbr,axtr,clc,cxbr,\ + cxtr,dlgr,dlr,dr,dsgfr,dsgr,dxbr,dxtr,fixbr,fixbra,fixtr,flogr,lcxbr,lnxbr,\ + lpxbr,ltxbr,ltxtr,lxdb,lxdbr,lxdtr,lxeb,lxebr,m,madb,maeb,maebr,mfy,mg,mgrk,\ +@@ -137,11 +137,11 @@ + slbgr,slbr,sqxbr,sxbr,sxtr,tabort,tcxb,tdcxt,tend,xc") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_endgroup" "" ++(define_attr "z15_endgroup" "" + (cond [(eq_attr "mnemonic" "bras,brasl,exrl,ipm") + (const_int 1)] (const_int 0))) + +-(define_attr "arch13_groupoftwo" "" ++(define_attr "z15_groupoftwo" "" + (cond [(eq_attr "mnemonic" "vacccq,vacq,vfmadb,vfmasb,vfmsdb,vfmssb,\ + vfnmadb,vfnmasb,vfnmsdb,vfnmssb,vgfmab,vgfmaf,vgfmag,vgfmah,vmaeb,vmaef,vmaeh,\ + vmahb,vmahf,vmahh,vmalb,vmaleb,vmalef,vmaleh,vmalf,vmalhb,vmalhf,vmalhh,\ +@@ -149,8 +149,8 @@ + wfmadb,wfmasb,wfmaxb,wfmsdb,wfmssb,wfmsxb,wfnmaxb,wfnmsxb") + (const_int 1)] (const_int 0))) + +-(define_insn_reservation "arch13_0" 0 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_0" 0 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "a,afi,ag,agfi,aghi,aghik,agr,agrk,ahi,ahik,al,\ + alfi,alg,algf,algfi,algfr,alghsik,algr,algrk,alhsik,alr,alrk,aly,ar,ark,ay,\ + b,bc,bcr,bi,br,bras,brasl,brcl,c,cfi,cg,cgfi,cghi,cghsi,cgit,cgr,cgrl,\ +@@ -168,8 +168,8 @@ + tmhh,tmhl,tml,tmlh,tmll,tmy,vlr,vlvgb,vlvgf,vlvgg,vlvgh,x,xg,xgr,xgrk,xihf,\ + xilf,xr,xrk,xy")) "nothing") + +-(define_insn_reservation "arch13_1" 1 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_1" 1 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "agf,agfr,agh,agsi,ah,ahy,algsi,alsi,asi,cgf,\ + cgfr,cgfrl,cgh,cghrl,ch,chrl,chy,clm,clmy,cpsdr,laa,laag,lan,lang,lao,laog,\ + lax,laxg,le,ler,ley,loc,locg,locghi,locgr,lochi,locr,mvghi,mvhhi,mvhi,mvi,\ +@@ -196,8 +196,8 @@ + wflcsb,wflcxb,wflndb,wflnsb,wflnxb,wflpdb,wflpsb,wflpxb,wfmaxxb,wfminxb,xi,\ + xiy")) "nothing") + +-(define_insn_reservation "arch13_2" 2 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_2" 2 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cdb,cdbr,ceb,cebr,ear,ipm,l,lcbb,lcdbr,lcebr,ld,\ + lde,ldy,lg,lgdr,lgrl,llc,llgc,llgf,llgfrl,llgh,llghrl,llgt,llh,llhrl,lm,\ + lmg,lmy,lndbr,lnebr,lpdbr,lpebr,lrl,ltdbr,ltebr,ly,popcnt,sar,tcdb,tceb,\ +@@ -208,8 +208,8 @@ + vlrepf,vlrepg,vlreph,vlrl,vlvgp,vpklsfs,vpklsgs,vpklshs,vpksfs,vpksgs,vpkshs,\ + wfcdb,wfcexbs,wfchexbs,wfchxbs,wfcsb")) "nothing") + +-(define_insn_reservation "arch13_3" 3 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_3" 3 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cds,cdsy,mgh,mghi,mh,mhi,mhy,std,stdy,ste,stey,\ + vcksm,vfeezbs,vfeezfs,vfeezhs,vgfmab,vgfmaf,vgfmag,vgfmah,vgfmb,vgfmf,vgfmg,\ + vgfmh,vistrbs,vistrfs,vistrhs,vl,vlbb,vll,vlrlr,vmaeb,vmaef,vmaeh,vmahb,\ +@@ -218,14 +218,14 @@ + vmleb,vmlef,vmleh,vmlf,vmlhb,vmlhf,vmlhh,vmlhw,vmlob,vmlof,vmloh,vmob,vmof,\ + vmoh,vsumb,vsumgf,vsumgh,vsumh,vsumqf,vsumqg,vtm")) "nothing") + +-(define_insn_reservation "arch13_4" 4 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_4" 4 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "bas,basr,chhsi,clc,ex,lam,lcgfr,lngfr,lpgfr,lxr,\ + lzxr,ms,msfi,msgf,msgfi,msgfr,msr,msy,mvc,nc,oc,ppa,rxsbg,tabort,tbegin,\ + tbeginc,tend,vst,vstef,vsteg,vstl,vstrl,vstrlr,xc")) "nothing") + +-(define_insn_reservation "arch13_5" 5 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_5" 5 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "adb,adbr,aeb,aebr,alc,alcg,alcgr,alcr,cs,csg,\ + csy,fidbr,fidbra,fiebr,fiebra,ldeb,ldebr,ledbr,madbr,mdb,mdbr,meeb,meebr,\ + msdbr,msrkc,sdb,sdbr,seb,sebr,slb,slbg,slbgr,slbr,stm,stmg,stmy,vfadb,vfasb,\ +@@ -233,53 +233,53 @@ + vfnmssb,vfsdb,vfssb,vldeb,vledb,vmslg,wfadb,wfasb,wfidb,wfisb,wflld,wfmadb,\ + wfmasb,wfmdb,wfmsb,wfmsdb,wfmssb,wfsdb,wfssb,wldeb,wledb")) "nothing") + +-(define_insn_reservation "arch13_6" 6 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_6" 6 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "msg,msgr,sfpc")) "nothing") + +-(define_insn_reservation "arch13_7" 7 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_7" 7 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "adtr,cdtr,fidtr,ldetr,ltdtr,msgrkc,sdtr,tdcdt,\ + tdcet,vgef,vgeg")) "nothing") + +-(define_insn_reservation "arch13_8" 8 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_8" 8 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cdsg,flogr,lpq,stpq,vsteb,vsteh")) "nothing") + +-(define_insn_reservation "arch13_9" 9 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_9" 9 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cdfbr,cdgbr,cdlfbr,cdlgbr,cefbr,cegbr,celfbr,\ + celgbr,cxfbr,cxgbr,cxlfbr,cxlgbr,m,madb,maeb,maebr,mfy,ml,mlr,mr,msdb,mseb,\ + msebr,stam,wfaxb,wfixb,wfsxb")) "nothing") + +-(define_insn_reservation "arch13_10" 10 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_10" 10 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "lxdb,lxdbr,lxeb,lxebr,vscef,vsceg")) "nothing") + +-(define_insn_reservation "arch13_11" 11 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_11" 11 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cfdbr,cfebr,cgdbr,cgebr,clfdbr,clfebr,clgdbr,\ + clgebr,mg,mgrk,mlg,mlgr")) "nothing") + +-(define_insn_reservation "arch13_12" 12 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_12" 12 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cxbr,cxftr,cxlftr,cxtr,tcxb,tdcxt")) "nothing") + +-(define_insn_reservation "arch13_13" 13 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_13" 13 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "axbr,axtr,fixbr,fixbra,fixtr,lcxbr,lnxbr,lpxbr,\ + ltxbr,ltxtr,lxdtr,sxbr,sxtr")) "nothing") + +-(define_insn_reservation "arch13_14" 14 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_14" 14 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cfxbr,cgxbr,clfxbr,clgxbr,ledtr")) "nothing") + +-(define_insn_reservation "arch13_16" 16 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_16" 16 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cdftr,cdlftr")) "nothing") + +-(define_insn_reservation "arch13_20" 20 +- (and (eq_attr "cpu" "arch13") ++(define_insn_reservation "z15_20" 20 ++ (and (eq_attr "cpu" "z15") + (eq_attr "mnemonic" "cdgtr,cdlgtr,cgdtr,cgxtr,clfdtr,clfxtr,clgdtr,\ + clgxtr,cxgtr,cxlgtr,d,ddb,ddbr,ddtr,deb,debr,dl,dlg,dlgr,dlr,dr,dsg,dsgf,\ + dsgfr,dsgr,dxbr,dxtr,efpc,mdtr,mxbr,mxtr,sqdb,sqdbr,sqeb,sqebr,sqxbr,vfddb,\ +Index: gcc/config/sparc/sparc.c +=================================================================== +--- a/src/gcc/config/sparc/sparc.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/sparc/sparc.c (.../branches/gcc-9-branch) +@@ -4208,6 +4208,13 @@ + static bool + sparc_cannot_force_const_mem (machine_mode mode, rtx x) + { ++ /* After IRA has run in PIC mode, it is too late to put anything into the ++ constant pool if the PIC register hasn't already been initialized. */ ++ if ((lra_in_progress || reload_in_progress) ++ && flag_pic ++ && !crtl->uses_pic_offset_table) ++ return true; ++ + switch (GET_CODE (x)) + { + case CONST_INT: +@@ -4457,7 +4464,7 @@ + return true; + + if (!HARD_REGISTER_P (pic_offset_table_rtx) +- && (HARD_REGISTER_P (x) || lra_in_progress) ++ && (HARD_REGISTER_P (x) || lra_in_progress || reload_in_progress) + && ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx)) + return true; + +Index: gcc/config/sparc/sparc.h +=================================================================== +--- a/src/gcc/config/sparc/sparc.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/sparc/sparc.h (.../branches/gcc-9-branch) +@@ -736,6 +736,13 @@ + register window instruction in the prologue. */ + #define HARD_REGNO_RENAME_OK(FROM, TO) ((FROM) != 1) + ++/* Select a register mode required for caller save of hard regno REGNO. ++ Contrary to what is documented, the default is not the smallest suitable ++ mode but the largest suitable mode for the given (REGNO, NREGS) pair and ++ it quickly creates paradoxical subregs that can be problematic. */ ++#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE) \ ++ ((MODE) == VOIDmode ? choose_hard_reg_mode (REGNO, NREGS, false) : (MODE)) ++ + /* Specify the registers used for certain standard purposes. + The values of these macros are register numbers. */ + +Index: gcc/config/darwin.opt +=================================================================== +--- a/src/gcc/config/darwin.opt (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin.opt (.../branches/gcc-9-branch) +@@ -18,241 +18,383 @@ + ; along with GCC; see the file COPYING3. If not see + ; . + +-; Various linker options have a -Z added so that they can get to specs +-; processing without interference. Note that an option name with a +-; prefix that matches another option name, that also takes an +-; argument, being mapped to a -Z linker option, needs to be modified +-; so the prefix is different, otherwise a '*' after the shorter option +-; will match with the longer one. ++; We have a lot of Driver options, many of which are obsolete or very very ++; rarely used so, to keep this file easier to manage: + ++; Please place all Non-driver options first (in alphabetical order), followed ++; by Driver-only options. ++ ++; Non-driver options. ++ ++dependency-file ++C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs) ++ ++fapple-kext ++Target Report C++ Var(flag_apple_kext) ++Generate code for darwin loadable kernel extensions. ++ ++iframework ++Target RejectNegative C ObjC C++ ObjC++ Joined Separate ++-iframework Add to the end of the system framework include path. ++ ++mconstant-cfstrings ++Target Report Var(darwin_constant_cfstrings) Init(1) ++Generate compile-time CFString objects. ++ ++Wnonportable-cfstrings ++Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning ++Warn if constant CFString objects contain non-portable characters. ++ ++; Use new-style pic stubs if this is true, x86 only so far. ++matt-stubs ++Target Report Var(darwin_macho_att_stub) Init(1) ++Generate AT&T-style stubs for Mach-O. ++ ++mdynamic-no-pic ++Target Common Report Mask(MACHO_DYNAMIC_NO_PIC) ++Generate code suitable for executables (NOT shared libs). ++ ++mfix-and-continue ++Target Report Var(darwin_fix_and_continue) ++Generate code suitable for fast turn around debugging. ++ ++mkernel ++Target Report Var(flag_mkernel) ++Generate code for the kernel or loadable kernel extensions. ++ ++; The Init here is for the convenience of GCC developers, so that cc1 ++; and cc1plus don't crash if no -mmacosx-version-min is passed. The ++; driver will always pass a -mmacosx-version-min, so in normal use the ++; Init is never used. ++mmacosx-version-min= ++Target RejectNegative Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION) ++The earliest MacOS X version on which this program will run. ++ ++; Really, only relevant to PowerPC which has a 4 byte bool by default. ++mone-byte-bool ++Target RejectNegative Report Var(darwin_one_byte_bool) ++Set sizeof(bool) to 1. ++ ++msymbol-stubs ++Target Report Var(darwin_symbol_stubs) Init(0) ++Force generation of external symbol indirection stubs. ++ ++; Some code-gen may be improved / adjusted if the linker is sufficiently modern. ++mtarget-linker= ++Target RejectNegative Joined Report Alias(mtarget-linker) ++ ++mtarget-linker ++Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION) ++The version of ld64 in use for this toolchain. ++ ++; Driver options. ++ + all_load +-Driver Alias(Zall_load) ++Driver RejectNegative Alias(Zall_load) ++Loads all members of archive libraries + + allowable_client +-Driver Separate Alias(Zallowable_client) ++Driver RejectNegative Separate Alias(Zallowable_client) ++-allowable_client The output dylib is private to the client(s) named + + arch + Driver RejectNegative Separate ++-arch Specify that the output file should be generated for architecture \"name\" + + arch_errors_fatal +-Driver Alias(Zarch_errors_fatal) ++Driver RejectNegative Alias(Zarch_errors_fatal) ++Mismatches between file architecture and the \"-arch\" are errors instead of warnings + + asm_macosx_version_min= + Driver RejectNegative Joined ++The earliest MacOS X version on which this program will run (formatted for the assembler) + + bind_at_load +-Driver Alias(Zbind_at_load) ++Driver RejectNegative Alias(Zbind_at_load) ++Produce an output file that will bind symbols on load, rather than lazily. + + bundle +-Driver Alias(Zbundle) ++Driver RejectNegative Alias(Zbundle) ++Produce a Mach-O bundle (file type MH_BUNDLE) + + bundle_loader +-Driver Separate Alias(Zbundle_loader) ++Driver RejectNegative Separate Alias(Zbundle_loader) ++-bundle_loader Treat \"executable\" (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution + ++client_name ++Driver RejectNegative Separate ++-client_name Enable the executable being built to link against a private dylib (using allowable_client) ++ ++compatibility_version ++Driver RejectNegative Separate ++-compatibility_version Set the minimum version for the client interface. Clients must record a greater number than this or the binding will fail at runtime ++ ++current_version ++Driver RejectNegative Separate ++-current_version Set the current version for the library. ++ + dead_strip +-Driver Alias(Zdead_strip) ++Driver RejectNegative Alias(Zdead_strip) ++Remove code and data that is unreachable from any exported symbol (including the entry point) + +-dependency-file +-C ObjC C++ ObjC++ Separate Alias(MF) MissingArgError(missing filename after %qs) +- + dylib_file + Driver Separate Alias(Zdylib_file) + + dylinker +-Driver ++Driver RejectNegative ++Produce a Mach-O dylinker (file type MH_DYLINKER), only used for building dyld. + ++dylinker_install_name ++Driver RejectNegative Separate ++-dylinker_install_name Only used for building dyld. ++ + dynamic +-Driver Alias(Zdynamic) ++Driver RejectNegative Alias(Zdynamic) ++The default (and opposite of -static), implied by user mode executables, shared libraries and bundles. + + dynamiclib +-Driver Alias(Zdynamiclib) ++Driver RejectNegative Alias(Zdynamiclib) ++Produce a Mach-O shared library (file type MH_DYLIB), synonym for -shared + + exported_symbols_list +-Driver Separate Alias(Zexported_symbols_list) ++Driver RejectNegative Separate Alias(Zexported_symbols_list) ++-exported_symbols_list Global symbols in \"filename\" will be exported from the linked output file, any symbols not mentioned will be treated as hidden. + + filelist + Driver RejectNegative Separate ++Supply a list of objects to be linked from a file, rather than the command line + + findirect-virtual-calls + Driver RejectNegative ++Used for generating code for some older kernel revisions. + + flat_namespace + Driver RejectNegative Alias(Zflat_namespace) ++Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol. + + force_cpusubtype_ALL + Driver RejectNegative Alias(Zforce_cpusubtype_ALL) ++For the assembler (and linker) permit any architecture sub-variant to be used without error. + + force_flat_namespace + Driver RejectNegative Alias(Zforce_flat_namespace) ++Set the output object such that, on loading, dyld will ignore any two-level information and resolve symbols in the discovery order for loaded libs. + + framework + Driver RejectNegative Separate ++-framework The linker should search for the named framework in the framework search path. + + fterminated-vtables + Driver RejectNegative ++Used for generating code for some older kernel revisions. + + gfull + Driver RejectNegative ++Abbreviation for \"-g -fno-eliminate-unused-debug-symbols\" + + gused + Driver RejectNegative ++Abbreviation for \"-g -feliminate-unused-debug-symbols\" + + headerpad_max_install_names +-Driver ++Driver RejectNegative ++Automatically adds space for longer path names in load commands (up to MAXPATHLEN) + + image_base +-Driver Separate Alias(Zimage_base) ++Driver RejectNegative Separate Alias(Zimage_base) ++-image_base
Choose a base address for a dylib or bundle. + + init +-Driver Separate Alias(Zinit) ++Driver RejectNegative Separate Alias(Zinit) ++-init The symbol \"symbol_name\" will be used as the first initialiser for a dylib. + + install_name +-Driver Separate Alias(Zinstall_name) ++Driver RejectNegative Separate Alias(Zinstall_name) ++-install_name Set the install name for a dylib. + + keep_private_externs +-Driver ++Driver RejectNegative ++Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported. + +-mconstant-cfstrings +-Target Report Var(darwin_constant_cfstrings) Init(1) +-Generate compile-time CFString objects. +- + multi_module + Driver RejectNegative Alias(Zmulti_module) ++(Obsolete after 10.4) Multi modules are ignored at runtime since MacOS 10.4 + + multiply_defined + Driver RejectNegative Separate Alias(Zmultiply_defined) ++(Obsolete after 10.4) -multiply_defined Provided a mechanism for warning about symbols defined in multiple dylibs. + + multiply_defined_unused + Driver RejectNegative Separate Alias(Zmultiplydefinedunused) ++(Obsolete after 10.4) -multiply_defined_unused Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs. + + no_dead_strip_inits_and_terms +-Driver Alias(Zno_dead_strip_inits_and_terms) ++Driver RejectNegative Alias(Zno_dead_strip_inits_and_terms) ++(Obsolete) The linker never dead strips these items, so the option is not needed. + + nofixprebinding +-Driver ++Driver RejectNegative ++(Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an exectuable. + + nomultidefs +-Driver ++Driver RejectNegative ++(Obsolete after 10.4) Set MH_NOMULTIDEFS in an umbrella framework. + + noprebind +-Driver ++Driver RejectNegative Negative(prebind) ++(Obsolete) LD_PREBIND is no longer supported. + + noseglinkedit +-Driver ++Driver RejectNegative Negative(seglinkedit) ++(Obsolete) This is the default. + + object +-Driver ++Driver RejectNegative + ++pagezero_size ++Driver RejectNegative Separate ++-pagezero_size size Allows setting the page 0 size to 4kb for certain special cases. ++ + prebind +-Driver ++Driver RejectNegative Negative(noprebind) ++(Obsolete) LD_PREBIND is no longer supported. + + prebind_all_twolevel_modules +-Driver ++Driver RejectNegative ++(Obsolete) LD_PREBIND is no longer supported. + + preload +-Driver ++Driver RejectNegative ++Produces a Mach-O file suitable for embedded/ROM use. + + private_bundle +-Driver ++Driver RejectNegative ++(Obsolete) Allowed linking to proceed with \"-flat_namespace\" when a linked bundle contained a symbol also exported from the main executable. + + pthread +-Driver ++Driver RejectNegative + + rdynamic +-Driver ++Driver RejectNegative ++Synonym for \"-export-dynamic\" for linker versions that support it. + ++read_only_relocs ++Driver RejectNegative Separate ++-read_only_relocs This will allow relocs in read-only pages (not advisable). ++ ++sectalign ++Driver RejectNegative Separate Args(3) ++-sectalign Set section \"sectname\" in segment \"segname\" to have alignment \"value\" which must be an integral power of two expressed in hexadecimal form. ++ ++sectcreate ++Driver RejectNegative Separate Args(3) ++-sectcreate Create section \"sectname\" in segment \"segname\" from the contents of \"file\". ++ ++sectobjectsymbols ++Driver RejectNegative Separate Args(2) ++(Obsolete) -sectobjectsymbols Setting a local symbol at the start of a section is no longer supported. ++ ++sectorder ++Driver RejectNegative Separate Args(3) ++(Obsolete) -sectorder orderfile Replaced by a more general option \"-order_file\". ++ + seg_addr_table +-Driver Separate Alias(Zseg_addr_table) ++Driver RejectNegative Separate Alias(Zseg_addr_table) ++-seg_addr_table Specify the base addresses for dynamic libraries, \"file\" contains a line for each library. + ++; This is only usable by the ld_classic linker. + seg_addr_table_filename +-Driver Separate Alias(Zfn_seg_addr_table_filename) ++Driver RejectNegative Separate Alias(Zfn_seg_addr_table_filename) ++(Obsolete, ld_classic only) -seg_addr_table_filename + ++seg1addr ++Driver RejectNegative Separate ++Synonym for \"image_base\" ++ + segaddr +-Driver Separate Args(2) Alias(Zsegaddr) ++Driver RejectNegative Separate Args(2) Alias(Zsegaddr) ++-segaddr
Set the base address of segment \"name\" to \"address\" which must be aligned to a page boundary (currently 4kb). + ++; This is only usable by the ld_classic linker. ++segcreate ++Driver RejectNegative Separate Args(3) ++(Obsolete, ld_classic only) -sectcreate segname sectname file ++ + seglinkedit +-Driver ++Driver RejectNegative Negative(noseglinkedit) ++(Obsolete) Object files with LINKEDIT sections are no longer supported. + ++segprot ++Driver RejectNegative Separate Args(3) ++-segprot max_prot init_prot The protection values are \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\". ++ + segs_read_only_addr +-Driver Separate Alias(Zsegs_read_only_addr) ++Driver RejectNegative Separate Alias(Zsegs_read_only_addr) ++-segs_read_only_addr address Allows specifying the address of the read only portion of a dylib. + + segs_read_write_addr +-Driver Separate Alias(Zsegs_read_write_addr) ++Driver RejectNegative Separate Alias(Zsegs_read_write_addr) ++-segs_read_write_addr address Allows specifying the address of the read/write portion of a dylib. + + single_module +-Driver Alias(Zsingle_module) ++Driver RejectNegative Alias(Zsingle_module) ++(Obsolete) This is the default. + ++sub_library ++Driver RejectNegative Separate ++-sub_library Library named \"name\" will be re-exported (only useful for dylibs). ++ ++sub_umbrella ++Driver RejectNegative Separate ++-sub_umbrella Framework named \"name\" will be re-exported (only useful for dylibs). ++ + twolevel_namespace +-Driver ++Driver RejectNegative ++This is the default + + twolevel_namespace_hints +-Driver ++Driver RejectNegative ++Specifies content that can speed up dynamic loading when the binaries are unchanged. + + umbrella +-Driver Separate Alias(Zumbrella) ++Driver RejectNegative Separate Alias(Zumbrella) ++-umbrella The specified framework will be re-exported. + ++undefined ++Driver RejectNegative Separate ++-undefined Specify the handling for undefined symbols (default is error). ++ + unexported_symbols_list +-Driver Separate Alias(Zunexported_symbols_list) ++Driver RejectNegative Separate Alias(Zunexported_symbols_list) ++-unexported_symbols_list Don't export global symbols listed in filename. + + weak_reference_mismatches +-Driver Separate Alias(Zweak_reference_mismatches) ++Driver RejectNegative Separate Alias(Zweak_reference_mismatches) ++-weak_reference_mismatches Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak. + + whatsloaded +-Driver ++Driver RejectNegative ++Logs the object files the linker loads + + whyload +-Driver ++Driver RejectNegative ++Logs which symbol(s) caused an object to be loaded. + ++;(Obsolete, ignored) Strip symbols starting with "L", this is the default. ++X ++Driver RejectNegative ++ + y +-Driver Joined ++Driver RejectNegative Joined ++(Obsolete, ignored) Old support similar to whyload. + + Mach +-Driver ++Driver RejectNegative ++(Obsolete and unhandled by ld64, ignored) ld should produce an executable (only handled by ld_classic). + +-Wnonportable-cfstrings +-Target Report Var(darwin_warn_nonportable_cfstrings) Init(1) Warning +-Warn if constant CFString objects contain non-portable characters. ++;; These are not "real" options, but placeholders used to hide the real options ++;; from generic options processing... FIXME: they can be eliminated now. + +-; Use new-style pic stubs if this is true, x86 only so far. +-matt-stubs +-Target Report Var(darwin_macho_att_stub) Init(1) +-Generate AT&T-style stubs for Mach-O. +- +-mdynamic-no-pic +-Target Common Report Mask(MACHO_DYNAMIC_NO_PIC) +-Generate code suitable for executables (NOT shared libs). +- +-mfix-and-continue +-Target Report Var(darwin_fix_and_continue) +-Generate code suitable for fast turn around debugging. +- +-; The Init here is for the convenience of GCC developers, so that cc1 +-; and cc1plus don't crash if no -mmacosx-version-min is passed. The +-; driver will always pass a -mmacosx-version-min, so in normal use the +-; Init is never used. +-mmacosx-version-min= +-Target Joined Report Var(darwin_macosx_version_min) Init(DEF_MIN_OSX_VERSION) +-The earliest MacOS X version on which this program will run. +- +-mone-byte-bool +-Target RejectNegative Report Var(darwin_one_byte_bool) +-Set sizeof(bool) to 1. +- +-fapple-kext +-Target Report C++ Var(flag_apple_kext) +-Generate code for darwin loadable kernel extensions. +- +-mkernel +-Target Report Var(flag_mkernel) +-Generate code for the kernel or loadable kernel extensions. +- +-iframework +-Target RejectNegative C ObjC C++ ObjC++ Joined Separate +--iframework Add to the end of the system framework include path. +- +-X +-Driver +- + Zall_load + Driver + +@@ -343,62 +485,3 @@ + Zweak_reference_mismatches + Driver Separate + +-client_name +-Driver Separate +- +-compatibility_version +-Driver Separate +- +-current_version +-Driver Separate +- +-dylinker_install_name +-Driver Separate +- +-pagezero_size +-Driver Separate +- +-read_only_relocs +-Driver Separate +- +-sectalign +-Driver Separate Args(3) +- +-sectcreate +-Driver Separate Args(3) +- +-sectobjectsymbols +-Driver Separate Args(2) +- +-sectorder +-Driver Separate Args(3) +- +-seg1addr +-Driver Separate +- +-segcreate +-Driver Separate Args(3) +- +-segprot +-Driver Separate Args(3) +- +-segs_read_only_addr +-Driver Separate +- +-segs_read_write_addr +-Driver Separate +- +-sub_library +-Driver Separate +- +-sub_umbrella +-Driver Separate +- +-; Certain aspects of code-gen may be improved / adjusted if the version of ld64 +-; is sufficiently modern. +-mtarget-linker +-Target RejectNegative Joined Separate Report Var(darwin_target_linker) Init(LD64_VERSION) +-The version of ld64 in use for this toolchain. +- +-undefined +-Driver Separate +Index: gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/i386.h (.../branches/gcc-9-branch) +@@ -640,7 +640,7 @@ + /* Replace MACH-O, ifdefs by in-line tests, where possible. + (a) Macros defined in config/i386/darwin.h */ + #define TARGET_MACHO 0 +-#define TARGET_MACHO_BRANCH_ISLANDS 0 ++#define TARGET_MACHO_SYMBOL_STUBS 0 + #define MACHOPIC_ATT_STUB 0 + /* (b) Macros defined in config/darwin.h */ + #define MACHO_DYNAMIC_NO_PIC_P 0 +Index: gcc/config/i386/avx2intrin.h +=================================================================== +--- a/src/gcc/config/i386/avx2intrin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/avx2intrin.h (.../branches/gcc-9-branch) +@@ -258,7 +258,7 @@ + __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) + _mm256_cmpgt_epi8 (__m256i __A, __m256i __B) + { +- return (__m256i) ((__v32qi)__A > (__v32qi)__B); ++ return (__m256i) ((__v32qs)__A > (__v32qs)__B); + } + + extern __inline __m256i +Index: gcc/config/i386/sse.md +=================================================================== +--- a/src/gcc/config/i386/sse.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/sse.md (.../branches/gcc-9-branch) +@@ -2625,7 +2625,7 @@ + ;; Modes handled by reduc_sm{in,ax}* patterns. + (define_mode_iterator REDUC_SSE_SMINMAX_MODE + [(V4SF "TARGET_SSE") (V2DF "TARGET_SSE") +- (V2DI "TARGET_SSE") (V4SI "TARGET_SSE") (V8HI "TARGET_SSE") ++ (V2DI "TARGET_SSE4_2") (V4SI "TARGET_SSE") (V8HI "TARGET_SSE") + (V16QI "TARGET_SSE")]) + + (define_expand "reduc__scal_" +@@ -16241,7 +16241,7 @@ + } + }) + +-(define_insn "abs2" ++(define_insn "ssse3_abs2" + [(set (match_operand:MMXMODEI 0 "register_operand" "=y") + (abs:MMXMODEI + (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))] +Index: gcc/config/i386/i386-builtin.def +=================================================================== +--- a/src/gcc/config/i386/i386-builtin.def (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/i386-builtin.def (.../branches/gcc-9-branch) +@@ -818,11 +818,11 @@ + + /* SSSE3 */ + BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) + BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv4hi2, "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) + BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI) +-BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) ++BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_absv2si2, "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) + + BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_ssse3_phaddwv8hi3, "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI) + BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) +Index: gcc/config/i386/darwin.h +=================================================================== +--- a/src/gcc/config/i386/darwin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/darwin.h (.../branches/gcc-9-branch) +@@ -90,14 +90,12 @@ + #undef WCHAR_TYPE_SIZE + #define WCHAR_TYPE_SIZE 32 + +-/* Generate branch islands stubs if this is true. */ +-extern int darwin_emit_branch_islands; ++/* Generate pic symbol indirection stubs if this is true. */ ++#undef TARGET_MACHO_SYMBOL_STUBS ++#define TARGET_MACHO_SYMBOL_STUBS (darwin_symbol_stubs) + +-#undef TARGET_MACHO_BRANCH_ISLANDS +-#define TARGET_MACHO_BRANCH_ISLANDS darwin_emit_branch_islands +- + /* For compatibility with OSX system tools, use the new style of pic stub +- if this is set. */ ++ if this is set (default). */ + #undef MACHOPIC_ATT_STUB + #define MACHOPIC_ATT_STUB (darwin_macho_att_stub) + +@@ -245,7 +243,7 @@ + #undef FUNCTION_PROFILER + #define FUNCTION_PROFILER(FILE, LABELNO) \ + do { \ +- if (TARGET_MACHO_BRANCH_ISLANDS \ ++ if (TARGET_MACHO_SYMBOL_STUBS \ + && MACHOPIC_INDIRECT && !TARGET_64BIT) \ + { \ + const char *name = machopic_mcount_stub_name (); \ +@@ -326,10 +324,8 @@ + } \ + } + +-/* This needs to move since i386 uses the first flag and other flags are +- used in Mach-O. */ +-#undef MACHO_SYMBOL_FLAG_VARIABLE +-#define MACHO_SYMBOL_FLAG_VARIABLE ((SYMBOL_FLAG_MACH_DEP) << 3) ++/* First available SYMBOL flag bit for use by subtargets. */ ++#define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP << 5) + + #undef MACHOPIC_NL_SYMBOL_PTR_SECTION + #define MACHOPIC_NL_SYMBOL_PTR_SECTION \ +Index: gcc/config/i386/emmintrin.h +=================================================================== +--- a/src/gcc/config/i386/emmintrin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/emmintrin.h (.../branches/gcc-9-branch) +@@ -1308,7 +1308,7 @@ + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) + _mm_cmpeq_epi8 (__m128i __A, __m128i __B) + { +- return (__m128i) ((__v16qs)__A == (__v16qs)__B); ++ return (__m128i) ((__v16qi)__A == (__v16qi)__B); + } + + extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) +Index: gcc/config/i386/avxintrin.h +=================================================================== +--- a/src/gcc/config/i386/avxintrin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/avxintrin.h (.../branches/gcc-9-branch) +@@ -47,6 +47,7 @@ + typedef short __v16hi __attribute__ ((__vector_size__ (32))); + typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32))); + typedef char __v32qi __attribute__ ((__vector_size__ (32))); ++typedef signed char __v32qs __attribute__ ((__vector_size__ (32))); + typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32))); + + /* The Intel API is flexible enough that we must allow aliasing with other +Index: gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-9-branch) +@@ -16960,7 +16960,7 @@ + break; + + case SYMBOL_REF: +- if (TARGET_64BIT || ! TARGET_MACHO_BRANCH_ISLANDS) ++ if (TARGET_64BIT || ! TARGET_MACHO_SYMBOL_STUBS) + output_addr_const (file, x); + else + { +Index: gcc/config/darwin-protos.h +=================================================================== +--- a/src/gcc/config/darwin-protos.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin-protos.h (.../branches/gcc-9-branch) +@@ -53,8 +53,6 @@ + + #endif /* TREE_CODE */ + +-extern void machopic_finish (FILE *); +- + extern int machopic_reloc_rw_mask (void); + extern section *machopic_select_section (tree, int, unsigned HOST_WIDE_INT); + +Index: gcc/config/sh/sh.c +=================================================================== +--- a/src/gcc/config/sh/sh.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/sh/sh.c (.../branches/gcc-9-branch) +@@ -664,6 +664,9 @@ + #undef TARGET_CONSTANT_ALIGNMENT + #define TARGET_CONSTANT_ALIGNMENT constant_alignment_word_strings + ++#undef TARGET_HAVE_SPECULATION_SAFE_VALUE ++#define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + +@@ -737,7 +740,7 @@ + { + if (tokens[i] == "strict") + ret.strict = true; +- else if (tokens[i].find ("gbr-offset=") == 0) ++ else if (!tokens[i].compare (0, strlen ("gbr-offset="), "gbr-offset=")) + { + std::string offset_str = tokens[i].substr (strlen ("gbr-offset=")); + ret.tcb_gbr_offset = integral_argument (offset_str.c_str ()); +@@ -958,11 +961,13 @@ + if (flag_unsafe_math_optimizations) + { + /* Enable fsca insn for SH4A if not otherwise specified by the user. */ +- if (global_options_set.x_TARGET_FSCA == 0 && TARGET_SH4A_FP) ++ if (global_options_set.x_TARGET_FSCA == 0 ++ && (TARGET_SH4A_FP || TARGET_FPU_SH4_300)) + TARGET_FSCA = 1; + + /* Enable fsrra insn for SH4A if not otherwise specified by the user. */ +- if (global_options_set.x_TARGET_FSRRA == 0 && TARGET_SH4A_FP) ++ if (global_options_set.x_TARGET_FSRRA == 0 ++ && (TARGET_SH4A_FP || TARGET_FPU_SH4_300)) + TARGET_FSRRA = 1; + } + +@@ -12087,9 +12092,11 @@ + rtx r = gen_reg_rtx (SImode); + rtx_insn* i0; + if (from_mode == QImode) +- i0 = emit_insn_after (gen_extendqisi2 (r, set_src), insn); ++ i0 = sh_check_add_incdec_notes ( ++ emit_insn_after (gen_extendqisi2 (r, set_src), insn)); + else if (from_mode == HImode) +- i0 = emit_insn_after (gen_extendhisi2 (r, set_src), insn); ++ i0 = sh_check_add_incdec_notes ( ++ emit_insn_after (gen_extendhisi2 (r, set_src), insn)); + else + gcc_unreachable (); + +@@ -12507,7 +12514,7 @@ + sh_emit_mode_set (int entity ATTRIBUTE_UNUSED, int mode, + int prev_mode, HARD_REG_SET regs_live ATTRIBUTE_UNUSED) + { +- if ((TARGET_SH4A_FP || TARGET_SH4_300) ++ if ((TARGET_SH4A_FP || TARGET_FPU_SH4_300) + && prev_mode != FP_MODE_NONE && prev_mode != mode) + { + emit_insn (gen_toggle_pr ()); +Index: gcc/config/sh/sh.h +=================================================================== +--- a/src/gcc/config/sh/sh.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/sh/sh.h (.../branches/gcc-9-branch) +@@ -69,6 +69,8 @@ + FPU is disabled (which makes it compatible with SH4al-dsp). */ + #define TARGET_SH4A_FP (TARGET_SH4A && TARGET_FPU_ANY) + ++/* True if the FPU is a SH4-300 variant. */ ++#define TARGET_FPU_SH4_300 (TARGET_FPU_ANY && TARGET_SH4_300) + + /* This is not used by the SH2E calling convention */ + #define TARGET_VARARGS_PRETEND_ARGS(FUN_DECL) \ +Index: gcc/config/sh/sh.md +=================================================================== +--- a/src/gcc/config/sh/sh.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/sh/sh.md (.../branches/gcc-9-branch) +@@ -9163,7 +9163,7 @@ + (xor:SI (reg:SI FPSCR_REG) (const_int FPSCR_PR))) + (set (reg:SI FPSCR_MODES_REG) + (unspec_volatile:SI [(const_int 0)] UNSPECV_FPSCR_MODES))] +- "TARGET_SH4A_FP" ++ "TARGET_SH4A_FP || TARGET_FPU_SH4_300" + "fpchg" + [(set_attr "type" "fpscr_toggle")]) + +@@ -9391,15 +9391,31 @@ + (define_expand "negsf2" + [(set (match_operand:SF 0 "fp_arith_reg_operand") + (neg:SF (match_operand:SF 1 "fp_arith_reg_operand")))] +- "TARGET_SH2E") ++ "TARGET_FPU_ANY" ++{ ++ if (TARGET_FPU_SH4_300) ++ emit_insn (gen_negsf2_fpscr (operands[0], operands[1])); ++ else ++ emit_insn (gen_negsf2_no_fpscr (operands[0], operands[1])); ++ DONE; ++}) + +-(define_insn "*negsf2_i" ++(define_insn "negsf2_no_fpscr" + [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") + (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] +- "TARGET_SH2E" ++ "TARGET_FPU_ANY && !TARGET_FPU_SH4_300" + "fneg %0" + [(set_attr "type" "fmove")]) + ++(define_insn "negsf2_fpscr" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "0"))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_FPU_SH4_300" ++ "fneg %0" ++ [(set_attr "type" "fmove") ++ (set_attr "fp_mode" "single")]) ++ + (define_expand "sqrtsf2" + [(set (match_operand:SF 0 "fp_arith_reg_operand" "") + (sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] +@@ -9489,15 +9505,31 @@ + (define_expand "abssf2" + [(set (match_operand:SF 0 "fp_arith_reg_operand") + (abs:SF (match_operand:SF 1 "fp_arith_reg_operand")))] +- "TARGET_SH2E") ++ "TARGET_FPU_ANY" ++{ ++ if (TARGET_FPU_SH4_300) ++ emit_insn (gen_abssf2_fpscr (operands[0], operands[1])); ++ else ++ emit_insn (gen_abssf2_no_fpscr (operands[0], operands[1])); ++ DONE; ++}) + +-(define_insn "*abssf2_i" ++(define_insn "abssf2_no_fpscr" + [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") + (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0")))] +- "TARGET_SH2E" ++ "TARGET_FPU_ANY && !TARGET_FPU_SH4_300" + "fabs %0" + [(set_attr "type" "fmove")]) + ++(define_insn "abssf2_fpscr" ++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") ++ (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "0"))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_FPU_SH4_300" ++ "fabs %0" ++ [(set_attr "type" "fmove") ++ (set_attr "fp_mode" "single")]) ++ + (define_expand "adddf3" + [(set (match_operand:DF 0 "fp_arith_reg_operand" "") + (plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "") +@@ -9673,12 +9705,28 @@ + (define_expand "negdf2" + [(set (match_operand:DF 0 "fp_arith_reg_operand") + (neg:DF (match_operand:DF 1 "fp_arith_reg_operand")))] +- "TARGET_FPU_DOUBLE") ++ "TARGET_FPU_DOUBLE" ++{ ++ if (TARGET_FPU_SH4_300) ++ emit_insn (gen_negdf2_fpscr (operands[0], operands[1])); ++ else ++ emit_insn (gen_negdf2_no_fpscr (operands[0], operands[1])); ++ DONE; ++}) + +-(define_insn "*negdf2_i" ++(define_insn "negdf2_fpscr" + [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") ++ (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0"))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_FPU_SH4_300" ++ "fneg %0" ++ [(set_attr "type" "fmove") ++ (set_attr "fp_mode" "double")]) ++ ++(define_insn "negdf2_no_fpscr" ++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") + (neg:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] +- "TARGET_FPU_DOUBLE" ++ "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300" + "fneg %0" + [(set_attr "type" "fmove")]) + +@@ -9704,15 +9752,31 @@ + (define_expand "absdf2" + [(set (match_operand:DF 0 "fp_arith_reg_operand") + (abs:DF (match_operand:DF 1 "fp_arith_reg_operand")))] +- "TARGET_FPU_DOUBLE") ++ "TARGET_FPU_DOUBLE" ++{ ++ if (TARGET_FPU_SH4_300) ++ emit_insn (gen_absdf2_fpscr (operands[0], operands[1])); ++ else ++ emit_insn (gen_absdf2_no_fpscr (operands[0], operands[1])); ++ DONE; ++}) + +-(define_insn "*absdf2_i" ++(define_insn "absdf2_no_fpscr" + [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") + (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0")))] +- "TARGET_FPU_DOUBLE" ++ "TARGET_FPU_DOUBLE && !TARGET_FPU_SH4_300" + "fabs %0" + [(set_attr "type" "fmove")]) + ++(define_insn "absdf2_fpscr" ++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") ++ (abs:DF (match_operand:DF 1 "fp_arith_reg_operand" "0"))) ++ (use (reg:SI FPSCR_MODES_REG))] ++ "TARGET_FPU_SH4_300" ++ "fabs %0" ++ [(set_attr "type" "fmove") ++ (set_attr "fp_mode" "double")]) ++ + (define_expand "extendsfdf2" + [(set (match_operand:DF 0 "fp_arith_reg_operand" "") + (float_extend:DF (match_operand:SF 1 "fpul_operand" "")))] +Index: gcc/config/avr/avr.c +=================================================================== +--- a/src/gcc/config/avr/avr.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/avr/avr.c (.../branches/gcc-9-branch) +@@ -3797,13 +3797,14 @@ + gcc_unreachable(); + + case 1: +- return avr_asm_len ("%4lpm %0,%a2", xop, plen, 1); ++ avr_asm_len ("%4lpm %0,%a2", xop, plen, 1); ++ break; + + case 2: + if (REGNO (dest) == REG_Z) +- return avr_asm_len ("%4lpm %5,%a2+" CR_TAB +- "%4lpm %B0,%a2" CR_TAB +- "mov %A0,%5", xop, plen, 3); ++ avr_asm_len ("%4lpm %5,%a2+" CR_TAB ++ "%4lpm %B0,%a2" CR_TAB ++ "mov %A0,%5", xop, plen, 3); + else + { + avr_asm_len ("%4lpm %A0,%a2+" CR_TAB +@@ -3832,9 +3833,9 @@ + "%4lpm %B0,%a2+", xop, plen, 2); + + if (REGNO (dest) == REG_Z - 2) +- return avr_asm_len ("%4lpm %5,%a2+" CR_TAB +- "%4lpm %C0,%a2" CR_TAB +- "mov %D0,%5", xop, plen, 3); ++ avr_asm_len ("%4lpm %5,%a2+" CR_TAB ++ "%4lpm %C0,%a2" CR_TAB ++ "mov %D0,%5", xop, plen, 3); + else + { + avr_asm_len ("%4lpm %C0,%a2+" CR_TAB +Index: gcc/config/xtensa/xtensa.c +=================================================================== +--- a/src/gcc/config/xtensa/xtensa.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/xtensa/xtensa.c (.../branches/gcc-9-branch) +@@ -2865,7 +2865,8 @@ + gen_rtx_SET (mem, reg)); + } + } +- if (total_size > 1024) ++ if (total_size > 1024 ++ || (!callee_save_size && total_size > 128)) + { + rtx tmp_reg = gen_rtx_REG (Pmode, A9_REG); + emit_move_insn (tmp_reg, GEN_INT (total_size - +Index: gcc/config/riscv/riscv.md +=================================================================== +--- a/src/gcc/config/riscv/riscv.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/riscv/riscv.md (.../branches/gcc-9-branch) +@@ -1051,7 +1051,9 @@ + "@ + # + lwu\t%0,%1" +- "&& reload_completed && REG_P (operands[1])" ++ "&& reload_completed ++ && REG_P (operands[1]) ++ && !paradoxical_subreg_p (operands[0])" + [(set (match_dup 0) + (ashift:DI (match_dup 1) (const_int 32))) + (set (match_dup 0) +@@ -1068,7 +1070,9 @@ + "@ + # + lhu\t%0,%1" +- "&& reload_completed && REG_P (operands[1])" ++ "&& reload_completed ++ && REG_P (operands[1]) ++ && !paradoxical_subreg_p (operands[0])" + [(set (match_dup 0) + (ashift:GPR (match_dup 1) (match_dup 2))) + (set (match_dup 0) +@@ -1117,7 +1121,9 @@ + "@ + # + l\t%0,%1" +- "&& reload_completed && REG_P (operands[1])" ++ "&& reload_completed ++ && REG_P (operands[1]) ++ && !paradoxical_subreg_p (operands[0])" + [(set (match_dup 0) (ashift:SI (match_dup 1) (match_dup 2))) + (set (match_dup 0) (ashiftrt:SI (match_dup 0) (match_dup 2)))] + { +@@ -1278,7 +1284,7 @@ + "" + [(const_int 0)] + { +- riscv_move_integer (operands[2], operands[0], INTVAL (operands[1])); ++ riscv_move_integer (operands[2], operands[0], INTVAL (operands[1]), TRUE); + DONE; + }) + +@@ -1287,11 +1293,11 @@ + [(set (match_operand:P 0 "register_operand") + (match_operand:P 1)) + (clobber (match_operand:P 2 "register_operand"))] +- "riscv_split_symbol (operands[2], operands[1], MAX_MACHINE_MODE, NULL)" ++ "riscv_split_symbol (operands[2], operands[1], MAX_MACHINE_MODE, NULL, TRUE)" + [(set (match_dup 0) (match_dup 3))] + { + riscv_split_symbol (operands[2], operands[1], +- MAX_MACHINE_MODE, &operands[3]); ++ MAX_MACHINE_MODE, &operands[3], TRUE); + }) + + ;; 64-bit integer moves +@@ -1765,15 +1771,20 @@ + ;; Handle AND with 2^N-1 for N from 12 to XLEN. This can be split into + ;; two logical shifts. Otherwise it requires 3 instructions: lui, + ;; xor/addi/srli, and. ++ ++;; Generating a temporary for the shift output gives better combiner results; ++;; and also fixes a problem where op0 could be a paradoxical reg and shifting ++;; by amounts larger than the size of the SUBREG_REG doesn't work. + (define_split + [(set (match_operand:GPR 0 "register_operand") + (and:GPR (match_operand:GPR 1 "register_operand") +- (match_operand:GPR 2 "p2m1_shift_operand")))] ++ (match_operand:GPR 2 "p2m1_shift_operand"))) ++ (clobber (match_operand:GPR 3 "register_operand"))] + "" +- [(set (match_dup 0) ++ [(set (match_dup 3) + (ashift:GPR (match_dup 1) (match_dup 2))) + (set (match_dup 0) +- (lshiftrt:GPR (match_dup 0) (match_dup 2)))] ++ (lshiftrt:GPR (match_dup 3) (match_dup 2)))] + { + /* Op2 is a VOIDmode constant, so get the mode size from op1. */ + operands[2] = GEN_INT (GET_MODE_BITSIZE (GET_MODE (operands[1])) +@@ -1785,12 +1796,13 @@ + (define_split + [(set (match_operand:DI 0 "register_operand") + (and:DI (match_operand:DI 1 "register_operand") +- (match_operand:DI 2 "high_mask_shift_operand")))] ++ (match_operand:DI 2 "high_mask_shift_operand"))) ++ (clobber (match_operand:DI 3 "register_operand"))] + "TARGET_64BIT" +- [(set (match_dup 0) ++ [(set (match_dup 3) + (lshiftrt:DI (match_dup 1) (match_dup 2))) + (set (match_dup 0) +- (ashift:DI (match_dup 0) (match_dup 2)))] ++ (ashift:DI (match_dup 3) (match_dup 2)))] + { + operands[2] = GEN_INT (ctz_hwi (INTVAL (operands[2]))); + }) +Index: gcc/config/riscv/riscv-protos.h +=================================================================== +--- a/src/gcc/config/riscv/riscv-protos.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/riscv/riscv-protos.h (.../branches/gcc-9-branch) +@@ -44,10 +44,10 @@ + extern int riscv_split_const_insns (rtx); + extern int riscv_load_store_insns (rtx, rtx_insn *); + extern rtx riscv_emit_move (rtx, rtx); +-extern bool riscv_split_symbol (rtx, rtx, machine_mode, rtx *); ++extern bool riscv_split_symbol (rtx, rtx, machine_mode, rtx *, bool); + extern bool riscv_split_symbol_type (enum riscv_symbol_type); + extern rtx riscv_unspec_address (rtx, enum riscv_symbol_type); +-extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT); ++extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT, bool); + extern bool riscv_legitimize_move (machine_mode, rtx, rtx); + extern rtx riscv_subword (rtx, bool); + extern bool riscv_split_64bit_move_p (rtx, rtx); +Index: gcc/config/riscv/riscv.c +=================================================================== +--- a/src/gcc/config/riscv/riscv.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/riscv/riscv.c (.../branches/gcc-9-branch) +@@ -508,8 +508,8 @@ + unsigned HOST_WIDE_INT hival = sext_hwi ((val - loval) >> 32, 32); + rtx hi = gen_reg_rtx (mode), lo = gen_reg_rtx (mode); + +- riscv_move_integer (hi, hi, hival); +- riscv_move_integer (lo, lo, loval); ++ riscv_move_integer (hi, hi, hival, FALSE); ++ riscv_move_integer (lo, lo, loval, FALSE); + + hi = gen_rtx_fmt_ee (ASHIFT, mode, hi, GEN_INT (32)); + hi = force_reg (mode, hi); +@@ -1021,9 +1021,12 @@ + are allowed, copy it into a new register, otherwise use DEST. */ + + static rtx +-riscv_force_temporary (rtx dest, rtx value) ++riscv_force_temporary (rtx dest, rtx value, bool in_splitter) + { +- if (can_create_pseudo_p ()) ++ /* We can't call gen_reg_rtx from a splitter, because this might realloc ++ the regno_reg_rtx array, which would invalidate reg rtx pointers in the ++ combine undo buffer. */ ++ if (can_create_pseudo_p () && !in_splitter) + return force_reg (Pmode, value); + else + { +@@ -1082,7 +1085,7 @@ + riscv_unspec_offset_high (rtx temp, rtx addr, enum riscv_symbol_type symbol_type) + { + addr = gen_rtx_HIGH (Pmode, riscv_unspec_address (addr, symbol_type)); +- return riscv_force_temporary (temp, addr); ++ return riscv_force_temporary (temp, addr, FALSE); + } + + /* Load an entry from the GOT for a TLS GD access. */ +@@ -1130,7 +1133,8 @@ + is guaranteed to be a legitimate address for mode MODE. */ + + bool +-riscv_split_symbol (rtx temp, rtx addr, machine_mode mode, rtx *low_out) ++riscv_split_symbol (rtx temp, rtx addr, machine_mode mode, rtx *low_out, ++ bool in_splitter) + { + enum riscv_symbol_type symbol_type; + +@@ -1146,7 +1150,7 @@ + case SYMBOL_ABSOLUTE: + { + rtx high = gen_rtx_HIGH (Pmode, copy_rtx (addr)); +- high = riscv_force_temporary (temp, high); ++ high = riscv_force_temporary (temp, high, in_splitter); + *low_out = gen_rtx_LO_SUM (Pmode, high, addr); + } + break; +@@ -1205,8 +1209,9 @@ + overflow, so we need to force a sign-extension check. */ + high = gen_int_mode (CONST_HIGH_PART (offset), Pmode); + offset = CONST_LOW_PART (offset); +- high = riscv_force_temporary (temp, high); +- reg = riscv_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg)); ++ high = riscv_force_temporary (temp, high, FALSE); ++ reg = riscv_force_temporary (temp, gen_rtx_PLUS (Pmode, high, reg), ++ FALSE); + } + return plus_constant (Pmode, reg, offset); + } +@@ -1315,7 +1320,7 @@ + return riscv_legitimize_tls_address (x); + + /* See if the address can split into a high part and a LO_SUM. */ +- if (riscv_split_symbol (NULL, x, mode, &addr)) ++ if (riscv_split_symbol (NULL, x, mode, &addr, FALSE)) + return riscv_force_address (addr, mode); + + /* Handle BASE + OFFSET using riscv_add_offset. */ +@@ -1337,7 +1342,8 @@ + /* Load VALUE into DEST. TEMP is as for riscv_force_temporary. */ + + void +-riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value) ++riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value, ++ bool in_splitter) + { + struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS]; + machine_mode mode; +@@ -1344,10 +1350,15 @@ + int i, num_ops; + rtx x; + ++ /* We can't call gen_reg_rtx from a splitter, because this might realloc ++ the regno_reg_rtx array, which would invalidate reg rtx pointers in the ++ combine undo buffer. */ ++ bool can_create_pseudo = can_create_pseudo_p () && ! in_splitter; ++ + mode = GET_MODE (dest); + num_ops = riscv_build_integer (codes, value, mode); + +- if (can_create_pseudo_p () && num_ops > 2 /* not a simple constant */ ++ if (can_create_pseudo && num_ops > 2 /* not a simple constant */ + && num_ops >= riscv_split_integer_cost (value)) + x = riscv_split_integer (value, mode); + else +@@ -1357,7 +1368,7 @@ + + for (i = 1; i < num_ops; i++) + { +- if (!can_create_pseudo_p ()) ++ if (!can_create_pseudo) + x = riscv_emit_set (temp, x); + else + x = force_reg (mode, x); +@@ -1381,12 +1392,12 @@ + /* Split moves of big integers into smaller pieces. */ + if (splittable_const_int_operand (src, mode)) + { +- riscv_move_integer (dest, dest, INTVAL (src)); ++ riscv_move_integer (dest, dest, INTVAL (src), FALSE); + return; + } + + /* Split moves of symbolic constants into high/low pairs. */ +- if (riscv_split_symbol (dest, src, MAX_MACHINE_MODE, &src)) ++ if (riscv_split_symbol (dest, src, MAX_MACHINE_MODE, &src, FALSE)) + { + riscv_emit_set (dest, src); + return; +@@ -1407,7 +1418,7 @@ + if (offset != const0_rtx + && (targetm.cannot_force_const_mem (mode, src) || can_create_pseudo_p ())) + { +- base = riscv_force_temporary (dest, base); ++ base = riscv_force_temporary (dest, base, FALSE); + riscv_emit_move (dest, riscv_add_offset (NULL, base, INTVAL (offset))); + return; + } +@@ -1416,7 +1427,7 @@ + + /* When using explicit relocs, constant pool references are sometimes + not legitimate addresses. */ +- riscv_split_symbol (dest, XEXP (src, 0), mode, &XEXP (src, 0)); ++ riscv_split_symbol (dest, XEXP (src, 0), mode, &XEXP (src, 0), FALSE); + riscv_emit_move (dest, src); + } + +Index: gcc/config/aarch64/aarch64.md +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-9-branch) +@@ -1059,8 +1059,8 @@ + (match_operand:GPI 1 "general_operand" ""))] + "" + " +- if (MEM_P (operands[0]) && CONST_INT_P (operands[1]) +- && mode == DImode ++ if (MEM_P (operands[0]) && !MEM_VOLATILE_P (operands[0]) ++ && CONST_INT_P (operands[1]) && mode == DImode + && aarch64_split_dimode_const_store (operands[0], operands[1])) + DONE; + +@@ -6304,7 +6304,7 @@ + [(match_operand:GPI 0 "register_operand") + (match_operand:GPF 1 "register_operand")] + "TARGET_FLOAT +- && ((GET_MODE_SIZE (mode) <= GET_MODE_SIZE (mode)) ++ && ((GET_MODE_BITSIZE (mode) <= LONG_TYPE_SIZE) + || !flag_trapping_math || flag_fp_int_builtin_inexact)" + { + rtx cvt = gen_reg_rtx (mode); +Index: gcc/config/aarch64/aarch64.opt +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.opt (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/aarch64/aarch64.opt (.../branches/gcc-9-branch) +@@ -119,15 +119,15 @@ + Enum(aarch64_tls_size) String(48) Value(48) + + march= +-Target RejectNegative ToLower Joined Var(aarch64_arch_string) ++Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string) + Use features of architecture ARCH. + + mcpu= +-Target RejectNegative ToLower Joined Var(aarch64_cpu_string) ++Target RejectNegative Negative(mcpu=) ToLower Joined Var(aarch64_cpu_string) + Use features of and optimize for CPU. + + mtune= +-Target RejectNegative ToLower Joined Var(aarch64_tune_string) ++Target RejectNegative Negative(mtune=) ToLower Joined Var(aarch64_tune_string) + Optimize for CPU. + + mabi= +Index: gcc/config/aarch64/aarch64.c +=================================================================== +--- a/src/gcc/config/aarch64/aarch64.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/aarch64/aarch64.c (.../branches/gcc-9-branch) +@@ -18162,19 +18162,21 @@ + /* Sort the operands. */ + qsort (temp_operands, 4, 2 * sizeof (rtx *), aarch64_ldrstr_offset_compare); + ++ /* Copy the memory operands so that if we have to bail for some ++ reason the original addresses are unchanged. */ + if (load) + { +- mem_1 = temp_operands[1]; +- mem_2 = temp_operands[3]; +- mem_3 = temp_operands[5]; +- mem_4 = temp_operands[7]; ++ mem_1 = copy_rtx (temp_operands[1]); ++ mem_2 = copy_rtx (temp_operands[3]); ++ mem_3 = copy_rtx (temp_operands[5]); ++ mem_4 = copy_rtx (temp_operands[7]); + } + else + { +- mem_1 = temp_operands[0]; +- mem_2 = temp_operands[2]; +- mem_3 = temp_operands[4]; +- mem_4 = temp_operands[6]; ++ mem_1 = copy_rtx (temp_operands[0]); ++ mem_2 = copy_rtx (temp_operands[2]); ++ mem_3 = copy_rtx (temp_operands[4]); ++ mem_4 = copy_rtx (temp_operands[6]); + gcc_assert (code == UNKNOWN); + } + +Index: gcc/config/rs6000/darwin.md +=================================================================== +--- a/src/gcc/config/rs6000/darwin.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/darwin.md (.../branches/gcc-9-branch) +@@ -122,34 +122,7 @@ + [(set_attr "type" "store")]) + + ;; 64-bit MachO load/store support +-(define_insn "movdi_low" +- [(set (match_operand:DI 0 "gpc_reg_operand" "=r,*!d") +- (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b") +- (match_operand 2 "" ""))))] +- "TARGET_MACHO && TARGET_64BIT" +- "@ +- ld %0,lo16(%2)(%1) +- lfd %0,lo16(%2)(%1)" +- [(set_attr "type" "load")]) + +-(define_insn "movsi_low_st" +- [(set (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b") +- (match_operand 2 "" ""))) +- (match_operand:SI 0 "gpc_reg_operand" "r"))] +- "TARGET_MACHO && ! TARGET_64BIT" +- "stw %0,lo16(%2)(%1)" +- [(set_attr "type" "store")]) +- +-(define_insn "movdi_low_st" +- [(set (mem:DI (lo_sum:DI (match_operand:DI 1 "gpc_reg_operand" "b,b") +- (match_operand 2 "" ""))) +- (match_operand:DI 0 "gpc_reg_operand" "r,*!d"))] +- "TARGET_MACHO && TARGET_64BIT" +- "@ +- std %0,lo16(%2)(%1) +- stfd %0,lo16(%2)(%1)" +- [(set_attr "type" "store")]) +- + ;; Mach-O PIC trickery. + (define_expand "macho_high" + [(set (match_operand 0 "") +Index: gcc/config/rs6000/rs6000-builtin.def +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-builtin.def (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/rs6000-builtin.def (.../branches/gcc-9-branch) +@@ -1177,26 +1177,26 @@ + BU_ALTIVEC_X (MFVSCR, "mfvscr", MISC) + BU_ALTIVEC_X (DSSALL, "dssall", MISC) + BU_ALTIVEC_X (DSS, "dss", MISC) +-BU_ALTIVEC_X (LVSL, "lvsl", MEM) +-BU_ALTIVEC_X (LVSR, "lvsr", MEM) +-BU_ALTIVEC_X (LVEBX, "lvebx", MEM) +-BU_ALTIVEC_X (LVEHX, "lvehx", MEM) +-BU_ALTIVEC_X (LVEWX, "lvewx", MEM) +-BU_ALTIVEC_X (LVXL, "lvxl", MEM) +-BU_ALTIVEC_X (LVXL_V2DF, "lvxl_v2df", MEM) +-BU_ALTIVEC_X (LVXL_V2DI, "lvxl_v2di", MEM) +-BU_ALTIVEC_X (LVXL_V4SF, "lvxl_v4sf", MEM) +-BU_ALTIVEC_X (LVXL_V4SI, "lvxl_v4si", MEM) +-BU_ALTIVEC_X (LVXL_V8HI, "lvxl_v8hi", MEM) +-BU_ALTIVEC_X (LVXL_V16QI, "lvxl_v16qi", MEM) +-BU_ALTIVEC_X (LVX, "lvx", MEM) +-BU_ALTIVEC_X (LVX_V1TI, "lvx_v1ti", MEM) +-BU_ALTIVEC_X (LVX_V2DF, "lvx_v2df", MEM) +-BU_ALTIVEC_X (LVX_V2DI, "lvx_v2di", MEM) +-BU_ALTIVEC_X (LVX_V4SF, "lvx_v4sf", MEM) +-BU_ALTIVEC_X (LVX_V4SI, "lvx_v4si", MEM) +-BU_ALTIVEC_X (LVX_V8HI, "lvx_v8hi", MEM) +-BU_ALTIVEC_X (LVX_V16QI, "lvx_v16qi", MEM) ++BU_ALTIVEC_X (LVSL, "lvsl", PURE) ++BU_ALTIVEC_X (LVSR, "lvsr", PURE) ++BU_ALTIVEC_X (LVEBX, "lvebx", PURE) ++BU_ALTIVEC_X (LVEHX, "lvehx", PURE) ++BU_ALTIVEC_X (LVEWX, "lvewx", PURE) ++BU_ALTIVEC_X (LVXL, "lvxl", PURE) ++BU_ALTIVEC_X (LVXL_V2DF, "lvxl_v2df", PURE) ++BU_ALTIVEC_X (LVXL_V2DI, "lvxl_v2di", PURE) ++BU_ALTIVEC_X (LVXL_V4SF, "lvxl_v4sf", PURE) ++BU_ALTIVEC_X (LVXL_V4SI, "lvxl_v4si", PURE) ++BU_ALTIVEC_X (LVXL_V8HI, "lvxl_v8hi", PURE) ++BU_ALTIVEC_X (LVXL_V16QI, "lvxl_v16qi", PURE) ++BU_ALTIVEC_X (LVX, "lvx", PURE) ++BU_ALTIVEC_X (LVX_V1TI, "lvx_v1ti", PURE) ++BU_ALTIVEC_X (LVX_V2DF, "lvx_v2df", PURE) ++BU_ALTIVEC_X (LVX_V2DI, "lvx_v2di", PURE) ++BU_ALTIVEC_X (LVX_V4SF, "lvx_v4sf", PURE) ++BU_ALTIVEC_X (LVX_V4SI, "lvx_v4si", PURE) ++BU_ALTIVEC_X (LVX_V8HI, "lvx_v8hi", PURE) ++BU_ALTIVEC_X (LVX_V16QI, "lvx_v16qi", PURE) + BU_ALTIVEC_X (STVX, "stvx", MEM) + BU_ALTIVEC_X (STVX_V2DF, "stvx_v2df", MEM) + BU_ALTIVEC_X (STVX_V2DI, "stvx_v2di", MEM) +@@ -1204,10 +1204,10 @@ + BU_ALTIVEC_X (STVX_V4SI, "stvx_v4si", MEM) + BU_ALTIVEC_X (STVX_V8HI, "stvx_v8hi", MEM) + BU_ALTIVEC_X (STVX_V16QI, "stvx_v16qi", MEM) +-BU_ALTIVEC_C (LVLX, "lvlx", MEM) +-BU_ALTIVEC_C (LVLXL, "lvlxl", MEM) +-BU_ALTIVEC_C (LVRX, "lvrx", MEM) +-BU_ALTIVEC_C (LVRXL, "lvrxl", MEM) ++BU_ALTIVEC_C (LVLX, "lvlx", PURE) ++BU_ALTIVEC_C (LVLXL, "lvlxl", PURE) ++BU_ALTIVEC_C (LVRX, "lvrx", PURE) ++BU_ALTIVEC_C (LVRXL, "lvrxl", PURE) + BU_ALTIVEC_X (STVEBX, "stvebx", MEM) + BU_ALTIVEC_X (STVEHX, "stvehx", MEM) + BU_ALTIVEC_X (STVEWX, "stvewx", MEM) +@@ -1718,15 +1718,15 @@ + BU_VSX_P (XVCMPGTDP_P, "xvcmpgtdp_p", CONST, vector_gt_v2df_p) + + /* VSX builtins that are handled as special cases. */ +-BU_VSX_X (LXSDX, "lxsdx", MEM) +-BU_VSX_X (LXVD2X_V1TI, "lxvd2x_v1ti", MEM) +-BU_VSX_X (LXVD2X_V2DF, "lxvd2x_v2df", MEM) +-BU_VSX_X (LXVD2X_V2DI, "lxvd2x_v2di", MEM) +-BU_VSX_X (LXVDSX, "lxvdsx", MEM) +-BU_VSX_X (LXVW4X_V4SF, "lxvw4x_v4sf", MEM) +-BU_VSX_X (LXVW4X_V4SI, "lxvw4x_v4si", MEM) +-BU_VSX_X (LXVW4X_V8HI, "lxvw4x_v8hi", MEM) +-BU_VSX_X (LXVW4X_V16QI, "lxvw4x_v16qi", MEM) ++BU_VSX_X (LXSDX, "lxsdx", PURE) ++BU_VSX_X (LXVD2X_V1TI, "lxvd2x_v1ti", PURE) ++BU_VSX_X (LXVD2X_V2DF, "lxvd2x_v2df", PURE) ++BU_VSX_X (LXVD2X_V2DI, "lxvd2x_v2di", PURE) ++BU_VSX_X (LXVDSX, "lxvdsx", PURE) ++BU_VSX_X (LXVW4X_V4SF, "lxvw4x_v4sf", PURE) ++BU_VSX_X (LXVW4X_V4SI, "lxvw4x_v4si", PURE) ++BU_VSX_X (LXVW4X_V8HI, "lxvw4x_v8hi", PURE) ++BU_VSX_X (LXVW4X_V16QI, "lxvw4x_v16qi", PURE) + BU_VSX_X (STXSDX, "stxsdx", MEM) + BU_VSX_X (STXVD2X_V1TI, "stxvd2x_v1ti", MEM) + BU_VSX_X (STXVD2X_V2DF, "stxvd2x_v2df", MEM) +@@ -1735,13 +1735,13 @@ + BU_VSX_X (STXVW4X_V4SI, "stxvw4x_v4si", MEM) + BU_VSX_X (STXVW4X_V8HI, "stxvw4x_v8hi", MEM) + BU_VSX_X (STXVW4X_V16QI, "stxvw4x_v16qi", MEM) +-BU_VSX_X (LD_ELEMREV_V1TI, "ld_elemrev_v1ti", MEM) +-BU_VSX_X (LD_ELEMREV_V2DF, "ld_elemrev_v2df", MEM) +-BU_VSX_X (LD_ELEMREV_V2DI, "ld_elemrev_v2di", MEM) +-BU_VSX_X (LD_ELEMREV_V4SF, "ld_elemrev_v4sf", MEM) +-BU_VSX_X (LD_ELEMREV_V4SI, "ld_elemrev_v4si", MEM) +-BU_VSX_X (LD_ELEMREV_V8HI, "ld_elemrev_v8hi", MEM) +-BU_VSX_X (LD_ELEMREV_V16QI, "ld_elemrev_v16qi", MEM) ++BU_VSX_X (LD_ELEMREV_V1TI, "ld_elemrev_v1ti", PURE) ++BU_VSX_X (LD_ELEMREV_V2DF, "ld_elemrev_v2df", PURE) ++BU_VSX_X (LD_ELEMREV_V2DI, "ld_elemrev_v2di", PURE) ++BU_VSX_X (LD_ELEMREV_V4SF, "ld_elemrev_v4sf", PURE) ++BU_VSX_X (LD_ELEMREV_V4SI, "ld_elemrev_v4si", PURE) ++BU_VSX_X (LD_ELEMREV_V8HI, "ld_elemrev_v8hi", PURE) ++BU_VSX_X (LD_ELEMREV_V16QI, "ld_elemrev_v16qi", PURE) + BU_VSX_X (ST_ELEMREV_V1TI, "st_elemrev_v1ti", MEM) + BU_VSX_X (ST_ELEMREV_V2DF, "st_elemrev_v2df", MEM) + BU_VSX_X (ST_ELEMREV_V2DI, "st_elemrev_v2di", MEM) +Index: gcc/config/rs6000/rs6000-p8swap.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000-p8swap.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/rs6000-p8swap.c (.../branches/gcc-9-branch) +@@ -791,6 +791,11 @@ + case UNSPEC_REDUC_PLUS: + case UNSPEC_REDUC: + return 1; ++ case UNSPEC_VPMSUM: ++ /* vpmsumd is not swappable, but vpmsum[bhw] are. */ ++ if (GET_MODE (op) == V2DImode) ++ return 0; ++ break; + } + } + +Index: gcc/config/rs6000/darwin.h +=================================================================== +--- a/src/gcc/config/rs6000/darwin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/darwin.h (.../branches/gcc-9-branch) +@@ -53,19 +53,28 @@ + #define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ +- if (!TARGET_64BIT) builtin_define ("__ppc__"); \ +- if (!TARGET_64BIT) builtin_define ("__PPC__"); \ +- if (TARGET_64BIT) builtin_define ("__ppc64__"); \ +- if (TARGET_64BIT) builtin_define ("__PPC64__"); \ + builtin_define ("__POWERPC__"); \ ++ builtin_define ("__PPC__"); \ ++ if (TARGET_64BIT) \ ++ { \ ++ builtin_define ("__ppc64__"); \ ++ builtin_define ("__PPC64__"); \ ++ builtin_define ("__powerpc64__"); \ ++ builtin_assert ("cpu=powerpc64"); \ ++ builtin_assert ("machine=powerpc64"); \ ++ } \ ++ else \ ++ { \ ++ builtin_define ("__ppc__"); \ ++ builtin_define_std ("PPC"); \ ++ builtin_assert ("cpu=powerpc"); \ ++ builtin_assert ("machine=powerpc"); \ ++ } \ + builtin_define ("__NATURAL_ALIGNMENT__"); \ + darwin_cpp_builtins (pfile); \ + } \ + while (0) + +-/* Generate branch islands stubs if this is true. */ +-extern int darwin_emit_branch_islands; +- + #define SUBTARGET_OVERRIDE_OPTIONS darwin_rs6000_override_options () + + #define C_COMMON_OVERRIDE_OPTIONS do { \ +@@ -127,10 +136,31 @@ + %:version-compare(>< 10.5 10.7 mmacosx-version-min= -lcrt1.10.5.o) \ + %{fgnu-tm: -lcrttms.o}" + +-/* crt2.o is at least partially required for 10.3.x and earlier. */ ++/* crt2.o is at least partially required for 10.3.x and earlier. ++ It deals with registration of the unwind frames, where this is not ++ automatically provided by the system. So we need it for any case that ++ might use exceptions. */ ++#undef DARWIN_CRT2_SPEC + #define DARWIN_CRT2_SPEC \ +- "%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}" ++"%{!m64:%{shared-libgcc|static-libstdc++|fexceptions|fobjc-exceptions|fgnu-runtime: \ ++ %:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s) \ ++ }}" + ++/* crt3 deals with providing cxa_atexit on earlier systems (or fixing it up, ++ for broken versions). It's only needed for c++ code, so we can make it ++ conditional on shared-libgcc since that's forced on for c++. */ ++#undef DARWIN_CRT3_SPEC ++#define DARWIN_CRT3_SPEC \ ++"%{!m64:%{shared-libgcc|static-libstdc++: \ ++ %:version-compare(>< 10.4 10.5 mmacosx-version-min= crt3.o%s) \ ++ %:version-compare(!> 10.4 mmacosx-version-min= crt3_2.o%s) \ ++ }}" ++ ++/* The PPC regs save/restore functions are leaves and could, conceivably ++ be used by the tm destructor. */ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC TM_DESTRUCTOR " -lef_ppc" ++ + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + DARWIN_EXTRA_SPECS \ +@@ -279,9 +309,9 @@ + /* This is supported in cctools 465 and later. The macro test + above prevents using it in earlier build environments. */ + #define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ +- if ((LOG) != 0) \ ++ if ((LOG) > 0) \ + { \ +- if ((MAX_SKIP) == 0) \ ++ if ((MAX_SKIP) <= 0) \ + fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ + else \ + fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ +@@ -456,6 +486,9 @@ + this will need to be modified similar to the x86 case. */ + #define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN + ++/* First available SYMBOL flag bit for use by subtargets. */ ++#define SYMBOL_FLAG_SUBT_DEP (SYMBOL_FLAG_MACH_DEP) ++ + /* Use standard DWARF numbering for DWARF debugging information. */ + #define RS6000_USE_DWARF_NUMBERING + +Index: gcc/config/rs6000/rs6000.c +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/rs6000.c (.../branches/gcc-9-branch) +@@ -7671,6 +7671,104 @@ + return NULL_RTX; + } + ++/* This tests that a lo_sum {constant, symbol, symbol+offset} is valid for ++ the mode. If we can't find (or don't know) the alignment of the symbol ++ we assume (optimistically) that it's sufficiently aligned [??? maybe we ++ should be pessimistic]. Offsets are validated in the same way as for ++ reg + offset. */ ++static bool ++darwin_rs6000_legitimate_lo_sum_const_p (rtx x, machine_mode mode) ++{ ++ /* We should not get here with this. */ ++ gcc_checking_assert (! mode_supports_dq_form (mode)); ++ ++ if (GET_CODE (x) == CONST) ++ x = XEXP (x, 0); ++ ++ if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET) ++ x = XVECEXP (x, 0, 0); ++ ++ rtx sym = NULL_RTX; ++ unsigned HOST_WIDE_INT offset = 0; ++ ++ if (GET_CODE (x) == PLUS) ++ { ++ sym = XEXP (x, 0); ++ if (! SYMBOL_REF_P (sym)) ++ return false; ++ if (!CONST_INT_P (XEXP (x, 1))) ++ return false; ++ offset = INTVAL (XEXP (x, 1)); ++ } ++ else if (SYMBOL_REF_P (x)) ++ sym = x; ++ else if (CONST_INT_P (x)) ++ offset = INTVAL (x); ++ else if (GET_CODE (x) == LABEL_REF) ++ offset = 0; // We assume code labels are Pmode aligned ++ else ++ return false; // not sure what we have here. ++ ++ /* If we don't know the alignment of the thing to which the symbol refers, ++ we assume optimistically it is "enough". ++ ??? maybe we should be pessimistic instead. */ ++ unsigned align = 0; ++ ++ if (sym) ++ { ++ tree decl = SYMBOL_REF_DECL (sym); ++#if TARGET_MACHO ++ if (MACHO_SYMBOL_INDIRECTION_P (sym)) ++ /* The decl in an indirection symbol is the original one, which might ++ be less aligned than the indirection. Our indirections are always ++ pointer-aligned. */ ++ ; ++ else ++#endif ++ if (decl && DECL_ALIGN (decl)) ++ align = DECL_ALIGN_UNIT (decl); ++ } ++ ++ unsigned int extra = 0; ++ switch (mode) ++ { ++ case E_DFmode: ++ case E_DDmode: ++ case E_DImode: ++ /* If we are using VSX scalar loads, restrict ourselves to reg+reg ++ addressing. */ ++ if (VECTOR_MEM_VSX_P (mode)) ++ return false; ++ ++ if (!TARGET_POWERPC64) ++ extra = 4; ++ else if ((offset & 3) || (align & 3)) ++ return false; ++ break; ++ ++ case E_TFmode: ++ case E_IFmode: ++ case E_KFmode: ++ case E_TDmode: ++ case E_TImode: ++ case E_PTImode: ++ extra = 8; ++ if (!TARGET_POWERPC64) ++ extra = 12; ++ else if ((offset & 3) || (align & 3)) ++ return false; ++ break; ++ ++ default: ++ break; ++ } ++ ++ /* We only care if the access(es) would cause a change to the high part. */ ++ offset = ((offset & 0xffff) ^ 0x8000) - 0x8000; ++ return IN_RANGE (offset, -(HOST_WIDE_INT_1 << 15), ++ (HOST_WIDE_INT_1 << 15) - 1 - extra); ++} ++ + /* Return true if the MEM operand is a memory operand suitable for use + with a (full width, possibly multiple) gpr load/store. On + powerpc64 this means the offset must be divisible by 4. +@@ -7705,7 +7803,13 @@ + && legitimate_indirect_address_p (XEXP (addr, 0), false)) + return true; + +- /* Don't allow non-offsettable addresses. See PRs 83969 and 84279. */ ++ /* We need to look through Mach-O PIC unspecs to determine if a lo_sum is ++ really OK. Doing this early avoids teaching all the other machinery ++ about them. */ ++ if (TARGET_MACHO && GET_CODE (addr) == LO_SUM) ++ return darwin_rs6000_legitimate_lo_sum_const_p (XEXP (addr, 1), mode); ++ ++ /* Only allow offsettable addresses. See PRs 83969 and 84279. */ + if (!rs6000_offsettable_memref_p (op, mode, false)) + return false; + +@@ -21330,7 +21434,7 @@ + { + const char *name = XSTR (x, 0); + #if TARGET_MACHO +- if (darwin_emit_branch_islands ++ if (darwin_symbol_stubs + && MACHOPIC_INDIRECT + && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION) + name = machopic_indirection_name (x, /*stub_p=*/true); +@@ -37762,25 +37866,31 @@ + tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller); + tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee); + +- /* If callee has no option attributes, then it is ok to inline. */ ++ /* If the callee has no option attributes, then it is ok to inline. */ + if (!callee_tree) + ret = true; + +- /* If caller has no option attributes, but callee does then it is not ok to +- inline. */ +- else if (!caller_tree) +- ret = false; +- + else + { +- struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree); ++ HOST_WIDE_INT caller_isa; + struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree); ++ HOST_WIDE_INT callee_isa = callee_opts->x_rs6000_isa_flags; ++ HOST_WIDE_INT explicit_isa = callee_opts->x_rs6000_isa_flags_explicit; + +- /* Callee's options should a subset of the caller's, i.e. a vsx function +- can inline an altivec function but a non-vsx function can't inline a +- vsx function. */ +- if ((caller_opts->x_rs6000_isa_flags & callee_opts->x_rs6000_isa_flags) +- == callee_opts->x_rs6000_isa_flags) ++ /* If the caller has option attributes, then use them. ++ Otherwise, use the command line options. */ ++ if (caller_tree) ++ caller_isa = TREE_TARGET_OPTION (caller_tree)->x_rs6000_isa_flags; ++ else ++ caller_isa = rs6000_isa_flags; ++ ++ /* The callee's options must be a subset of the caller's options, i.e. ++ a vsx function may inline an altivec function, but a no-vsx function ++ must not inline a vsx function. However, for those options that the ++ callee has explicitly enabled or disabled, then we must enforce that ++ the callee's and caller's options match exactly; see PR70010. */ ++ if (((caller_isa & callee_isa) == callee_isa) ++ && (caller_isa & explicit_isa) == (callee_isa & explicit_isa)) + ret = true; + } + +@@ -38273,7 +38383,8 @@ + if ((cookie_val & CALL_LONG) != 0 + && GET_CODE (func_desc) == SYMBOL_REF) + { +- if (darwin_emit_branch_islands && TARGET_32BIT) ++ /* FIXME: the longcall opt should not hang off picsymbol stubs. */ ++ if (darwin_symbol_stubs && TARGET_32BIT) + make_island = true; /* Do nothing yet, retain the CALL_LONG flag. */ + else + { +Index: gcc/config/rs6000/altivec.md +=================================================================== +--- a/src/gcc/config/rs6000/altivec.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/altivec.md (.../branches/gcc-9-branch) +@@ -80,9 +80,6 @@ + UNSPEC_VUPKHPX + UNSPEC_VUPKLPX + UNSPEC_CONVERT_4F32_8I16 +- UNSPEC_DARN +- UNSPEC_DARN_32 +- UNSPEC_DARN_RAW + UNSPEC_DST + UNSPEC_DSTT + UNSPEC_DSTST +@@ -161,9 +158,6 @@ + UNSPEC_BCDADD + UNSPEC_BCDSUB + UNSPEC_BCD_OVERFLOW +- UNSPEC_CMPRB +- UNSPEC_CMPRB2 +- UNSPEC_CMPEQB + UNSPEC_VRLMI + UNSPEC_VRLNM + ]) +@@ -4101,223 +4095,6 @@ + "bcd. %0,%1,%2,%3" + [(set_attr "type" "vecsimple")]) + +-(define_insn "darn_32" +- [(set (match_operand:SI 0 "register_operand" "=r") +- (unspec:SI [(const_int 0)] UNSPEC_DARN_32))] +- "TARGET_P9_MISC" +- "darn %0,0" +- [(set_attr "type" "integer")]) +- +-(define_insn "darn_raw" +- [(set (match_operand:DI 0 "register_operand" "=r") +- (unspec:DI [(const_int 0)] UNSPEC_DARN_RAW))] +- "TARGET_P9_MISC && TARGET_64BIT" +- "darn %0,2" +- [(set_attr "type" "integer")]) +- +-(define_insn "darn" +- [(set (match_operand:DI 0 "register_operand" "=r") +- (unspec:DI [(const_int 0)] UNSPEC_DARN))] +- "TARGET_P9_MISC && TARGET_64BIT" +- "darn %0,1" +- [(set_attr "type" "integer")]) +- +-;; Test byte within range. +-;; +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the range specified by operand 2. +-;; The bytes of operand 2 are organized as xx:xx:hi:lo. +-;; +-;; Return in target register operand 0 a value of 1 if lo <= vv and +-;; vv <= hi. Otherwise, set register operand 0 to 0. +-;; +-;; Though the instructions to which this expansion maps operate on +-;; 64-bit registers, the current implementation only operates on +-;; SI-mode operands as the high-order bits provide no information +-;; that is not already available in the low-order bits. To avoid the +-;; costs of data widening operations, future enhancements might allow +-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. +-(define_expand "cmprb" +- [(set (match_dup 3) +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:SI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPRB)) +- (set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (if_then_else:SI (lt (match_dup 3) +- (const_int 0)) +- (const_int -1) +- (if_then_else (gt (match_dup 3) +- (const_int 0)) +- (const_int 1) +- (const_int 0))))] +- "TARGET_P9_MISC" +-{ +- operands[3] = gen_reg_rtx (CCmode); +-}) +- +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the range specified by operand 2. +-;; The bytes of operand 2 are organized as xx:xx:hi:lo. +-;; +-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if +-;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other +-;; 3 bits of the target CR register are all set to 0. +-(define_insn "*cmprb_internal" +- [(set (match_operand:CC 0 "cc_reg_operand" "=y") +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:SI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPRB))] +- "TARGET_P9_MISC" +- "cmprb %0,0,%1,%2" +- [(set_attr "type" "logical")]) +- +-;; Set operand 0 register to -1 if the LT bit (0x8) of condition +-;; register operand 1 is on. Otherwise, set operand 0 register to 1 +-;; if the GT bit (0x4) of condition register operand 1 is on. +-;; Otherwise, set operand 0 to 0. Note that the result stored into +-;; register operand 0 is non-zero iff either the LT or GT bits are on +-;; within condition register operand 1. +-(define_insn "setb_signed" +- [(set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y") +- (const_int 0)) +- (const_int -1) +- (if_then_else (gt (match_dup 1) +- (const_int 0)) +- (const_int 1) +- (const_int 0))))] +- "TARGET_P9_MISC" +- "setb %0,%1" +- [(set_attr "type" "logical")]) +- +-(define_insn "setb_unsigned" +- [(set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y") +- (const_int 0)) +- (const_int -1) +- (if_then_else (gtu (match_dup 1) +- (const_int 0)) +- (const_int 1) +- (const_int 0))))] +- "TARGET_P9_MISC" +- "setb %0,%1" +- [(set_attr "type" "logical")]) +- +-;; Test byte within two ranges. +-;; +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the range specified by operand 2. +-;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. +-;; +-;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and +-;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register +-;; operand 0 to 0. +-;; +-;; Though the instructions to which this expansion maps operate on +-;; 64-bit registers, the current implementation only operates on +-;; SI-mode operands as the high-order bits provide no information +-;; that is not already available in the low-order bits. To avoid the +-;; costs of data widening operations, future enhancements might allow +-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. +-(define_expand "cmprb2" +- [(set (match_dup 3) +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:SI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPRB2)) +- (set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (if_then_else:SI (lt (match_dup 3) +- (const_int 0)) +- (const_int -1) +- (if_then_else (gt (match_dup 3) +- (const_int 0)) +- (const_int 1) +- (const_int 0))))] +- "TARGET_P9_MISC" +-{ +- operands[3] = gen_reg_rtx (CCmode); +-}) +- +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the ranges specified by operand 2. +-;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. +-;; +-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if +-;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). +-;; Otherwise, set the GT bit to 0. The other 3 bits of the target +-;; CR register are all set to 0. +-(define_insn "*cmprb2_internal" +- [(set (match_operand:CC 0 "cc_reg_operand" "=y") +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:SI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPRB2))] +- "TARGET_P9_MISC" +- "cmprb %0,1,%1,%2" +- [(set_attr "type" "logical")]) +- +-;; Test byte membership within set of 8 bytes. +-;; +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the set specified by operand 2. +-;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. +-;; +-;; Return in target register operand 0 a value of 1 if vv equals one +-;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set +-;; register operand 0 to 0. Note that the 8 byte values held within +-;; operand 2 need not be unique. +-;; +-;; Though the instructions to which this expansion maps operate on +-;; 64-bit registers, the current implementation requires that operands +-;; 0 and 1 have mode SI as the high-order bits provide no information +-;; that is not already available in the low-order bits. To avoid the +-;; costs of data widening operations, future enhancements might allow +-;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. +-(define_expand "cmpeqb" +- [(set (match_dup 3) +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:DI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPEQB)) +- (set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (if_then_else:SI (lt (match_dup 3) +- (const_int 0)) +- (const_int -1) +- (if_then_else (gt (match_dup 3) +- (const_int 0)) +- (const_int 1) +- (const_int 0))))] +- "TARGET_P9_MISC && TARGET_64BIT" +-{ +- operands[3] = gen_reg_rtx (CCmode); +-}) +- +-;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx +-;; represents a byte whose value is ignored in this context and +-;; vv, the least significant byte, holds the byte value that is to +-;; be tested for membership within the set specified by operand 2. +-;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. +-;; +-;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv +-;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, +-;; set the GT bit to zero. The other 3 bits of the target CR register +-;; are all set to 0. +-(define_insn "*cmpeqb_internal" +- [(set (match_operand:CC 0 "cc_reg_operand" "=y") +- (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") +- (match_operand:DI 2 "gpc_reg_operand" "r")] +- UNSPEC_CMPEQB))] +- "TARGET_P9_MISC && TARGET_64BIT" +- "cmpeqb %0,%1,%2" +- [(set_attr "type" "logical")]) +- + (define_expand "bcd_" + [(parallel [(set (reg:CCFP CR6_REGNO) + (compare:CCFP +Index: gcc/config/rs6000/rs6000.md +=================================================================== +--- a/src/gcc/config/rs6000/rs6000.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/rs6000/rs6000.md (.../branches/gcc-9-branch) +@@ -137,6 +137,9 @@ + UNSPEC_LSQ + UNSPEC_FUSION_GPR + UNSPEC_STACK_CHECK ++ UNSPEC_CMPRB ++ UNSPEC_CMPRB2 ++ UNSPEC_CMPEQB + UNSPEC_ADD_ROUND_TO_ODD + UNSPEC_SUB_ROUND_TO_ODD + UNSPEC_MUL_ROUND_TO_ODD +@@ -164,6 +167,9 @@ + UNSPECV_EH_RR ; eh_reg_restore + UNSPECV_ISYNC ; isync instruction + UNSPECV_MFTB ; move from time base ++ UNSPECV_DARN ; darn 1 (deliver a random number) ++ UNSPECV_DARN_32 ; darn 2 ++ UNSPECV_DARN_RAW ; darn 0 + UNSPECV_NLGR ; non-local goto receiver + UNSPECV_MFFS ; Move from FPSCR + UNSPECV_MFFSL ; Move from FPSCR light instruction version +@@ -6818,13 +6824,6 @@ + ;; do the load 16-bits at a time. We could do this by loading from memory, + ;; and this is even supposed to be faster, but it is simpler not to get + ;; integers in the TOC. +-(define_insn "movsi_low" +- [(set (match_operand:SI 0 "gpc_reg_operand" "=r") +- (mem:SI (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b") +- (match_operand 2 "" ""))))] +- "TARGET_MACHO && ! TARGET_64BIT" +- "lwz %0,lo16(%2)(%1)" +- [(set_attr "type" "load")]) + + ;; MR LA LWZ LFIWZX LXSIWZX + ;; STW STFIWX STXSIWX LI LIS +@@ -14322,7 +14321,225 @@ + "xscmpuqp %0,%1,%2" + [(set_attr "type" "veccmp") + (set_attr "size" "128")]) ++ ++;; Miscellaneous ISA 3.0 (power9) instructions + ++(define_insn "darn_32" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec_volatile:SI [(const_int 0)] UNSPECV_DARN_32))] ++ "TARGET_P9_MISC" ++ "darn %0,0" ++ [(set_attr "type" "integer")]) ++ ++(define_insn "darn_raw" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN_RAW))] ++ "TARGET_P9_MISC && TARGET_64BIT" ++ "darn %0,2" ++ [(set_attr "type" "integer")]) ++ ++(define_insn "darn" ++ [(set (match_operand:DI 0 "register_operand" "=r") ++ (unspec_volatile:DI [(const_int 0)] UNSPECV_DARN))] ++ "TARGET_P9_MISC && TARGET_64BIT" ++ "darn %0,1" ++ [(set_attr "type" "integer")]) ++ ++;; Test byte within range. ++;; ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the range specified by operand 2. ++;; The bytes of operand 2 are organized as xx:xx:hi:lo. ++;; ++;; Return in target register operand 0 a value of 1 if lo <= vv and ++;; vv <= hi. Otherwise, set register operand 0 to 0. ++;; ++;; Though the instructions to which this expansion maps operate on ++;; 64-bit registers, the current implementation only operates on ++;; SI-mode operands as the high-order bits provide no information ++;; that is not already available in the low-order bits. To avoid the ++;; costs of data widening operations, future enhancements might allow ++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. ++(define_expand "cmprb" ++ [(set (match_dup 3) ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:SI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPRB)) ++ (set (match_operand:SI 0 "gpc_reg_operand" "=r") ++ (if_then_else:SI (lt (match_dup 3) ++ (const_int 0)) ++ (const_int -1) ++ (if_then_else (gt (match_dup 3) ++ (const_int 0)) ++ (const_int 1) ++ (const_int 0))))] ++ "TARGET_P9_MISC" ++{ ++ operands[3] = gen_reg_rtx (CCmode); ++}) ++ ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the range specified by operand 2. ++;; The bytes of operand 2 are organized as xx:xx:hi:lo. ++;; ++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if ++;; lo <= vv and vv <= hi. Otherwise, set the GT bit to 0. The other ++;; 3 bits of the target CR register are all set to 0. ++(define_insn "*cmprb_internal" ++ [(set (match_operand:CC 0 "cc_reg_operand" "=y") ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:SI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPRB))] ++ "TARGET_P9_MISC" ++ "cmprb %0,0,%1,%2" ++ [(set_attr "type" "logical")]) ++ ++;; Set operand 0 register to -1 if the LT bit (0x8) of condition ++;; register operand 1 is on. Otherwise, set operand 0 register to 1 ++;; if the GT bit (0x4) of condition register operand 1 is on. ++;; Otherwise, set operand 0 to 0. Note that the result stored into ++;; register operand 0 is non-zero iff either the LT or GT bits are on ++;; within condition register operand 1. ++(define_insn "setb_signed" ++ [(set (match_operand:SI 0 "gpc_reg_operand" "=r") ++ (if_then_else:SI (lt (match_operand:CC 1 "cc_reg_operand" "y") ++ (const_int 0)) ++ (const_int -1) ++ (if_then_else (gt (match_dup 1) ++ (const_int 0)) ++ (const_int 1) ++ (const_int 0))))] ++ "TARGET_P9_MISC" ++ "setb %0,%1" ++ [(set_attr "type" "logical")]) ++ ++(define_insn "setb_unsigned" ++ [(set (match_operand:SI 0 "gpc_reg_operand" "=r") ++ (if_then_else:SI (ltu (match_operand:CCUNS 1 "cc_reg_operand" "y") ++ (const_int 0)) ++ (const_int -1) ++ (if_then_else (gtu (match_dup 1) ++ (const_int 0)) ++ (const_int 1) ++ (const_int 0))))] ++ "TARGET_P9_MISC" ++ "setb %0,%1" ++ [(set_attr "type" "logical")]) ++ ++;; Test byte within two ranges. ++;; ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the range specified by operand 2. ++;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. ++;; ++;; Return in target register operand 0 a value of 1 if (lo_1 <= vv and ++;; vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). Otherwise, set register ++;; operand 0 to 0. ++;; ++;; Though the instructions to which this expansion maps operate on ++;; 64-bit registers, the current implementation only operates on ++;; SI-mode operands as the high-order bits provide no information ++;; that is not already available in the low-order bits. To avoid the ++;; costs of data widening operations, future enhancements might allow ++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. ++(define_expand "cmprb2" ++ [(set (match_dup 3) ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:SI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPRB2)) ++ (set (match_operand:SI 0 "gpc_reg_operand" "=r") ++ (if_then_else:SI (lt (match_dup 3) ++ (const_int 0)) ++ (const_int -1) ++ (if_then_else (gt (match_dup 3) ++ (const_int 0)) ++ (const_int 1) ++ (const_int 0))))] ++ "TARGET_P9_MISC" ++{ ++ operands[3] = gen_reg_rtx (CCmode); ++}) ++ ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the ranges specified by operand 2. ++;; The bytes of operand 2 are organized as hi_1:lo_1:hi_2:lo_2. ++;; ++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if ++;; (lo_1 <= vv and vv <= hi_1) or if (lo_2 <= vv and vv <= hi_2). ++;; Otherwise, set the GT bit to 0. The other 3 bits of the target ++;; CR register are all set to 0. ++(define_insn "*cmprb2_internal" ++ [(set (match_operand:CC 0 "cc_reg_operand" "=y") ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:SI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPRB2))] ++ "TARGET_P9_MISC" ++ "cmprb %0,1,%1,%2" ++ [(set_attr "type" "logical")]) ++ ++;; Test byte membership within set of 8 bytes. ++;; ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the set specified by operand 2. ++;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. ++;; ++;; Return in target register operand 0 a value of 1 if vv equals one ++;; of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, set ++;; register operand 0 to 0. Note that the 8 byte values held within ++;; operand 2 need not be unique. ++;; ++;; Though the instructions to which this expansion maps operate on ++;; 64-bit registers, the current implementation requires that operands ++;; 0 and 1 have mode SI as the high-order bits provide no information ++;; that is not already available in the low-order bits. To avoid the ++;; costs of data widening operations, future enhancements might allow ++;; DI mode for operand 0 and/or might allow operand 1 to be QI mode. ++(define_expand "cmpeqb" ++ [(set (match_dup 3) ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:DI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPEQB)) ++ (set (match_operand:SI 0 "gpc_reg_operand" "=r") ++ (if_then_else:SI (lt (match_dup 3) ++ (const_int 0)) ++ (const_int -1) ++ (if_then_else (gt (match_dup 3) ++ (const_int 0)) ++ (const_int 1) ++ (const_int 0))))] ++ "TARGET_P9_MISC && TARGET_64BIT" ++{ ++ operands[3] = gen_reg_rtx (CCmode); ++}) ++ ++;; The bytes of operand 1 are organized as xx:xx:xx:vv, where xx ++;; represents a byte whose value is ignored in this context and ++;; vv, the least significant byte, holds the byte value that is to ++;; be tested for membership within the set specified by operand 2. ++;; The bytes of operand 2 are organized as e0:e1:e2:e3:e4:e5:e6:e7. ++;; ++;; Set bit 1 (the GT bit, 0x4) of CR register operand 0 to 1 if vv ++;; equals one of the values e0, e1, e2, e3, e4, e5, e6, or e7. Otherwise, ++;; set the GT bit to zero. The other 3 bits of the target CR register ++;; are all set to 0. ++(define_insn "*cmpeqb_internal" ++ [(set (match_operand:CC 0 "cc_reg_operand" "=y") ++ (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") ++ (match_operand:DI 2 "gpc_reg_operand" "r")] ++ UNSPEC_CMPEQB))] ++ "TARGET_P9_MISC && TARGET_64BIT" ++ "cmpeqb %0,%1,%2" ++ [(set_attr "type" "logical")]) + + + (include "sync.md") +Index: gcc/config/darwin.c +=================================================================== +--- a/src/gcc/config/darwin.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin.c (.../branches/gcc-9-branch) +@@ -75,15 +75,9 @@ + setting the second word in the .non_lazy_symbol_pointer data + structure to symbol. See indirect_data for the code that handles + the extra indirection, and machopic_output_indirection and its use +- of MACHO_SYMBOL_STATIC for the code that handles @code{static} ++ of MACHO_SYMBOL_FLAG_STATIC for the code that handles @code{static} + symbol indirection. */ + +-/* For darwin >= 9 (OSX 10.5) the linker is capable of making the necessary +- branch islands and we no longer need to emit darwin stubs. +- However, if we are generating code for earlier systems (or for use in the +- kernel) the stubs might still be required, and this will be set true. */ +-int darwin_emit_branch_islands = false; +- + typedef struct GTY(()) cdtor_record { + rtx symbol; + int priority; /* [con/de]structor priority */ +@@ -105,6 +99,10 @@ + for weak or single-definition items. */ + static bool ld_uses_coal_sects = false; + ++/* Very old (ld_classic) linkers need a symbol to mark the start of ++ each FDE. */ ++static bool ld_needs_eh_markers = false; ++ + /* Section names. */ + section * darwin_sections[NUM_DARWIN_SECTIONS]; + +@@ -250,7 +248,7 @@ + int + machopic_symbol_defined_p (rtx sym_ref) + { +- if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_DEFINED) ++ if (MACHO_SYMBOL_DEFINED_P (sym_ref)) + return true; + + /* If a symbol references local and is not an extern to this +@@ -259,7 +257,7 @@ + { + /* If the symbol references a variable and the variable is a + common symbol, then this symbol is not defined. */ +- if (SYMBOL_REF_FLAGS (sym_ref) & MACHO_SYMBOL_FLAG_VARIABLE) ++ if (MACHO_SYMBOL_VARIABLE_P (sym_ref)) + { + tree decl = SYMBOL_REF_DECL (sym_ref); + if (!decl) +@@ -455,6 +453,13 @@ + bool stub_p; + /* True iff this stub or pointer has been referenced. */ + bool used; ++ /* True iff a non-lazy symbol pointer should be emitted into the .data ++ section, rather than the non-lazy symbol pointers section. The cases ++ for which this occurred seem to have been unintentional, and later ++ toolchains emit all of the indirections to the 'usual' section. We ++ are keeping this in case it is necessary to preserve compatibility with ++ older toolchains. */ ++ bool nlsp_in_data_section; + } machopic_indirection; + + struct indirection_hasher : ggc_ptr_hash +@@ -489,7 +494,7 @@ + /* Return the name of the non-lazy pointer (if STUB_P is false) or + stub (if STUB_B is true) corresponding to the given name. + +- If we have a situation like: ++ PR71767 - If we have a situation like: + + global_weak_symbol: + .... +@@ -498,36 +503,22 @@ + + ld64 will be unable to split this into two atoms (because the "L" makes + the second symbol 'invisible'). This means that legitimate direct accesses +- to the second symbol will appear to be non-allowed direct accesses to an +- atom of type weak, global which are not allowed. ++ to the second symbol will appear to be direct accesses to an atom of type ++ weak, global which are not allowed. + +- To avoid this, we make the indirections have a leading 'l' (lower-case L) +- which has a special meaning: linker can see this and use it to determine +- atoms, but it is not placed into the final symbol table. ++ To avoid this, we make any data-section indirections have a leading 'l' ++ (lower-case L) which has a special meaning: linker can see this and use ++ it to determine atoms, but it is not placed into the final symbol table. + +- The implementation here is somewhat heavy-handed in that it will also mark +- indirections to the __IMPORT,__pointers section the same way which is +- really unnecessary, since ld64 _can_ split those into atoms as they are +- fixed size. FIXME: determine if this is a penalty worth extra code to +- fix. +- ++ Symbols in the non-lazy symbol pointers section (or stubs) do not have this ++ problem because ld64 already knows the size of each entry. + */ + + const char * + machopic_indirection_name (rtx sym_ref, bool stub_p) + { +- char *buffer; + const char *name = XSTR (sym_ref, 0); +- size_t namelen = strlen (name); +- machopic_indirection *p; +- bool needs_quotes; +- const char *suffix; +- char L_or_l = 'L'; +- const char *prefix = user_label_prefix; +- const char *quote = ""; +- tree id; +- +- id = maybe_get_identifier (name); ++ tree id = maybe_get_identifier (name); + if (id) + { + tree id_orig = id; +@@ -535,43 +526,47 @@ + while (IDENTIFIER_TRANSPARENT_ALIAS (id)) + id = TREE_CHAIN (id); + if (id != id_orig) +- { +- name = IDENTIFIER_POINTER (id); +- namelen = strlen (name); +- } ++ name = IDENTIFIER_POINTER (id); + } + ++ const char *prefix = user_label_prefix; ++ /* If we are emitting the label 'verbatim' then omit the U_L_P and count ++ the name without the leading '*'. */ + if (name[0] == '*') + { + prefix = ""; + ++name; +- --namelen; + } + +- needs_quotes = name_needs_quotes (name); +- if (needs_quotes) +- { +- quote = "\""; +- } ++ /* Here we are undoing a number of causes that placed some indirections ++ (apparently erroneously) into the .data section. Specifically, some ++ symbols that are ABI mandated indirections and some hidden symbols ++ were being placed there - which cause difficulties with later ++ versions of ld64. Iff (after these checks) some symbol still gets an ++ indirection in the data section, we want to adjust the indirection ++ name to be linker visible to deal with PR71767 (notes above). */ ++ bool nlsp_in_data_section = ++ ! MACHO_SYMBOL_MUST_INDIRECT_P (sym_ref) ++ && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref) ++ && (machopic_symbol_defined_p (sym_ref) || SYMBOL_REF_LOCAL_P (sym_ref)) ++ && ! indirect_data (sym_ref); + +- if (stub_p) +- suffix = STUB_SUFFIX; +- else +- { +- suffix = NON_LAZY_POINTER_SUFFIX; +- /* Let the linker see this. */ +- L_or_l = 'l'; +- } ++ const char *suffix = stub_p ? STUB_SUFFIX : NON_LAZY_POINTER_SUFFIX; ++ /* If the indirection is in the data section, let the linker see it. */ ++ char L_or_l = (!stub_p && nlsp_in_data_section) ? 'l' : 'L'; ++ /* We have mangled symbols with spaces and punctuation which typically ++ need surrounding in quotes for the assembler to consume them. */ ++ const char *quote = name_needs_quotes (name) ? "\"" : ""; ++ char *buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */ ++ + strlen (prefix) ++ + strlen (name) ++ + strlen (suffix) ++ + 2 * strlen (quote) ++ + 1 /* '\0' */); + +- buffer = XALLOCAVEC (char, 2 /* strlen ("&L") or ("&l") */ +- + strlen (prefix) +- + namelen +- + strlen (suffix) +- + 2 * strlen (quote) +- + 1 /* '\0' */); +- + /* Construct the name of the non-lazy pointer or stub. */ +- sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, suffix, quote); ++ sprintf (buffer, "&%s%c%s%s%s%s", quote, L_or_l, prefix, name, ++ suffix, quote); + + if (!machopic_indirections) + machopic_indirections = hash_table::create_ggc (37); +@@ -580,10 +575,9 @@ + = machopic_indirections->find_slot_with_hash (buffer, + htab_hash_string (buffer), + INSERT); ++ machopic_indirection *p; + if (*slot) +- { +- p = *slot; +- } ++ p = *slot; + else + { + p = ggc_alloc (); +@@ -591,6 +585,7 @@ + p->ptr_name = xstrdup (buffer); + p->stub_p = stub_p; + p->used = false; ++ p->nlsp_in_data_section = nlsp_in_data_section; + *slot = p; + } + +@@ -666,7 +661,7 @@ + /* some other cpu -- writeme! */ + gcc_unreachable (); + } +- else if (defined) ++ else if (defined && ! MACHO_SYMBOL_MUST_INDIRECT_P (orig)) + { + rtx offset = NULL; + if (DARWIN_PPC || HAVE_lo_sum) +@@ -708,6 +703,7 @@ + machopic_indirection_name (orig, /*stub_p=*/false))); + + SYMBOL_REF_DATA (ptr_ref) = SYMBOL_REF_DATA (orig); ++ SYMBOL_REF_FLAGS (ptr_ref) |= MACHO_SYMBOL_FLAG_INDIRECTION; + + ptr_ref = gen_const_mem (Pmode, ptr_ref); + machopic_define_symbol (ptr_ref); +@@ -790,7 +786,7 @@ + rtx + machopic_indirect_call_target (rtx target) + { +- if (! darwin_emit_branch_islands) ++ if (! darwin_symbol_stubs) + return target; + + if (GET_CODE (target) != MEM) +@@ -798,8 +794,7 @@ + + if (MACHOPIC_INDIRECT + && GET_CODE (XEXP (target, 0)) == SYMBOL_REF +- && !(SYMBOL_REF_FLAGS (XEXP (target, 0)) +- & MACHO_SYMBOL_FLAG_DEFINED)) ++ && ! MACHO_SYMBOL_DEFINED_P (XEXP (target, 0))) + { + rtx sym_ref = XEXP (target, 0); + const char *stub_name = machopic_indirection_name (sym_ref, +@@ -808,6 +803,7 @@ + + XEXP (target, 0) = gen_rtx_SYMBOL_REF (mode, stub_name); + SYMBOL_REF_DATA (XEXP (target, 0)) = SYMBOL_REF_DATA (sym_ref); ++ SYMBOL_REF_FLAGS (XEXP (target, 0)) |= MACHO_SYMBOL_FLAG_INDIRECTION; + MEM_READONLY_P (target) = 1; + MEM_NOTRAP_P (target) = 1; + } +@@ -844,7 +840,7 @@ + { + if (reg == 0) + { +- gcc_assert (!reload_in_progress); ++ gcc_assert (!lra_in_progress); + reg = gen_reg_rtx (Pmode); + } + +@@ -928,7 +924,7 @@ + emit_use (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM)); + #endif + +- if (reload_in_progress) ++ if (lra_in_progress) + df_set_regs_ever_live (REGNO (pic), true); + pic_ref = gen_rtx_PLUS (Pmode, pic, + machopic_gen_offset (XEXP (orig, 0))); +@@ -952,7 +948,7 @@ + + if (reg == 0) + { +- gcc_assert (!reload_in_progress); ++ gcc_assert (!lra_in_progress); + reg = gen_reg_rtx (Pmode); + } + +@@ -998,7 +994,7 @@ + #if 0 + emit_use (pic_offset_table_rtx); + #endif +- if (reload_in_progress) ++ if (lra_in_progress) + df_set_regs_ever_live (REGNO (pic), true); + pic_ref = gen_rtx_PLUS (Pmode, + pic, +@@ -1069,129 +1065,160 @@ + return pic_ref; + } + +-/* Output the stub or non-lazy pointer in *SLOT, if it has been used. +- DATA is the FILE* for assembly output. Called from +- htab_traverse. */ ++/* Callbacks to output the stub or non-lazy pointers. ++ Each works on the item in *SLOT,if it has been used. ++ DATA is the FILE* for assembly output. ++ Called from htab_traverses, invoked from machopic_finish(). */ + + int +-machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file) ++machopic_output_data_section_indirection (machopic_indirection **slot, ++ FILE *asm_out_file) + { + machopic_indirection *p = *slot; +- rtx symbol; +- const char *sym_name; +- const char *ptr_name; + +- if (!p->used) ++ if (!p->used || !p->nlsp_in_data_section) + return 1; + +- symbol = p->symbol; +- sym_name = XSTR (symbol, 0); +- ptr_name = p->ptr_name; ++ rtx symbol = p->symbol; ++ /* The original symbol name. */ ++ const char *sym_name = XSTR (symbol, 0); ++ /* The name of the indirection symbol. */ ++ const char *ptr_name = p->ptr_name; + +- if (p->stub_p) +- { +- char *sym; +- char *stub; +- tree id; ++ switch_to_section (data_section); ++ assemble_align (GET_MODE_ALIGNMENT (Pmode)); ++ assemble_label (asm_out_file, ptr_name); ++ assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name), ++ GET_MODE_SIZE (Pmode), ++ GET_MODE_ALIGNMENT (Pmode), 1); + +- id = maybe_get_identifier (sym_name); +- if (id) +- { +- tree id_orig = id; ++ return 1; ++} + +- while (IDENTIFIER_TRANSPARENT_ALIAS (id)) +- id = TREE_CHAIN (id); +- if (id != id_orig) +- sym_name = IDENTIFIER_POINTER (id); +- } ++int ++machopic_output_stub_indirection (machopic_indirection **slot, ++ FILE *asm_out_file) ++{ ++ machopic_indirection *p = *slot; + +- sym = XALLOCAVEC (char, strlen (sym_name) + 2); +- if (sym_name[0] == '*' || sym_name[0] == '&') +- strcpy (sym, sym_name + 1); +- else if (sym_name[0] == '-' || sym_name[0] == '+') +- strcpy (sym, sym_name); +- else +- sprintf (sym, "%s%s", user_label_prefix, sym_name); ++ if (!p->used || !p->stub_p) ++ return 1; + +- stub = XALLOCAVEC (char, strlen (ptr_name) + 2); +- if (ptr_name[0] == '*' || ptr_name[0] == '&') +- strcpy (stub, ptr_name + 1); +- else +- sprintf (stub, "%s%s", user_label_prefix, ptr_name); ++ rtx symbol = p->symbol; ++ /* The original symbol name. */ ++ const char *sym_name = XSTR (symbol, 0); ++ /* The name of the stub symbol. */ ++ const char *ptr_name = p->ptr_name; + +- machopic_output_stub (asm_out_file, sym, stub); +- } +- else if (! indirect_data (symbol) +- && (machopic_symbol_defined_p (symbol) +- || SYMBOL_REF_LOCAL_P (symbol))) ++ tree id = maybe_get_identifier (sym_name); ++ if (id) + { +- switch_to_section (data_section); +- assemble_align (GET_MODE_ALIGNMENT (Pmode)); +- assemble_label (asm_out_file, ptr_name); +- assemble_integer (gen_rtx_SYMBOL_REF (Pmode, sym_name), +- GET_MODE_SIZE (Pmode), +- GET_MODE_ALIGNMENT (Pmode), 1); ++ tree id_orig = id; ++ ++ while (IDENTIFIER_TRANSPARENT_ALIAS (id)) ++ id = TREE_CHAIN (id); ++ if (id != id_orig) ++ sym_name = IDENTIFIER_POINTER (id); + } ++ ++ char *sym = XALLOCAVEC (char, strlen (sym_name) + 2); ++ if (sym_name[0] == '*' || sym_name[0] == '&') ++ strcpy (sym, sym_name + 1); ++ else if (sym_name[0] == '-' || sym_name[0] == '+') ++ strcpy (sym, sym_name); + else +- { +- rtx init = const0_rtx; ++ sprintf (sym, "%s%s", user_label_prefix, sym_name); + +- switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]); ++ char *stub = XALLOCAVEC (char, strlen (ptr_name) + 2); ++ if (ptr_name[0] == '*' || ptr_name[0] == '&') ++ strcpy (stub, ptr_name + 1); ++ else ++ sprintf (stub, "%s%s", user_label_prefix, ptr_name); + +- /* Mach-O symbols are passed around in code through indirect +- references and the original symbol_ref hasn't passed through +- the generic handling and reference-catching in +- output_operand, so we need to manually mark weak references +- as such. */ +- if (SYMBOL_REF_WEAK (symbol)) +- { +- tree decl = SYMBOL_REF_DECL (symbol); +- gcc_assert (DECL_P (decl)); ++ machopic_output_stub (asm_out_file, sym, stub); + +- if (decl != NULL_TREE +- && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl) +- /* Handle only actual external-only definitions, not +- e.g. extern inline code or variables for which +- storage has been allocated. */ +- && !TREE_STATIC (decl)) +- { +- fputs ("\t.weak_reference ", asm_out_file); +- assemble_name (asm_out_file, sym_name); +- fputc ('\n', asm_out_file); +- } +- } ++ return 1; ++} + +- assemble_name (asm_out_file, ptr_name); +- fprintf (asm_out_file, ":\n"); ++int ++machopic_output_indirection (machopic_indirection **slot, FILE *asm_out_file) ++{ ++ machopic_indirection *p = *slot; + +- fprintf (asm_out_file, "\t.indirect_symbol "); +- assemble_name (asm_out_file, sym_name); +- fprintf (asm_out_file, "\n"); ++ if (!p->used || p->stub_p || p->nlsp_in_data_section) ++ return 1; + +- /* Variables that are marked with MACHO_SYMBOL_STATIC need to +- have their symbol name instead of 0 in the second entry of +- the non-lazy symbol pointer data structure when they are +- defined. This allows the runtime to rebind newer instances +- of the translation unit with the original instance of the +- symbol. */ ++ rtx symbol = p->symbol; ++ /* The original symbol name. */ ++ const char *sym_name = XSTR (symbol, 0); ++ /* The nonlazy-stub symbol name. */ ++ const char *ptr_name = p->ptr_name; + +- if ((SYMBOL_REF_FLAGS (symbol) & MACHO_SYMBOL_STATIC) +- && machopic_symbol_defined_p (symbol)) +- init = gen_rtx_SYMBOL_REF (Pmode, sym_name); ++ switch_to_section (darwin_sections[machopic_nl_symbol_ptr_section]); + +- assemble_integer (init, GET_MODE_SIZE (Pmode), +- GET_MODE_ALIGNMENT (Pmode), 1); ++ /* Mach-O symbols are passed around in code through indirect references and ++ the original symbol_ref hasn't passed through the generic handling and ++ reference-catching in output_operand, so we need to manually mark weak ++ references as such. */ ++ ++ if (SYMBOL_REF_WEAK (symbol)) ++ { ++ tree decl = SYMBOL_REF_DECL (symbol); ++ gcc_checking_assert (DECL_P (decl)); ++ ++ if (decl != NULL_TREE ++ && DECL_EXTERNAL (decl) && TREE_PUBLIC (decl) ++ /* Handle only actual external-only definitions, not ++ e.g. extern inline code or variables for which ++ storage has been allocated. */ ++ && !TREE_STATIC (decl)) ++ { ++ fputs ("\t.weak_reference ", asm_out_file); ++ assemble_name (asm_out_file, sym_name); ++ fputc ('\n', asm_out_file); ++ } + } + ++ assemble_name (asm_out_file, ptr_name); ++ fprintf (asm_out_file, ":\n"); ++ ++ fprintf (asm_out_file, "\t.indirect_symbol "); ++ assemble_name (asm_out_file, sym_name); ++ fprintf (asm_out_file, "\n"); ++ ++ /* Variables that are marked with MACHO_SYMBOL_FLAG_STATIC need to ++ have their symbol name instead of 0 in the second entry of ++ the non-lazy symbol pointer data structure when they are ++ defined. This allows the runtime to rebind newer instances ++ of the translation unit with the original instance of the ++ symbol. */ ++ ++ rtx init = const0_rtx; ++ if (MACHO_SYMBOL_STATIC_P (symbol) && machopic_symbol_defined_p (symbol)) ++ init = gen_rtx_SYMBOL_REF (Pmode, sym_name); ++ ++ assemble_integer (init, GET_MODE_SIZE (Pmode), ++ GET_MODE_ALIGNMENT (Pmode), 1); ++ + return 1; + } + +-void ++static void + machopic_finish (FILE *asm_out_file) + { +- if (machopic_indirections) +- machopic_indirections +- ->traverse_noresize (asm_out_file); ++ if (!machopic_indirections) ++ return; ++ ++ /* First output an symbol indirections that have been placed into .data ++ (we don't expect these now). */ ++ machopic_indirections->traverse_noresize ++ (asm_out_file); ++ ++ machopic_indirections->traverse_noresize ++ (asm_out_file); ++ ++ machopic_indirections->traverse_noresize ++ (asm_out_file); + } + + int +@@ -1206,25 +1233,51 @@ + && XINT (XEXP (op, 0), 1) == UNSPEC_MACHOPIC_OFFSET); + } + +-/* This function records whether a given name corresponds to a defined +- or undefined function or variable, for machopic_classify_ident to +- use later. */ ++/* This function: ++ computes and caches a series of flags that characterise the symbol's ++ properties that affect Mach-O code gen (including accidental cases ++ from older toolchains). + ++ TODO: ++ Here we also need to do enough analysis to determine if a symbol's ++ name needs to be made linker-visible. This is more tricky - since ++ it depends on whether we've previously seen a global weak definition ++ in the same section. ++ */ ++ + void +-darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED) ++darwin_encode_section_info (tree decl, rtx rtl, int first) + { +- rtx sym_ref; ++ /* Careful not to prod global register variables. */ ++ if (!MEM_P (rtl)) ++ return; + +- /* Do the standard encoding things first. */ ++ /* Do the standard encoding things first; this sets: ++ SYMBOL_FLAG_FUNCTION, ++ SYMBOL_FLAG_LOCAL, (binds_local_p) ++ TLS_MODEL, SYMBOL_FLAG_SMALL ++ SYMBOL_FLAG_EXTERNAL. */ + default_encode_section_info (decl, rtl, first); + +- if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL) ++ if (! VAR_OR_FUNCTION_DECL_P (decl)) + return; + +- sym_ref = XEXP (rtl, 0); +- if (TREE_CODE (decl) == VAR_DECL) ++ rtx sym_ref = XEXP (rtl, 0); ++ if (VAR_P (decl)) + SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_VARIABLE; + ++ /* Only really common if there's no initialiser. */ ++ bool really_common_p = (DECL_COMMON (decl) ++ && (DECL_INITIAL (decl) == NULL ++ || (!in_lto_p ++ && DECL_INITIAL (decl) == error_mark_node))); ++ ++ /* For Darwin, if we have specified visibility and it's not the default ++ that's counted 'hidden'. */ ++ if (DECL_VISIBILITY_SPECIFIED (decl) ++ && DECL_VISIBILITY (decl) != VISIBILITY_DEFAULT) ++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_HIDDEN_VIS; ++ + if (!DECL_EXTERNAL (decl) + && (!TREE_PUBLIC (decl) || !DECL_WEAK (decl)) + && ! lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)) +@@ -1235,7 +1288,13 @@ + SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_DEFINED; + + if (! TREE_PUBLIC (decl)) +- SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_STATIC; ++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_STATIC; ++ ++ /* Short cut check for Darwin 'must indirect' rules. */ ++ if (really_common_p ++ || (DECL_WEAK (decl) && ! MACHO_SYMBOL_HIDDEN_VIS_P (sym_ref)) ++ || lookup_attribute ("weakref", DECL_ATTRIBUTES (decl))) ++ SYMBOL_REF_FLAGS (sym_ref) |= MACHO_SYMBOL_FLAG_MUST_INDIRECT; + } + + void +@@ -1252,12 +1311,13 @@ + } + + static section * +-darwin_rodata_section (int use_coal, bool zsize) ++darwin_rodata_section (int use_coal, bool zsize, int reloc) + { + return (use_coal + ? darwin_sections[const_coal_section] + : (zsize ? darwin_sections[zobj_const_section] +- : darwin_sections[const_section])); ++ : reloc ? darwin_sections[const_data_section] ++ : darwin_sections[const_section])); + } + + static section * +@@ -1550,7 +1610,7 @@ + + case SECCAT_RODATA: + case SECCAT_SRODATA: +- base_section = darwin_rodata_section (use_coal, zsize); ++ base_section = darwin_rodata_section (use_coal, zsize, reloc); + break; + + case SECCAT_RODATA_MERGE_STR: +@@ -2086,11 +2146,11 @@ + static int invok_count = 0; + static tree last_fun_decl = NULL_TREE; + +- /* We use the linker to emit the .eh labels for Darwin 9 and above. */ +- if (! for_eh || generating_for_darwin_version >= 9) ++ /* Modern linkers can produce distinct FDEs without compiler support. */ ++ if (! for_eh || ! ld_needs_eh_markers) + return; + +- /* FIXME: This only works when the eh for all sections of a function is ++ /* FIXME: This only works when the eh for all sections of a function are + emitted at the same time. If that changes, we would need to use a lookup + table of some form to determine what to do. Also, we should emit the + unadorned label for the partition containing the public label for a +@@ -3148,17 +3208,19 @@ + : (generating_for_darwin_version >= 9) ? 1 + : 0); + +- /* Objective-C family ABI 2 is only valid for next/m64 at present. */ + if (global_options_set.x_flag_objc_abi && flag_next_runtime) + { +- if (TARGET_64BIT && global_options.x_flag_objc_abi < 2) +- error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 must be" +- " used for %<-m64%> targets with" +- " %<-fnext-runtime%>"); +- if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2) +- error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is not" +- " supported on %<-m32%> targets with" +- " %<-fnext-runtime%>"); ++ if (TARGET_64BIT && global_options.x_flag_objc_abi != 2) ++ /* The Objective-C family ABI 2 is the only valid version NeXT/m64. */ ++ error_at (UNKNOWN_LOCATION, ++ "%<-fobjc-abi-version%> 2 must be used for 64 bit targets" ++ " with %<-fnext-runtime%>"); ++ else if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2) ++ /* ABI versions 0 and 1 are the only valid versions NeXT/m32. */ ++ error_at (UNKNOWN_LOCATION, ++ "%<-fobjc-abi-version%> %d is not supported for 32 bit" ++ " targets with %<-fnext-runtime%>", ++ global_options.x_flag_objc_abi); + } + + /* Don't emit DWARF3/4 unless specifically selected. This is a +@@ -3261,12 +3323,45 @@ + flag_pic = 2; + } + +- /* It is assumed that branch island stubs are needed for earlier systems. */ +- if (generating_for_darwin_version < 9) +- darwin_emit_branch_islands = true; +- else +- emit_aligned_common = true; /* Later systems can support aligned common. */ ++ /* Linkers >= ld64-62.1 (at least) are capable of making the necessary PIC ++ indirections and we no longer need to emit pic symbol stubs. ++ However, if we are generating code for earlier ones (or for use in the ++ kernel) the stubs might still be required, and this will be set true. ++ If the user sets it on or off - then that takes precedence. + ++ Linkers that don't need stubs, don't need the EH symbol markers either. ++ */ ++ ++ if (!global_options_set.x_darwin_symbol_stubs) ++ { ++ if (darwin_target_linker) ++ { ++ if (strverscmp (darwin_target_linker, MIN_LD64_OMIT_STUBS) < 0) ++ { ++ darwin_symbol_stubs = true; ++ ld_needs_eh_markers = true; ++ } ++ } ++ else if (generating_for_darwin_version < 9) ++ { ++ /* If we don't know the linker version and we're targeting an old ++ system, we know no better than to assume the use of an earlier ++ linker. */ ++ darwin_symbol_stubs = true; ++ ld_needs_eh_markers = true; ++ } ++ } ++ else if (DARWIN_X86 && darwin_symbol_stubs && TARGET_64BIT) ++ { ++ inform (input_location, ++ "%<-msymbol-stubs%> is not required for 64b code (ignored)"); ++ darwin_symbol_stubs = false; ++ } ++ ++ if (generating_for_darwin_version >= 9) ++ /* Later systems can support aligned common. */ ++ emit_aligned_common = true; ++ + /* The c_dialect...() macros are not available to us here. */ + darwin_running_cxx = (strstr (lang_hooks.name, "C++") != 0); + } +Index: gcc/config/darwin.h +=================================================================== +--- a/src/gcc/config/darwin.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin.h (.../branches/gcc-9-branch) +@@ -126,6 +126,24 @@ + "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \ + %= 10.5 mmacosx-version-min= -pie) }} " ++ ++#define DARWIN_NOPIE_SPEC \ ++"%{no-pie|fno-pie|fno-PIE: \ ++ %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }" ++ + #define DARWIN_CC1_SPEC \ + "%{findirect-virtual-calls: -fapple-kext} %= 10.6 mmacosx-version-min= -no_compact_unwind) " ++ ++/* In Darwin linker specs we can put -lcrt0.o and ld will search the library ++ path for crt0.o or -lcrtx.a and it will search for for libcrtx.a. As for ++ other ports, we can also put xxx.{o,a}%s and get the appropriate complete ++ startfile absolute directory. This latter point is important when we want ++ to override ld's rule of .dylib being found ahead of .a and the user wants ++ the convenience library to be linked. */ ++ ++/* The LINK_COMMAND spec is mostly a clone of the standard LINK_COMMAND_SPEC, ++ plus precomp, libtool, and fat build additions. ++ + In general, random Darwin linker flags should go into LINK_SPEC + instead of LINK_COMMAND_SPEC. The command spec is better for + specifying the handling of options understood by generic Unix + linkers, and for positional arguments like libraries. */ + +-#if LD64_HAS_EXPORT_DYNAMIC +-#define DARWIN_EXPORT_DYNAMIC " %{rdynamic:-export_dynamic}" +-#else +-#define DARWIN_EXPORT_DYNAMIC " %{rdynamic: %nrdynamic is not supported}" +-#endif +- + #define LINK_COMMAND_SPEC_A \ + "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ + %(linker)" \ +@@ -190,10 +219,14 @@ + %{%:sanitize(address): -lasan } \ + %{%:sanitize(undefined): -lubsan } \ + %(link_ssp) \ +- " DARWIN_EXPORT_DYNAMIC " % 10.5 mmacosx-version-min= -lgcc_s.10.4) \ ++ shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime: \ ++ %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh) \ ++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ +- %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ ++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc ; \ + :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5) \ +- %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ ++ %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \ + %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5) \ + -lgcc }" + +-/* We specify crt0.o as -lcrt0.o so that ld will search the library path. ++/* We specify crt0.o as -lcrt0.o so that ld will search the library path. */ + +- crt3.o provides __cxa_atexit on systems that don't have it. Since +- it's only used with C++, which requires passing -shared-libgcc, key +- off that to avoid unnecessarily adding a destructor to every +- powerpc program built. */ +- + #undef STARTFILE_SPEC + #define STARTFILE_SPEC \ +- "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ +- %{!Zdynamiclib:%{Zbundle:%{!static: \ ++"%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}} \ ++ %{!Zdynamiclib:%{Zbundle:%{!static: \ + %:version-compare(< 10.6 mmacosx-version-min= -lbundle1.o) \ + %{fgnu-tm: -lcrttms.o}}} \ + %{!Zbundle:%{pg:%{static:-lgcrt0.o} \ +@@ -377,7 +406,7 @@ + %{!object:%{preload:-lcrt0.o} \ + %{!preload: %(darwin_crt1) \ + %(darwin_crt2)}}}}}} \ +- %{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" ++ %(darwin_crt3)" + + /* We want a destructor last in the list. */ + #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}" +@@ -385,12 +414,10 @@ + + #define DARWIN_EXTRA_SPECS \ + { "darwin_crt1", DARWIN_CRT1_SPEC }, \ ++ { "darwin_crt2", DARWIN_CRT2_SPEC }, \ ++ { "darwin_crt3", DARWIN_CRT3_SPEC }, \ + { "darwin_dylib1", DARWIN_DYLIB1_SPEC }, + +-#define DARWIN_DYLIB1_SPEC \ +- "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ +- %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)" +- + #define DARWIN_CRT1_SPEC \ + "%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \ + %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \ +@@ -397,6 +424,20 @@ + %:version-compare(>< 10.6 10.8 mmacosx-version-min= -lcrt1.10.6.o) \ + %{fgnu-tm: -lcrttms.o}" + ++#define DARWIN_CRT2_SPEC "" ++ ++/* crt3.o provides __cxa_atexit on systems that don't have it (and a fix ++ up for faulty versions on 10.4). Since it's only used with C++, which ++ requires passing -shared-libgcc, key off that to avoid unnecessarily ++ adding a destructor to every program built for 10.4 or earlier. */ ++ ++#define DARWIN_CRT3_SPEC \ ++"%{shared-libgcc:%:version-compare(< 10.5 mmacosx-version-min= crt3.o%s)}" ++ ++#define DARWIN_DYLIB1_SPEC \ ++ "%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \ ++ %:version-compare(>< 10.5 10.6 mmacosx-version-min= -ldylib1.10.5.o)" ++ + #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION + /* Emit macosx version (but only major). */ + #define ASM_MMACOSX_VERSION_MIN_SPEC \ +@@ -762,21 +803,52 @@ + #undef TARGET_ASM_MARK_DECL_PRESERVED + #define TARGET_ASM_MARK_DECL_PRESERVED darwin_mark_decl_preserved + +-/* Set on a symbol with SYMBOL_FLAG_FUNCTION or +- MACHO_SYMBOL_FLAG_VARIABLE to indicate that the function or +- variable has been defined in this translation unit. +- When porting Mach-O to new architectures you need to make +- sure these aren't clobbered by the backend. */ ++/* Any port using this header needs to define the first available ++ subtarget symbol bit: SYMBOL_FLAG_SUBT_DEP. */ + +-#define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_MACH_DEP) +-#define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_MACH_DEP) << 1) ++/* Is a variable. */ ++#define MACHO_SYMBOL_FLAG_VARIABLE (SYMBOL_FLAG_SUBT_DEP) ++#define MACHO_SYMBOL_VARIABLE_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_VARIABLE) != 0) + ++/* Set on a symbol that must be indirected, even when there is a ++ definition in the TU. The ABI mandates that common symbols are so ++ indirected, as are weak. If 'fix-and-continue' is operational then ++ data symbols might also be. */ ++ ++#define MACHO_SYMBOL_FLAG_MUST_INDIRECT ((SYMBOL_FLAG_SUBT_DEP) << 1) ++#define MACHO_SYMBOL_MUST_INDIRECT_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_MUST_INDIRECT) != 0) ++ ++/* Set on a symbol with SYMBOL_FLAG_FUNCTION or MACHO_SYMBOL_FLAG_VARIABLE ++ to indicate that the function or variable is considered defined in this ++ translation unit. */ ++ ++#define MACHO_SYMBOL_FLAG_DEFINED ((SYMBOL_FLAG_SUBT_DEP) << 2) ++#define MACHO_SYMBOL_DEFINED_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_DEFINED) != 0) ++ ++/* Set on a symbol that has specified non-default visibility. */ ++ ++#define MACHO_SYMBOL_FLAG_HIDDEN_VIS ((SYMBOL_FLAG_SUBT_DEP) << 3) ++#define MACHO_SYMBOL_HIDDEN_VIS_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_HIDDEN_VIS) != 0) ++ ++/* Set on a symbol that is a pic stub or symbol indirection (i.e. the ++ L_xxxxx${stub,non_lazy_ptr,lazy_ptr}. */ ++ ++#define MACHO_SYMBOL_FLAG_INDIRECTION ((SYMBOL_FLAG_SUBT_DEP) << 5) ++#define MACHO_SYMBOL_INDIRECTION_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_INDIRECTION) != 0) ++ + /* Set on a symbol to indicate when fix-and-continue style code + generation is being used and the symbol refers to a static symbol + that should be rebound from new instances of a translation unit to + the original instance of the data. */ + +-#define MACHO_SYMBOL_STATIC ((SYMBOL_FLAG_MACH_DEP) << 2) ++#define MACHO_SYMBOL_FLAG_STATIC ((SYMBOL_FLAG_SUBT_DEP) << 6) ++#define MACHO_SYMBOL_STATIC_P(RTX) \ ++ ((SYMBOL_REF_FLAGS (RTX) & MACHO_SYMBOL_FLAG_STATIC) != 0) + + /* Symbolic names for various things we might know about a symbol. */ + +@@ -969,8 +1041,12 @@ + _tested_ version known to support this so far. */ + #define MIN_LD64_NO_COAL_SECTS "236.4" + ++/* From at least version 62.1, ld64 can build symbol indirection stubs as ++ needed, and there is no need for the compiler to emit them. */ ++#define MIN_LD64_OMIT_STUBS "85.2" ++ + #ifndef LD64_VERSION +-#define LD64_VERSION "85.2" ++#define LD64_VERSION "62.1" + #else + #define DEF_LD64 LD64_VERSION + #endif +Index: gcc/config/darwin10.h +=================================================================== +--- a/src/gcc/config/darwin10.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin10.h (.../branches/gcc-9-branch) +@@ -18,17 +18,12 @@ + along with GCC; see the file COPYING3. If not see + . */ + +-/* Fix PR41260 by passing -no_compact_unwind on darwin10 and later until +- unwinder in libSystem is fixed to digest new epilog unwinding notes. ++/* Fix PR47558 by linking against libSystem ahead of libgcc_ext. */ + +- Fix PR47558 by linking against libSystem ahead of libgcc_ext. */ + #undef LINK_GCC_C_SEQUENCE_SPEC + #define LINK_GCC_C_SEQUENCE_SPEC \ +-"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \ +- %{!static:%{!static-libgcc: \ ++"%{!static:%{!static-libgcc: \ + %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \ +- %{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \ +- %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } \ + %{!nostdlib:%:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef.o)} \ + %G %{!nolibc:%L}" + +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/arm/arm.c (.../branches/gcc-9-branch) +@@ -19670,6 +19670,35 @@ + return save_reg_mask; + } + ++/* Return a mask for the call-clobbered low registers that are unused ++ at the end of the prologue. */ ++static unsigned long ++thumb1_prologue_unused_call_clobbered_lo_regs (void) ++{ ++ unsigned long mask = 0; ++ ++ for (int reg = 0; reg <= LAST_LO_REGNUM; reg++) ++ if (!callee_saved_reg_p (reg) ++ && !REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), ++ reg)) ++ mask |= 1 << reg; ++ return mask; ++} ++ ++/* Similarly for the start of the epilogue. */ ++static unsigned long ++thumb1_epilogue_unused_call_clobbered_lo_regs (void) ++{ ++ unsigned long mask = 0; ++ ++ for (int reg = 0; reg <= LAST_LO_REGNUM; reg++) ++ if (!callee_saved_reg_p (reg) ++ && !REGNO_REG_SET_P (df_get_live_in (EXIT_BLOCK_PTR_FOR_FN (cfun)), ++ reg)) ++ mask |= 1 << reg; ++ return mask; ++} ++ + /* Compute a bit mask of which core registers need to be + saved on the stack for the current function. */ + static unsigned long +@@ -19701,10 +19730,19 @@ + if (mask & 0xff || thumb_force_lr_save ()) + mask |= (1 << LR_REGNUM); + +- /* Make sure we have a low work register if we need one. +- We will need one if we are going to push a high register, +- but we are not currently intending to push a low register. */ ++ bool call_clobbered_scratch ++ = (thumb1_prologue_unused_call_clobbered_lo_regs () ++ && thumb1_epilogue_unused_call_clobbered_lo_regs ()); ++ ++ /* Make sure we have a low work register if we need one. We will ++ need one if we are going to push a high register, but we are not ++ currently intending to push a low register. However if both the ++ prologue and epilogue have a spare call-clobbered low register, ++ then we won't need to find an additional work register. It does ++ not need to be the same register in the prologue and ++ epilogue. */ + if ((mask & 0xff) == 0 ++ && !call_clobbered_scratch + && ((mask & 0x0f00) || TARGET_BACKTRACE)) + { + /* Use thumb_find_work_register to choose which register +@@ -24930,12 +24968,7 @@ + unsigned long mask = live_regs_mask & 0xff; + int next_hi_reg; + +- /* The available low registers depend on the size of the value we are +- returning. */ +- if (size <= 12) +- mask |= 1 << 3; +- if (size <= 8) +- mask |= 1 << 2; ++ mask |= thumb1_epilogue_unused_call_clobbered_lo_regs (); + + if (mask == 0) + /* Oh dear! We have no low registers into which we can pop +@@ -24943,7 +24976,7 @@ + internal_error + ("no low registers available for popping high registers"); + +- for (next_hi_reg = 8; next_hi_reg < 13; next_hi_reg++) ++ for (next_hi_reg = 12; next_hi_reg > LAST_LO_REGNUM; next_hi_reg--) + if (live_regs_mask & (1 << next_hi_reg)) + break; + +@@ -24951,7 +24984,7 @@ + { + /* Find lo register(s) into which the high register(s) can + be popped. */ +- for (regno = 0; regno <= LAST_LO_REGNUM; regno++) ++ for (regno = LAST_LO_REGNUM; regno >= 0; regno--) + { + if (mask & (1 << regno)) + high_regs_pushed--; +@@ -24959,13 +24992,14 @@ + break; + } + +- mask &= (2 << regno) - 1; /* A noop if regno == 8 */ ++ if (high_regs_pushed == 0 && regno >= 0) ++ mask &= ~((1 << regno) - 1); + + /* Pop the values into the low register(s). */ + thumb_pop (asm_out_file, mask); + + /* Move the value(s) into the high registers. */ +- for (regno = 0; regno <= LAST_LO_REGNUM; regno++) ++ for (regno = LAST_LO_REGNUM; regno >= 0; regno--) + { + if (mask & (1 << regno)) + { +@@ -24972,7 +25006,8 @@ + asm_fprintf (asm_out_file, "\tmov\t%r, %r\n", next_hi_reg, + regno); + +- for (next_hi_reg++; next_hi_reg < 13; next_hi_reg++) ++ for (next_hi_reg--; next_hi_reg > LAST_LO_REGNUM; ++ next_hi_reg--) + if (live_regs_mask & (1 << next_hi_reg)) + break; + } +@@ -25354,10 +25389,20 @@ + break; + + /* Here we need to mask out registers used for passing arguments +- even if they can be pushed. This is to avoid using them to stash the high +- registers. Such kind of stash may clobber the use of arguments. */ ++ even if they can be pushed. This is to avoid using them to ++ stash the high registers. Such kind of stash may clobber the ++ use of arguments. */ + pushable_regs = l_mask & (~arg_regs_mask); +- if (lr_needs_saving) ++ pushable_regs |= thumb1_prologue_unused_call_clobbered_lo_regs (); ++ ++ /* Normally, LR can be used as a scratch register once it has been ++ saved; but if the function examines its own return address then ++ the value is still live and we need to avoid using it. */ ++ bool return_addr_live ++ = REGNO_REG_SET_P (df_get_live_out (ENTRY_BLOCK_PTR_FOR_FN (cfun)), ++ LR_REGNUM); ++ ++ if (lr_needs_saving || return_addr_live) + pushable_regs &= ~(1 << LR_REGNUM); + + if (pushable_regs == 0) +@@ -25398,6 +25443,11 @@ + push_mask |= 1 << LR_REGNUM; + real_regs_mask |= 1 << LR_REGNUM; + lr_needs_saving = false; ++ /* If the return address is not live at this point, we ++ can add LR to the list of registers that we can use ++ for pushes. */ ++ if (!return_addr_live) ++ pushable_regs |= 1 << LR_REGNUM; + } + + insn = thumb1_emit_multi_reg_push (push_mask, real_regs_mask); +Index: gcc/config/arm/t-multilib +=================================================================== +--- a/src/gcc/config/arm/t-multilib (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/arm/t-multilib (.../branches/gcc-9-branch) +@@ -24,6 +24,8 @@ + # values during the configure step. We enforce this during the + # top-level configury. + ++s-mlib: $(srcdir)/config/arm/t-multilib $(srcdir)/config/arm/t-aprofile $(srcdir)/config/arm/t-rmprofile ++ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + MULTILIB_EXCEPTIONS = +@@ -63,6 +65,8 @@ + v7_a_arch_variants := $(call all_feat_combs, mp sec) + v7_a_nosimd_variants := +fp +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +vfpv4-d16 +vfpv4 + v7_a_simd_variants := +simd +neon-fp16 +neon-vfpv4 ++v7_r_sp_variants := +fp.sp +fp.sp+idiv +vfpv3xd-fp16 +vfpv3xd-fp16+idiv ++v7_r_dp_variants := +fp +fp+idiv +vfpv3-d16-fp16 +vfpv3-d16-fp16+idiv + v7ve_nosimd_variants := +vfpv3-d16 +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +fp +vfpv4 + v7ve_vfpv3_simd_variants := +neon +neon-fp16 + v7ve_vfpv4_simd_variants := +simd +@@ -86,8 +90,8 @@ + MULTILIB_OPTIONS += marm/mthumb + MULTILIB_DIRNAMES += arm thumb + +-MULTILIB_OPTIONS += march=armv5te+fp/march=armv7/march=armv7+fp/$(MULTI_ARCH_OPTS_A)$(SEP)$(MULTI_ARCH_OPTS_RM) +-MULTILIB_DIRNAMES += v5te v7 v7+fp $(MULTI_ARCH_DIRS_A) $(MULTI_ARCH_DIRS_RM) ++MULTILIB_OPTIONS += march=armv5te+fp/march=armv7/march=armv7+fp/march=armv7-r+fp.sp/$(MULTI_ARCH_OPTS_A)$(SEP)$(MULTI_ARCH_OPTS_RM) ++MULTILIB_DIRNAMES += v5te v7 v7+fp v7-r+fp.sp $(MULTI_ARCH_DIRS_A) $(MULTI_ARCH_DIRS_RM) + + MULTILIB_OPTIONS += mfloat-abi=soft/mfloat-abi=softfp/mfloat-abi=hard + MULTILIB_DIRNAMES += nofp softfp hard +@@ -100,15 +104,23 @@ + MULTILIB_REQUIRED += mthumb/march=armv7+fp/mfloat-abi=softfp + MULTILIB_REQUIRED += mthumb/march=armv7+fp/mfloat-abi=hard + +-# Map v7-r down onto common v7 code. ++MULTILIB_REQUIRED += mthumb/march=armv7-r+fp.sp/mfloat-abi=softfp ++MULTILIB_REQUIRED += mthumb/march=armv7-r+fp.sp/mfloat-abi=hard ++ ++# Map v7-r with double precision down onto common v7 code. + MULTILIB_MATCHES += march?armv7=march?armv7-r + MULTILIB_MATCHES += march?armv7=march?armv7-r+idiv +-MULTILIB_MATCHES += march?armv7+fp=march?armv7-r+fp +-MULTILIB_MATCHES += march?armv7+fp=march?armv7-r+fp+idiv ++MULTILIB_MATCHES += $(foreach ARCH, $(v7_r_dp_variants), \ ++ march?armv7+fp=march?armv7-r$(ARCH)) + ++# Map v7-r single precision variants to v7-r with single precision. ++MULTILIB_MATCHES += $(foreach ARCH, \ ++ $(filter-out +fp.sp, $(v7_r_sp_variants)), \ ++ march?armv7-r+fp.sp=march?armv7-r$(ARCH)) ++ + MULTILIB_MATCHES += $(foreach ARCH, $(all_early_arch), \ + march?armv5te+fp=march?$(ARCH)+fp) +-# Map v8-r down onto common v7 code. ++# Map v8-r down onto common v7 code or v7-r sp. + MULTILIB_MATCHES += march?armv7=march?armv8-r + MULTILIB_MATCHES += $(foreach ARCH, $(v8_r_nosimd_variants), \ + march?armv7=march?armv8-r$(ARCH)) +@@ -115,8 +127,9 @@ + MULTILIB_MATCHES += $(foreach ARCH,+simd +crypto, \ + march?armv7+fp=march?armv8-r$(ARCH) \ + march?armv7+fp=march?armv8-r+crc$(ARCH)) ++MULTILIB_MATCHES += march?armv7-r+fp.sp=march?armv8-r+fp.sp ++MULTILIB_MATCHES += march?armv7-r+fp.sp=march?armv8-r+crc+fp.sp + +- + ifeq (,$(HAS_APROFILE)) + # Map all v7-a + MULTILIB_MATCHES += march?armv7=march?armv7-a +@@ -177,7 +190,7 @@ + MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.soft=marm/march.armv7/mfloat-abi.soft + + MULTILIB_REUSE += $(foreach ABI, hard softfp, \ +- $(foreach ARCH, armv7+fp, \ ++ $(foreach ARCH, armv7+fp armv7-r+fp\.sp, \ + mthumb/march.$(ARCH)/mfloat-abi.$(ABI)=marm/march.$(ARCH)/mfloat-abi.$(ABI))) + + # Softfp but no FP, use the soft-float libraries. +Index: gcc/config/arm/arm_acle.h +=================================================================== +--- a/src/gcc/config/arm/arm_acle.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/arm/arm_acle.h (.../branches/gcc-9-branch) +@@ -174,8 +174,12 @@ + #endif /* (!__thumb__ || __thumb2__) && __ARM_ARCH >= 4. */ + + #pragma GCC push_options +-#if __ARM_ARCH >= 8 ++#ifdef __ARM_FEATURE_CRC32 ++#ifdef __ARM_FP ++#pragma GCC target ("arch=armv8-a+crc+simd") ++#else + #pragma GCC target ("arch=armv8-a+crc") ++#endif + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) + __crc32b (uint32_t __a, uint8_t __b) +@@ -235,7 +239,7 @@ + } + #endif + +-#endif /* __ARM_ARCH >= 8. */ ++#endif /* __ARM_FEATURE_CRC32 */ + #pragma GCC pop_options + + #ifdef __cplusplus +Index: gcc/config/arm/arm.opt +=================================================================== +--- a/src/gcc/config/arm/arm.opt (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/arm/arm.opt (.../branches/gcc-9-branch) +@@ -82,7 +82,7 @@ + Target Report Mask(APCS_STACK) Undocumented + + march= +-Target RejectNegative ToLower Joined Var(arm_arch_string) ++Target RejectNegative Negative(march=) ToLower Joined Var(arm_arch_string) + Specify the name of the target architecture. + + ; Other arm_arch values are loaded from arm-tables.opt +@@ -107,7 +107,7 @@ + Thumb: Assume function pointers may go to non-Thumb aware code. + + mcpu= +-Target RejectNegative ToLower Joined Var(arm_cpu_string) ++Target RejectNegative Negative(mcpu=) ToLower Joined Var(arm_cpu_string) + Specify the name of the target CPU. + + mfloat-abi= +@@ -232,7 +232,7 @@ + Thumb: Generate (leaf) stack frames even if not needed. + + mtune= +-Target RejectNegative ToLower Joined Var(arm_tune_string) ++Target RejectNegative Negative(mtune=) ToLower Joined Var(arm_tune_string) + Tune code for the given processor. + + mprint-tune-info +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/arm/arm.md (.../branches/gcc-9-branch) +@@ -4483,62 +4483,78 @@ + ; ARMv6+ unaligned load/store instructions (used for packed structure accesses). + + (define_insn "unaligned_loadsi" +- [(set (match_operand:SI 0 "s_register_operand" "=l,r") +- (unspec:SI [(match_operand:SI 1 "memory_operand" "Uw,m")] ++ [(set (match_operand:SI 0 "s_register_operand" "=l,l,r") ++ (unspec:SI [(match_operand:SI 1 "memory_operand" "m,Uw,m")] + UNSPEC_UNALIGNED_LOAD))] + "unaligned_access" +- "ldr%?\t%0, %1\t@ unaligned" +- [(set_attr "arch" "t2,any") +- (set_attr "length" "2,4") +- (set_attr "predicable" "yes") +- (set_attr "predicable_short_it" "yes,no") ++ "@ ++ ldr\t%0, %1\t@ unaligned ++ ldr%?\t%0, %1\t@ unaligned ++ ldr%?\t%0, %1\t@ unaligned" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "predicable" "no,yes,yes") ++ (set_attr "predicable_short_it" "no,yes,no") + (set_attr "type" "load_4")]) + ++;; The 16-bit Thumb1 variant of ldrsh requires two registers in the ++;; address (there's no immediate format). That's tricky to support ++;; here and we don't really need this pattern for that case, so only ++;; enable for 32-bit ISAs. + (define_insn "unaligned_loadhis" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (sign_extend:SI + (unspec:HI [(match_operand:HI 1 "memory_operand" "Uh")] + UNSPEC_UNALIGNED_LOAD)))] +- "unaligned_access" ++ "unaligned_access && TARGET_32BIT" + "ldrsh%?\t%0, %1\t@ unaligned" + [(set_attr "predicable" "yes") + (set_attr "type" "load_byte")]) + + (define_insn "unaligned_loadhiu" +- [(set (match_operand:SI 0 "s_register_operand" "=l,r") ++ [(set (match_operand:SI 0 "s_register_operand" "=l,l,r") + (zero_extend:SI +- (unspec:HI [(match_operand:HI 1 "memory_operand" "Uw,m")] ++ (unspec:HI [(match_operand:HI 1 "memory_operand" "m,Uw,m")] + UNSPEC_UNALIGNED_LOAD)))] + "unaligned_access" +- "ldrh%?\t%0, %1\t@ unaligned" +- [(set_attr "arch" "t2,any") +- (set_attr "length" "2,4") +- (set_attr "predicable" "yes") +- (set_attr "predicable_short_it" "yes,no") ++ "@ ++ ldrh\t%0, %1\t@ unaligned ++ ldrh%?\t%0, %1\t@ unaligned ++ ldrh%?\t%0, %1\t@ unaligned" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "predicable" "no,yes,yes") ++ (set_attr "predicable_short_it" "no,yes,no") + (set_attr "type" "load_byte")]) + + (define_insn "unaligned_storesi" +- [(set (match_operand:SI 0 "memory_operand" "=Uw,m") +- (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,r")] ++ [(set (match_operand:SI 0 "memory_operand" "=m,Uw,m") ++ (unspec:SI [(match_operand:SI 1 "s_register_operand" "l,l,r")] + UNSPEC_UNALIGNED_STORE))] + "unaligned_access" +- "str%?\t%1, %0\t@ unaligned" +- [(set_attr "arch" "t2,any") +- (set_attr "length" "2,4") +- (set_attr "predicable" "yes") +- (set_attr "predicable_short_it" "yes,no") ++ "@ ++ str\t%1, %0\t@ unaligned ++ str%?\t%1, %0\t@ unaligned ++ str%?\t%1, %0\t@ unaligned" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "predicable" "no,yes,yes") ++ (set_attr "predicable_short_it" "no,yes,no") + (set_attr "type" "store_4")]) + + (define_insn "unaligned_storehi" +- [(set (match_operand:HI 0 "memory_operand" "=Uw,m") +- (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,r")] ++ [(set (match_operand:HI 0 "memory_operand" "=m,Uw,m") ++ (unspec:HI [(match_operand:HI 1 "s_register_operand" "l,l,r")] + UNSPEC_UNALIGNED_STORE))] + "unaligned_access" +- "strh%?\t%1, %0\t@ unaligned" +- [(set_attr "arch" "t2,any") +- (set_attr "length" "2,4") +- (set_attr "predicable" "yes") +- (set_attr "predicable_short_it" "yes,no") ++ "@ ++ strh\t%1, %0\t@ unaligned ++ strh%?\t%1, %0\t@ unaligned ++ strh%?\t%1, %0\t@ unaligned" ++ [(set_attr "arch" "t1,t2,32") ++ (set_attr "length" "2,2,4") ++ (set_attr "predicable" "no,yes,yes") ++ (set_attr "predicable_short_it" "no,yes,no") + (set_attr "type" "store_4")]) + + +Index: gcc/config/darwin-driver.c +=================================================================== +--- a/src/gcc/config/darwin-driver.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin-driver.c (.../branches/gcc-9-branch) +@@ -210,6 +210,28 @@ + return new_flag; + } + ++/* See if we can find the sysroot from the SDKROOT environment variable. */ ++ ++static const char * ++maybe_get_sysroot_from_sdkroot () ++{ ++ const char *maybe_sysroot = getenv ("SDKROOT"); ++ ++ /* We'll use the same rules as the clang driver, for compatibility. ++ 1) The path must be absolute ++ 2) Ignore "/", that is the default anyway and we do not want the ++ sysroot semantics to be applied to it. ++ 3) It must exist (actually, we'll check it's readable too). */ ++ ++ if (maybe_sysroot == NULL ++ || *maybe_sysroot != '/' ++ || strlen (maybe_sysroot) == 1 ++ || access (maybe_sysroot, R_OK) == -1) ++ return NULL; ++ ++ return xstrndup (maybe_sysroot, strlen (maybe_sysroot)); ++} ++ + /* Translate -filelist and -framework options in *DECODED_OPTIONS + (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are + considered to be linker inputs in the case that no other inputs are +@@ -234,6 +256,7 @@ + bool appendM64 = false; + const char *vers_string = NULL; + bool seen_version_min = false; ++ bool seen_sysroot_p = false; + + for (i = 1; i < *decoded_options_count; i++) + { +@@ -314,6 +337,11 @@ + --*decoded_options_count; + break; + ++ case OPT__sysroot_: ++ case OPT_isysroot: ++ seen_sysroot_p = true; ++ break; ++ + default: + break; + } +@@ -375,6 +403,22 @@ + &(*decoded_options)[*decoded_options_count - 1]); + } + ++ if (! seen_sysroot_p) ++ { ++ /* We will pick up an SDKROOT if we didn't specify a sysroot and treat ++ it as overriding any configure-time --with-sysroot. */ ++ const char *sdkroot = maybe_get_sysroot_from_sdkroot (); ++ if (sdkroot) ++ { ++ ++*decoded_options_count; ++ *decoded_options = XRESIZEVEC (struct cl_decoded_option, ++ *decoded_options, ++ *decoded_options_count); ++ generate_option (OPT__sysroot_, sdkroot, 1, CL_DRIVER, ++ &(*decoded_options)[*decoded_options_count - 1]); ++ } ++ } ++ + /* We will need to know the OS X version we're trying to build for here + so that we can figure out the mechanism and source for the sysroot to + be used. */ +Index: gcc/config/pa/pa.c +=================================================================== +--- a/src/gcc/config/pa/pa.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/pa/pa.c (.../branches/gcc-9-branch) +@@ -7856,7 +7856,7 @@ + + /* 64-bit plabel sequence. */ + else if (TARGET_64BIT && !local_call) +- length += sibcall ? 28 : 24; ++ length += 24; + + /* non-pic long absolute branch sequence. */ + else if ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic) +@@ -7928,12 +7928,9 @@ + xoperands[0] = pa_get_deferred_plabel (call_dest); + xoperands[1] = gen_label_rtx (); + +- /* If this isn't a sibcall, we put the load of %r27 into the +- delay slot. We can't do this in a sibcall as we don't +- have a second call-clobbered scratch register available. +- We don't need to do anything when generating fast indirect +- calls. */ +- if (seq_length != 0 && !sibcall) ++ /* Put the load of %r27 into the delay slot. We don't need to ++ do anything when generating fast indirect calls. */ ++ if (seq_length != 0) + { + final_scan_insn (NEXT_INSN (insn), asm_out_file, + optimize, 0, NULL); +@@ -7940,26 +7937,15 @@ + + /* Now delete the delay insn. */ + SET_INSN_DELETED (NEXT_INSN (insn)); +- seq_length = 0; + } + + output_asm_insn ("addil LT'%0,%%r27", xoperands); + output_asm_insn ("ldd RT'%0(%%r1),%%r1", xoperands); + output_asm_insn ("ldd 0(%%r1),%%r1", xoperands); +- +- if (sibcall) +- { +- output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); +- output_asm_insn ("ldd 16(%%r1),%%r1", xoperands); +- output_asm_insn ("bve (%%r1)", xoperands); +- } +- else +- { +- output_asm_insn ("ldd 16(%%r1),%%r2", xoperands); +- output_asm_insn ("bve,l (%%r2),%%r2", xoperands); +- output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); +- seq_length = 1; +- } ++ output_asm_insn ("ldd 16(%%r1),%%r2", xoperands); ++ output_asm_insn ("bve,l (%%r2),%%r2", xoperands); ++ output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); ++ seq_length = 1; + } + else + { +@@ -8052,20 +8038,22 @@ + { + output_asm_insn ("addil LT'%0,%%r19", xoperands); + output_asm_insn ("ldw RT'%0(%%r1),%%r1", xoperands); +- output_asm_insn ("ldw 0(%%r1),%%r1", xoperands); ++ output_asm_insn ("ldw 0(%%r1),%%r22", xoperands); + } + else + { + output_asm_insn ("addil LR'%0-$global$,%%r27", + xoperands); +- output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r1", ++ output_asm_insn ("ldw RR'%0-$global$(%%r1),%%r22", + xoperands); + } + +- output_asm_insn ("bb,>=,n %%r1,30,.+16", xoperands); +- output_asm_insn ("depi 0,31,2,%%r1", xoperands); +- output_asm_insn ("ldw 4(%%sr0,%%r1),%%r19", xoperands); +- output_asm_insn ("ldw 0(%%sr0,%%r1),%%r1", xoperands); ++ output_asm_insn ("bb,>=,n %%r22,30,.+16", xoperands); ++ output_asm_insn ("depi 0,31,2,%%r22", xoperands); ++ /* Should this be an ordered load to ensure the target ++ address is loaded before the global pointer? */ ++ output_asm_insn ("ldw 0(%%r22),%%r1", xoperands); ++ output_asm_insn ("ldw 4(%%r22),%%r19", xoperands); + + if (!sibcall && !TARGET_PA_20) + { +@@ -8158,10 +8146,6 @@ + if (TARGET_PORTABLE_RUNTIME) + return 16; + +- /* Inline version of $$dyncall. */ +- if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size) +- return 20; +- + if (!TARGET_LONG_CALLS + && ((TARGET_PA_20 && !TARGET_SOM && distance < 7600000) + || distance < MAX_PCREL17F_OFFSET)) +@@ -8171,13 +8155,16 @@ + if (!flag_pic) + return 12; + +- /* Inline version of $$dyncall. */ +- if (TARGET_NO_SPACE_REGS || TARGET_PA_20) +- return 20; +- ++ /* Inline versions of $$dyncall. */ + if (!optimize_size) +- return 36; ++ { ++ if (TARGET_NO_SPACE_REGS) ++ return 28; + ++ if (TARGET_PA_20) ++ return 32; ++ } ++ + /* Long PIC pc-relative call. */ + return 20; + } +@@ -8214,22 +8201,6 @@ + return "blr %%r0,%%r2\n\tbv,n %%r0(%%r31)"; + } + +- /* Maybe emit a fast inline version of $$dyncall. */ +- if ((TARGET_NO_SPACE_REGS || TARGET_PA_20) && !optimize_size) +- { +- output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t" +- "ldw 2(%%r22),%%r19\n\t" +- "ldw -2(%%r22),%%r22", xoperands); +- pa_output_arg_descriptor (insn); +- if (TARGET_NO_SPACE_REGS) +- { +- if (TARGET_PA_20) +- return "bve,l,n (%%r22),%%r2\n\tnop"; +- return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2"; +- } +- return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)"; +- } +- + /* Now the normal case -- we can reach $$dyncall directly or + we're sure that we can get there via a long-branch stub. + +@@ -8258,35 +8229,40 @@ + return "ble R'$$dyncall(%%sr4,%%r2)\n\tcopy %%r31,%%r2"; + } + +- /* Maybe emit a fast inline version of $$dyncall. The long PIC +- pc-relative call sequence is five instructions. The inline PA 2.0 +- version of $$dyncall is also five instructions. The PA 1.X versions +- are longer but still an overall win. */ +- if (TARGET_NO_SPACE_REGS || TARGET_PA_20 || !optimize_size) ++ /* The long PIC pc-relative call sequence is five instructions. So, ++ let's use an inline version of $$dyncall when the calling sequence ++ has a roughly similar number of instructions and we are not optimizing ++ for size. We need two instructions to load the return pointer plus ++ the $$dyncall implementation. */ ++ if (!optimize_size) + { +- output_asm_insn ("bb,>=,n %%r22,30,.+12\n\t" +- "ldw 2(%%r22),%%r19\n\t" +- "ldw -2(%%r22),%%r22", xoperands); + if (TARGET_NO_SPACE_REGS) + { + pa_output_arg_descriptor (insn); +- if (TARGET_PA_20) +- return "bve,l,n (%%r22),%%r2\n\tnop"; +- return "ble 0(%%sr4,%%r22)\n\tcopy %%r31,%%r2"; ++ output_asm_insn ("bl .+8,%%r2\n\t" ++ "ldo 20(%%r2),%%r2\n\t" ++ "extru,<> %%r22,30,1,%%r0\n\t" ++ "bv,n %%r0(%%r22)\n\t" ++ "ldw -2(%%r22),%%r21\n\t" ++ "bv %%r0(%%r21)\n\t" ++ "ldw 2(%%r22),%%r19", xoperands); ++ return ""; + } + if (TARGET_PA_20) + { + pa_output_arg_descriptor (insn); +- return "bve,l (%%r22),%%r2\n\tstw %%r2,-24(%%sp)"; ++ output_asm_insn ("bl .+8,%%r2\n\t" ++ "ldo 24(%%r2),%%r2\n\t" ++ "stw %%r2,-24(%%sp)\n\t" ++ "extru,<> %r22,30,1,%%r0\n\t" ++ "bve,n (%%r22)\n\t" ++ "ldw -2(%%r22),%%r21\n\t" ++ "bve (%%r21)\n\t" ++ "ldw 2(%%r22),%%r19", xoperands); ++ return ""; + } +- output_asm_insn ("bl .+8,%%r2\n\t" +- "ldo 16(%%r2),%%r2\n\t" +- "ldsid (%%r22),%%r1\n\t" +- "mtsp %%r1,%%sr0", xoperands); +- pa_output_arg_descriptor (insn); +- return "be 0(%%sr0,%%r22)\n\tstw %%r2,-24(%%sp)"; + } +- ++ + /* We need a long PIC call to $$dyncall. */ + xoperands[0] = gen_rtx_SYMBOL_REF (Pmode, "$$dyncall"); + xoperands[1] = gen_rtx_REG (Pmode, 2); +@@ -10048,7 +10024,7 @@ + + /* Length in units of the trampoline instruction code. */ + +-#define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 32 : 40)) ++#define TRAMPOLINE_CODE_SIZE (TARGET_64BIT ? 24 : (TARGET_PA_20 ? 36 : 48)) + + + /* Output assembler code for a block containing the constant parts +@@ -10069,27 +10045,46 @@ + { + if (!TARGET_64BIT) + { +- fputs ("\tldw 36(%r22),%r21\n", f); +- fputs ("\tbb,>=,n %r21,30,.+16\n", f); +- if (ASSEMBLER_DIALECT == 0) +- fputs ("\tdepi 0,31,2,%r21\n", f); +- else +- fputs ("\tdepwi 0,31,2,%r21\n", f); +- fputs ("\tldw 4(%r21),%r19\n", f); +- fputs ("\tldw 0(%r21),%r21\n", f); + if (TARGET_PA_20) + { +- fputs ("\tbve (%r21)\n", f); +- fputs ("\tldw 40(%r22),%r29\n", f); ++ fputs ("\tmfia %r20\n", f); ++ fputs ("\tldw 48(%r20),%r22\n", f); ++ fputs ("\tcopy %r22,%r21\n", f); ++ fputs ("\tbb,>=,n %r22,30,.+16\n", f); ++ fputs ("\tdepwi 0,31,2,%r22\n", f); ++ fputs ("\tldw 0(%r22),%r21\n", f); ++ fputs ("\tldw 4(%r22),%r19\n", f); ++ fputs ("\tbve (%r21)\n", f); ++ fputs ("\tldw 52(%r1),%r29\n", f); + fputs ("\t.word 0\n", f); + fputs ("\t.word 0\n", f); ++ fputs ("\t.word 0\n", f); + } + else + { ++ if (ASSEMBLER_DIALECT == 0) ++ { ++ fputs ("\tbl .+8,%r20\n", f); ++ fputs ("\tdepi 0,31,2,%r20\n", f); ++ } ++ else ++ { ++ fputs ("\tb,l .+8,%r20\n", f); ++ fputs ("\tdepwi 0,31,2,%r20\n", f); ++ } ++ fputs ("\tldw 40(%r20),%r22\n", f); ++ fputs ("\tcopy %r22,%r21\n", f); ++ fputs ("\tbb,>=,n %r22,30,.+16\n", f); ++ if (ASSEMBLER_DIALECT == 0) ++ fputs ("\tdepi 0,31,2,%r22\n", f); ++ else ++ fputs ("\tdepwi 0,31,2,%r22\n", f); ++ fputs ("\tldw 0(%r22),%r21\n", f); ++ fputs ("\tldw 4(%r22),%r19\n", f); + fputs ("\tldsid (%r21),%r1\n", f); + fputs ("\tmtsp %r1,%sr0\n", f); +- fputs ("\tbe 0(%sr0,%r21)\n", f); +- fputs ("\tldw 40(%r22),%r29\n", f); ++ fputs ("\tbe 0(%sr0,%r21)\n", f); ++ fputs ("\tldw 44(%r20),%r29\n", f); + } + fputs ("\t.word 0\n", f); + fputs ("\t.word 0\n", f); +@@ -10103,11 +10098,11 @@ + fputs ("\t.dword 0\n", f); + fputs ("\t.dword 0\n", f); + fputs ("\tmfia %r31\n", f); +- fputs ("\tldd 24(%r31),%r1\n", f); +- fputs ("\tldd 24(%r1),%r27\n", f); +- fputs ("\tldd 16(%r1),%r1\n", f); ++ fputs ("\tldd 24(%r31),%r27\n", f); ++ fputs ("\tldd 32(%r31),%r31\n", f); ++ fputs ("\tldd 16(%r27),%r1\n", f); + fputs ("\tbve (%r1)\n", f); +- fputs ("\tldd 32(%r31),%r31\n", f); ++ fputs ("\tldd 24(%r27),%r27\n", f); + fputs ("\t.dword 0 ; fptr\n", f); + fputs ("\t.dword 0 ; static link\n", f); + } +@@ -10117,10 +10112,10 @@ + FNADDR is an RTX for the address of the function's pure code. + CXT is an RTX for the static chain value for the function. + +- Move the function address to the trampoline template at offset 36. +- Move the static chain value to trampoline template at offset 40. +- Move the trampoline address to trampoline template at offset 44. +- Move r19 to trampoline template at offset 48. The latter two ++ Move the function address to the trampoline template at offset 48. ++ Move the static chain value to trampoline template at offset 52. ++ Move the trampoline address to trampoline template at offset 56. ++ Move r19 to trampoline template at offset 60. The latter two + words create a plabel for the indirect call to the trampoline. + + A similar sequence is used for the 64-bit port but the plabel is +@@ -10146,15 +10141,15 @@ + + if (!TARGET_64BIT) + { +- tmp = adjust_address (m_tramp, Pmode, 36); ++ tmp = adjust_address (m_tramp, Pmode, 48); + emit_move_insn (tmp, fnaddr); +- tmp = adjust_address (m_tramp, Pmode, 40); ++ tmp = adjust_address (m_tramp, Pmode, 52); + emit_move_insn (tmp, chain_value); + + /* Create a fat pointer for the trampoline. */ +- tmp = adjust_address (m_tramp, Pmode, 44); ++ tmp = adjust_address (m_tramp, Pmode, 56); + emit_move_insn (tmp, r_tramp); +- tmp = adjust_address (m_tramp, Pmode, 48); ++ tmp = adjust_address (m_tramp, Pmode, 60); + emit_move_insn (tmp, gen_rtx_REG (Pmode, 19)); + + /* fdc and fic only use registers for the address to flush, +@@ -10206,7 +10201,7 @@ + } + + #ifdef HAVE_ENABLE_EXECUTE_STACK +-  emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), ++ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"), + LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode); + #endif + } +@@ -10213,13 +10208,13 @@ + + /* Perform any machine-specific adjustment in the address of the trampoline. + ADDR contains the address that was passed to pa_trampoline_init. +- Adjust the trampoline address to point to the plabel at offset 44. */ ++ Adjust the trampoline address to point to the plabel at offset 56. */ + + static rtx + pa_trampoline_adjust_address (rtx addr) + { + if (!TARGET_64BIT) +- addr = memory_address (Pmode, plus_constant (Pmode, addr, 46)); ++ addr = memory_address (Pmode, plus_constant (Pmode, addr, 58)); + return addr; + } + +Index: gcc/config/pa/pa.h +=================================================================== +--- a/src/gcc/config/pa/pa.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/pa/pa.h (.../branches/gcc-9-branch) +@@ -689,7 +689,7 @@ + + /* Length in units of the trampoline for entering a nested function. */ + +-#define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 52) ++#define TRAMPOLINE_SIZE (TARGET_64BIT ? 72 : 64) + + /* Alignment required by the trampoline. */ + +@@ -1293,13 +1293,12 @@ + #endif + + /* The maximum offset in bytes for a PA 1.X pc-relative call to the +- head of the preceding stub table. The selected offsets have been +- chosen so that approximately one call stub is allocated for every +- 86.7 instructions. A long branch stub is two instructions when +- not generating PIC code. For HP-UX and ELF targets, PIC stubs are +- seven and four instructions, respectively. */ +-#define MAX_PCREL17F_OFFSET \ +- (flag_pic ? (TARGET_HPUX ? 198164 : 221312) : 240000) ++ head of the preceding stub table. A long branch stub is two or three ++ instructions for non-PIC and PIC, respectively. Import stubs are ++ seven and five instructions for HP-UX and ELF targets, respectively. ++ The default stub group size for ELF targets is 217856 bytes. ++ FIXME: We need an option to set the maximum offset. */ ++#define MAX_PCREL17F_OFFSET (TARGET_HPUX ? 198164 : 217856) + + #define NEED_INDICATE_EXEC_STACK 0 + +Index: gcc/config/darwin9.h +=================================================================== +--- a/src/gcc/config/darwin9.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/darwin9.h (.../branches/gcc-9-branch) +@@ -35,12 +35,6 @@ + /* Tell collect2 to run dsymutil for us as necessary. */ + #define COLLECT_RUN_DSYMUTIL 1 + +-#undef DARWIN_PIE_SPEC +-#define DARWIN_PIE_SPEC \ +- "%{fpie|pie|fPIE: \ +- %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \ +- :-pie}}" +- + /* Only ask as for debug data if the debug style is stabs (since as doesn't + yet generate dwarf.) */ + +Index: gcc/config/mips/mips.md +=================================================================== +--- a/src/gcc/config/mips/mips.md (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/mips/mips.md (.../branches/gcc-9-branch) +@@ -7588,7 +7588,7 @@ + ;; __builtin_mips_get_fcsr: move the FCSR into operand 0. + (define_expand "mips_get_fcsr" + [(set (match_operand:SI 0 "register_operand") +- (unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))] ++ (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))] + "TARGET_HARD_FLOAT_ABI" + { + if (TARGET_MIPS16) +@@ -7600,7 +7600,7 @@ + + (define_insn "*mips_get_fcsr" + [(set (match_operand:SI 0 "register_operand" "=d") +- (unspec_volatile [(const_int 0)] UNSPEC_GET_FCSR))] ++ (unspec_volatile:SI [(const_int 0)] UNSPEC_GET_FCSR))] + "TARGET_HARD_FLOAT" + "cfc1\t%0,$31") + +Index: gcc/config/mips/mips.c +=================================================================== +--- a/src/gcc/config/mips/mips.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/config/mips/mips.c (.../branches/gcc-9-branch) +@@ -4849,7 +4849,7 @@ + can forward SRC for DEST. This is most useful if the next insn is a + simple store. */ + rtx_insn *insn = (rtx_insn *)insn_; +- struct mips_address_info addr; ++ struct mips_address_info addr = {}; + if (insn) + { + rtx_insn *next = next_nonnote_nondebug_insn_bb (insn); +@@ -4862,7 +4862,7 @@ + { + rtx tmp = XEXP (src, 0); + mips_classify_address (&addr, tmp, GET_MODE (tmp), true); +- if (REGNO (addr.reg) != REGNO (dest)) ++ if (addr.reg && !reg_overlap_mentioned_p (dest, addr.reg)) + validate_change (next, &SET_SRC (set), src, false); + } + else +Index: gcc/tree-vect-slp.c +=================================================================== +--- a/src/gcc/tree-vect-slp.c (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/tree-vect-slp.c (.../branches/gcc-9-branch) +@@ -129,6 +129,7 @@ + SLP_TREE_TWO_OPERATORS (node) = false; + SLP_TREE_DEF_TYPE (node) = vect_internal_def; + node->refcnt = 1; ++ node->max_nunits = 1; + + unsigned i; + FOR_EACH_VEC_ELT (scalar_stmts, i, stmt_info) +@@ -1051,15 +1052,24 @@ + dump_printf_loc (MSG_NOTE, vect_location, "re-using %sSLP tree %p\n", + *leader ? "" : "failed ", *leader); + if (*leader) +- (*leader)->refcnt++; ++ { ++ (*leader)->refcnt++; ++ vect_update_max_nunits (max_nunits, (*leader)->max_nunits); ++ } + return *leader; + } +- slp_tree res = vect_build_slp_tree_2 (vinfo, stmts, group_size, max_nunits, ++ poly_uint64 this_max_nunits = 1; ++ slp_tree res = vect_build_slp_tree_2 (vinfo, stmts, group_size, ++ &this_max_nunits, + matches, npermutes, tree_size, + max_tree_size, bst_map); +- /* Keep a reference for the bst_map use. */ + if (res) +- res->refcnt++; ++ { ++ res->max_nunits = this_max_nunits; ++ vect_update_max_nunits (max_nunits, this_max_nunits); ++ /* Keep a reference for the bst_map use. */ ++ res->refcnt++; ++ } + bst_map->put (stmts.copy (), res); + return res; + } +@@ -1463,9 +1473,10 @@ + + dump_metadata_t metadata (dump_kind, loc.get_impl_location ()); + dump_user_location_t user_loc = loc.get_user_location (); +- dump_printf_loc (metadata, user_loc, "node%s %p\n", ++ dump_printf_loc (metadata, user_loc, "node%s %p (max_nunits=%u)\n", + SLP_TREE_DEF_TYPE (node) != vect_internal_def +- ? " (external)" : "", node); ++ ? " (external)" : "", node, ++ estimated_poly_value (node->max_nunits)); + FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), i, stmt_info) + dump_printf_loc (metadata, user_loc, "\tstmt %d %G", i, stmt_info->stmt); + if (SLP_TREE_CHILDREN (node).is_empty ()) +Index: gcc/lto-streamer.h +=================================================================== +--- a/src/gcc/lto-streamer.h (.../tags/gcc_9_2_0_release) ++++ b/src/gcc/lto-streamer.h (.../branches/gcc-9-branch) +@@ -879,6 +879,7 @@ + struct lto_out_decl_state *); + void lto_output_location (struct output_block *, struct bitpack_d *, location_t); + void lto_output_init_mode_table (void); ++void lto_prepare_function_for_streaming (cgraph_node *); + + + /* In lto-cgraph.c */ +Index: libgo/mksysinfo.sh +=================================================================== +--- a/src/libgo/mksysinfo.sh (.../tags/gcc_9_2_0_release) ++++ b/src/libgo/mksysinfo.sh (.../branches/gcc-9-branch) +@@ -1127,7 +1127,7 @@ + # Prefer largefile variant if available. + # CentOS 5 does not have f_flags, so pull from f_spare. + statfs=`grep '^type _statfs64 ' gen-sysinfo.go || true` +-if test "$statfs" == ""; then ++if test "$statfs" = ""; then + statfs=`grep '^type _statfs ' gen-sysinfo.go || true` + fi + if ! echo "$statfs" | grep f_flags; then +Index: libgo/go/go/internal/gccgoimporter/parser.go +=================================================================== +--- a/src/libgo/go/go/internal/gccgoimporter/parser.go (.../tags/gcc_9_2_0_release) ++++ b/src/libgo/go/go/internal/gccgoimporter/parser.go (.../branches/gcc-9-branch) +@@ -248,7 +248,7 @@ + case *types.Named: + name = typ.Obj().Name() + default: +- p.error("anonymous field expected") ++ p.error("embedded field expected") + } + } + field = types.NewField(token.NoPos, pkg, name, typ, anon) +@@ -451,8 +451,12 @@ + } + } + +-// update sets the type map entries for the given type numbers nlist to t. +-func (p *parser) update(t types.Type, nlist []int) { ++// update sets the type map entries for the entries in nlist to t. ++// An entry in nlist can be a type number in p.typeList, ++// used to resolve named types, or it can be a *types.Pointer, ++// used to resolve pointers to named types in case they are referenced ++// by embedded fields. ++func (p *parser) update(t types.Type, nlist []interface{}) { + if len(nlist) != 0 { + if t == reserved { + p.errorf("internal error: update(%v) invoked on reserved", nlist) +@@ -462,13 +466,27 @@ + } + } + for _, n := range nlist { +- if p.typeList[n] == t { +- continue ++ switch n := n.(type) { ++ case int: ++ if p.typeList[n] == t { ++ continue ++ } ++ if p.typeList[n] != reserved { ++ p.errorf("internal error: update(%v): %d not reserved", nlist, n) ++ } ++ p.typeList[n] = t ++ case *types.Pointer: ++ if *n != (types.Pointer{}) { ++ elem := n.Elem() ++ if elem == t { ++ continue ++ } ++ p.errorf("internal error: update: pointer already set to %v, expected %v", elem, t) ++ } ++ *n = *types.NewPointer(t) ++ default: ++ p.errorf("internal error: %T on nlist", n) + } +- if p.typeList[n] != reserved { +- p.errorf("internal error: update(%v): %d not reserved", nlist, n) +- } +- p.typeList[n] = t + } + } + +@@ -475,7 +493,7 @@ + // NamedType = TypeName [ "=" ] Type { Method } . + // TypeName = ExportedName . + // Method = "func" "(" Param ")" Name ParamList ResultList [InlineBody] ";" . +-func (p *parser) parseNamedType(nlist []int) types.Type { ++func (p *parser) parseNamedType(nlist []interface{}) types.Type { + pkg, name := p.parseExportedName() + scope := pkg.Scope() + obj := scope.Lookup(name) +@@ -582,7 +600,7 @@ + } + + // ArrayOrSliceType = "[" [ int ] "]" Type . +-func (p *parser) parseArrayOrSliceType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseArrayOrSliceType(pkg *types.Package, nlist []interface{}) types.Type { + p.expect('[') + if p.tok == ']' { + p.next() +@@ -605,7 +623,7 @@ + } + + // MapType = "map" "[" Type "]" Type . +-func (p *parser) parseMapType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseMapType(pkg *types.Package, nlist []interface{}) types.Type { + p.expectKeyword("map") + + t := new(types.Map) +@@ -621,7 +639,7 @@ + } + + // ChanType = "chan" ["<-" | "-<"] Type . +-func (p *parser) parseChanType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseChanType(pkg *types.Package, nlist []interface{}) types.Type { + p.expectKeyword("chan") + + t := new(types.Chan) +@@ -648,7 +666,7 @@ + } + + // StructType = "struct" "{" { Field } "}" . +-func (p *parser) parseStructType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseStructType(pkg *types.Package, nlist []interface{}) types.Type { + p.expectKeyword("struct") + + t := new(types.Struct) +@@ -714,7 +732,7 @@ + } + + // FunctionType = ParamList ResultList . +-func (p *parser) parseFunctionType(pkg *types.Package, nlist []int) *types.Signature { ++func (p *parser) parseFunctionType(pkg *types.Package, nlist []interface{}) *types.Signature { + t := new(types.Signature) + p.update(t, nlist) + +@@ -740,7 +758,7 @@ + } + + // InterfaceType = "interface" "{" { ("?" Type | Func) ";" } "}" . +-func (p *parser) parseInterfaceType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseInterfaceType(pkg *types.Package, nlist []interface{}) types.Type { + p.expectKeyword("interface") + + t := new(types.Interface) +@@ -767,7 +785,7 @@ + } + + // PointerType = "*" ("any" | Type) . +-func (p *parser) parsePointerType(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parsePointerType(pkg *types.Package, nlist []interface{}) types.Type { + p.expect('*') + if p.tok == scanner.Ident { + p.expectKeyword("any") +@@ -779,13 +797,13 @@ + t := new(types.Pointer) + p.update(t, nlist) + +- *t = *types.NewPointer(p.parseType(pkg)) ++ *t = *types.NewPointer(p.parseType(pkg, t)) + + return t + } + + // TypeSpec = NamedType | MapType | ChanType | StructType | InterfaceType | PointerType | ArrayOrSliceType | FunctionType . +-func (p *parser) parseTypeSpec(pkg *types.Package, nlist []int) types.Type { ++func (p *parser) parseTypeSpec(pkg *types.Package, nlist []interface{}) types.Type { + switch p.tok { + case scanner.String: + return p.parseNamedType(nlist) +@@ -874,13 +892,13 @@ + // + // parseType updates the type map to t for all type numbers n. + // +-func (p *parser) parseType(pkg *types.Package, n ...int) types.Type { ++func (p *parser) parseType(pkg *types.Package, n ...interface{}) types.Type { + p.expect('<') + return p.parseTypeAfterAngle(pkg, n...) + } + + // (*parser).Type after reading the "<". +-func (p *parser) parseTypeAfterAngle(pkg *types.Package, n ...int) (t types.Type) { ++func (p *parser) parseTypeAfterAngle(pkg *types.Package, n ...interface{}) (t types.Type) { + p.expectKeyword("type") + + switch p.tok { +@@ -995,12 +1013,12 @@ + } + + for i := 1; i < int(exportedp1); i++ { +- p.parseSavedType(pkg, i, []int{}) ++ p.parseSavedType(pkg, i, nil) + } + } + + // parseSavedType parses one saved type definition. +-func (p *parser) parseSavedType(pkg *types.Package, i int, nlist []int) { ++func (p *parser) parseSavedType(pkg *types.Package, i int, nlist []interface{}) { + defer func(s *scanner.Scanner, tok rune, lit string) { + p.scanner = s + p.tok = tok +Index: libgo/go/go/internal/gccgoimporter/importer_test.go +=================================================================== +--- a/src/libgo/go/go/internal/gccgoimporter/importer_test.go (.../tags/gcc_9_2_0_release) ++++ b/src/libgo/go/go/internal/gccgoimporter/importer_test.go (.../branches/gcc-9-branch) +@@ -91,6 +91,7 @@ + {pkgpath: "v1reflect", name: "Type", want: "type Type interface{Align() int; AssignableTo(u Type) bool; Bits() int; ChanDir() ChanDir; Elem() Type; Field(i int) StructField; FieldAlign() int; FieldByIndex(index []int) StructField; FieldByName(name string) (StructField, bool); FieldByNameFunc(match func(string) bool) (StructField, bool); Implements(u Type) bool; In(i int) Type; IsVariadic() bool; Key() Type; Kind() Kind; Len() int; Method(int) Method; MethodByName(string) (Method, bool); Name() string; NumField() int; NumIn() int; NumMethod() int; NumOut() int; Out(i int) Type; PkgPath() string; Size() uintptr; String() string; common() *commonType; rawString() string; runtimeType() *runtimeType; uncommon() *uncommonType}"}, + {pkgpath: "nointerface", name: "I", want: "type I int"}, + {pkgpath: "issue29198", name: "FooServer", want: "type FooServer struct{FooServer *FooServer; user string; ctx context.Context}"}, ++ {pkgpath: "issue34182", name: "T1", want: "type T1 struct{f *T2}"}, + } + + func TestGoxImporter(t *testing.T) { +Index: libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox +=================================================================== +--- a/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox (.../tags/gcc_9_2_0_release) ++++ b/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.gox (.../branches/gcc-9-branch) +@@ -0,0 +1,13 @@ ++v3; ++package issue34182 ++pkgpath issue34182 ++init issue34182 ~go.issue34182 ++types 8 4 21 21 21 17 30 45 45 ++type 1 "T1" ++type 2 "T2" ++type 3 "T3" ++type 4 * ++type 5 struct { ? ; } ++type 6 struct { .go.issue34182.f ; } ++type 7 struct { .go.issue34182.f ; } ++checksum FF02C49BAF44B06C087ED4E573F7CC880C79C208 +Index: libgo/go/go/internal/gccgoimporter/testdata/issue34182.go +=================================================================== +--- a/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.go (.../tags/gcc_9_2_0_release) ++++ b/src/libgo/go/go/internal/gccgoimporter/testdata/issue34182.go (.../branches/gcc-9-branch) +@@ -0,0 +1,17 @@ ++// Copyright 2019 The Go Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style ++// license that can be found in the LICENSE file. ++ ++package issue34182 ++ ++type T1 struct { ++ f *T2 ++} ++ ++type T2 struct { ++ f T3 ++} ++ ++type T3 struct { ++ *T2 ++} +Index: libgfortran/intrinsics/random.c +=================================================================== +--- a/src/libgfortran/intrinsics/random.c (.../tags/gcc_9_2_0_release) ++++ b/src/libgfortran/intrinsics/random.c (.../branches/gcc-9-branch) +@@ -275,31 +275,20 @@ + } + + +-/* Super-simple LCG generator used in getosrandom () if /dev/urandom +- doesn't exist. */ ++/* Splitmix64 recommended by xorshift author for initializing. After ++ getting one uint64_t value from the OS, this is used to fill in the ++ rest of the state. */ + +-#define M 2147483647 /* 2^31 - 1 (A large prime number) */ +-#define A 16807 /* Prime root of M, passes statistical tests and produces a full cycle */ +-#define Q 127773 /* M / A (To avoid overflow on A * seed) */ +-#define R 2836 /* M % A (To avoid overflow on A * seed) */ +- +-__attribute__((unused)) static uint32_t +-lcg_parkmiller(uint32_t seed) ++static uint64_t ++splitmix64 (uint64_t x) + { +- uint32_t hi = seed / Q; +- uint32_t lo = seed % Q; +- int32_t test = A * lo - R * hi; +- if (test <= 0) +- test += M; +- return test; ++ uint64_t z = (x += 0x9e3779b97f4a7c15); ++ z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9; ++ z = (z ^ (z >> 27)) * 0x94d049bb133111eb; ++ return z ^ (z >> 31); + } + +-#undef M +-#undef A +-#undef Q +-#undef R + +- + /* Get some random bytes from the operating system in order to seed + the PRNG. */ + +@@ -315,7 +304,7 @@ + #else + #ifdef HAVE_GETENTROPY + if (getentropy (buf, buflen) == 0) +- return 0; ++ return buflen; + #endif + int flags = O_RDONLY; + #ifdef O_CLOEXEC +@@ -328,7 +317,7 @@ + close (fd); + return res; + } +- uint32_t seed = 1234567890; ++ uint64_t seed = 0x047f7684e9fc949dULL; + time_t secs; + long usecs; + if (gf_gettime (&secs, &usecs) == 0) +@@ -340,13 +329,9 @@ + pid_t pid = getpid(); + seed ^= pid; + #endif +- uint32_t* ub = buf; +- for (size_t i = 0; i < buflen / sizeof (uint32_t); i++) +- { +- ub[i] = seed; +- seed = lcg_parkmiller (seed); +- } +- return buflen; ++ size_t size = buflen < sizeof (uint64_t) ? buflen : sizeof (uint64_t); ++ memcpy (buf, &seed, size); ++ return size; + #endif /* __MINGW64_VERSION_MAJOR */ + } + +@@ -361,7 +346,13 @@ + __gthread_mutex_lock (&random_lock); + if (!master_init) + { +- getosrandom (master_state, sizeof (master_state)); ++ uint64_t os_seed; ++ getosrandom (&os_seed, sizeof (os_seed)); ++ for (uint64_t i = 0; i < sizeof (master_state) / sizeof (uint64_t); i++) ++ { ++ os_seed = splitmix64 (os_seed); ++ master_state[i] = os_seed; ++ } + njumps = 0; + master_init = true; + } +Index: libgfortran/ChangeLog +=================================================================== +--- a/src/libgfortran/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/libgfortran/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,13 @@ ++2019-08-13 Janne Blomqvist ++ ++ Partial backport from trunk ++ PR fortran/91414 ++ * intrinsics/random.c (lcg_parkmiller): Replace with splitmix64. ++ (splitmix64): New function. ++ (getosrandom): Fix return value, simplify. ++ (init_rand_state): Use getosrandom only to get 8 bytes, splitmix64 ++ to fill rest of state. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: fixincludes/ChangeLog +=================================================================== +--- a/src/fixincludes/ChangeLog (.../tags/gcc_9_2_0_release) ++++ b/src/fixincludes/ChangeLog (.../branches/gcc-9-branch) +@@ -1,3 +1,15 @@ ++2019-08-21 Iain Sandoe ++ ++ Backport from mainline. ++ 2019-08-18 C.G. Dogan ++ Iain Sandoe ++ ++ PR target/83531 ++ * inclhack.def (darwin_api_availability): New; strip leading ++ underscores from API_XXXX defines. ++ * fixincl.x: Regenerate. ++ * tests/base/os/availability.h: New file. ++ + 2019-08-12 Release Manager + + * GCC 9.2.0 released. +Index: fixincludes/tests/base/os/availability.h +=================================================================== +--- a/src/fixincludes/tests/base/os/availability.h (.../tags/gcc_9_2_0_release) ++++ b/src/fixincludes/tests/base/os/availability.h (.../branches/gcc-9-branch) +@@ -0,0 +1,18 @@ ++/* DO NOT EDIT THIS FILE. ++ ++ It has been auto-edited by fixincludes from: ++ ++ "fixinc/tests/inc/os/availability.h" ++ ++ This had to be done to correct non-standard usages in the ++ original, manufacturer supplied header file. */ ++ ++ ++ ++#if defined( DARWIN_API_AVAILABILITY_CHECK ) ++ #define API_AVAILABLE(...) ++ #define API_DEPRECATED(...) ++ #define API_DEPRECATED_WITH_REPLACEMENT(...) ++ #define API_UNAVAILABLE(...) ++ ++#endif /* DARWIN_API_AVAILABILITY_CHECK */ +Index: fixincludes/fixincl.x +=================================================================== +--- a/src/fixincludes/fixincl.x (.../tags/gcc_9_2_0_release) ++++ b/src/fixincludes/fixincl.x (.../branches/gcc-9-branch) +@@ -2,11 +2,11 @@ + * + * DO NOT EDIT THIS FILE (fixincl.x) + * +- * It has been AutoGen-ed July 7, 2019 at 11:43:37 AM by AutoGen 5.17.4 ++ * It has been AutoGen-ed August 21, 2019 at 07:47:23 PM by AutoGen 5.17.4 + * From the definitions inclhack.def + * and the template file fixincl + */ +-/* DO NOT SVN-MERGE THIS FILE, EITHER Sun Jul 7 11:43:37 BST 2019 ++/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Aug 21 19:47:23 BST 2019 + * + * You must regenerate it. Use the ./genfixes script. + * +@@ -15,7 +15,7 @@ + * certain ANSI-incompatible system header files which are fixed to work + * correctly with ANSI C and placed in a directory that GNU C will search. + * +- * This file contains 255 fixup descriptions. ++ * This file contains 256 fixup descriptions. + * + * See README for more information. + * +@@ -269,6 +269,56 @@ + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * ++ * Description of Darwin_Api_Availability fix ++ */ ++tSCC zDarwin_Api_AvailabilityName[] = ++ "darwin_api_availability"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zDarwin_Api_AvailabilityList[] = ++ "os/availability.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++tSCC* apzDarwin_Api_AvailabilityMachs[] = { ++ "*-*-darwin*", ++ (const char*)NULL }; ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zDarwin_Api_AvailabilitySelect0[] = ++ " *#define __API_AVAILABLE.*\n\ ++ *#define __API_DEPRECATED.*\n\ ++ *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n\ ++ *#define __API_UNAVAILABLE.*\n"; ++ ++/* ++ * content bypass pattern - skip fix if pattern found ++ */ ++tSCC zDarwin_Api_AvailabilityBypass0[] = ++ "__IPHONE_OS_VERSION_MIN_REQUIRED"; ++ ++#define DARWIN_API_AVAILABILITY_TEST_CT 2 ++static tTestDesc aDarwin_Api_AvailabilityTests[] = { ++ { TT_NEGREP, zDarwin_Api_AvailabilityBypass0, (regex_t*)NULL }, ++ { TT_EGREP, zDarwin_Api_AvailabilitySelect0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Darwin_Api_Availability ++ */ ++static const char* apzDarwin_Api_AvailabilityPatch[] = { ++ "format", ++ " #define API_AVAILABLE(...)\n\ ++ #define API_DEPRECATED(...)\n\ ++ #define API_DEPRECATED_WITH_REPLACEMENT(...)\n\ ++ #define API_UNAVAILABLE(...)\n", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * + * Description of Aab_Fd_Zero_Asm_Posix_Types_H fix + */ + tSCC zAab_Fd_Zero_Asm_Posix_Types_HName[] = +@@ -10346,9 +10396,9 @@ + * + * List of all fixes + */ +-#define REGEX_COUNT 293 ++#define REGEX_COUNT 295 + #define MACH_LIST_SIZE_LIMIT 187 +-#define FIX_COUNT 255 ++#define FIX_COUNT 256 + + /* + * Enumerate the fixes +@@ -10357,6 +10407,7 @@ + AAB_AIX_STDIO_FIXIDX, + AAB_AIX_FCNTL_FIXIDX, + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_FIXIDX, ++ DARWIN_API_AVAILABILITY_FIXIDX, + AAB_FD_ZERO_ASM_POSIX_TYPES_H_FIXIDX, + AAB_FD_ZERO_GNU_TYPES_H_FIXIDX, + AAB_FD_ZERO_SELECTBITS_H_FIXIDX, +@@ -10627,6 +10678,11 @@ + AAB_DARWIN7_9_LONG_DOUBLE_FUNCS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, + aAab_Darwin7_9_Long_Double_FuncsTests, apzAab_Darwin7_9_Long_Double_FuncsPatch, 0 }, + ++ { zDarwin_Api_AvailabilityName, zDarwin_Api_AvailabilityList, ++ apzDarwin_Api_AvailabilityMachs, ++ DARWIN_API_AVAILABILITY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aDarwin_Api_AvailabilityTests, apzDarwin_Api_AvailabilityPatch, 0 }, ++ + { zAab_Fd_Zero_Asm_Posix_Types_HName, zAab_Fd_Zero_Asm_Posix_Types_HList, + apzAab_Fd_Zero_Asm_Posix_Types_HMachs, + AAB_FD_ZERO_ASM_POSIX_TYPES_H_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT, +Index: fixincludes/inclhack.def +=================================================================== +--- a/src/fixincludes/inclhack.def (.../tags/gcc_9_2_0_release) ++++ b/src/fixincludes/inclhack.def (.../branches/gcc-9-branch) +@@ -195,6 +195,33 @@ + }; + + /* ++ * SDKs for 10.13 and 10.14 omit the definitions for API_AVAILABLE where ++ * __attribute__((availability)) is not supported. ++ */ ++fix = { ++ hackname = darwin_api_availability; ++ mach = "*-*-darwin*"; ++ files = os/availability.h; ++ bypass = "__IPHONE_OS_VERSION_MIN_REQUIRED"; ++ select = ++ " *#define __API_AVAILABLE.*\n" ++ " *#define __API_DEPRECATED.*\n" ++ " *#define __API_DEPRECATED_WITH_REPLACEMENT.*\n" ++ " *#define __API_UNAVAILABLE.*\n"; ++ c_fix = format; ++ c_fix_arg = ++ " #define API_AVAILABLE(...)\n" ++ " #define API_DEPRECATED(...)\n" ++ " #define API_DEPRECATED_WITH_REPLACEMENT(...)\n" ++ " #define API_UNAVAILABLE(...)\n"; ++ test_text = ++ "#define __API_AVAILABLE(...)\n" ++ "#define __API_DEPRECATED(...)\n" ++ "#define __API_DEPRECATED_WITH_REPLACEMENT(...)\n" ++ "#define __API_UNAVAILABLE(...)\n"; ++}; ++ ++/* + * This fixes __FD_ZERO bug for linux 2.x.y (x <= 2 && y <= some n) + */ + fix = { diff --git a/patches/sys-auxv-header.diff b/patches/sys-auxv-header.diff new file mode 100644 index 0000000..bd7034f --- /dev/null +++ b/patches/sys-auxv-header.diff @@ -0,0 +1,40 @@ +# DP: Check for the sys/auxv.h header file. + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -1140,6 +1140,7 @@ AC_HEADER_TIOCGWINSZ + AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ + fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \ + sys/resource.h sys/param.h sys/times.h sys/stat.h \ ++ sys/auxv.h \ + direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h) + + # Check for thread headers. +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -1765,6 +1765,12 @@ + #endif + + ++/* Define to 1 if you have the header file. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_SYS_AUXV_H ++#endif ++ ++ + /* Define to 1 if you have the header file. */ + #ifndef USED_FOR_TARGET + #undef HAVE_SYS_FILE_H +--- a/src/gcc/config/rs6000/driver-rs6000.c ++++ b/src/gcc/config/rs6000/driver-rs6000.c +@@ -35,6 +35,10 @@ along with GCC; see the file COPYING3. + # include + #endif + ++#ifdef HAVE_SYS_AUXV_H ++# include ++#endif ++ + #if defined (__APPLE__) || (__FreeBSD__) + # include + # include diff --git a/patches/t-libunwind-elf-Wl-z-defs.diff b/patches/t-libunwind-elf-Wl-z-defs.diff new file mode 100644 index 0000000..082d4d5 --- /dev/null +++ b/patches/t-libunwind-elf-Wl-z-defs.diff @@ -0,0 +1,13 @@ +# DP: strip -z,defs from linker options for internal libunwind. + +--- a/src/libgcc/config/t-libunwind-elf ++++ b/src/libgcc/config/t-libunwind-elf +@@ -31,7 +31,7 @@ SHLIBUNWIND_SONAME = @shlib_base_name@.s + + SHLIBUNWIND_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared \ + -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ +- -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ ++ -Wl,-z,text -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ + @multilib_flags@ $(SHLIB_OBJS) -lc && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ + if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ diff --git a/patches/testsuite-glibc-warnings.diff b/patches/testsuite-glibc-warnings.diff new file mode 100644 index 0000000..b1353f0 --- /dev/null +++ b/patches/testsuite-glibc-warnings.diff @@ -0,0 +1,18 @@ +# DP: fix testcases that triggered -Wunused-result with glibc +# DP: Author: Steve Beattie +--- + src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c | 2 +- + src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +Index: b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c ++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +@@ -1,5 +1,5 @@ + /* { dg-shouldfail "tsan" } */ +-/* { dg-additional-options "-ldl" } */ ++/* { dg-additional-options "-Wno-unused-result -ldl" } */ + + #include + #include diff --git a/patches/testsuite-hardening-format.diff b/patches/testsuite-hardening-format.diff new file mode 100644 index 0000000..8c0d9b1 --- /dev/null +++ b/patches/testsuite-hardening-format.diff @@ -0,0 +1,356 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- + src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c | 1 + + src/gcc/testsuite/g++.dg/abi/pragma-pack1.C | 2 ++ + src/gcc/testsuite/g++.dg/abi/regparm1.C | 1 + + src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C | 1 + + src/gcc/testsuite/g++.dg/torture/pr51436.C | 1 + + src/gcc/testsuite/g++.old-deja/g++.law/weak.C | 2 +- + src/gcc/testsuite/g++.old-deja/g++.other/std1.C | 1 + + src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/charset/builtin2.c | 2 +- + src/gcc/testsuite/gcc.dg/format/format.exp | 2 +- + src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c | 2 +- + src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c | 2 ++ + src/gcc/testsuite/gcc.dg/pr30473.c | 2 +- + src/gcc/testsuite/gcc.dg/pr38902.c | 2 +- + src/gcc/testsuite/gcc.dg/pr59418.c | 2 +- + src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 2 +- + src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c | 2 +- + src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m | 2 +- + 28 files changed, 40 insertions(+), 18 deletions(-) + +Index: b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +Index: b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +Index: b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c ++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +@@ -3,7 +3,7 @@ + + /* { dg-do compile } */ + /* { dg-require-iconv "IBM1047" } */ +-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ ++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ + /* { dg-final { scan-assembler-not "printf" } } */ + /* { dg-final { scan-assembler-not "fprintf" } } */ + /* { dg-final { scan-assembler-not "sprintf" } } */ +Index: b/src/gcc/testsuite/gcc.dg/format/format.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/format/format.exp ++++ b/src/gcc/testsuite/gcc.dg/format/format.exp +@@ -26,7 +26,7 @@ load_lib gcc-dg.exp + load_lib torture-options.exp + + torture-init +-set-torture-options [list { } { -DWIDE } ] ++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] + + dg-init + gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" "" +Index: b/src/gcc/testsuite/gcc.dg/pr30473.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr30473.c ++++ b/src/gcc/testsuite/gcc.dg/pr30473.c +@@ -1,7 +1,7 @@ + /* PR middle-end/30473 */ + /* Make sure this doesn't ICE. */ + /* { dg-do compile } */ +-/* { dg-options "-O2" } */ ++/* { dg-options "-O2 -Wno-format" } */ + + extern int sprintf (char *, const char *, ...); + +Index: b/src/gcc/testsuite/gcc.dg/pr38902.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr38902.c ++++ b/src/gcc/testsuite/gcc.dg/pr38902.c +@@ -1,6 +1,6 @@ + /* PR target/38902 */ + /* { dg-do run } */ +-/* { dg-options "-O2 -fstack-protector" } */ ++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG +Index: b/src/gcc/testsuite/gcc.dg/pr59418.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pr59418.c ++++ b/src/gcc/testsuite/gcc.dg/pr59418.c +@@ -2,7 +2,7 @@ + /* Reported by Ryan Mansfield */ + + /* { dg-do compile } */ +-/* { dg-options "-Os -g" } */ ++/* { dg-options "-Os -g -Wno-format-zero-length" } */ + /* { dg-options "-march=armv7-a+fp -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ + + extern int printf (const char *__format, ...); +Index: b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c ++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */ ++/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details -Wformat=0" } */ + + struct bovid + { +Index: b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c ++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +@@ -1,3 +1,5 @@ ++/* { dg-lto-options "-Wno-nonnull" } */ ++ + void set_mem_alias_set (); + void emit_push_insn () { + set_mem_alias_set (); +Index: b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c ++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-Wformat=0" } */ + #define vector(elcount, type) \ + __attribute__((vector_size((elcount)*sizeof(type)))) type + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int printf (const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + extern int __printf_chk (int, const char *, ...); + volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + typedef struct { int i; } FILE; + FILE *fp; +Index: b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c ++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +@@ -1,7 +1,7 @@ + /* { dg-do run } */ + /* { dg-require-effective-target tls } */ + /* { dg-require-effective-target pthread } */ +-/* { dg-options "-pthread" } */ ++/* { dg-options "-pthread -Wformat=0" } */ + + #include + extern int printf (char *,...); +Index: b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +=================================================================== +--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m ++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +@@ -2,7 +2,7 @@ + /* Developed by Markus Hitter . */ + /* { dg-do run } */ + /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ +-/* { dg-options "-fconstant-string-class=Foo" } */ ++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */ + /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ + + #include "../../../objc-obj-c++-shared/objc-test-suite-types.h" +Index: b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C ++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +@@ -1,5 +1,7 @@ + // PR c++/7046 + ++// { dg-options "-Wformat=0" } ++ + extern "C" int printf (const char *, ...); + + #pragma pack(4) +Index: b/src/gcc/testsuite/g++.dg/abi/regparm1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C ++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C +@@ -1,6 +1,7 @@ + // PR c++/29911 (9381) + // { dg-do run { target i?86-*-* x86_64-*-* } } + // { dg-require-effective-target c++11 } ++// { dg-options "-Wformat=0" } + + extern "C" int printf(const char *, ...); + +Index: b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C ++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +@@ -1,5 +1,6 @@ + // PR c++/53202 + // { dg-do run { target c++11 } } ++// { dg-options "-Wformat=0" } + + #include + +Index: b/src/gcc/testsuite/g++.dg/torture/pr51436.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C ++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C +@@ -1,4 +1,5 @@ + /* { dg-do compile } */ ++/* { dg-options "-Wno-nonnull" } */ + /* { dg-additional-options "-Wno-return-type" } */ + + typedef __SIZE_TYPE__ size_t; +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +@@ -1,6 +1,6 @@ + // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } + // { dg-require-effective-target static } +-// { dg-options "-static" } ++// { dg-options "-static -Wno-nonnull" } + // Bug: g++ fails to instantiate operator<<. + + // libc-5.4.xx has __IO_putc in its static C library, which can conflict +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +@@ -1,4 +1,5 @@ + // { dg-do assemble } ++// { dg-options "-Wno-nonnull" } + // Origin: Mark Mitchell + + extern "C" int memcmp (const void * __s1, +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + +Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c ++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fdump-tree-fab1" } */ ++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ + + #include + diff --git a/patches/testsuite-hardening-printf-types.diff b/patches/testsuite-hardening-printf-types.diff new file mode 100644 index 0000000..248cb5e --- /dev/null +++ b/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,667 @@ +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +Index: b/src/gcc/testsuite/g++.dg/ext/align1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/align1.C ++++ b/src/gcc/testsuite/g++.dg/ext/align1.C +@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); + int + main (void) + { +- printf ("%d %d\n", __alignof (a1), __alignof (f1)); ++ // "%td" is not allowed by ISO C++, so use %p with a void * cast ++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); + return (__alignof (a1) < __alignof (f1)); + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, + { + void *p; + +- printf("%d %d %d\n", sz, count, type); ++ // ISO C++ does not support format size modifier "z", so use a cast ++ printf("%u %d %d\n", (unsigned int)sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; +Index: b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c ++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +@@ -42,7 +42,7 @@ main (int argc, char **argv) + } + for (i = 0; i < ARCHnodes; i++) + for (j = 0; j < 3; j++) +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*if (i!=1 || j!=1)*/ + /*if (i==1 && j==1) + continue; +@@ -82,14 +82,14 @@ mem_init (void) + for (j = 0; j < 3; j++) + { + vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); +- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); ++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); + } + } + for (i = 0; i < ARCHnodes; i++) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + } + } + +@@ -98,7 +98,7 @@ mem_init (void) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*for (k = 0; k < ARCHnodes1; k++) + { + vel[i][j][k] = d; +Index: b/src/gcc/testsuite/gcc.dg/packed-vla.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/packed-vla.c ++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c +@@ -18,8 +18,8 @@ int func(int levels) + int b[4]; + } __attribute__ ((__packed__)) foo; + +- printf("foo %d\n", sizeof(foo)); +- printf("bar %d\n", sizeof(bar)); ++ printf("foo %d\n", (int)sizeof(foo)); ++ printf("bar %d\n", (int)sizeof(bar)); + + if (sizeof (foo) != sizeof (bar)) + abort (); +Index: b/src/gcc/testsuite/g++.dg/opt/alias2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/opt/alias2.C ++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C +@@ -30,14 +30,14 @@ public: + + + _Deque_base::~_Deque_base() { +- printf ("bb %x %x\n", this, *_M_start._M_node); ++ printf ("bb %p %x\n", this, *_M_start._M_node); + } + + void + _Deque_base::_M_initialize_map() + { + yy = 0x123; +- printf ("aa %x %x\n", this, yy); ++ printf ("aa %p %x\n", this, yy); + + _M_start._M_node = &yy; + _M_start._M_cur = yy; +Index: b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +@@ -33,7 +33,7 @@ struct VBase + void Offset () const + { + printf ("VBase\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); + } + }; + +@@ -55,8 +55,8 @@ struct VDerived : virtual VBase + void Offset () const + { + printf ("VDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); + } + }; + struct B : virtual VBase +@@ -65,8 +65,8 @@ struct B : virtual VBase + void Offset () const + { + printf ("B\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); + } + }; + struct MostDerived : B, virtual VDerived +@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived + void Offset () const + { + printf ("MostDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); + } + }; + +@@ -95,10 +95,10 @@ int main () + if (ctorVDerived != &dum.VDerived::member) + return 24; + +- printf (" VBase::member %d\n", &dum.VBase::member - this_); +- printf (" B::member %d\n", &dum.B::member - this_); +- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); +- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); ++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); ++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); ++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); ++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); + dum.MostDerived::Offset (); + dum.B::Offset (); + dum.VDerived::Offset (); +Index: b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +@@ -15,6 +15,6 @@ int main(){ + + Double_alignt<20000> heap; + +- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); ++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); + + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +@@ -16,7 +16,7 @@ int main() + } + + catch (E *&e) { +- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); ++ printf ("address of e is %p\n", (void *)e); + return !((__SIZE_TYPE__)e != 5 && e->x == 5); + } + return 2; +Index: b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +@@ -42,19 +42,19 @@ public: + void DoSomething() { + PUB_A = 0; + Foo::A = 0; +- printf("%x\n",pX); ++ printf("%p\n",pX); + Foo::PUB.A = 0; +- printf("%x\n",PUB.pX); ++ printf("%p\n",PUB.pX); + B = 0; +- printf("%x\n",Foo::pY); ++ printf("%p\n",Foo::pY); + PRT_A = 0; + PRT.B = 0; +- printf("%x\n",Foo::PRT.pY); ++ printf("%p\n",Foo::PRT.pY); + PRV_A = 0; // { dg-error "" } + Foo::C = 0; // { dg-error "" } +- printf("%x\n",pZ); // { dg-error "" } ++ printf("%p\n",pZ); // { dg-error "" } + Foo::PRV.C = 0; // { dg-error "" } +- printf("%x\n",PRV.pZ); // { dg-error "" } ++ printf("%p\n",PRV.pZ); // { dg-error "" } + } + }; + +@@ -64,17 +64,17 @@ int main() + + a.PUB_A = 0; + a.A = 0; +- printf("%x\n",a.pX); ++ printf("%p\n",a.pX); + a.PRT_A = 0; // { dg-error "" } + a.B = 0; // { dg-error "" } +- printf("%x\n",a.pY); // { dg-error "" } ++ printf("%p\n",a.pY); // { dg-error "" } + a.PRV_A = 0; // { dg-error "" } + a.C = 0; // { dg-error "" } +- printf("%x\n",a.pZ); // { dg-error "" } ++ printf("%p\n",a.pZ); // { dg-error "" } + a.PUB.A = 0; +- printf("%x\n",a.PUB.pX); ++ printf("%p\n",a.PUB.pX); + a.PRT.B = 0; // { dg-error "" } +- printf("%x\n",a.PRT.pY); // { dg-error "" } ++ printf("%p\n",a.PRT.pY); // { dg-error "" } + a.PRV.C = 0; // { dg-error "" } +- printf("%x\n",a.PRV.pZ); // { dg-error "" } ++ printf("%p\n",a.PRV.pZ); // { dg-error "" } + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +@@ -20,12 +20,12 @@ struct B { + B::operator const A&() const { + static A a; + a.i = i; +- printf("convert B to A at %x\n", &a); ++ printf("convert B to A at %p\n", (void*)&a); + return a; + } + + void f(A &a) { // { dg-message "" } in passing argument +- printf("A at %x is %d\n", &a, a.i); ++ printf("A at %p is %d\n", (void*)&a, a.i); + } + + int main() { +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +@@ -17,10 +17,10 @@ public: + + int main() { + C c; +- printf("&c.x = %x\n", &c.x); +- printf("&c.B1::x = %x\n", &c.B1::x); +- printf("&c.B2::x = %x\n", &c.B2::x); +- printf("&c.A::x = %x\n", &c.A::x); ++ printf("&c.x = %p\n", (void*)&c.x); ++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); ++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); ++ printf("&c.A::x = %p\n", (void*)&c.A::x); + if (&c.x != &c.B1::x + || &c.x != &c.B2::x + || &c.x != &c.A::x) +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +@@ -6,7 +6,7 @@ int fail = 0; + class Foo { + public: + virtual void setName() { +- printf("Foo at %x\n", this); ++ printf("Foo at %p\n", (void*)this); + if (vp != (void*)this) + fail = 1; + } +@@ -15,7 +15,7 @@ public: + class Bar : public Foo { + public: + virtual void init(int argc, char **argv) { +- printf("Bar's Foo at %x\n", (Foo*)this); ++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); + vp = (void*)(Foo*)this; + setName(); + } +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +@@ -18,7 +18,7 @@ public: + if (ptr2 != &(*this).slist) + fail = 6; + +- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); + } + }; + +@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () + void Sim_Event_Manager::post_event () { + ptr1 = (RWSlistIterator*)&last_posted_event_position_; + ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; +- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 1; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) + fail = 2; +- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator&)last_posted_event_position_).slist); ++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 3; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +@@ -7,26 +7,26 @@ int num_x; + + class Y { + public: +- Y () { printf("Y() this: %x\n", this); } +- ~Y () { printf("~Y() this: %x\n", this); } ++ Y () { printf("Y() this: %p\n", (void*)this); } ++ ~Y () { printf("~Y() this: %p\n", (void*)this); } + }; + + class X { + public: + X () { + ++num_x; +- printf("X() this: %x\n", this); ++ printf("X() this: %p\n", (void*)this); + Y y; + *this = (X) y; + } + +- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } ++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } + X & operator = (const X & xx) { +- printf("X.op=(X&) this: %x\n", this); ++ printf("X.op=(X&) this: %p\n", (void*)this); + return *this; + } + +- ~X () { printf("~X() this: %x\n", this); --num_x; } ++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } + }; + + int main (int, char **) { +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +@@ -48,7 +48,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) { +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + exit(1); + } + printf ("D is destructed.\n"); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +@@ -35,20 +35,20 @@ int foo::si = 0; + foo::foo () + { + si++; +- printf ("new foo @ 0x%x; now %d foos\n", this, si); ++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); + } + + foo::foo (const foo &other) + { + si++; +- printf ("another foo @ 0x%x; now %d foos\n", this, si); ++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); + *this = other; + } + + foo::~foo () + { + si--; +- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); ++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); + } + + int +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +@@ -30,7 +30,7 @@ class B + virtual ~B() {} + void operator delete(void*,size_t s) + { +- printf("B::delete() %d\n",s); ++ printf("B::delete() %u\n",(unsigned int)s); + } + void operator delete(void*){} + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +@@ -13,10 +13,10 @@ struct foo + int x; + foo () { + x = count++; +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + } + virtual ~foo () { +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + --count; + } + }; +@@ -31,7 +31,7 @@ int main () + { + for (int j = 0; j < 3; j++) + { +- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); ++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); + } + } + // The count should be nine, if not, fail the test. +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +@@ -42,7 +42,7 @@ B_table b; + bar jar; + + int main() { +- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); ++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); + B_table::B_ti_fn z = &B_table::func1; + int j = 1; + jar.call_fn_fn1(j,(void *)&z); +Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +@@ -7,11 +7,11 @@ class T { + public: + T() { + i = 1; +- printf("T() at %x\n", this); ++ printf("T() at %p\n", (void*)this); + } + T(const T& o) { + i = o.i; +- printf("T(const T&) at %x <-- %x\n", this, &o); ++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); + } + T operator +(const T& o) { + T r; +@@ -21,7 +21,7 @@ public: + operator int () { + return i; + } +- ~T() { printf("~T() at %x\n", this); } ++ ~T() { printf("~T() at %p\n", (void*)this); } + } s, b; + + int foo() { return getenv("TEST") == 0; } +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +@@ -5,16 +5,16 @@ int c, d; + class Foo + { + public: +- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } +- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } ++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } ++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } ++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } + }; + + // Bar creates constructs a temporary Foo() as a default + class Bar + { + public: +- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } + }; + + void fakeRef(Bar *) +Index: b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) + struct A + { + virtual void f () { +- printf ("%x\n", this); ++ printf ("%p\n", (void*)this); + } + }; + +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +@@ -6,7 +6,7 @@ template + struct S + { + template +- void f(U u) { printf ("%d\n", sizeof (U)); } ++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } + + int i[4]; + }; +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +@@ -16,7 +16,7 @@ template + template + void S::f(U u) + { +- printf ("%d\n", sizeof (U)); ++ printf ("%d\n", (int)sizeof (U)); + } + + +Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +@@ -10,9 +10,9 @@ struct frob { + + template + void frob::print () { +- printf ("this = %08x\n", this); +- printf (" ptr = %08x\n", ptr); +- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); ++ printf ("this = %p\n", (void*)this); ++ printf (" ptr = %p\n", (void*)ptr); ++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); + } + + static int x[10]; +Index: b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +=================================================================== +--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C ++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +@@ -44,15 +44,15 @@ int main() + A * a = new B; + B * b = dynamic_cast(a); + +- printf("%p\n",b); // (*2*) ++ printf("%p\n",(void*)b); // (*2*) + b->print(); + + a = b; +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); + + a = a->clone(); +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); // (*1*) + + return 0; +Index: b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c ++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +@@ -1,6 +1,6 @@ + #include "inline-4.h" + extern int printf (const char *, ...); + int main(void) { +- printf (getstring()); ++ printf ("%s", getstring()); + return 0; + } diff --git a/patches/testsuite-hardening-updates.diff b/patches/testsuite-hardening-updates.diff new file mode 100644 index 0000000..33a38a9 --- /dev/null +++ b/patches/testsuite-hardening-updates.diff @@ -0,0 +1,131 @@ +# DP: Fix some gcc and g++ testcases to pass with hardening defaults + +--- + src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c | 2 +- + src/gcc/testsuite/g++.dg/asan/asan_test.C | 2 +- + src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C | 2 +- + src/gcc/testsuite/g++.dg/fstack-protector-strong.C | 2 +- + src/gcc/testsuite/gcc.c-torture/execute/memset-1.c | 1 - + src/gcc/testsuite/gcc.c-torture/execute/memset-1.x | 5 +++++ + src/gcc/testsuite/gcc.dg/fstack-protector-strong.c | 2 +- + src/gcc/testsuite/gcc.dg/stack-usage-1.c | 2 +- + src/gcc/testsuite/gcc.dg/superblock.c | 2 +- + src/gcc/testsuite/gcc.target/i386/sw-1.c | 2 +- + 11 files changed, 14 insertions(+), 10 deletions(-) + +Index: b/src/gcc/testsuite/g++.dg/asan/asan_test.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/asan_test.C ++++ b/src/gcc/testsuite/g++.dg/asan/asan_test.C +@@ -2,7 +2,7 @@ + // { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } + // { dg-skip-if "" { *-*-* } { "-flto" } { "" } } + // { dg-additional-sources "asan_globals_test-wrapper.cc" } +-// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread -ldl" } ++// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-unused-result -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread -ldl" } + // { dg-additional-options "-DASAN_NEEDS_SEGV=1" { target { ! arm*-*-* } } } + // { dg-additional-options "-DASAN_LOW_MEMORY=1 -DASAN_NEEDS_SEGV=0" { target arm*-*-* } } + // { dg-additional-options "-DASAN_AVOID_EXPENSIVE_TESTS=1" { target { ! run_expensive_tests } } } +Index: b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C ++++ b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C +@@ -1,7 +1,7 @@ + // ASan interceptor can be accessed with __interceptor_ prefix. + + // { dg-do run { target *-*-linux* } } +-// { dg-options "-fno-builtin-free" } ++// { dg-options "-fno-builtin-free -Wno-unused-result" } + // { dg-additional-options "-D__NO_INLINE__" { target { *-*-linux-gnu } } } + // { dg-shouldfail "asan" } + +Index: b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c +@@ -1,3 +1,5 @@ ++/* { dg-prune-output ".*warning: memset used with constant zero length parameter.*" } */ ++ + /* Copyright (C) 2002 Free Software Foundation. + + Test memset with various combinations of pointer alignments and lengths to +Index: b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c +=================================================================== +--- a/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c ++++ b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c +@@ -1,5 +1,5 @@ + /* { dg-do run } */ +-/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy" } */ ++/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy -U_FORTIFY_SOURCE" } */ + /* { dg-shouldfail "asan" } */ + + #include +Index: b/src/gcc/testsuite/gcc.dg/superblock.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/superblock.c ++++ b/src/gcc/testsuite/gcc.dg/superblock.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro" } */ ++/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro -fno-stack-protector" } */ + /* { dg-require-effective-target scheduling } */ + + typedef int aligned __attribute__ ((aligned (64))); +Index: b/src/gcc/testsuite/gcc.dg/stack-usage-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/stack-usage-1.c ++++ b/src/gcc/testsuite/gcc.dg/stack-usage-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-fstack-usage" } */ ++/* { dg-options "-fstack-usage -fno-stack-protector" } */ + /* nvptx doesn't have a reg allocator, and hence no stack usage data. */ + /* { dg-skip-if "" { nvptx-*-* } } */ + +Index: b/src/gcc/testsuite/gcc.target/i386/sw-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/i386/sw-1.c ++++ b/src/gcc/testsuite/gcc.target/i386/sw-1.c +@@ -1,5 +1,5 @@ + /* { dg-do compile } */ +-/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue" } */ ++/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue -fno-stack-protector" } */ + /* { dg-skip-if "No shrink-wrapping preformed" { x86_64-*-mingw* } } */ + + #include +Index: b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c ++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +Index: b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C ++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +@@ -1,7 +1,7 @@ + /* Test that stack protection is done on chosen functions. */ + + /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +-/* { dg-options "-O2 -fstack-protector-strong" } */ ++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ + + /* This test checks the presence of __stack_chk_fail function in assembler. + * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. +Index: b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +=================================================================== +--- /dev/null ++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 diff --git a/patches/verbose-lto-linker.diff b/patches/verbose-lto-linker.diff new file mode 100644 index 0000000..2e5bc74 --- /dev/null +++ b/patches/verbose-lto-linker.diff @@ -0,0 +1,97 @@ +# DP: Emit some stderr output while doing the LTO Links + +Index: b/src/gcc/lock-and-run.sh +=================================================================== +--- a/src/gcc/lock-and-run.sh ++++ b/src/gcc/lock-and-run.sh +@@ -1,7 +1,8 @@ +-#! /bin/sh ++#! /bin/bash + # Shell-based mutex using mkdir. + + lockdir="$1" prog="$2"; shift 2 || exit 1 ++cmd=$(echo $prog "$@" | sed 's,^[^ ]*/,,;s, .*\( -o [^ ]*\) .*,\1,') + + # Remember when we started trying to acquire the lock. + count=0 +@@ -11,24 +12,72 @@ trap 'rm -r "$lockdir" lock-stamp.$$' 0 + + until mkdir "$lockdir" 2>/dev/null; do + # Say something periodically so the user knows what's up. +- if [ `expr $count % 30` = 0 ]; then ++ if [ `expr $count % 60` = 0 ]; then + # Reset if the lock has been renewed. + if [ -n "`find \"$lockdir\" -newer lock-stamp.$$`" ]; then + touch lock-stamp.$$ + count=1 +- # Steal the lock after 5 minutes. +- elif [ $count = 300 ]; then +- echo removing stale $lockdir >&2 ++ # Steal the lock after 30 minutes. ++ elif [ $count = 1800 ]; then ++ echo "removing stale $lockdir ($cmd)" >&2 + rm -r "$lockdir" + else +- echo waiting to acquire $lockdir >&2 ++ echo "waiting to acquire $lockdir ($cmd)" >&2 + fi + fi +- sleep 1 +- count=`expr $count + 1` ++ sleep 6 ++ count=`expr $count + 6` + done + + echo $prog "$@" +-$prog "$@" ++$prog "$@" & ++pid=$! ++ ++count=0 ++# once the "stale" locks are released, everything runs in ++# parallel, so be gentle with the timeout ++max_count=$((10 * 60 * 60)) ++ ++while true; do ++ status=$(jobs -l | sed -n "/ $pid /s/^.* $pid //p") ++ case "x$status" in ++ xRunning*) ++ : echo >&2 "running ..." ++ ;; ++ xExit*) ++ : echo >&2 "exit ..." ++ rv=$(echo $status | awk '{print $2}') ++ break ++ ;; ++ xDone*) ++ rv=0 ++ break ++ ;; ++ x) ++ : echo >&2 "??? ..." ++ pstatus=$(ps $pid) ++ if [ "$?" -ne 0 ]; then ++ rv=0 ++ break ++ fi ++ ;; ++ *) ++ echo >&2 "$(basename $0): PID $pid ($cmd): unknown: $status" ++ rv=48 ++ break ++ esac ++ sleep 2 ++ count=$(($count + 6)) ++ if [ "$(($count % 300))" -eq 0 ]; then ++ echo >&2 "$(basename $0): PID $pid ($cmd) running for $count seconds" ++ fi ++ if [ $count -ge $max_count ]; then ++ echo >&2 "$(basename $0): PID $pid ($cmd) timeout after $count seconds" ++ kill -1 $pid ++ rv=47 ++ fi ++done ++echo >&2 "$(basename $0): PID $pid ($cmd) finished after $count seconds" + + # The trap runs on exit. ++exit $rv diff --git a/porting.html b/porting.html new file mode 100644 index 0000000..2fe5477 --- /dev/null +++ b/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +

Porting libstdc++-v3

+
+ +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + diff --git a/reduce-test-diff.awk b/reduce-test-diff.awk new file mode 100755 index 0000000..0e438de --- /dev/null +++ b/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} diff --git a/rules b/rules new file mode 100755 index 0000000..29377cc --- /dev/null +++ b/rules @@ -0,0 +1,89 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# Build rules for gcc (>= 2.95) and gcc-snapshot +# Targets found in this makefile: +# - unpack tarballs +# - patch sources +# - (re)create the control file +# - create a debian/rules.parameters file, which is included +# by debian/rules2 +# All other targets are passed to the debian/rules2 file + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES + +default: build + +include debian/rules.defs +include debian/rules.unpack +include debian/rules.patch + +control: $(control_dependencies) + -mkdir -p $(stampdir) + $(MAKE) -f debian/rules.conf $@ + +configure: control $(unpack_stamp) $(patch_stamp) + $(MAKE) -f debian/rules2 $@ + +pre-build: +#ifneq (,$(filter $(distrelease),squeeze sid)) +#ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386)) +# @echo explicitely fail the build for $(DEB_TARGET_ARCH) +# @echo no bug report required. please ask the port maintainers if they support gcc-4.5. +# false +#endif +#endif + +build: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-arch: pre-build control + $(MAKE) $(NJOBS) -f debian/rules2 $@ +build-indep: pre-build control + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nocheck nopgo nolto" \ + $(MAKE) $(NJOBS) -f debian/rules2 $@ + +check: $(check_stamp) +$(check_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +clean: + rm -rf $(stampdir) +# remove temporary dirs used for unpacking + rm -rf $(gcc_srcdir) $(gdc_srcdir) $(nl_nvptx_srcdir) + -$(MAKE) -f debian/rules2 $@ + rm -rf $(srcdir)* $(builddir)* debian/tmp* html + rm -f bootstrap-* first-move-stamp + rm -f debian/*.tmp + rm -f debian/soname-cache + find debian -name '.#*' | xargs -r rm -f + rm -f $(series_file)* + rm -rf .pc + dh_clean + +install: + $(MAKE) -f debian/rules2 $@ + +html-docs doxygen-docs update-doxygen-docs update-ada-files xxx: + $(MAKE) -f debian/rules2 $@ + +binary-arch binary: + $(MAKE) -f debian/rules2 $@ + +binary-indep: + DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nocheck nopgo nolto" \ + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.NOTPARALLEL: +.PHONY: build clean binary-indep binary-arch binary release diff --git a/rules.conf b/rules.conf new file mode 100644 index 0000000..3305e09 --- /dev/null +++ b/rules.conf @@ -0,0 +1,1364 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs +include debian/rules.sonames + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + ifeq ($(DEB_TARGET_ARCH),m68k) + GCC_SONAME := 2 + endif + ifeq ($(DEB_TARGET_ARCH),hppa) + GCC_SONAME := 4 + endif +else + GCC_SONAME := 1 +endif +DEB_LIBGCC_SOVERSION := $(DEB_SOEVERSION) +DEB_LIBGCC_VERSION := $(DEB_EVERSION) + +_soname_map = gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) gomp=$(GOMP_SONAME) \ + ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \ + itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \ + go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \ + atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \ + tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) \ + vtv=$(VTV_SONAME) gm2=$(GM2_SONAME) \ + gphobos=$(GPHOBOS_SONAME) hsail-rt=$(HSAIL_SONAME) +_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map))) + +rel_on_dev := $(if $(cross_lib_arch),>=,=) +# $(call _lib_name,,,) +_lib_name = $(subst $(SPACE),, \ + lib$(2)$(1) \ + $(if $(filter dev,$(3)),,$(call _soname,$(1))) \ + $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \ + $(if $(3),-$(3))$(LS)$(AQ)) +# $(call _lib_vers,,) +_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2)) + +# Helper to generate biarch/triarch dependencies. +# For example, $(eval $(call gen_multilib_deps,gomp)) will create the +# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} +# variables if biarch{32,64,n32} is set to yes. + +define gen_multilib_deps + lib$1biarch64$2 := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarch32$2 := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchhf$2 := $(call _lib_name,$(1),hf,$(2)) $(call _lib_vers,$(2),$(3)) + lib$1biarchsf$2 := $(call _lib_name,$(1),sf,$(2)) $(call _lib_vers,$(2),$(3)) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2) + endif + ifeq ($$(biarch32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2) + else + lib$1biarch$2 := $$(lib$1biarch32$2) + endif + endif + ifeq ($$(biarchx32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2) + else + lib$1biarch$2 := $$(lib$1biarchx32$2) + endif + endif + ifeq ($$(biarchn32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2) + else ifeq ($$(biarch32),yes) + lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2) + else + lib$1biarch$2 := $$(lib$1biarchn32$2) + endif + endif + ifeq ($$(biarchhf),yes) + lib$1biarch$2 := $$(lib$1biarchhf$2) | $(call _lib_name,$(1),hf,$(2)) + endif + ifeq ($$(biarchsf),yes) + lib$1biarch$2 := $$(lib$1biarchsf$2) | $(call _lib_name,$(1),sf,$(2)) + endif +endef +ifeq ($(with_shared_libgcc),yes) + LIBGCC_DEP := libgcc$(GCC_SONAME)$(LS)$(AQ) (>= $(DEB_LIBGCC_VERSION)) + $(eval $(call gen_multilib_deps,gcc,,$(DEB_LIBGCC_VERSION))) +endif +LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $(DEB_VERSION)) +$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan ubsan quadmath go vtv, \ + $(eval $(call gen_multilib_deps,$(x),,$$$${gcc:Version}))) +$(foreach x,gcc stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dev,$$$${gcc:Version}))) +$(foreach x,gcc stdc++ gfortran objc go gphobos, \ + $(eval $(call gen_multilib_deps,$(x),dbg,$$$${gcc:Version}))) + +# Helper to generate _no_archs variables. +# For example, $(eval $(call gen_no_archs,go)) will create the go_no_archs +# variable, using the go_no_cpu and go_no_systems variables. +define gen_no_archs + $1_no_archs := + ifneq (,$$($1_no_cpus)) + $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 alpha arm,$$($1_no_cpus)),!$$(cpu)) + ifneq (,$$(filter i386,$$($1_no_cpus))) + $1_no_archs += !i386 !hurd-i386 !kfreebsd-i386 + endif + ifneq (,$$(filter amd64,$$($1_no_cpus))) + $1_no_archs += !amd64 !kfreebsd-amd64 + endif + ifneq (,$$(filter alpha,$$($1_no_cpus))) + $1_no_archs += !alpha !hurd-alpha + endif + ifneq (,$$(filter arm,$$($1_no_cpus))) + $1_no_archs += !arm !armel !armhf + endif + ifneq (,$$(strip $3)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE)) + $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system)))) + endif + endif + ifneq (,$$($1_no_systems)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE)) + $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system)))) + endif + $1_no_archs := $$(strip $$($1_no_archs)) +endef +base_deb_cpus := amd64 i386 alpha +base_deb_systems := +$(foreach x,ada fortran libgphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems)))) +linux_no_archs := !hurd-any !kfreebsd-any + +GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER)))) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') +GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/') +GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/') +GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/') +NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) +NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1) +NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) + +ifeq ($(single_package),yes) + BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([0-9]*\).*/\1/') +endif + +GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//') +NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \ + awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') + +MAINTAINER = Debian GCC Maintainers +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(PKGSOURCE),gnat gdc)) + MAINTAINER = Ubuntu MOTU Developers + else + MAINTAINER = Ubuntu Core developers + endif +endif + +UPLOADERS = Matthias Klose +ifneq (,$(findstring $(PKGSOURCE),gnat)) + UPLOADERS = Ludovic Brenta +endif +ifneq (,$(findstring $(PKGSOURCE),gdc)) + UPLOADERS = Iain Buclaw , Matthias Klose +endif + +DPKGV = 1.14.15 +ifeq ($(with_multiarch_lib),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq ($(multiarch_stage1),yes) + DPKGV = 1.16.0~ubuntu4 +endif +ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic)) + DPKGV = 1.17.14 +endif +DPKG_BUILD_DEP = dpkg-dev (>= $(DPKGV)), + +ifeq ($(DEB_HOST_ARCH),$(DEB_TARGET_ARCH)) + TARGET_QUAL = :$(DEB_TARGET_ARCH) +endif + +ifneq (,$(filter $(distrelease),squeeze wheezy lucid precise trusty xenial)) + LOCALES = locales +else + LOCALES = locales-all +endif + +# The binutils version needed. +# The oldest suitable versions for the various platforms can be found in +# INSTALL/specific.html ; we take a tighter dependency if possible to be on +# the safe side (something like newest( version in stable, versions for the +# various platforms in INSTALL/specific.html) ). +# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode. +# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html +ifeq ($(trunk_build),yes) + BINUTILSBDV = 2.23 +else + BINUTILSBDV = 2.22 + ifneq (,$(filter $(distrelease),vivid)) + BINUTILSBDV = 2.25-3~ + else ifneq (,$(filter $(distrelease),precise)) + BINUTILSBDV = 2.22-6~ + else ifneq (,$(filter $(distrelease),trusty)) + BINUTILSBDV = 2.24-5~ + else ifneq (,$(filter $(distrelease),jessie)) + BINUTILSBDV = 2.25-7~ + else ifneq (,$(filter $(distrelease),xenial)) + BINUTILSBDV = 2.26.1 + else ifneq (,$(filter $(distrelease),stretch zesty)) + BINUTILSBDV = 2.28 + else ifneq (,$(filter $(distrelease),artful)) + BINUTILSBDV = 2.29.1 + else ifneq (,$(filter $(distrelease),bionic)) + BINUTILSBDV = 2.30 + else + BINUTILSBDV = 2.33.1 + endif +endif +ifeq ($(DEB_CROSS),yes) + ifneq (,$(filter $(distrelease),stretch jessie wheezy precise trusty xenial)) + BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) + else + INUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), debhelper (>= 10.10.6~) + endif + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') +else + BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) + ifneq (,$(findstring cross-build-,$(build_type))) + BINUTILSV := $(shell dpkg -l binutils$(TS) \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + else + BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \ + | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') + endif +endif +ifneq (,$(filter $(build_type), build-native cross-build-native)) + ifeq (,$(filter gccgo% gnat%, $(PKGSOURCE))) + BINUTILS_BUILD_DEP += , $(binutils_hppa64)$(NT) (>= $(BINUTILSBDV)) [$(hppa64_archs)] + endif +endif +ifeq (,$(BINUTILSV)) + BINUTILSV := $(BINUTILSBDV) +endif + +# FIXME; stripping doesn't work with gold +#BINUTILS_BUILD_DEP += , binutils-gold (>= $(BINUTILSV)) [$(gold_archs)] + +# libc-dev dependencies +libc_ver := 2.11 +libc_dev_ver := $(libc_ver) +ifeq ($(with_multiarch_lib),yes) + ifeq ($(derivative),Debian) + libc_dev_ver := 2.13-5 + else + libc_dev_ver := 2.13-0ubuntu6 + endif +endif +# first set LIBC_DEP/LIBC_DEV_DEP for native builds only +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64)) + LIBC_DEP = libc6.1 + else + LIBC_DEP = libc6 + endif + ifneq (,$(findstring musl-linux-,$(DEB_TARGET_ARCH))) + LIBC_DEP = musl + libc_ver = 0.9 + libc_dev_ver = 0.9 + endif +else + ifeq ($(DEB_TARGET_ARCH_OS),hurd) + LIBC_DEP = libc0.3 + endif + ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + LIBC_DEP = libc0.1 + endif + ifeq ($(DEB_TARGET_ARCH),uclibc) + LIBC_DEP = libuclibc + endif +endif +LIBC_DEV_DEP := $(LIBC_DEP)-dev + +# this is about Debian archs name, *NOT* GNU target triplet +biarch_deb_map := \ + i386=amd64 amd64=i386 \ + mips=mips64 mipsel=mips64el \ + mipsn32=mips mipsn32el=mipsel \ + mips64=mips mips64el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \ + mips64r6=mipsr6 mips64r6el=mipsr6el \ + powerpc=ppc64 ppc64=powerpc \ + sparc=sparc64 sparc64=sparc\ + s390=s390x s390x=s390 \ + kfreebsd-amd64=i386 \ + armel=armhf \ + armhf=armel +biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32)$(biarchhf)$(biarchsf))) + LIBC_BIARCH_DEP := $${shlibs:Depends} + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + # amd64, x32, i386 + ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386)) + ifeq ($(biarch64)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch64)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch32)$(biarchx32),yesyes) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver)) + endif + endif + # mips* + ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el)) + ifeq ($(biarchn32)$(biarch32),yesyes) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarch64)$(biarch32),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)) + endif + ifeq ($(biarchn32)$(biarch64),yesyes) + triarch := $(COMMA)$(SPACE) + LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver)) + endif + endif + + ifeq ($(biarchhf),yes) + LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + endif + ifeq ($(biarchsf),yes) + LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver)) + LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) + endif +endif + +# now add the cross suffix and required version +LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ) +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, +endif + +# TODO: make this automatic, there must be a better way to define LIBC_DEP. +ifneq ($(DEB_CROSS),yes) + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver)) + ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric)) + LIBC_BUILD_DEP += , libc6-dev (>= 2.13-31) [armel armhf] + endif + LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], + ifeq (yes,$(MIPS_R6_ENABLED)) + LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], + endif +ifneq (,$(findstring amd64,$(biarchx32archs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386], +endif +ifneq (,$(findstring armel,$(biarchhfarchs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-armhf [armel], libhfgcc1 [armel], +endif +ifneq (,$(findstring armhf,$(biarchsfarchs))) + LIBC_BIARCH_BUILD_DEP += libc6-dev-armel [armhf], libsfgcc1 [armhf], +endif +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +# needed for the include/asm symlink to run the testsuite for +# non default multilibs +ifneq (,$(multilib_archs)) + GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), +endif + +LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + LIBUNWIND_DEV_DEP := # nothing +endif + +ifneq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty)) + GMP_BUILD_DEP = libgmp3-dev | libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev, +else + GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), + MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), +endif + +ISL_BUILD_DEP = libisl-dev, +ifneq (,$(filter $(distrelease),cosmic buster sid experimental)) + ISL_BUILD_DEP = libisl-dev (>= 0.20), +endif + +ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring)) + MPC_BUILD_DEP = libmpc-dev, +else + MPC_BUILD_DEP = libmpc-dev (>= 1.0), +endif + +SOURCE_BUILD_DEP := +ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), +endif + +ifneq (,$(filter $(distrelease),squeeze wheezy lucid precise)) + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], +else + CHECK_BUILD_DEP := dejagnu [$(check_no_archs)] , +endif + +AUTO_BUILD_DEP := m4, libtool, +autoconf_version = 2.69 +# FIXME should have a separate 2.69 package +ifeq (,$(filter $(distrelease),lucid precise)) + autoconf_version = +endif +AUTO_BUILD_DEP += autoconf$(autoconf_version), + +ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty)) + SDT_BUILD_DEP = systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], +endif + +# ensure that the common libs, built from the next GCC version are available +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + ifneq ($(with_common_libs),yes) + BASE_BUILD_DEP = gcc-10-base, + endif +endif + +ifeq (,$(filter $(distrelease),lucid precise)) + OFFLOAD_BUILD_DEP += nvptx-tools [$(nvptx_archs)], +endif + +PHOBOS_BUILD_DEP = lib32z1-dev [amd64 kfreebsd-amd64], lib64z1-dev [i386], +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise)) + PHOBOS_BUILD_DEP += libx32z1-dev [amd64 kfreebsd-amd64 i386], + endif +endif + +ifeq ($(with_m2),yes) + GM2_BUILD_DEP = libpth-dev, python3:any, +endif + +ifneq ($(DEB_CROSS),yes) +# all archs for which to create b-d's +any_archs := alpha amd64 armel armhf arm64 i386 mips mipsel mips64 mips64el mipsn32 powerpc powerpcspe ppc64 ppc64el m68k riscv64 sh4 sparc64 s390x x32 +ifeq (,$(filter $(distrelease),squeeze wheezy jessie stretch buster lucid precise xenial bionic cosmic disco)) + any_archs := $(filter-out mips, $(any_archs)) +endif +ifeq (,$(filter $(distrelease),squeeze wheezy jessie stretch buster lucid precise xenial bionic cosmic disco)) + any_archs := $(filter-out powerpcspe, $(any_archs)) +endif +ifeq (yes,$(MIPS_R6_ENABLED)) + any_archs += mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el +endif +ifeq (,$(filter $(DEB_HOST_ARCH),$(any_archs))) +any_archs += $(DEB_HOST_ARCH) +endif + +arch_gnutype_map := $(foreach a,$(any_archs),$(a)=$(shell CC=true dpkg-architecture -f -a$(a) -qDEB_HOST_GNU_TYPE)) +_gnu_type = $(subst $1=,,$(filter $1=%,$(arch_gnutype_map))) +_gnu_suffix = -$(subst _,-,$(call _gnu_type,$1)) + +ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid)) + DEBHELPER_BUILD_DEP = debhelper (>= 9), + TARGET_TOOL_BUILD_DEP = bash, # non-empty line + pf_cross = + pf_ncross = +else + DEBHELPER_BUILD_DEP = debhelper (>= 9.20141010), + TARGET_TOOL_BUILD_DEP = \ + $(foreach a, $(any_archs), \ + g++-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] , \ + $(if $(filter $(a), avr),, \ + gobjc-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + gfortran-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] , \ + $(if $(filter $(a), s390 sh4),, \ + gdc-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + $(if $(filter $(a), hppa m68k sh4),, \ + gccgo-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + $(if $(filter $(a), m68k),, \ + gnat-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + $(if $(filter $(a), $(m2_no_archs)),, \ + gm2-$(BASE_VERSION)$(call _gnu_suffix,$(a)) [$(a)] ,) \ + ) + pf_cross = $(SPACE) + pf_ncross = $(SPACE) + NT = :native +endif + +ifeq ($(single_package),yes) + LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base + LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns +endif + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base + ifeq (,$(filter $(distrelease),lenny etch dapper hardy jaunty karmic lucid maverick natty oneiric)) + LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns + endif +endif + +GO_BUILD_DEP := netbase, + +# try to build with itself, or with the last version +ifneq (,$(filter $(distrelease), squeeze lucid precise)) + gnat_build_dep := +else ifneq (,$(filter $(distrelease), jessie)) + gnat_build_dep := gnat-4.9$(NT) [$(ada_no_archs)], g++-4.9$(NT) +else ifneq (,$(filter $(distrelease), precise)) + gnat_build_dep := gnat-6$(NT) [$(ada_no_archs)], g++-6$(NT) +else ifneq (,$(filter $(distrelease), wheezy trusty wily xenial)) + gnat_build_dep := gnat-5$(NT) [$(ada_no_archs)], g++-5$(NT) +else ifneq (,$(filter $(distrelease), stretch yakkety zesty)) + gnat_build_dep := gnat-6$(NT) [$(ada_no_archs) !x32], g++-7 [x32], gnat-7 [x32], g++-6$(NT) +else ifneq (,$(filter $(distrelease), buster artful bionic)) + gnat_build_dep := gnat-9$(NT) [$(ada_no_archs)], g++-8$(NT) +else + gnat_build_dep := gnat-9$(NT) [$(ada_no_archs)], g++-9$(NT) +endif +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + gnat_build_dep := +endif + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + ifneq ($(with_separate_gnat),yes) + # Build gnat as part of the combined gcc-x.y source package. Do not fail + # if gnat is not present on unsupported architectures; the build scripts + # will not use gnat anyway. + GNAT_BUILD_DEP := $(gnat_build_dep), + endif +else ifeq ($(single_package),yes) + # Ditto, as part of the gcc-snapshot package. + GNAT_BUILD_DEP := $(gnat_build_dep), +else ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + # Special source package just for gnat. Fail early if gnat is not present, + # rather than waste CPU cycles and fail later. + # Bootstrap step needs a gnatgcc symbolic link. + GNAT_BUILD_DEP := $(gnat_build_dep), + GNAT_BUILD_DEP += $(SOURCE_BUILD_DEP) + GDC_BUILD_DEP := + GO_BUILD_DEP := +else ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION)) + # Special source package just for gdc. + GNAT_BUILD_DEP := + GDC_BUILD_DEP := $(SOURCE_BUILD_DEP) + GO_BUILD_DEP := +else ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + # Special source package just for gccgo. + GNAT_BUILD_DEP := + GDC_BUILD_DEP := $(SOURCE_BUILD_DEP) +endif + + +else +# build cross compiler + CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch), +ifneq (,$(findstring cross-build-,$(build_type))) + CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch), +endif + SOURCE_BUILD_DEP := + ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), + endif + GNAT_BUILD_DEP := + arch_gnutype_map = $(DEB_TARGET_ARCH)=$(TARGET_ALIAS) +endif # cross compiler + +BASE_BREAKS := gnat (<< 7) +# these would need proper updates, and are only needed for upgrades +ifneq (,$(filter $(distrelease),stretch jessie trusty xenial bionic cosmic)) + BASE_BREAKS := +endif + + +# The numeric part of the gcc version number (x.yy.zz) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') +# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION +# or TARGET_ALIAS changes), or last version available for all architectures +DEB_GCC_SOFT_VERSION := 8 +DEB_GNAT_SOFT_VERSION := 8 + +ifeq ($(with_d),yes) + GDC_VERSION := $(BASE_VERSION) + DEB_GDC_VERSION := $(DEB_VERSION) +endif + +ifeq ($(with_m2),yes) + GM2_VERSION := $(BASE_VERSION) + DEB_GM2_VERSION := $(DEB_VERSION) +endif + +# semiautomatic ... +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 5 +DEB_SOEVERSION := $(EPOCH):5 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := $(DEB_SOVERSION) + +DEB_GCC_VERSION := $(DEB_VERSION) + +DEB_GNAT_VERSION := $(DEB_VERSION) +ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION) + endif +endif + +GNAT_VERSION := $(BASE_VERSION) + +LIBGNAT_DEP := +ifeq ($(with_libgnat),yes) + LIBGNAT_DEP := libgnat-$(GNAT_VERSION)$(LS)$(AQ) (>= $${gcc:Version}) +endif + +pkg_ver := -$(BASE_VERSION) + +ctrl_flags = \ + -DBINUTILSV=$(BINUTILSV) \ + -DBINUTILSBDV=$(BINUTILSBDV) \ + -DSRCNAME=$(PKGSOURCE) \ + -D__$(DEB_TARGET_GNU_CPU)__ \ + -DARCH=$(DEB_TARGET_ARCH) \ + -DDIST=$(distribution) \ + -DLOCALES=$(LOCALES) \ + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ + -DLIBC_DBG_DEP="$(LIBC_DBG_DEP)" \ + -DBASE_BUILD_DEP="$(BASE_BUILD_DEP)" \ + -DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \ + -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ + -DGO_BUILD_DEP="$(GO_BUILD_DEP)" \ + -DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \ + -DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ + -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ + -DSDT_BUILD_DEP="$(SDT_BUILD_DEP)" \ + -DISL_BUILD_DEP="$(ISL_BUILD_DEP)" \ + -DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \ + -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ + -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ + -DDEBHELPER_BUILD_DEP="$(DEBHELPER_BUILD_DEP)" \ + -DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \ + -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ + -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ + -DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \ + -DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \ + -DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \ + -DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \ + -DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \ + -DMULTILIB_ARCHS="$(multilib_archs)" \ + -DNEON_ARCHS="$(neon_archs)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) \ + -DAQ=$(AQ) \ + -DNT=$(NT) + +ifeq ($(DEB_CROSS),yes) + ctrl_flags += \ + -DTARGET=$(DEB_TARGET_ARCH) \ + -DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \ + -DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)" + ifeq ($(DEB_STAGE),rtlibs) + ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH) + endif +else + # add '-DPRI=optional' to ctrl_flags if this is not the default compiler + # ctrl_flags += \ + # -DPRI=optional +endif + +ifeq ($(with_base_only),yes) + ctrl_flags += \ + -DBASE_ONLY=yes +endif + +ifeq ($(with_multiarch_lib),yes) + ctrl_flags += \ + -DMULTIARCH=yes +endif + +control: control-file readme-bugs-file parameters-file symbols-files copyright-file substvars-file versioned-files check-versions + +# stage1 and stage2 compilers are only C +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + languages = c + addons = gccbase cdev plugindev + ifeq ($(with_gcclbase),yes) + addons += gcclbase + endif + ifeq ($(multilib),yes) + addons += multilib + endif + addons += $(if $(findstring armel,$(biarchhfarchs)),armml) + addons += $(if $(findstring armhf,$(biarchsfarchs)),armml) + addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) + ifeq ($(DEB_STAGE),stage2) + addons += libgcc + ifeq ($(multilib),yes) + addons += lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc) + endif + else + LIBC_BIARCH_DEV_DEP := + endif +else +languages = c c++ fortran objc objpp +ifeq ($(DEB_STAGE),rtlibs) + ifeq (,$(filter libgfortran, $(with_rtlibs))) + languages := $(filter-out fortran, $(languages)) + endif + ifeq (,$(filter libobjc, $(with_rtlibs))) + languages := $(filter-out objc objpp, $(languages)) + endif +endif +ifeq ($(with_gccbase),yes) + addons += gccbase +endif +ifeq ($(with_gcclbase),yes) + addons += gcclbase +endif +ifneq ($(DEB_STAGE),rtlibs) + addons += cdev c++dev source multilib + ifeq ($(build_type),build-native) + addons += testresults + endif + ifneq (,$(filter fortran, $(languages))) + addons += fdev + endif + ifneq (,$(filter objc, $(languages))) + addons += objcdev + endif + ifneq (,$(filter objpp, $(languages))) + addons += objppdev + endif + ifneq (,$(filter brig, $(enabled_languages))) + addons += brigdev + endif + addons += plugindev +endif +addons += $(if $(findstring armel,$(biarchhfarchs)),armml) +addons += $(if $(findstring armhf,$(biarchsfarchs)),armml) +addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) +ifeq ($(with_libgcc),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc) +endif +ifeq ($(with_libcxx),yes) + addons += libcxx lib32cxx lib64cxx libn32cxx + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cxx) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfcxx) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfcxx) +endif +addons += $(if $(findstring amd64,$(biarchx32archs)),libx32dbgcxx) +addons += $(if $(findstring armel,$(biarchhfarchs)),libhfdbgcxx) +addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfdbgcxx) +ifeq ($(with_libgfortran),yes) + addons += libgfortran lib32gfortran lib64gfortran libn32gfortran + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gfortran) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgfortran) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgfortran) +endif +ifeq ($(with_libobjc),yes) + addons += libobjc lib32objc lib64objc libn32objc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32objc) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfobjc) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfobjc) +endif +ifeq ($(with_libgomp),yes) + addons += libgomp lib32gomp lib64gomp libn32gomp + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gomp) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgomp) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgomp) +endif +ifeq ($(with_libitm),yes) + addons += libitm lib32itm lib64itm libn32itm + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32itm) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfitm) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfitm) +endif +ifeq ($(with_libatomic),yes) + addons += libatomic lib32atomic lib64atomic libn32atomic + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32atomic) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfatomic) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfatomic) +endif +ifeq ($(with_libbacktrace),yes) + addons += libbtrace lib32btrace lib64btrace libn32btrace + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32btrace) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfbtrace) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfbtrace) +endif +ifeq ($(with_libasan),yes) + addons += libasan lib32asan lib64asan libn32asan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32asan) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfasan) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfasan) +endif +ifeq ($(with_liblsan),yes) + addons += liblsan lib32lsan lib64lsan libn32lsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32lsan) + #addons += $(if $(findstring armel,$(biarchhfarchs)),libhflsan) + #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsflsan) +endif +ifeq ($(with_libtsan),yes) + addons += libtsan + addons += libtsan #lib32tsan lib64tsan libn32tsan + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32tsan) + #addons += $(if $(findstring armel,$(biarchhfarchs)),libhftsan) + #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsftsan) +endif +ifeq ($(with_libubsan),yes) + addons += libubsan lib32ubsan lib64ubsan libn32ubsan + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ubsan) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfubsan) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfubsan) +endif +ifeq ($(with_vtv),yes) + addons += libvtv lib32vtv lib64vtv #libn32vtv + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32vtv) + #addons += $(if $(findstring armel,$(biarchhfarchs)),libhfvtv) + #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfvtv) +endif +ifeq ($(with_libqmath),yes) + addons += libqmath lib32qmath lib64qmath libn32qmath + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfqmath) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfqmath) +endif +ifeq ($(with_jit),yes) + addons += jit +endif +ifeq ($(with_libgccjit),yes) + addons += libjit +endif +ifeq ($(with_offload_nvptx),yes) + addons += olnvptx libgompnvptx +endif +ifeq ($(with_offload_hsa),yes) + addons += olhsa libgomphsa +endif +ifeq ($(with_libcc1),yes) + addons += libcc1 +endif +ifeq ($(with_d),yes) + languages += d + ifeq ($(with_libphobos),yes) + addons += libphobos libn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) + endif + ifeq ($(with_libphobosdev),yes) + addons += libdevphobos libdevn32phobos + addons += $(if $(findstring amd64,$(biarchx32archs)),libdevx32phobos) + endif +endif +ifeq ($(with_go),yes) + addons += ggo godev + ifeq ($(with_libgo),yes) + addons += libggo lib32ggo lib64ggo libn32ggo + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + endif +endif +ifeq ($(with_m2),yes) + languages += m2 + addons += libdevgm2 + ifeq ($(with_libgm2),yes) + addons += libgm2 # lib32gm2 lib64gm2 libn32gm2 + #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) + endif +endif +ifeq ($(with_ada),yes) + languages += ada + addons += libgnat libs # libgmath libnof lib64gnat ssp + ifeq ($(with_gnatsjlj),yes) + addons += adasjlj + endif +endif +ifeq ($(with_brig),yes) + addons += brig + ifeq ($(with_libhsailrt),yes) + addons += libhsail # lib32hsail lib64hsail libn32hsail + addons += # $(if $(findstring amd64,$(biarchx32archs)),libx32hsail) + endif +endif + + ifneq ($(DEB_CROSS),yes) + ifneq (,$(neon_archs)) + addons += libneongcc libneongomp libneonitm libneonobjc libneongfortran libneoncxx + endif + endif # DEB_CROSS + ifeq ($(with_separate_libgo),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out go,$(languages)) + addons := $(filter-out ggo godev libggo lib64ggo lib32ggo libn32ggo libx32ggo,$(addons)) + endif + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + languages = go + addons = ggo godev libggo lib64ggo lib32ggo libn32ggo gccbase multilib + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) + ifeq ($(with_standalone_go),yes) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc + addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) + addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc) + addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc) + ifeq ($(with_libcc1),yes) + addons += libcc1 + endif + endif + endif + endif + ifeq ($(with_standalone_go),yes) + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + ctrl_flags += -DSTANDALONEGO + endif + endif + ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out ada,$(languages)) + addons := $(filter-out libgnat adasjlj,$(addons)) + endif + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + languages = ada + addons = gnatbase libgnat + endif + endif + ifeq ($(with_separate_gdc),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out d,$(languages)) + endif + ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION)) + languages = d + addons = + ifeq ($(with_libphobos),yes) + addons += libphobos + endif + ifeq ($(with_libphobosdev),yes) + addons += libdevphobos + endif + endif + endif + ifneq ($(DEB_CROSS),yes) # no docs for cross compilers + ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc + endif + endif +endif # not stage + +control-file: + echo "addons: $(addons)"; \ + m4 $(ctrl_flags) \ + -DPV=$(pkg_ver) \ + -DCXX_SO=$(CXX_SONAME) \ + -DGCC_SO=$(GCC_SONAME) \ + -DOBJC_SO=$(OBJC_SONAME) \ + -DFORTRAN_SO=$(FORTRAN_SONAME) \ + -DGNAT_SO=$(GNAT_SONAME) \ + -DGNAT_V=$(GNAT_VERSION) \ + -DPHOBOS_V=$(GPHOBOS_SONAME) \ + -DGM2_V=$(GM2_SONAME) \ + -DGDRUNTIME_V=$(GDRUNTIME_SONAME) \ + -DGOMP_SO=$(GOMP_SONAME) \ + -DITM_SO=$(ITM_SONAME) \ + -DATOMIC_SO=$(ATOMIC_SONAME) \ + -DBTRACE_SO=$(BTRACE_SONAME) \ + -DASAN_SO=$(ASAN_SONAME) \ + -DLSAN_SO=$(LSAN_SONAME) \ + -DTSAN_SO=$(TSAN_SONAME) \ + -DUBSAN_SO=$(UBSAN_SONAME) \ + -DVTV_SO=$(VTV_SONAME) \ + -DQMATH_SO=$(QUADMATH_SONAME) \ + -DSSP_SO=$(SSP_SONAME) \ + -DGO_SO=$(GO_SONAME) \ + -DCC1_SO=$(CC1_SONAME) \ + -DGCCJIT_SO=$(GCCJIT_SONAME) \ + -DHSAIL_SO=$(HSAIL_SONAME) \ + -Denabled_languages="$(languages) $(addons)" \ + -Dada_no_archs="$(ada_no_archs)" \ + -Dfortran_no_archs="$(fortran_no_archs)" \ + -Dlibgc_no_archs="$(libgc_no_archs)" \ + -Dlibphobos_archs="$(phobos_archs)" \ + -Dlibphobos_no_archs="$(phobos_no_archs)" \ + -Dcheck_no_archs="$(check_no_archs)" \ + -Dlocale_no_archs="$(locale_no_archs)" \ + -Dlinux_gnu_archs="$(linux_gnu_archs)" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \ + -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \ + -Dbiarchx32_archs="$(strip $(subst /, ,$(biarchx32archs)))" \ + -Dbiarchhf_archs="$(strip $(subst /, ,$(biarchhfarchs)))" \ + -Dbiarchsf_archs="$(strip $(subst /, ,$(biarchsfarchs)))" \ + -Dadd_built_using=$(add_built_using) \ + -DGCC_PORTS_BUILD=$(GCC_PORTS_BUILD) \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 | sed '/^Build/s/ *, */, /g;/^ /s/ *, */, /g' \ + $(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \ + > debian/control.tmp + rm -f debian/control.tmp2 + [ -e debian/control ] \ + && cmp -s debian/control debian/control.tmp \ + && rm -f debian/control.tmp && exit 0; \ + mv debian/control.tmp debian/control; touch $(control_stamp) + +readme-bugs-file: + m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ + debian/README.Bugs.m4 > debian/README.Bugs + +copyright-file: + rm -f debian/copyright + if echo $(SOURCE_VERSION) | grep -E ^'[0-9][0-9]*\.[0-9]-[0-9]{8}' ; \ + then SVN_BRANCH="trunk" ; \ + else \ + SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ + fi ; \ + sed debian/copyright.in \ + -e "s/@BV@/$(BASE_VERSION)/g" \ + -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ + > debian/copyright + +substvars-file: control-file + rm -f debian/substvars.local.tmp + ( \ + echo 'libgcc:Version=$(DEB_LIBGCC_VERSION)'; \ + echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ + echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ + echo 'gm2:Version=$(DEB_GM2_VERSION)'; \ + echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ + echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \ + echo 'binutils:Version=$(BINUTILSV)'; \ + echo 'dep:libgcc=$(LIBGCC_DEP)'; \ + echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \ + echo 'dep:libgccbiarch=$(libgccbiarch)'; \ + echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \ + echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \ + echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ + echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ + echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ + echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ + echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \ + echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ + echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ + echo 'base:Breaks=$(BASE_BREAKS)'; \ + ) > debian/substvars.local.tmp +ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) + ( \ + echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ + ) >> debian/substvars.local.tmp +endif +ifeq ($(with_gold),yes) + echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_gomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_itm),yes) + echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_atomic),yes) + echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libbacktrace),yes) + echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_asan),yes) + echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lsan),yes) + echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_tsan),yes) + echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_ubsan),yes) + echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_vtv),yes) + echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_qmath),yes) + echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(distribution),Debian) + echo 'dep:libx32z=$(if $(filter $(distribution), Debian),,libx32z1-dev)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(multilib),yes) + echo 'dep:libgfortranbiarchdev=$(libgfortranbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libobjcbiarchdev=$(libobjcbiarchdev)' \ + >> debian/substvars.local.tmp + ifeq ($(with_phobos),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libssp),yes) + echo 'dep:libsspbiarch=$(libsspbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_gomp),yes) + echo 'dep:libgompbiarch=$(libgompbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_itm),yes) + echo 'dep:libitmbiarch=$(libitmbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_atomic),yes) + echo 'dep:libatomicbiarch=$(libatomicbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libbacktrace),yes) + echo 'dep:libbtracebiarch=$(libbtracebiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_asan),yes) + echo 'dep:libasanbiarch=$(libasanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_lsan),yes) + #echo 'dep:liblsanbiarch=$(liblsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_tsan),yes) + #echo 'dep:libtsanbiarch=$(libtsanbiarch)' \ + # >> debian/substvars.local.tmp + endif + ifeq ($(with_ubsan),yes) + echo 'dep:libubsanbiarch=$(libubsanbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_vtv),yes) + echo 'dep:libvtvbiarch=$(libvtvbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_qmath),yes) + echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_go),yes) + echo 'dep:libgobiarchdev=$(libgobiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libgobiarch=$(libgobiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_CROSS),yes) + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_phobos),yes) + echo 'dep:phobosdev=libgphobos$(pkg_ver)-dev$(LS)$(AQ) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + ifeq ($(DEB_CROSS),yes) + : # FIXME: make the cross gdc aware of both include paths + echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(with_cc1),yes) + ifneq (,$(findstring build-cross, $(build_type))) + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:SoftVersion})' \ + >> debian/substvars.local.tmp + else + echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp + endif +endif +ifeq ($(DEB_HOST_ARCH),hppa) + echo 'dep:prctl=prctl' >> debian/substvars.local.tmp +endif +ifeq ($(derivative)-$(DEB_HOST_ARCH),Debian-amd64) + echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp +endif +ifeq ($(with_multiarch_lib),yes) + echo 'multiarch:breaks=gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp +endif + echo 'golang:Conflicts=golang-go (<< 2:1.3.3-1ubuntu2)' >> debian/substvars.local.tmp +ifeq ($(add_built_using),yes) + echo "Built-Using=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W gcc$(pkg_ver)-source)" \ + >> debian/substvars.local.tmp +endif + v=`sed -n '/^#define MOD_VERSION/s/.* "\([0-9]*\)"/\1/p' \ + $(srcdir)/gcc/fortran/module.c`; \ + echo "fortran:mod-version=gfortran-mod-$$v" >> debian/substvars.local.tmp + + [ -e debian/substvars.local ] \ + && cmp -s debian/substvars.local debian/substvars.local.tmp \ + && rm -f debian/substvars.local.tmp && exit 0; \ + mv debian/substvars.local.tmp debian/substvars.local; \ + touch $(control_stamp) + +parameters-file: + rm -f debian/rules.parameters.tmp + ( \ + echo '# configuration parameters taken from upstream source files'; \ + echo 'GCC_VERSION := $(GCC_VERSION)'; \ + echo 'NEXT_GCC_VERSION := $(NEXT_GCC_VERSION)'; \ + echo 'BASE_VERSION := $(BASE_VERSION)'; \ + echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ + echo 'DEB_VERSION := $(DEB_VERSION)'; \ + echo 'DEB_EVERSION := $(DEB_EVERSION)'; \ + echo 'DEB_GDC_VERSION := $(DEB_GDC_VERSION)'; \ + echo 'DEB_SOVERSION := $(DEB_SOVERSION)'; \ + echo 'DEB_SOEVERSION := $(DEB_SOEVERSION)'; \ + echo 'DEB_LIBGCC_SOVERSION := $(DEB_LIBGCC_SOVERSION)'; \ + echo 'DEB_LIBGCC_VERSION := $(DEB_LIBGCC_VERSION)'; \ + echo 'DEB_STDCXX_SOVERSION := $(DEB_STDCXX_SOVERSION)'; \ + echo 'DEB_GOMP_SOVERSION := $(DEB_GOMP_SOVERSION)'; \ + echo 'GCC_SONAME := $(GCC_SONAME)'; \ + echo 'CXX_SONAME := $(CXX_SONAME)'; \ + echo 'FORTRAN_SONAME := $(FORTRAN_SONAME)'; \ + echo 'OBJC_SONAME := $(OBJC_SONAME)'; \ + echo 'GDC_VERSION := $(GDC_VERSION)'; \ + echo 'GNAT_VERSION := $(GNAT_VERSION)'; \ + echo 'GNAT_SONAME := $(GNAT_SONAME)'; \ + echo 'FFI_SONAME := $(FFI_SONAME)'; \ + echo 'SSP_SONAME := $(SSP_SONAME)'; \ + echo 'GOMP_SONAME := $(GOMP_SONAME)'; \ + echo 'ITM_SONAME := $(ITM_SONAME)'; \ + echo 'ATOMIC_SONAME := $(ATOMIC_SONAME)'; \ + echo 'BTRACE_SONAME := $(BTRACE_SONAME)'; \ + echo 'ASAN_SONAME := $(ASAN_SONAME)'; \ + echo 'LSAN_SONAME := $(LSAN_SONAME)'; \ + echo 'TSAN_SONAME := $(TSAN_SONAME)'; \ + echo 'UBSAN_SONAME := $(UBSAN_SONAME)'; \ + echo 'VTV_SONAME := $(VTV_SONAME)'; \ + echo 'QUADMATH_SONAME := $(QUADMATH_SONAME)'; \ + echo 'GO_SONAME := $(GO_SONAME)'; \ + echo 'CC1_SONAME := $(CC1_SONAME)'; \ + echo 'GCCJIT_SONAME := $(GCCJIT_SONAME)'; \ + echo 'GPHOBOS_SONAME := $(GPHOBOS_SONAME)'; \ + echo 'GDRUNTIME_SONAME := $(GDRUNTIME_SONAME)'; \ + echo 'GM2_SONAME := $(GM2_SONAME)'; \ + echo 'HSAIL_SONAME := $(HSAIL_SONAME)'; \ + echo 'LIBC_DEP := $(LIBC_DEP)'; \ + ) > debian/rules.parameters.tmp + [ -e debian/rules.parameters ] \ + && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ + && rm -f debian/rules.parameters.tmp && exit 0; \ + mv debian/rules.parameters.tmp debian/rules.parameters; \ + touch $(control_stamp) + +symbols-files: control-file +ifeq ($(DEB_CROSS),yes) + ifneq ($(DEB_STAGE),rtlibs) + test -n "$(LS)" + set -e; \ + for p in $$(dh_listpackages -i | grep '^lib'); do \ + p=$${p%$(LS)}; \ + if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \ + f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \ + elif [ -f debian/$$p.symbols ]; then \ + f=debian/$$p.symbols; \ + else \ + continue; \ + fi; \ + link=debian/$$p$(LS).symbols; \ + if [ -L $$link ]; then \ + echo >&2 "removing left over symbols file link: $$link"; \ + rm -f $$link; \ + fi; \ + ln -s $$f $$link; \ + done + endif + ifeq ($(with_libphobosdev),yes) + echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ + >> debian/substvars.local.tmp + echo 'dep:libphobosbiarch=$(libgphobosbiarch)' \ + >> debian/substvars.local.tmp + endif +endif + +versioned-files: + fs=`echo debian/*BV* debian/*CXX* debian/*LC* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -f $$f ] || continue; \ + if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@CXX@/$(CXX_SONAME)/g' \ + -e 's/@LC@/$(GCC_SONAME)/g' \ + -e 's/@SRC@/$(PKGSOURCE)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ + -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ + -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done + for t in ar nm ranlib; do \ + sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \ + debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \ + done + +# don't encode versioned build dependencies in the control file, but check +# these here instead. +check-versions: + v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \ + if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \ + echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \ + exit 1; \ + fi + v=$$(dpkg-query -l binutils binutils-multiarch 2>/dev/null | awk '/^.i/ {print $$3;exit}'); \ + if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \ + echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \ + exit 1; \ + fi + +.PRECIOUS: $(stampdir)/%-stamp diff --git a/rules.d/binary-ada.mk b/rules.d/binary-ada.mk new file mode 100644 index 0000000..6e7af67 --- /dev/null +++ b/rules.d/binary-ada.mk @@ -0,0 +1,348 @@ +ifeq ($(with_separate_gnat),yes) + $(lib_binaries) += gnatbase +endif + +ifeq ($(with_libgnat),yes) + # During native builds, gnat-BV Depends: + # * libgnat, libgnatvsn because gnat1 is linked dynamically + # * libgnat because of the development symlink. + # During cross builds, gnat1 is linked statically. Only the latter remains. + $(lib_binaries) += libgnat + ifneq ($(DEB_CROSS),yes) + $(lib_binaries) += libgnatvsn + endif +endif + +arch_binaries := $(arch_binaries) ada +ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) ada-doc + endif +endif + +p_gbase = $(p_xbase) +p_glbase = $(p_lbase) +ifeq ($(with_separate_gnat),yes) + p_gbase = gnat$(pkg_ver)$(cross_bin_arch)-base + p_glbase = gnat$(pkg_ver)$(cross_bin_arch)-base +endif + +p_gnat = gnat-$(GNAT_VERSION)$(cross_bin_arch) +p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) +p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch) +p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_lgnatvsn = libgnatvsn$(GNAT_VERSION)$(cross_lib_arch) +p_lgnatvsn_dev = libgnatvsn$(GNAT_VERSION)-dev$(cross_lib_arch) +p_lgnatvsn_dbg = libgnatvsn$(GNAT_VERSION)-dbg$(cross_lib_arch) +p_gnatd = $(p_gnat)-doc + +d_gbase = debian/$(p_gbase) +d_gnat = debian/$(p_gnat) +d_gnatsjlj = debian/$(p_gnatsjlj) +d_lgnat = debian/$(p_lgnat) +d_lgnatvsn = debian/$(p_lgnatvsn) +d_lgnatvsn_dev = debian/$(p_lgnatvsn_dev) +d_gnatd = debian/$(p_gnatd) + +GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatlink \ + gnatls gnatmake gnatname gnatprep gnatxref gnathtml + +ifeq ($(with_gnatsjlj),yes) + rts_subdir = +endif + +dirs_gnat = \ + $(docdir)/$(p_gbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir)/{adalib,adainclude} \ + $(gcc_lexec_dir) + +files_gnat = \ + $(gcc_lexec_dir)/gnat1 \ + $(gcc_lib_dir)/adainclude/*.ad[bs] \ + $(gcc_lib_dir)/adalib/*.ali \ + $(gcc_lib_dir)/adalib/lib*.a \ + $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) + +dirs_lgnat = \ + $(docdir) \ + $(PF)/lib +files_lgnat = \ + $(usr_lib)/lib{gnat,gnarl}-$(GNAT_SONAME).so.1 + +$(binary_stamp)-gnatbase: $(install_stamp) + dh_testdir + dh_testroot + dh_installdocs -p$(p_gbase) debian/README.gnat debian/README.maintainers + : # $(p_gbase) +ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + mkdir -p $(d_gbase)/$(docdir)/$(p_xbase) + ln -sf ../$(p_gbase) $(d_gbase)/$(docdir)/$(p_xbase)/Ada +endif + dh_installchangelogs -p$(p_gbase) src/gcc/ada/ChangeLog + dh_compress -p$(p_gbase) + dh_fixperms -p$(p_gbase) + dh_gencontrol -p$(p_gbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gbase) + dh_md5sums -p$(p_gbase) + dh_builddeb -p$(p_gbase) + touch $@ + + +$(binary_stamp)-libgnat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + : # libgnat + rm -rf $(d_lgnat) + dh_installdirs -p$(p_lgnat) $(dirs_lgnat) + + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d)/$(gcc_lib_dir)/$(rts_subdir)/adalib/$$vlib.so.1 $(d)/$(usr_lib)/. ; \ + rm -f $(d)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + done + $(dh_compat2) dh_movefiles -p$(p_lgnat) $(files_lgnat) + + debian/dh_doclink -p$(p_lgnat) $(p_glbase) + + debian/dh_rmemptydirs -p$(p_lgnat) + + b=libgnat; \ + v=$(GNAT_VERSION); \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) \ + -V '$(p_lgnat) (>= $(shell echo $(DEB_VERSION) | sed 's/-.*//'))' + $(call cross_mangle_shlibs,$(p_lgnat)) + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + mkdir -p $(d_lgnat)/usr/share/lintian/overrides + echo package-name-doesnt-match-sonames > \ + $(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat) +endif + + dh_strip -p$(p_lgnat) --dbg-package=$(p_lgnat_dbg) + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \ + $(call shlibdirs_to_search, \ + $(subst gnat-$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnat)) \ + $(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnat)) + + : # $(p_lgnat_dbg) + debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) + + echo $(p_lgnat) $(p_lgnat_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgnatvsn: $(install_stamp) + : # $(p_lgnatvsn_dev) + dh_install -p$(p_lgnatvsn_dev) --autodest \ + $(usr_lib)/ada/adalib/gnatvsn \ + usr/share/ada/adainclude/gnatvsn \ + usr/share/gpr/gnatvsn.gpr usr/share/gpr/gnat_util.gpr \ + $(usr_lib)/libgnatvsn.a \ + $(usr_lib)/libgnatvsn.so + debian/dh_doclink -p$(p_lgnatvsn_dev) $(p_glbase) + dh_strip -p$(p_lgnatvsn_dev) -X.a --keep-debug + + : # $(p_lgnatvsn) + mkdir -p $(d_lgnatvsn)/usr/share/lintian/overrides + echo missing-dependency-on-libc \ + > $(d_lgnatvsn)/usr/share/lintian/overrides/$(p_lgnatvsn) + dh_install -p$(p_lgnatvsn) --autodest $(usr_lib)/libgnatvsn.so.* + debian/dh_doclink -p$(p_lgnatvsn) $(p_glbase) + dh_strip -p$(p_lgnatvsn) --dbg-package=$(p_lgnatvsn_dbg) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnatvsn) \ + -V '$(p_lgnatvsn) (>= $(DEB_VERSION))' + $(call cross_mangle_shlibs,$(p_lgnatvsn)) + cat debian/$(p_lgnatvsn)/DEBIAN/shlibs >> debian/shlibs.local + $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnatvsn) \ + $(call shlibdirs_to_search, \ + $(subst gnatvsn$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnatvsn)) \ + $(subst gnatvsn$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnatvsn)) \ + $(subst gnatvsn$(GNAT_SONAME),gnat-$(GNAT_SONAME),$(p_lgnatvsn)) \ + ,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) + $(call cross_mangle_substvars,$(p_lgnatvsn)) + + : # $(p_lgnatvsn_dbg) + debian/dh_doclink -p$(p_lgnatvsn_dbg) $(p_glbase) + + echo $(p_lgnatvsn) $(p_lgnatvsn_dev) $(p_lgnatvsn_dbg) >> debian/$(lib_binaries) + + touch $@ + +$(binary_stamp)-ada: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + : # $(p_gnat) + rm -rf $(d_gnat) + dh_installdirs -p$(p_gnat) $(dirs_gnat) + : # Upstream does not install gnathtml. + cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) + $(dh_compat2) dh_movefiles -p$(p_gnat) $(files_gnat) + +ifeq ($(with_gnatsjlj),yes) + dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) + $(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude +endif + +ifeq ($(with_libgnat),yes) + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + dh_link -p$(p_gnat) \ + /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$vlib.so \ + /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$lib.so; \ + done + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + dh_link -p$(p_gnat) \ + /$(usr_lib)/$$vlib.so.1 $(gcc_lib_dir)/$(rts_subdir)adalib/$$lib.so; \ + done +endif + debian/dh_doclink -p$(p_gnat) $(p_gbase) +ifeq ($(with_gnatsjlj),yes) + debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) +endif +ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + ifeq ($(with_check),yes) + cp -p test-summary $(d_gnat)/$(docdir)/$(p_gbase)/. + endif +else + mkdir -p $(d_gnat)/$(docdir)/$(p_gbase)/ada + cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/. +endif + + for i in $(GNAT_TOOLS); do \ + case "$$i" in \ + gnat) cp -p debian/gnat.1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \ + *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \ + esac; \ + done + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + : # still ship the unversioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$(cmd_prefix)$$i; \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i.1.gz; \ + done + ifeq ($(unprefixed_names),yes) + : # ship the versioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + + : # still ship the unversioned names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$$i; \ + ln -sf gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$$i.1.gz; \ + done + + endif +else + : # still ship the unversioned prefixed names in the gnat package. + for i in $(GNAT_TOOLS); do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gnat)/$(PF)/bin/$(cmd_prefix)$$i; \ + ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ + $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i.1.gz; \ + done +endif + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + dh_install -p$(p_gnat) debian/ada/debian_packaging.mk usr/share/ada + mv $(d_gnat)/usr/share/ada/debian_packaging.mk \ + $(d_gnat)/usr/share/ada/debian_packaging-$(GNAT_VERSION).mk +endif + : # keep this one unversioned, see Debian #802838. + dh_link -p$(p_gnat) \ + usr/bin/$(cmd_prefix)gcc$(pkg_ver) usr/bin/$(cmd_prefix)gnatgcc +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_link -p$(p_gnat) \ + usr/share/man/man1/$(cmd_prefix)gcc$(pkg_ver).1.gz \ + usr/share/man/man1/$(cmd_prefix)gnatgcc.1.gz +endif +ifeq ($(unprefixed_names),yes) + dh_link -p$(p_gnat) \ + usr/bin/$(cmd_prefix)gcc$(pkg_ver) usr/bin/gnatgcc + ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_link -p$(p_gnat) \ + usr/share/man/man1/$(cmd_prefix)gcc$(pkg_ver).1.gz \ + usr/share/man/man1/gnatgcc.1.gz + endif +endif + debian/dh_rmemptydirs -p$(p_gnat) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gnat)/$(gcc_lexec_dir)/gnat1 +endif + dh_strip -p$(p_gnat) + find $(d_gnat) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnat) + mkdir -p $(d_gnat)/usr/share/lintian/overrides + echo '$(p_gnat) binary: hardening-no-pie' \ + > $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gnat) binary: binary-without-manpage' \ + >> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) +endif + + echo $(p_gnat) >> debian/arch_binaries + +ifeq ($(with_gnatsjlj),yes) + dh_strip -p$(p_gnatsjlj) + find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 + dh_shlibdeps -p$(p_gnatsjlj) + echo $(p_gnatsjlj) >> debian/arch_binaries +endif + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +$(build_gnatdoc_stamp): $(build_stamp) + mkdir -p html + rm -f html/*.info + echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'cd html && \ + echo "generating {}-$(GNAT_VERSION).info"; \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -I $(builddir)/gcc \ + -o {}-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/{}.texi' + touch $@ + +$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnatd) + dh_installdirs -p$(p_gnatd) \ + $(PF)/share/info + cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/. + dh_installdocs -p$(p_gnatd) \ + html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html + echo $(p_gnatd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-base.mk b/rules.d/binary-base.mk new file mode 100644 index 0000000..bac6087 --- /dev/null +++ b/rules.d/binary-base.mk @@ -0,0 +1,58 @@ +arch_binaries += base +ifeq ($(with_gcclbase),yes) + ifneq ($(with_base_only),yes) + indep_binaries += lbase + endif +endif + +# --------------------------------------------------------------------------- +# gcc-base + +ifneq (,$(filter $(distrelease),oneiric precise wheezy sid)) + additional_links = +else ifneq (,$(filter $(distrelease),)) + additional_links = +else + additional_links = +endif + +$(binary_stamp)-base: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_base) + dh_installdirs -p$(p_base) \ + $(gcc_lexec_dir) + +ifeq ($(with_base_only),yes) + dh_installdocs -p$(p_base) debian/README.Debian +else + dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH) +endif + rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian + dh_installchangelogs -p$(p_base) + dh_compress -p$(p_base) + dh_fixperms -p$(p_base) +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + $(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +else + dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) +endif + dh_installdeb -p$(p_base) + dh_md5sums -p$(p_base) + dh_builddeb -p$(p_base) + touch $@ + +$(binary_stamp)-lbase: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_lbase) + dh_installdocs -p$(p_lbase) debian/README.Debian + rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian + dh_installchangelogs -p$(p_lbase) + dh_compress -p$(p_lbase) + dh_fixperms -p$(p_lbase) + dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_lbase) + dh_md5sums -p$(p_lbase) + dh_builddeb -p$(p_lbase) + touch $@ diff --git a/rules.d/binary-brig.mk b/rules.d/binary-brig.mk new file mode 100644 index 0000000..8278988 --- /dev/null +++ b/rules.d/binary-brig.mk @@ -0,0 +1,79 @@ +ifneq ($(DEB_STAGE),rtlibs) +# ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) +# arch_binaries := $(arch_binaries) brig-multi +# endif + arch_binaries := $(arch_binaries) brig +endif + +p_brig = gccbrig$(pkg_ver)$(cross_bin_arch) +d_brig = debian/$(p_brig) + +p_brig_m= gccbrig$(pkg_ver)-multilib$(cross_bin_arch) +d_brig_m= debian/$(p_brig_m) + +dirs_brig = \ + $(docdir)/$(p_xbase)/BRIG \ + $(gcc_lexec_dir) + +files_brig = \ + $(PF)/bin/$(cmd_prefix)gccbrig$(pkg_ver) \ + $(gcc_lexec_dir)/brig1 + +$(binary_stamp)-brig: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_brig) + dh_installdirs -p$(p_brig) $(dirs_brig) + $(dh_compat2) dh_movefiles -p$(p_brig) $(files_brig) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gccbrig$(pkg_ver) \ + $(d_brig)/$(PF)/bin/gccbrig$(pkg_ver) +# ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) +# ln -sf $(cmd_prefix)gccbrig$(pkg_ver).1 \ +# $(d_brig)/$(PF)/share/man/man1/gccbrig$(pkg_ver).1 +# endif +endif + cp -p $(srcdir)/gcc/brig/ChangeLog \ + $(d_brig)/$(docdir)/$(p_xbase)/BRIG/changelog.BRIG + + mkdir -p $(d_brig)/usr/share/lintian/overrides + echo '$(p_brig) binary: hardening-no-pie' \ + > $(d_brig)/usr/share/lintian/overrides/$(p_brig) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_brig) binary: binary-without-manpage' \ + >> $(d_brig)/usr/share/lintian/overrides/$(p_brig) +endif + + debian/dh_doclink -p$(p_brig) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_brig) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_brig)/$(gcc_lexec_dir)/brig1 +endif + dh_strip -p$(p_brig) \ + $(if $(unstripped_exe),-X/brig1) + dh_shlibdeps -p$(p_brig) + echo $(p_brig) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-brig-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_brig_m) + dh_installdirs -p$(p_brig_m) $(docdir) + + debian/dh_doclink -p$(p_brig_m) $(p_xbase) + + dh_strip -p$(p_brig_m) + dh_shlibdeps -p$(p_brig_m) + echo $(p_brig_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-cpp.mk b/rules.d/binary-cpp.mk new file mode 100644 index 0000000..cbeeb26 --- /dev/null +++ b/rules.d/binary-cpp.mk @@ -0,0 +1,85 @@ +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) cpp + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) cpp-doc + endif + endif +endif + +dirs_cpp = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) + +files_cpp = \ + $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ + $(gcc_lexec_dir)/cc1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cpp += \ + $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp) + dh_installdirs -p$(p_cpp) $(dirs_cpp) + $(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 + endif +endif + + mkdir -p $(d_cpp)/usr/share/lintian/overrides + echo '$(p_cpp) binary: hardening-no-pie' \ + > $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cpp) binary: binary-without-manpage' \ + >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) +endif + + debian/dh_doclink -p$(p_cpp) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cpp) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) $(d_cpp)/$(gcc_lexec_dir)/cc1 +endif + dh_strip -p$(p_cpp) \ + $(if $(unstripped_exe),-X/cc1) + dh_shlibdeps -p$(p_cpp) + + echo $(p_cpp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cppd) + dh_installdirs -p$(p_cppd) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_cppd) \ + $(PF)/share/info/cpp* + + debian/dh_doclink -p$(p_cppd) $(p_xbase) + dh_installdocs -p$(p_cppd) html/cpp.html html/cppinternals.html + rm -f $(d_cppd)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_cppd) + echo $(p_cppd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-cxx.mk b/rules.d/binary-cxx.mk new file mode 100644 index 0000000..aaa3235 --- /dev/null +++ b/rules.d/binary-cxx.mk @@ -0,0 +1,85 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) cxx-multi + endif + arch_binaries := $(arch_binaries) cxx +endif + +dirs_cxx = \ + $(docdir)/$(p_xbase)/C++ \ + $(PF)/bin \ + $(PF)/share/info \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 +files_cxx = \ + $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ + $(gcc_lexec_dir)/cc1plus + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_cxx += \ + $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 +endif + +p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch) +d_cxx_m = debian/$(p_cxx_m) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + $(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/g++$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz + endif +endif + + mkdir -p $(d_cxx)/usr/share/lintian/overrides + echo '$(p_cxx) binary: hardening-no-pie' \ + > $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_cxx) binary: binary-without-manpage' \ + >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) +endif + + debian/dh_doclink -p$(p_cxx) $(p_xbase) + cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/ + cp -p $(srcdir)/gcc/cp/ChangeLog \ + $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog + debian/dh_rmemptydirs -p$(p_cxx) + + dh_shlibdeps -p$(p_cxx) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_cxx)/$(gcc_lexec_dir)/cc1plus +endif + dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus) + echo $(p_cxx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-cxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx_m) + dh_installdirs -p$(p_cxx_m) \ + $(docdir) + + debian/dh_doclink -p$(p_cxx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cxx_m) + + dh_strip -p$(p_cxx_m) + dh_shlibdeps -p$(p_cxx_m) + echo $(p_cxx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-d.mk b/rules.d/binary-d.mk new file mode 100644 index 0000000..d9f8e82 --- /dev/null +++ b/rules.d/binary-d.mk @@ -0,0 +1,282 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf))) + arch_binaries := $(arch_binaries) gdc-multi + endif + arch_binaries := $(arch_binaries) gdc + + ifeq ($(with_libphobosdev),yes) + $(lib_binaries) += libphobos-dev + endif + ifeq ($(with_libphobos),yes) + $(lib_binaries) += libphobos + endif + + ifeq ($(with_lib64phobosdev),yes) + $(lib_binaries) += lib64phobos-dev + endif + ifeq ($(with_lib32phobosdev),yes) + $(lib_binaries) += lib32phobos-dev + endif + ifeq ($(with_libn32phobosdev),yes) + $(lib_binaries) += libn32phobos-dev + endif + ifeq ($(with_libx32phobosdev),yes) + $(lib_binaries) += libx32phobos-dev + endif + ifeq ($(with_libhfphobosdev),yes) + $(lib_binaries) += libhfphobos-dev + endif + ifeq ($(with_libsfphobosdev),yes) + $(lib_binaries) += libsfphobos-dev + endif + + ifeq ($(with_lib64phobos),yes) + $(lib_binaries) += lib64phobos + endif + ifeq ($(with_lib32phobos),yes) + $(lib_binaries) += lib32phobos + endif + ifeq ($(with_libn32phobos),yes) + $(lib_binaries) += libn32phobos + endif + ifeq ($(with_libx32phobos),yes) + $(lib_binaries) += libx32phobos + endif + ifeq ($(with_libhfphobos),yes) + $(lib_binaries) += libhfphobos + endif + ifeq ($(with_libsfphobos),yes) + $(lib_binaries) += libsfphobos + endif +endif + +p_gdc = gdc$(pkg_ver)$(cross_bin_arch) +p_gdc_m = gdc$(pkg_ver)-multilib$(cross_bin_arch) +p_libphobos = libgphobos$(GPHOBOS_SONAME) +p_libphobosdev = libgphobos$(pkg_ver)-dev + +d_gdc = debian/$(p_gdc) +d_gdc_m = debian/$(p_gdc_m) +d_libphobos = debian/$(p_libphobos) +d_libphobosdev = debian/$(p_libphobosdev) + +ifeq ($(DEB_CROSS),yes) + gdc_include_dir := $(gcc_lib_dir)/include/d +else + gdc_include_dir := $(PF)/include/d/$(BASE_VERSION) +endif +# FIXME: always here? +gdc_include_dir := $(gcc_lib_dir)/include/d + +dirs_gdc = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) +ifneq ($(DEB_CROSS),yes) + dirs_gdc += \ + $(gdc_include_dir) +endif + +files_gdc = \ + $(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \ + $(gcc_lexec_dir)/d21 +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gdc += \ + $(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1 +endif + +dirs_libphobos = \ + $(PF)/lib \ + $(gdc_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gdc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc) + dh_installdirs -p$(p_gdc) $(dirs_gdc) + + dh_installdocs -p$(p_gdc) + dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog + + $(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc) + +ifeq ($(with_phobos),yes) + mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc)/$(gcc_lib_dir)/ +endif + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gdc$(pkg_ver) \ + $(d_gdc)/$(PF)/bin/gdc$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gdc$(pkg_ver).1 \ + $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1 + endif +endif + +# FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package + # Always needed by gdc. + mkdir -p $(d_gdc)/$(gdc_include_dir) + cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \ + $(d_gdc)/$(gdc_include_dir)/. +#ifneq ($(DEB_CROSS),yes) +# dh_link -p$(p_gdc) \ +# /$(gdc_include_dir) \ +# /$(dir $(gdc_include_dir))/$(GCC_VERSION) +#endif + + dh_link -p$(p_gdc) \ + /$(docdir)/$(p_gcc)/README.Bugs \ + /$(docdir)/$(p_gdc)/README.Bugs + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gdc)/$(gcc_lexec_dir)/d21 +endif + dh_strip -p$(p_gdc) \ + $(if $(unstripped_exe),-X/d21) + dh_shlibdeps -p$(p_gdc) + + mkdir -p $(d_gdc)/usr/share/lintian/overrides + echo '$(p_gdc) binary: hardening-no-pie' \ + > $(d_gdc)/usr/share/lintian/overrides/$(p_gdc) + + echo $(p_gdc) >> debian/arch_binaries + + find $(d_gdc) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gdc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gdc_m) + dh_installdirs -p$(p_gdc_m) $(docdir) + + debian/dh_doclink -p$(p_gdc_m) $(p_xbase) + + dh_strip -p$(p_gdc_m) + dh_shlibdeps -p$(p_gdc_m) + echo $(p_gdc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libphobos + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgphobos.so.* \ + $(usr_lib$(2))/libgdruntime.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgphobos.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gphobos$(GPHOBOS_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2), + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + echo "$$pkgname binary: embedded-library" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + dh_lintian -p$(p_l) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libphobos_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(call install_gcc_lib,libgdruntime,$(GDRUNTIME_SONAME),$(2),$(p_l)) + $(call install_gcc_lib,libgphobos,$(GPHOBOS_SONAME),$(2),$(p_l)) + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gdc_include_dir) + ) + + : # included in gdc package + rm -f $(d_l)/$(gdc_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) \ + $(if $(filter yes,$(with_separate_gdc)),$(p_gdc),$(p_lbase)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# don't put this as a comment within define/endef +# $(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l)) + +do_libphobos = $(call __do_libphobos,lib$(1)gphobos$(GPHOBOS_SONAME),$(1)) +do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)gphobos-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libphobos: $(install_stamp) + $(call do_libphobos,) + +$(binary_stamp)-lib64phobos: $(install_stamp) + $(call do_libphobos,64) + +$(binary_stamp)-lib32phobos: $(install_stamp) + $(call do_libphobos,32) + +$(binary_stamp)-libn32phobos: $(install_stamp) + $(call do_libphobos,n32) + +$(binary_stamp)-libx32phobos: $(install_stamp) + $(call do_libphobos,x32) + +$(binary_stamp)-libhfphobos: $(install_stamp) + $(call do_libphobos,hf) + +$(binary_stamp)-libsfphobos: $(install_stamp) + $(call do_libphobos,sf) + + +$(binary_stamp)-libphobos-dev: $(install_stamp) + $(call do_libphobos_dev,) + +$(binary_stamp)-lib64phobos-dev: $(install_stamp) + $(call do_libphobos_dev,64) + +$(binary_stamp)-lib32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,32) + +$(binary_stamp)-libx32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,x32) + +$(binary_stamp)-libn32phobos-dev: $(install_stamp) + $(call do_libphobos_dev,n32) + +$(binary_stamp)-libhfphobos-dev: $(install_stamp) + $(call do_libphobos_dev,hf) + +$(binary_stamp)-libsfphobos-dev: $(install_stamp) + $(call do_libphobos_dev,sf) diff --git a/rules.d/binary-fortran.mk b/rules.d/binary-fortran.mk new file mode 100644 index 0000000..8a04b51 --- /dev/null +++ b/rules.d/binary-fortran.mk @@ -0,0 +1,277 @@ +ifeq ($(with_libgfortran),yes) + $(lib_binaries) += libgfortran +endif +ifeq ($(with_fdev),yes) + $(lib_binaries) += libgfortran-dev +endif +ifeq ($(with_lib64gfortran),yes) + $(lib_binaries) += lib64fortran +endif +ifeq ($(with_lib64gfortrandev),yes) + $(lib_binaries) += lib64gfortran-dev +endif +ifeq ($(with_lib32gfortran),yes) + $(lib_binaries) += lib32fortran +endif +ifeq ($(with_lib32gfortrandev),yes) + $(lib_binaries) += lib32gfortran-dev +endif +ifeq ($(with_libn32gfortran),yes) + $(lib_binaries) += libn32fortran +endif +ifeq ($(with_libn32gfortrandev),yes) + $(lib_binaries) += libn32gfortran-dev +endif +ifeq ($(with_libx32gfortran),yes) + $(lib_binaries) += libx32fortran +endif +ifeq ($(with_libx32gfortrandev),yes) + $(lib_binaries) += libx32gfortran-dev +endif +ifeq ($(with_libhfgfortran),yes) + $(lib_binaries) += libhffortran +endif +ifeq ($(with_libhfgfortrandev),yes) + $(lib_binaries) += libhfgfortran-dev +endif +ifeq ($(with_libsfgfortran),yes) + $(lib_binaries) += libsffortran +endif +ifeq ($(with_libsfgfortrandev),yes) + $(lib_binaries) += libsfgfortran-dev +endif + +ifeq ($(with_fdev),yes) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) fdev-multi + endif + arch_binaries := $(arch_binaries) fdev + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) fortran-doc + endif + endif +endif + +p_g95 = gfortran$(pkg_ver)$(cross_bin_arch) +p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch) +p_g95d = gfortran$(pkg_ver)-doc +p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch) + +d_g95 = debian/$(p_g95) +d_g95_m = debian/$(p_g95_m) +d_g95d = debian/$(p_g95d) + +dirs_g95 = \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 +files_g95 = \ + $(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \ + $(gcc_lib_dir)/finclude \ + $(gcc_lexec_dir)/f951 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_g95 += \ + $(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1 +endif + +# ---------------------------------------------------------------------- +define __do_fortran + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgfortran.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gfortran$(FORTRAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst gfortran$(FORTRAN_SONAME),gcc$(QUADMATH_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) + + +define __do_libgfortran_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libcaf_single.a + $(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l)) + + $(if $(2),, \ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/include/ISO_Fortran_binding.h) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef +# ---------------------------------------------------------------------- + +do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libgfortran: $(install_stamp) + $(call do_fortran,) + +$(binary_stamp)-lib64fortran: $(install_stamp) + $(call do_fortran,64) + +$(binary_stamp)-lib32fortran: $(install_stamp) + $(call do_fortran,32) + +$(binary_stamp)-libn32fortran: $(install_stamp) + $(call do_fortran,n32) + +$(binary_stamp)-libx32fortran: $(install_stamp) + $(call do_fortran,x32) + +$(binary_stamp)-libhffortran: $(install_stamp) + $(call do_fortran,hf) + +$(binary_stamp)-libsffortran: $(install_stamp) + $(call do_fortran,sf) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95) + dh_installdirs -p$(p_g95) $(dirs_g95) + + $(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95) + + mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/ + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver) \ + $(d_g95)/$(PF)/bin/gfortran$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \ + $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1 + endif +endif + + mkdir -p $(d_g95)/usr/share/lintian/overrides + echo '$(p_g95) binary: hardening-no-pie' \ + > $(d_g95)/usr/share/lintian/overrides/$(p_g95) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_g95) binary: binary-without-manpage' \ + >> $(d_g95)/usr/share/lintian/overrides/$(p_g95) +endif + + debian/dh_doclink -p$(p_g95) $(p_xbase) + + cp -p $(srcdir)/gcc/fortran/ChangeLog \ + $(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog + debian/dh_rmemptydirs -p$(p_g95) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_g95)/$(gcc_lexec_dir)/f951 +endif + dh_strip -p$(p_g95) \ + $(if $(unstripped_exe),-X/f951) + dh_shlibdeps -p$(p_g95) + echo $(p_g95) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95_m) + dh_installdirs -p$(p_g95_m) $(docdir) + + debian/dh_doclink -p$(p_g95_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_g95_m) + dh_strip -p$(p_g95_m) + dh_shlibdeps -p$(p_g95_m) + echo $(p_g95_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g95d) + dh_installdirs -p$(p_g95d) \ + $(docdir)/$(p_xbase)/fortran \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_g95d) \ + $(PF)/share/info/gfortran* + + debian/dh_doclink -p$(p_g95d) $(p_xbase) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_g95d) + rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright + cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/ +endif + echo $(p_g95d) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-libgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,) + +$(binary_stamp)-lib64gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,64) + +$(binary_stamp)-lib32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,32) + +$(binary_stamp)-libn32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,n32) + +$(binary_stamp)-libx32gfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,x32) + +$(binary_stamp)-libhfgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,hf) + +$(binary_stamp)-libsfgfortran-dev: $(install_stamp) + $(call do_libgfortran_dev,sf) + diff --git a/rules.d/binary-gcc.mk b/rules.d/binary-gcc.mk new file mode 100644 index 0000000..284e376 --- /dev/null +++ b/rules.d/binary-gcc.mk @@ -0,0 +1,364 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) gcc-multi + endif + ifeq ($(with_plugins),yes) + arch_binaries := $(arch_binaries) gcc-plugindev + endif + + arch_binaries := $(arch_binaries) gcc + + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) gcc-doc + endif + ifeq ($(with_nls),yes) + indep_binaries := $(indep_binaries) gcc-locales + endif + endif + + ifeq ($(build_type),build-native) + arch_binaries := $(arch_binaries) testresults + endif +endif + +# gcc must be moved after g77 and g++ +# not all files $(PF)/include/*.h are part of gcc, +# but it becomes difficult to name all these files ... + +dirs_gcc = \ + $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/{include,include-fixed} \ + $(PF)/share/man/man1 $(libgcc_dir) + +# XXX: what about triarch mapping? +files_gcc = \ + $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(with_libcc1_plugin),yes) + files_gcc += \ + $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} +endif + +files_gcc += \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} + +ifeq ($(DEB_STAGE),stage1) + files_gcc += \ + $(gcc_lib_dir)/include \ + $(shell for h in \ + README limits.h syslimits.h; \ + do \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \ + && echo $(gcc_lib_dir)/include-fixed/$$h; \ + done) +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcc += \ + $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ + $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) + +p_loc = gcc$(pkg_ver)-locales +d_loc = debian/$(p_loc) + +p_gcc_m = gcc$(pkg_ver)-multilib$(cross_bin_arch) +d_gcc_m = debian/$(p_gcc_m) + +p_pld = gcc$(pkg_ver)-plugin-dev$(cross_bin_arch) +d_pld = debian/$(p_pld) + +p_tst = gcc$(pkg_ver)-test-results +d_tst = debian/$(p_tst) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + +ifeq ($(with_linaro_branch),yes) + if [ -f $(srcdir)/gcc/ChangeLog.linaro ]; then \ + cp -p $(srcdir)/gcc/ChangeLog.linaro \ + $(d_gcc)/$(docdir)/$(p_xbase)/changelog.linaro; \ + fi +endif +ifeq ($(with_libssp),yes) + cp -p $(srcdir)/libssp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog +endif +ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libgomp/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog +endif +ifeq ($(with_itm),yes) + mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libitm/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog +endif +ifeq ($(with_qmath),yes) + cp -p $(srcdir)/libquadmath/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog +endif +ifeq ($(with_asan),yes) + mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/ + cp -p $(srcdir)/libsanitizer/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog +endif +ifeq ($(with_cc1),yes) + rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so + dh_link -p$(p_gcc) \ + /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ + /$(gcc_lib_dir)/libcc1.so +endif + + $(dh_compat2) dh_movefiles -p$(p_gcc) $(files_gcc) + +ifeq ($(unprefixed_names),yes) + for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \ + done + ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-dump gcov-tool; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done + endif + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ + $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ + done +endif + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_xbase) + cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_xbase)/. + cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_xbase)/ + cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_xbase)/NEWS + cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_xbase)/NEWS.html + cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog + cp -p $(srcdir)/gcc/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + ( \ + echo "The comparision of the stage2 and stage3 object files shows differences."; \ + echo "The Debian package was modified to ignore these differences."; \ + echo ""; \ + echo "The following files differ:"; \ + echo ""; \ + cat $(builddir)/gcc/.bad_compare; \ + ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ + else \ + true; \ + fi + + mkdir -p $(d_gcc)/usr/share/lintian/overrides + echo '$(p_gcc) binary: hardening-no-pie' \ + > $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_gcc) binary: binary-without-manpage' \ + >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) +endif + + debian/dh_rmemptydirs -p$(p_gcc) +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gcc)/$(gcc_lexec_dir)/lto1 \ + $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \ + $(d_gcc)/$(gcc_lexec_dir)/collect2 +endif + dh_strip -p$(p_gcc) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_gcc) + echo $(p_gcc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-gcc-multi: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc_m) + dh_installdirs -p$(p_gcc_m) $(docdir) + + debian/dh_doclink -p$(p_gcc_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_gcc_m) + + dh_strip -p$(p_gcc_m) + dh_shlibdeps -p$(p_gcc_m) + echo $(p_gcc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-plugindev: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pld) + dh_installdirs -p$(p_pld) \ + $(docdir) \ + $(gcc_lib_dir)/plugin + $(dh_compat2) dh_movefiles -p$(p_pld) \ + $(gcc_lib_dir)/plugin/include \ + $(gcc_lib_dir)/plugin/gtype.state \ + $(gcc_lexec_dir)/plugin/gengtype + + debian/dh_doclink -p$(p_pld) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pld) + dh_strip -p$(p_pld) + dh_shlibdeps -p$(p_pld) + mkdir -p $(d_pld)/usr/share/lintian/overrides + echo '$(p_pld) binary: hardening-no-pie' \ + > $(d_pld)/usr/share/lintian/overrides/$(p_pld) + echo $(p_pld) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-locales: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_loc) + dh_installdirs -p$(p_loc) \ + $(docdir) + $(dh_compat2) dh_movefiles -p$(p_loc) \ + $(PF)/share/locale/*/*/cpplib*.* \ + $(PF)/share/locale/*/*/gcc*.* + + debian/dh_doclink -p$(p_loc) $(p_xbase) + debian/dh_rmemptydirs -p$(p_loc) + echo $(p_loc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +# ---------------------------------------------------------------------- + +$(binary_stamp)-testresults: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_tst) + dh_installdirs -p$(p_tst) $(docdir) + + debian/dh_doclink -p$(p_tst) $(p_xbase) + + mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test + echo "TEST COMPARE BEGIN" +ifeq ($(with_check),yes) + for i in test-summary testsuite-comparision; do \ + [ -f $$i ] || continue; \ + cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \ + done +# more than one libgo.sum, avoid it + cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ + $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ + ifeq ($(with_go),yes) + cp -p $(buildlibdir)/libgo/libgo.sum \ + $(d_tst)/$(docdir)/$(p_xbase)/test/ + endif + ifeq (0,1) + cd $(builddir); \ + for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \ + b=$$(basename $$i); \ + if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \ + zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \ + if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \ + echo "$$b: OK"; \ + else \ + echo "$$b: FAILURES"; \ + fi; \ + rm -f /tmp/$$b; \ + else \ + echo "Test summary for $$b is not available"; \ + fi; \ + done + endif + if which xz 2>&1 >/dev/null; then \ + echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -7v; \ + fi +else + echo "Nothing to compare (testsuite not run)" + echo 'Test run disabled, reason: $(with_check)' \ + > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled +endif + echo "TEST COMPARE END" + + debian/dh_rmemptydirs -p$(p_tst) + + echo $(p_tst) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_doc) + dh_installdirs -p$(p_doc) \ + $(docdir)/$(p_xbase) \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_doc) \ + $(PF)/share/info/cpp{,internals}-* \ + $(PF)/share/info/gcc{,int}-* \ + $(PF)/share/info/lib{gomp,itm}-* \ + $(if $(with_qmath),$(PF)/share/info/libquadmath-*) + rm -f $(d_doc)/$(PF)/share/info/gccinst* + +ifeq ($(with_gomp),yes) + $(MAKE) -C $(buildlibdir)/libgomp stamp-build-info + cp -p $(buildlibdir)/libgomp/$(cmd_prefix)libgomp$(pkg_ver).info \ + $(d_doc)/$(PF)/share/info/libgomp$(pkg_ver).info +endif +ifeq ($(with_itm),yes) + -$(MAKE) -C $(buildlibdir)/libitm stamp-build-info + if [ -f $(buildlibdir)/libitm/libitm$(pkg_ver).info ]; then \ + cp -p $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info \ + $(d_doc)/$(PF)/share/info/; \ + fi +endif + + debian/dh_doclink -p$(p_doc) $(p_xbase) + dh_installdocs -p$(p_doc) html/gcc.html html/gccint.html +ifeq ($(with_gomp),yes) + cp -p html/libgomp.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif +ifeq ($(with_itm),yes) + cp -p html/libitm.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif +ifeq ($(with_qmath),yes) + cp -p html/libquadmath.html $(d_doc)/usr/share/doc/$(p_doc)/ +endif + rm -f $(d_doc)/$(docdir)/$(p_xbase)/copyright + debian/dh_rmemptydirs -p$(p_doc) + echo $(p_doc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-go.mk b/rules.d/binary-go.mk new file mode 100644 index 0000000..9d30d68 --- /dev/null +++ b/rules.d/binary-go.mk @@ -0,0 +1,366 @@ +ifeq ($(with_libgo),yes) + $(lib_binaries) += libgo +endif +ifeq ($(with_godev),yes) + $(lib_binaries) += libgo-dev +endif +ifeq ($(with_lib64go),yes) + $(lib_binaries) += lib64go +endif +ifeq ($(with_lib64godev),yes) + $(lib_binaries) += lib64go-dev +endif +ifeq ($(with_lib32go),yes) + $(lib_binaries) += lib32go +endif +ifeq ($(with_lib32godev),yes) + $(lib_binaries) += lib32go-dev +endif +ifeq ($(with_libn32go),yes) + $(lib_binaries) += libn32go +endif +ifeq ($(with_libn32godev),yes) + $(lib_binaries) += libn32go-dev +endif +ifeq ($(with_libx32go),yes) + $(lib_binaries) += libx32go +endif +ifeq ($(with_libx32godev),yes) + $(lib_binaries) += libx32go-dev +endif + +ifneq ($(DEB_STAGE),rtlibs) + arch_binaries := $(arch_binaries) gccgo + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) + arch_binaries := $(arch_binaries) gccgo-multi + endif + ifneq ($(DEB_CROSS),yes) + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) go-doc + endif + endif +endif + +p_go = gccgo$(pkg_ver)$(cross_bin_arch) +p_go_m = gccgo$(pkg_ver)-multilib$(cross_bin_arch) +p_god = gccgo$(pkg_ver)-doc +p_golib = libgo$(GO_SONAME)$(cross_lib_arch) + +d_go = debian/$(p_go) +d_go_m = debian/$(p_go_m) +d_god = debian/$(p_god) +d_golib = debian/$(p_golib) + +dirs_go = \ + $(docdir)/$(p_xbase)/go \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) \ + $(PF)/include \ + $(PF)/share/man/man1 +files_go = \ + $(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \ + $(gcc_lexec_dir)/go1 + +ifneq (,$(filter $(build_type), build-native cross-build-native)) + files_go += \ + $(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \ + $(gcc_lexec_dir)/cgo \ + $(gcc_lexec_dir)/{buildid,test2json,vet} \ + $(PF)/share/man/man1/$(cmd_prefix){go,gofmt}$(pkg_ver).1 +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go += \ + $(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1 +endif + +ifeq ($(with_standalone_go),yes) + + dirs_go += \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + +# XXX: what about triarch mapping? + files_go += \ + $(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \ + $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ + $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \ + $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \ + $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ + $(header_files) \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + + ifeq ($(with_cc1),yes) + files_go += \ + $(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0} + endif + + ifneq ($(GFDL_INVARIANT_FREE),yes) + files_go += \ + $(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1 + endif + + ifeq ($(biarch64),yes) + files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarch32),yes) + files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o} + endif + ifeq ($(biarchn32),yes) + files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarchx32),yes) + files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o} + endif +endif + +# ---------------------------------------------------------------------- +define __do_libgo + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgo.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + mkdir -p debian/$(p_l)/usr/share/lintian/overrides + echo '$(p_l) binary: unstripped-binary-or-object' \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) + + : # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html + : # dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst go$(GO_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define install_gccgo_lib + mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/ + if [ -f $(d)/$(usr_lib$(3))/$(1)libbegin.a ]; then \ + mv $(d)/$(usr_lib$(3))/$(1)libbegin.a debian/$(4)/$(gcc_lib_dir$(3))/; \ + fi + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so +endef + +# __do_gccgo_libgcc(flavour,package,todir,fromdir) +define __do_gccgo_libgcc + $(if $(findstring gccgo,$(PKGSOURCE)), + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + $(3)/libgcc_s.so.$(GCC_SONAME); \ + fi; \ + $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ + $(gcc_lib_dir)/libgcc_s_$(1).so;) + ) +endef + +define __do_libgo_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) \ + $(usr_lib$(2)) + mv $(d)/$(usr_lib$(2))/{libgobegin,libgolibbegin}.a \ + $(d)/$(gcc_lib_dir$(2))/ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/{libgobegin,libgolibbegin}.a \ + $(usr_lib$(2))/go + $(call install_gccgo_lib,libgo,$(GO_SONAME),$(2),$(p_l)) + + $(if $(filter yes, $(with_standalone_go)), \ + $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(2),$(p_l))) + $(call __do_gccgo_libgcc,$(2),$(p_l),$(gcc_lib_dir$(2)),$(d)/$(usr_lib$(2))) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgo = $(call __do_libgo,lib$(1)go$(GO_SONAME),$(1)) +do_libgo_dev = $(call __do_libgo_dev,lib$(1)go-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgo: $(install_stamp) + $(call do_libgo,) + +$(binary_stamp)-lib64go: $(install_stamp) + $(call do_libgo,64) + +$(binary_stamp)-lib32go: $(install_stamp) + $(call do_libgo,32) + +$(binary_stamp)-libn32go: $(install_stamp) + $(call do_libgo,n32) + +$(binary_stamp)-libx32go: $(install_stamp) + $(call do_libgo,x32) + +$(binary_stamp)-libgo-dev: $(install_stamp) + $(call do_libgo_dev,) + +$(binary_stamp)-lib64go-dev: $(install_stamp) + $(call do_libgo_dev,64) + +$(binary_stamp)-lib32go-dev: $(install_stamp) + $(call do_libgo_dev,32) + +$(binary_stamp)-libx32go-dev: $(install_stamp) + $(call do_libgo_dev,x32) + +$(binary_stamp)-libn32go-dev: $(install_stamp) + $(call do_libgo_dev,n32) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go) + dh_installdirs -p$(p_go) $(dirs_go) + + $(dh_compat2) dh_movefiles -p$(p_go) $(files_go) + +ifneq (,$(findstring gccgo,$(PKGSOURCE))) + rm -rf $(d_go)/$(gcc_lib_dir)/include/cilk + rm -rf $(d_go)/$(gcc_lib_dir)/include/openacc.h +endif + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gccgo$(pkg_ver) \ + $(d_go)/$(PF)/bin/gccgo$(pkg_ver) + ln -sf $(cmd_prefix)go$(pkg_ver) \ + $(d_go)/$(PF)/bin/go$(pkg_ver) + ln -sf $(cmd_prefix)gofmt$(pkg_ver) \ + $(d_go)/$(PF)/bin/gofmt$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes) + ln -sf $(cmd_prefix)gccgo$(pkg_ver).1 \ + $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1 + endif + ln -sf $(cmd_prefix)go$(pkg_ver).1 \ + $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1 + ln -sf $(cmd_prefix)gofmt$(pkg_ver).1 \ + $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1 +endif + +ifeq ($(with_standalone_go),yes) + ifeq ($(unprefixed_names),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)$$i$(pkg_ver) \ + $(d_go)/$(PF)/bin/$$i$(pkg_ver); \ + done + ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $(cmd_prefix)gcc$(pkg_ver).1 \ + $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \ + done + endif + endif + ifeq ($(with_gomp),yes) + mv $(d)/$(usr_lib)/libgomp*.spec $(d_go)/$(gcc_lib_dir)/ + endif + ifeq ($(with_cc1),yes) + rm -f $(d)/$(usr_lib)/libcc1.so + dh_link -p$(p_go) \ + /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so + endif +endif + + mkdir -p $(d_go)/usr/share/lintian/overrides + echo '$(p_go) binary: unstripped-binary-or-object' \ + > $(d_go)/usr/share/lintian/overrides/$(p_go) + echo '$(p_go) binary: hardening-no-pie' \ + >> $(d_go)/usr/share/lintian/overrides/$(p_go) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_go) binary: binary-without-manpage' \ + >> $(d_go)/usr/share/lintian/overrides/$(p_go) +endif + + debian/dh_doclink -p$(p_go) $(p_xbase) + +# cp -p $(srcdir)/gcc/go/ChangeLog \ +# $(d_go)/$(docdir)/$(p_base)/go/changelog + debian/dh_rmemptydirs -p$(p_go) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_go)/$(gcc_lexec_dir)/go1 +endif + dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \ + -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1) + dh_shlibdeps -p$(p_go) + echo $(p_go) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gccgo-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_go_m) + dh_installdirs -p$(p_go_m) $(docdir) + + mkdir -p $(d_go_m)/usr/share/lintian/overrides + echo '$(p_go_m) binary: non-multi-arch-lib-dir' \ + > $(d_go_m)/usr/share/lintian/overrides/$(p_go_m) + + debian/dh_doclink -p$(p_go_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_go_m) + dh_strip -p$(p_go_m) + dh_shlibdeps -p$(p_go_m) + echo $(p_go_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_god) + dh_installdirs -p$(p_god) \ + $(docdir)/$(p_xbase)/go \ + $(PF)/share/info + $(dh_compat2) dh_movefiles -p$(p_god) \ + $(PF)/share/info/gccgo* + + debian/dh_doclink -p$(p_god) $(p_xbase) + dh_installdocs -p$(p_god) + rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright + cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/ + echo $(p_god) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-hppa64.mk b/rules.d/binary-hppa64.mk new file mode 100644 index 0000000..36f91f5 --- /dev/null +++ b/rules.d/binary-hppa64.mk @@ -0,0 +1,39 @@ +arch_binaries := $(arch_binaries) hppa64 + +# ---------------------------------------------------------------------- +$(binary_stamp)-hppa64: $(install_hppa64_stamp) + dh_testdir + dh_testroot + +# dh_installdirs -p$(p_hppa64) + + rm -f $(d_hppa64)/usr/lib/libiberty.a + -find $(d_hppa64) ! -type d + + : # provide as and ld links + dh_link -p $(p_hppa64) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld + + debian/dh_doclink -p$(p_hppa64) $(p_xbase) + debian/dh_rmemptydirs -p$(p_hppa64) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/cc1 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/collect2 \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto-wrapper \ + $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto1 +endif + dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a + dh_shlibdeps -p$(p_hppa64) + + mkdir -p $(d_hppa64)/usr/share/lintian/overrides + cp -p debian/$(p_hppa64).overrides \ + $(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64) + + echo $(p_hppa64) >> debian/arch_binaries + + touch $@ diff --git a/rules.d/binary-hsa.mk b/rules.d/binary-hsa.mk new file mode 100644 index 0000000..8e96720 --- /dev/null +++ b/rules.d/binary-hsa.mk @@ -0,0 +1,88 @@ +ifeq ($(with_offload_hsa),yes) + #arch_binaries := $(arch_binaries) hsa + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) hsa-plugin + endif +endif + +p_hsa = gcc$(pkg_ver)-offload-hsa +d_hsa = debian/$(p_hsa) + +p_pl_hsa = libgomp-plugin-hsa1 +d_pl_hsa = debian/$(p_pl_hsa) + +dirs_hsa = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lexec_dir)/accel + +files_hsa = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-hsa-none-gcc$(pkg_ver) \ + $(gcc_lexec_dir)/accel/hsa-none + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/hsa-none + +# are these needed? +# $(PF)/lib/gcc/hsa-none/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_hsa += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-hsa-none-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-hsa: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_hsa) + dh_installdirs -p$(p_hsa) $(dirs_hsa) + $(dh_compat2) dh_movefiles --sourcedir=$(d)-hsa -p$(p_hsa) \ + $(files_hsa) + + mkdir -p $(d_hsa)/usr/share/lintian/overrides + echo '$(p_hsa) binary: hardening-no-pie' \ + > $(d_hsa)/usr/share/lintian/overrides/$(p_hsa) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_hsa) binary: binary-without-manpage' \ + >> $(d_hsa)/usr/share/lintian/overrides/$(p_hsa) +endif + + debian/dh_doclink -p$(p_hsa) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_hsa) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_hsa)/$(gcc_lexec_dir)/accel/hsa-none/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_hsa) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_hsa) + echo $(p_hsa) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-hsa-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_hsa) + dh_installdirs -p$(p_pl_hsa) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_hsa) \ + $(usr_lib)/libgomp-plugin-hsa.so.* + + debian/dh_doclink -p$(p_pl_hsa) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_hsa) + + dh_strip -p$(p_pl_hsa) + dh_makeshlibs -p$(p_pl_hsa) + dh_shlibdeps -p$(p_pl_hsa) + echo $(p_pl_hsa) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libasan.mk b/rules.d/binary-libasan.mk new file mode 100644 index 0000000..3646daf --- /dev/null +++ b/rules.d/binary-libasan.mk @@ -0,0 +1,80 @@ +$(lib_binaries) += libasan +ifeq ($(with_lib64asan),yes) + $(lib_binaries) += lib64asan +endif +ifeq ($(with_lib32asan),yes) + $(lib_binaries) += lib32asan +endif +ifeq ($(with_libn32asan),yes) + $(lib_binaries) += libn32asan +endif +ifeq ($(with_libx32asan),yes) + $(lib_binaries) += libx32asan +endif +ifeq ($(with_libhfasan),yes) + $(lib_binaries) += libhfasan +endif +ifeq ($(with_libsfasan),yes) + $(lib_binaries) += libsfasan +endif + +define __do_asan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + $(if $(2), \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ + >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst asan$(ASAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1)) + +$(binary_stamp)-libasan: $(install_stamp) + $(call do_asan,) + +$(binary_stamp)-lib64asan: $(install_stamp) + $(call do_asan,64) + +$(binary_stamp)-lib32asan: $(install_stamp) + $(call do_asan,32) + +$(binary_stamp)-libn32asan: $(install_stamp) + $(call do_asan,n32) + +$(binary_stamp)-libx32asan: $(install_stamp) + $(call do_asan,x32) + +$(binary_stamp)-libhfasan: $(install_dependencies) + $(call do_asan,hf) + +$(binary_stamp)-libsfasan: $(install_dependencies) + $(call do_asan,sf) diff --git a/rules.d/binary-libatomic.mk b/rules.d/binary-libatomic.mk new file mode 100644 index 0000000..fe038e8 --- /dev/null +++ b/rules.d/binary-libatomic.mk @@ -0,0 +1,68 @@ +$(lib_binaries) += libatomic +ifeq ($(with_lib64atomic),yes) + $(lib_binaries) += lib64atomic +endif +ifeq ($(with_lib32atomic),yes) + $(lib_binaries) += lib32atomic +endif +ifeq ($(with_libn32atomic),yes) + $(lib_binaries) += libn32atomic +endif +ifeq ($(with_libx32atomic),yes) + $(lib_binaries) += libx32atomic +endif +ifeq ($(with_libhfatomic),yes) + $(lib_binaries) += libhfatomic +endif +ifeq ($(with_libsfatomic),yes) + $(lib_binaries) += libsfatomic +endif + +define __do_atomic + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libatomic.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1)) + +$(binary_stamp)-libatomic: $(install_stamp) + $(call do_atomic,) + +$(binary_stamp)-lib64atomic: $(install_stamp) + $(call do_atomic,64) + +$(binary_stamp)-lib32atomic: $(install_stamp) + $(call do_atomic,32) + +$(binary_stamp)-libn32atomic: $(install_stamp) + $(call do_atomic,n32) + +$(binary_stamp)-libx32atomic: $(install_stamp) + $(call do_atomic,x32) + +$(binary_stamp)-libhfatomic: $(install_dependencies) + $(call do_atomic,hf) + +$(binary_stamp)-libsfatomic: $(install_dependencies) + $(call do_atomic,sf) diff --git a/rules.d/binary-libcc1.mk b/rules.d/binary-libcc1.mk new file mode 100644 index 0000000..1dba145 --- /dev/null +++ b/rules.d/binary-libcc1.mk @@ -0,0 +1,31 @@ +ifeq ($(with_libcc1),yes) + ifneq ($(DEB_CROSS),yes) + arch_binaries := $(arch_binaries) libcc1 + endif +endif + +p_cc1 = libcc1-$(CC1_SONAME) +d_cc1 = debian/$(p_cc1) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libcc1: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cc1) + dh_installdirs -p$(p_cc1) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_cc1) \ + $(usr_lib)/libcc1.so.* + + debian/dh_doclink -p$(p_cc1) $(p_xbase) + debian/dh_rmemptydirs -p$(p_cc1) + + dh_strip -p$(p_cc1) + dh_makeshlibs -p$(p_cc1) + dh_shlibdeps -p$(p_cc1) + echo $(p_cc1) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libgcc.mk b/rules.d/binary-libgcc.mk new file mode 100644 index 0000000..3020aa2 --- /dev/null +++ b/rules.d/binary-libgcc.mk @@ -0,0 +1,387 @@ +ifeq ($(with_libgcc),yes) + $(lib_binaries) += libgcc +endif +ifeq ($(with_lib64gcc),yes) + $(lib_binaries) += lib64gcc +endif +ifeq ($(with_lib32gcc),yes) + $(lib_binaries) += lib32gcc +endif +ifeq ($(with_libn32gcc),yes) + $(lib_binaries) += libn32gcc +endif +ifeq ($(with_libx32gcc),yes) + $(lib_binaries) += libx32gcc +endif +ifeq ($(with_libhfgcc),yes) + $(lib_binaries) += libhfgcc +endif +ifeq ($(with_libsfgcc),yes) + $(lib_binaries) += libsfgcc +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_cdev),yes) + $(lib_binaries) += libgcc-dev + endif + ifeq ($(with_lib64gccdev),yes) + $(lib_binaries) += lib64gcc-dev + endif + ifeq ($(with_lib32gccdev),yes) + $(lib_binaries) += lib32gcc-dev + endif + ifeq ($(with_libn32gccdev),yes) + $(lib_binaries) += libn32gcc-dev + endif + ifeq ($(with_libx32gccdev),yes) + $(lib_binaries) += libx32gcc-dev + endif + ifeq ($(with_libhfgccdev),yes) + $(lib_binaries) += libhfgcc-dev + endif + ifeq ($(with_libsfgccdev),yes) + $(lib_binaries) += libsfgcc-dev + endif +endif + +header_files = \ + $(gcc_lib_dir)/include/std*.h \ + $(shell for h in \ + README features.h arm_fp16.h arm_neon.h arm_cmse.h loongson.h \ + {cpuid,decfloat,float,gcov,iso646,limits,mm3dnow,mm_malloc}.h \ + {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \ + {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \ + {abm,adx,avx,avx2,bmi,bmi2,f16c,fma,fma4,fxsr,ia32,}intrin.h \ + {lwp,lzcnt,popcnt,prfchw,rdseed,rtm,tbm,x86,xop,xsave{,opt},xtest,}intrin.h \ + {htm,htmxl,mwaitx,pku,sha,vaes,vec,sgx}intrin.h \ + avx512{bw,er,cd,dq,f,ifma,ifmavl,pf,vlbw,vbmi,vldq,vbmivl,vl}intrin.h \ + avx512{4fmaps,4vnniw,bitalg,vnni,vnnivl,vpopcntdq,vpopcntdqvl}intrin.h \ + avx512vbmi{2,2vl}intrin.h \ + {movdir,pconfig,vpclmulqdq,wbnoinvd}intrin.h \ + {cet,clflushopt,clwb,clzero,gfni,pcommit,xsavec,xsaves}intrin.h \ + {arm_acle,unwind-arm-common,s390intrin}.h \ + {cldemote,waitpkg}intrin.h \ + amo.h msa.h \ + {cet,cross-stdarg,syslimits,unwind,varargs}.h; \ + do \ + test -e $(d)/$(gcc_lib_dir)/include/$$h \ + && echo $(gcc_lib_dir)/include/$$h; \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \ + && echo $(gcc_lib_dir)/include-fixed/$$h; \ + done) \ + $(shell for d in \ + asm bits cilk gnu linux sanitizer $(TARGET_ALIAS) \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \ + do \ + test -e $(d)/$(gcc_lib_dir)/include/$$d \ + && echo $(gcc_lib_dir)/include/$$d; \ + test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \ + && echo $(gcc_lib_dir)/include-fixed/$$d; \ + done) + +ifeq ($(with_libssp),yes) + header_files += $(gcc_lib_dir)/include/ssp +endif +ifeq ($(with_gomp),yes) + header_files += $(gcc_lib_dir)/include/{omp,openacc}.h +endif +ifeq ($(with_qmath),yes) + header_files += $(gcc_lib_dir)/include/quadmath{,_weak}.h +endif + +ifeq ($(DEB_TARGET_ARCH),ia64) + header_files += $(gcc_lib_dir)/include/ia64intrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),m68k) + header_files += $(gcc_lib_dir)/include/math-68881.h +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),powerpc ppc64 ppc64el)) + header_files += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h} +endif + +ifeq ($(DEB_TARGET_ARCH),powerpcspe) + header_files += $(gcc_lib_dir)/include/{ppc-asm.h,spe.h} +endif + +ifeq ($(DEB_TARGET_ARCH),tilegx) + header_files += $(gcc_lib_dir)/include/feedback.h +endif + +p_lgcc = libgcc$(GCC_SONAME)$(cross_lib_arch) +p_lgccdbg = libgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lgccdev = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lgcc = debian/$(p_lgcc) +d_lgccdbg = debian/$(p_lgccdbg) +d_lgccdev = debian/$(p_lgccdev) + +p_l32gcc = lib32gcc$(GCC_SONAME)$(cross_lib_arch) +p_l32gccdbg = lib32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l32gccdev = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l32gcc = debian/$(p_l32gcc) +d_l32gccdbg = debian/$(p_l32gccdbg) +d_l32gccdev = debian/$(p_l32gccdev) + +p_l64gcc = lib64gcc$(GCC_SONAME)$(cross_lib_arch) +p_l64gccdbg = lib64gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_l64gccdev = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_l64gcc = debian/$(p_l64gcc) +d_l64gccdbg = debian/$(p_l64gccdbg) +d_l64gccdev = debian/$(p_l64gccdev) + +p_ln32gcc = libn32gcc$(GCC_SONAME)$(cross_lib_arch) +p_ln32gccdbg = libn32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_ln32gccdev = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_ln32gcc = debian/$(p_ln32gcc) +d_ln32gccdbg = debian/$(p_ln32gccdbg) +d_ln32gccdev = debian/$(p_ln32gccdev) + +p_lx32gcc = libx32gcc$(GCC_SONAME)$(cross_lib_arch) +p_lx32gccdbg = libx32gcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lx32gccdev = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lx32gcc = debian/$(p_lx32gcc) +d_lx32gccdbg = debian/$(p_lx32gccdbg) +d_lx32gccdev = debian/$(p_lx32gccdev) + +p_lhfgcc = libhfgcc$(GCC_SONAME)$(cross_lib_arch) +p_lhfgccdbg = libhfgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lhfgccdev = libhfgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lhfgcc = debian/$(p_lhfgcc) +d_lhfgccdbg = debian/$(p_lhfgccdbg) +d_lhfgccdev = debian/$(p_lhfgccdev) + +p_lsfgcc = libsfgcc$(GCC_SONAME)$(cross_lib_arch) +p_lsfgccdbg = libsfgcc$(GCC_SONAME)-dbg$(cross_lib_arch) +p_lsfgccdev = libsfgcc-$(BASE_VERSION)-dev$(cross_lib_arch) +d_lsfgcc = debian/$(p_lsfgcc) +d_lsfgccdbg = debian/$(p_lsfgccdbg) +d_lsfgccdev = debian/$(p_lsfgccdev) + +# __do_gcc_devels(flavour,package,todir,fromdir) +define __do_gcc_devels + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + test -n "$(2)" + rm -rf debian/$(2) + dh_installdirs -p$(2) $(docdir) #TODO + dh_installdirs -p$(2) $(3) + + $(call __do_gcc_devels2,$(1),$(2),$(3),$(4)) + + debian/dh_doclink -p$(2) $(p_lbase) + debian/dh_rmemptydirs -p$(2) + + dh_strip -p$(2) + $(cross_shlibdeps) dh_shlibdeps -p$(2) + $(call cross_mangle_substvars,$(2)) + echo $(2) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# __do_gcc_devels2(flavour,package,todir,fromdir) +define __do_gcc_devels2 +# stage1 builds static libgcc only + $(if $(filter $(DEB_STAGE),stage1),, + : # libgcc_s.so may be a linker script on some architectures + set -e; \ + if [ -h $(4)/libgcc_s.so ]; then \ + rm -f $(4)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + /$(3)/libgcc_s.so; \ + else \ + mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ + dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ + /$(3)/libgcc_s.so.$(GCC_SONAME); \ + fi; \ + $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ + /$(gcc_lib_dir)/libgcc_s_$(1).so;) + ) + $(dh_compat2) dh_movefiles -p$(2) \ + $(3)/{libgcc*,libgcov.a,*.o} \ + $(if $(1),,$(header_files)) # Only move headers for the "main" package + + : # libbacktrace not installed by default + $(if $(filter yes, $(with_backtrace)), + if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \ + debian/$(2)/$(gcc_lib_dir)/$(1); \ + fi; \ + $(if $(1),, + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + debian/$(2)/$(gcc_lib_dir)/include/; \ + fi + )) + + : # If building a flavour, add a lintian override + $(if $(1), + #TODO: use a file instead of a hacky echo + # bu do we want to use one override file (in the source package) per + # flavour or not since they are essentially the same? + mkdir -p debian/$(2)/usr/share/lintian/overrides + echo "$(2) binary: binary-from-other-architecture" \ + >> debian/$(2)/usr/share/lintian/overrides/$(2) + ) + $(if $(filter yes, $(with_lib$(1)gmath)), + $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_libssp)), + $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_ssp)), + mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/; + ) + $(if $(filter yes, $(with_gomp)), + $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_itm)), + $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_atomic)), + $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_asan)), + $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2)) + mv $(4)/libasan_preinit.o debian/$(2)/$(3)/; + ) + $(if $(1),,$(if $(filter yes, $(with_lsan)), + $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2)) + mv $(4)/liblsan_preinit.o debian/$(2)/$(3)/; + )) + $(if $(1),,$(if $(filter yes, $(with_tsan)), + $(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2)) + )) + $(if $(filter yes, $(with_ubsan)), + $(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_vtv)), + $(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_cilkrts)), + $(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2)) + ) + $(if $(filter yes, $(with_qmath)), + $(call install_gcc_lib,libquadmath,$(QUADMATH_SONAME),$(1),$(2)) + ) +endef + +# do_gcc_devels(flavour) +define do_gcc_devels + $(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1))) +endef + + +define __do_libgcc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + + dh_installdirs -p$(p_l) \ + $(docdir)/$(p_l) \ + $(libgcc_dir$(2)) + + $(if $(filter yes,$(with_shared_libgcc)), + mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + $(if $(filter yes, $(with_internal_libunwind)), + mv $(d)/$(usr_lib$(2))/libunwind.* \ + $(d_l)/$(libgcc_dir$(2))/. + ) + + debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase)) + debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase)) + debian/dh_rmemptydirs -p$(p_l) + debian/dh_rmemptydirs -p$(p_d) + dh_strip -p$(p_l) --dbg-package=$(p_d) + + # see Debian #533843 for the __aeabi symbol handling; this construct is + # just to include the symbols for dpkg versions older than 1.15.3 which + # didn't allow bypassing the symbol blacklist + $(if $(filter yes,$(with_shared_libgcc)), + $(if $(findstring gcc1,$(p_l)), \ + ln -sf libgcc.symbols debian/$(p_l).symbols \ + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) -p$(p_d) \ + -- -v$(DEB_LIBGCC_VERSION) -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)), + if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \ + grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \ + || cat debian/libgcc.symbols.aeabi \ + >> $(d_l)/DEBIAN/symbols; \ + fi + ) + ) + + $(if $(DEB_STAGE),, + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) + ) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2),, # only for native + mkdir -p $(d_l)/usr/share/lintian/overrides + echo '$(p_l): package-name-doesnt-match-sonames' \ + > $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + echo $(p_l) $(p_d) >> debian/$(lib_binaries).epoch + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2)) +# ---------------------------------------------------------------------- + +$(binary_stamp)-libgcc: $(install_dependencies) + $(call do_libgcc,,) + +$(binary_stamp)-lib64gcc: $(install_dependencies) + $(call do_libgcc,64,) + +$(binary_stamp)-lib32gcc: $(install_dependencies) + $(call do_libgcc,32,) + +$(binary_stamp)-libn32gcc: $(install_dependencies) + $(call do_libgcc,n32,) + +$(binary_stamp)-libx32gcc: $(install_dependencies) + $(call do_libgcc,x32,) + +$(binary_stamp)-libhfgcc: $(install_dependencies) + $(call do_libgcc,hf) + +$(binary_stamp)-libsfgcc: $(install_dependencies) + $(call do_libgcc,sf) + +$(binary_stamp)-libgcc-dev: $(install_dependencies) + $(call do_gcc_devels,) + +$(binary_stamp)-lib64gcc-dev: $(install_dependencies) + $(call do_gcc_devels,64) + +$(binary_stamp)-lib32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,32) + +$(binary_stamp)-libn32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,n32) + +$(binary_stamp)-libx32gcc-dev: $(install_dependencies) + $(call do_gcc_devels,x32) + +$(binary_stamp)-libhfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,hf) + +$(binary_stamp)-libsfgcc-dev: $(install_dependencies) + $(call do_gcc_devels,sf) + diff --git a/rules.d/binary-libgccjit.mk b/rules.d/binary-libgccjit.mk new file mode 100644 index 0000000..df8f821 --- /dev/null +++ b/rules.d/binary-libgccjit.mk @@ -0,0 +1,91 @@ +ifeq ($(with_libgccjit),yes) + $(lib_binaries) += libgccjit +endif + +$(lib_binaries) += libgccjitdev + +ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libgccjitdoc +endif + +p_jitlib = libgccjit$(GCCJIT_SONAME) +p_jitdbg = libgccjit$(GCCJIT_SONAME)-dbg +p_jitdev = libgccjit$(pkg_ver)-dev +p_jitdoc = libgccjit$(pkg_ver)-doc + +d_jitlib = debian/$(p_jitlib) +d_jitdev = debian/$(p_jitdev) +d_jitdbg = debian/$(p_jitdbg) +d_jitdoc = debian/$(p_jitdoc) + +$(binary_stamp)-libgccjit: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitlib) $(d_jitdbg) + dh_installdirs -p$(p_jitlib) \ + $(usr_lib) + dh_installdirs -p$(p_jitdbg) + + $(dh_compat2) dh_movefiles -p$(p_jitlib) \ + $(usr_lib)/libgccjit.so.* + rm -f $(d)/$(usr_lib)/libgccjit.so + + debian/dh_doclink -p$(p_jitlib) $(p_base) + debian/dh_doclink -p$(p_jitdbg) $(p_base) + + dh_strip -p$(p_jitlib) --dbg-package=$(p_jitdbg) + $(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib) + $(call cross_mangle_shlibs,$(p_jitlib)) + $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_jitlib)) + echo $(p_jitlib) $(p_jitdbg) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdev: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdev) + dh_installdirs -p$(p_jitdev) \ + $(usr_lib) \ + $(gcc_lib_dir)/include + + rm -f $(d)/$(usr_lib)/libgccjit.so + + $(dh_compat2) dh_movefiles -p$(p_jitdev) \ + $(gcc_lib_dir)/include/libgccjit*.h + dh_link -p$(p_jitdev) \ + $(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so + + debian/dh_doclink -p$(p_jitdev) $(p_base) + + echo $(p_jitdev) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ + +$(binary_stamp)-libgccjitdoc: $(install_jit_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jitdoc) + dh_installdirs -p$(p_jitdoc) \ + $(PF)/share/info + + $(dh_compat2) dh_movefiles -p$(p_jitdoc) \ + $(PF)/share/info/libgccjit* + cp -p $(srcdir)/gcc/jit/docs/_build/texinfo/*.png \ + $(d_jitdoc)/$(PF)/share/info/. + + debian/dh_doclink -p$(p_jitdoc) $(p_base) + echo $(p_jitdoc) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + touch $@ diff --git a/rules.d/binary-libgomp.mk b/rules.d/binary-libgomp.mk new file mode 100644 index 0000000..08dd254 --- /dev/null +++ b/rules.d/binary-libgomp.mk @@ -0,0 +1,69 @@ +$(lib_binaries) += libgomp +ifeq ($(with_lib64gomp),yes) + $(lib_binaries) += lib64gomp +endif +ifeq ($(with_lib32gomp),yes) + $(lib_binaries) += lib32gomp +endif +ifeq ($(with_libn32gomp),yes) + $(lib_binaries) += libn32gomp +endif +ifeq ($(with_libx32gomp),yes) + $(lib_binaries) += libx32gomp +endif +ifeq ($(with_libhfgomp),yes) + $(lib_binaries) += libhfgomp +endif +ifeq ($(with_libsfgomp),yes) + $(lib_binaries) += libsfgomp +endif + +define __do_gomp + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libgomp.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) + +$(binary_stamp)-libgomp: $(install_stamp) + $(call do_gomp,) + +$(binary_stamp)-lib64gomp: $(install_stamp) + $(call do_gomp,64) + +$(binary_stamp)-lib32gomp: $(install_stamp) + $(call do_gomp,32) + +$(binary_stamp)-libn32gomp: $(install_stamp) + $(call do_gomp,n32) + +$(binary_stamp)-libx32gomp: $(install_stamp) + $(call do_gomp,x32) + +$(binary_stamp)-libhfgomp: $(install_dependencies) + $(call do_gomp,hf) + +$(binary_stamp)-libsfgomp: $(install_dependencies) + $(call do_gomp,sf) diff --git a/rules.d/binary-libhsail.mk b/rules.d/binary-libhsail.mk new file mode 100644 index 0000000..ee1c033 --- /dev/null +++ b/rules.d/binary-libhsail.mk @@ -0,0 +1,134 @@ +ifeq ($(with_libhsailrt),yes) + $(lib_binaries) += libhsail +endif +ifeq ($(with_brigdev),yes) + $(lib_binaries) += libhsail-dev +endif +#ifeq ($(with_lib64hsailrt),yes) +# $(lib_binaries) += lib64hsail +#endif +#ifeq ($(with_lib64hsailrtdev),yes) +# $(lib_binaries) += lib64hsail-dev +#endif +#ifeq ($(with_lib32hsailrt),yes) +# $(lib_binaries) += lib32hsail +#endif +#ifeq ($(with_lib32hsailrtdev),yes) +# $(lib_binaries) += lib32hsail-dev +#endif +#ifeq ($(with_libn32hsailrt),yes) +# $(lib_binaries) += libn32hsail +#endif +#ifeq ($(with_libn32hsailrtdev),yes) +# $(lib_binaries) += libn32hsail-dev +#endif +#ifeq ($(with_libx32hsailrt),yes) +# $(lib_binaries) += libx32hsail +#endif +#ifeq ($(with_libx32hsailrtdev),yes) +# $(lib_binaries) += libx32hsail-dev +#endif +#ifeq ($(with_libhfhsailrt),yes) +# $(lib_binaries) += libhfhsail +#endif +#ifeq ($(with_libhfhsailrtdev),yes) +# $(lib_binaries) += libhfhsail-dev +#endif +#ifeq ($(with_libsfhsailrt),yes) +# $(lib_binaries) += libsfhsail +#endif +#ifeq ($(with_libsfhsailrt-dev),yes) +# $(lib_binaries) += libsfhsail-dev +#endif + +define __do_hsail + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libhsail-rt.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libhsail-rt.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst hsail-rt$(HSAIL_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_hsail_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) +# $(dh_compat2) dh_movefiles -p$(p_l) + + $(call install_gcc_lib,libhsail-rt,$(HSAIL_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_hsail = $(call __do_hsail,lib$(1)hsail-rt$(HSAIL_SONAME),$(1)) +do_hsail_dev = $(call __do_hsail_dev,lib$(1)hsail-rt-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libhsail: $(install_stamp) + @echo XXXXXXXXXXXX XX $(HSAIL_SONAME) + $(call do_hsail,) + +$(binary_stamp)-lib64hsail: $(install_stamp) + $(call do_hsail,64) + +$(binary_stamp)-lib32hsail: $(install_stamp) + $(call do_hsail,32) + +$(binary_stamp)-libn32hsail: $(install_stamp) + $(call do_hsail,n32) + +$(binary_stamp)-libx32hsail: $(install_stamp) + $(call do_hsail,x32) + +$(binary_stamp)-libhfhsail: $(install_dependencies) + $(call do_hsail,hf) + +$(binary_stamp)-libsfhsail: $(install_dependencies) + $(call do_hsail,sf) + + +$(binary_stamp)-libhsail-dev: $(install_stamp) + $(call do_hsail_dev,) + +$(binary_stamp)-lib64hsail-dev: $(install_stamp) + $(call do_hsail_dev,64) + +$(binary_stamp)-lib32hsail-dev: $(install_stamp) + $(call do_hsail_dev,32) + +$(binary_stamp)-libx32hsail-dev: $(install_stamp) + $(call do_hsail_dev,x32) + +$(binary_stamp)-libn32hsail-dev: $(install_stamp) + $(call do_hsail_dev,n32) + +$(binary_stamp)-libhfhsail-dev: $(install_stamp) + $(call do_hsail_dev,hf) + +$(binary_stamp)-libsfhsail-dev: $(install_stamp) + $(call do_hsail_dev,sf) diff --git a/rules.d/binary-libitm.mk b/rules.d/binary-libitm.mk new file mode 100644 index 0000000..c25f52a --- /dev/null +++ b/rules.d/binary-libitm.mk @@ -0,0 +1,69 @@ +$(lib_binaries) += libitm +ifeq ($(with_lib64itm),yes) + $(lib_binaries) += lib64itm +endif +ifeq ($(with_lib32itm),yes) + $(lib_binaries) += lib32itm +endif +ifeq ($(with_libn32itm),yes) + $(lib_binaries) += libn32itm +endif +ifeq ($(with_libx32itm),yes) + $(lib_binaries) += libx32itm +endif +ifeq ($(with_libhfitm),yes) + $(lib_binaries) += libhfitm +endif +ifeq ($(with_libsfitm),yes) + $(lib_binaries) += libsfitm +endif + +define __do_itm + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libitm.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1)) + +$(binary_stamp)-libitm: $(install_stamp) + $(call do_itm,) + +$(binary_stamp)-lib64itm: $(install_stamp) + $(call do_itm,64) + +$(binary_stamp)-lib32itm: $(install_stamp) + $(call do_itm,32) + +$(binary_stamp)-libn32itm: $(install_stamp) + $(call do_itm,n32) + +$(binary_stamp)-libx32itm: $(install_stamp) + $(call do_itm,x32) + +$(binary_stamp)-libhfitm: $(install_dependencies) + $(call do_itm,hf) + +$(binary_stamp)-libsfitm: $(install_dependencies) + $(call do_itm,sf) diff --git a/rules.d/binary-liblsan.mk b/rules.d/binary-liblsan.mk new file mode 100644 index 0000000..ce710dd --- /dev/null +++ b/rules.d/binary-liblsan.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += liblsan +ifeq ($(with_lib64lsan),yes) + $(lib_binaries) += lib64lsan +endif +ifeq ($(with_lib32lsan),yes) + $(lib_binaries) += lib32lsan +endif +ifeq ($(with_libn32lsan),yes) + $(lib_binaries) += libn32lsan +endif +ifeq ($(with_libx32lsan),yes) + $(lib_binaries) += libx32lsan +endif +ifeq ($(with_libhflsan),yes) + $(lib_binaries) += libhflsan +endif +ifeq ($(with_libsflsan),yes) + $(lib_binaries) += libsflsan +endif + +define __do_lsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst lsan$(LSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1)) + +$(binary_stamp)-liblsan: $(install_stamp) + $(call do_lsan,) + +$(binary_stamp)-lib64lsan: $(install_stamp) + $(call do_lsan,64) + +$(binary_stamp)-lib32lsan: $(install_stamp) + $(call do_lsan,32) + +$(binary_stamp)-libn32lsan: $(install_stamp) + $(call do_lsan,n32) + +$(binary_stamp)-libx32lsan: $(install_stamp) + $(call do_lsan,x32) + +$(binary_stamp)-libhflsan: $(install_dependencies) + $(call do_lsan,hf) + +$(binary_stamp)-libsflsan: $(install_dependencies) + $(call do_lsan,sf) diff --git a/rules.d/binary-libobjc.mk b/rules.d/binary-libobjc.mk new file mode 100644 index 0000000..65c511c --- /dev/null +++ b/rules.d/binary-libobjc.mk @@ -0,0 +1,162 @@ +ifeq ($(with_libobjc),yes) + $(lib_binaries) += libobjc +endif +ifeq ($(with_objcdev),yes) + $(lib_binaries) += libobjc-dev +endif +ifeq ($(with_lib64objc),yes) + $(lib_binaries) += lib64objc +endif +ifeq ($(with_lib64objcdev),yes) + $(lib_binaries) += lib64objc-dev +endif +ifeq ($(with_lib32objc),yes) + $(lib_binaries) += lib32objc +endif +ifeq ($(with_lib32objcdev),yes) + $(lib_binaries) += lib32objc-dev +endif +ifeq ($(with_libn32objc),yes) + $(lib_binaries) += libn32objc +endif +ifeq ($(with_libn32objcdev),yes) + $(lib_binaries) += libn32objc-dev +endif +ifeq ($(with_libx32objc),yes) + $(lib_binaries) += libx32objc +endif +ifeq ($(with_libx32objcdev),yes) + $(lib_binaries) += libx32objc-dev +endif +ifeq ($(with_libhfobjc),yes) + $(lib_binaries) += libhfobjc +endif +ifeq ($(with_libhfobjcdev),yes) + $(lib_binaries) += libhfobjc-dev +endif +ifeq ($(with_libsfobjc),yes) + $(lib_binaries) += libsfobjc +endif +ifeq ($(with_libsfobjcdev),yes) + $(lib_binaries) += libsfobjc-dev +endif + +files_lobjcdev= \ + $(gcc_lib_dir)/include/objc + +files_lobjc = \ + $(usr_lib$(2))/libobjc.so.* +ifeq ($(with_objc_gc),yes) + files_lobjc += \ + $(usr_lib$(2))/libobjc_gc.so.* +endif + +define __do_libobjc + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjc) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + rm -f debian/$(p_l).symbols + $(if $(2), + ln -sf libobjc.symbols debian/$(p_l).symbols , + fgrep -v libobjc.symbols.gc debian/libobjc.symbols > debian/$(p_l).symbols + ) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + +define __do_libobjc_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(files_lobjcdev) + + $(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l)) + $(if $(filter yes,$(with_objc_gc)), + $(if $(2),, + dh_link -p$(p_l) \ + /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \ + /$(gcc_lib_dir$(2))/libobjc_gc.so + )) + + debian/dh_doclink -p$(p_l) $(p_lbase) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + + + +# ---------------------------------------------------------------------- + +do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) +do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libobjc: $(install_stamp) + $(call do_libobjc,) + +$(binary_stamp)-lib64objc: $(install_stamp) + $(call do_libobjc,64) + +$(binary_stamp)-lib32objc: $(install_stamp) + $(call do_libobjc,32) + +$(binary_stamp)-libn32objc: $(install_stamp) + $(call do_libobjc,n32) + +$(binary_stamp)-libx32objc: $(install_stamp) + $(call do_libobjc,x32) + +$(binary_stamp)-libhfobjc: $(install_stamp) + $(call do_libobjc,hf) + +$(binary_stamp)-libsfobjc: $(install_stamp) + $(call do_libobjc,sf) + + +$(binary_stamp)-libobjc-dev: $(install_stamp) + $(call do_libobjc_dev,) + +$(binary_stamp)-lib64objc-dev: $(install_stamp) + $(call do_libobjc_dev,64) + +$(binary_stamp)-lib32objc-dev: $(install_stamp) + $(call do_libobjc_dev,32) + +$(binary_stamp)-libx32objc-dev: $(install_stamp) + $(call do_libobjc_dev,x32) + +$(binary_stamp)-libn32objc-dev: $(install_stamp) + $(call do_libobjc_dev,n32) + +$(binary_stamp)-libhfobjc-dev: $(install_stamp) + $(call do_libobjc_dev,hf) + +$(binary_stamp)-libsfobjc-dev: $(install_stamp) + $(call do_libobjc_dev,sf) + diff --git a/rules.d/binary-libquadmath.mk b/rules.d/binary-libquadmath.mk new file mode 100644 index 0000000..f15fb61 --- /dev/null +++ b/rules.d/binary-libquadmath.mk @@ -0,0 +1,69 @@ +$(lib_binaries) += libqmath +ifeq ($(with_lib64qmath),yes) + $(lib_binaries) += lib64qmath +endif +ifeq ($(with_lib32qmath),yes) + $(lib_binaries) += lib32qmath +endif +ifeq ($(with_libn32qmath),yes) + $(lib_binaries) += libn32qmath +endif +ifeq ($(with_libx32qmath),yes) + $(lib_binaries) += libx32qmath +endif +ifeq ($(with_libhfqmath),yes) + $(lib_binaries) += libhfqmath +endif +ifeq ($(with_libsfqmath),yes) + $(lib_binaries) += libsfqmath +endif + +define __do_qmath + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + ln -sf libquadmath.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_qmath = $(call __do_qmath,lib$(1)quadmath$(QUADMATH_SONAME),$(1)) + +$(binary_stamp)-libqmath: $(install_stamp) + $(call do_qmath,) + +$(binary_stamp)-lib64qmath: $(install_stamp) + $(call do_qmath,64) + +$(binary_stamp)-lib32qmath: $(install_stamp) + $(call do_qmath,32) + +$(binary_stamp)-libn32qmath: $(install_stamp) + $(call do_qmath,n32) + +$(binary_stamp)-libx32qmath: $(install_stamp) + $(call do_qmath,x32) + +$(binary_stamp)-libhfqmath: $(install_stamp) + $(call do_qmath,hf) + +$(binary_stamp)-libsfqmath: $(install_stamp) + $(call do_qmath,sf) diff --git a/rules.d/binary-libssp.mk b/rules.d/binary-libssp.mk new file mode 100644 index 0000000..e2c873a --- /dev/null +++ b/rules.d/binary-libssp.mk @@ -0,0 +1,155 @@ +arch_binaries := $(arch_binaries) libssp +ifeq ($(with_lib64ssp),yes) + arch_binaries := $(arch_binaries) lib64ssp +endif +ifeq ($(with_lib32ssp),yes) + arch_binaries := $(arch_binaries) lib32ssp +endif +ifeq ($(with_libn32ssp),yes) + arch_binaries := $(arch_binaries) libn32ssp +endif +ifeq ($(with_libx32ssp),yes) + arch_binaries := $(arch_binaries) libx32ssp +endif + +p_ssp = libssp$(SSP_SONAME) +p_ssp32 = lib32ssp$(SSP_SONAME) +p_ssp64 = lib64ssp$(SSP_SONAME) +p_sspx32 = libx32ssp$(SSP_SONAME) +p_sspd = libssp$(SSP_SONAME)-dev + +d_ssp = debian/$(p_ssp) +d_ssp32 = debian/$(p_ssp32) +d_ssp64 = debian/$(p_ssp64) +d_sspx32 = debian/$(p_sspx32) +d_sspd = debian/$(p_sspd) + +dirs_ssp = \ + $(docdir)/$(p_base) \ + $(PF)/$(libdir) +files_ssp = \ + $(PF)/$(libdir)/libssp.so.* + +dirs_sspd = \ + $(docdir) \ + $(PF)/include \ + $(PF)/$(libdir) +files_sspd = \ + $(gcc_lib_dir)/include/ssp \ + $(PF)/$(libdir)/libssp.{a,so} \ + $(PF)/$(libdir)/libssp_nonshared.a + +ifeq ($(with_lib32ssp),yes) + dirs_sspd += $(lib32) + files_sspd += $(lib32)/libssp.{a,so} + files_sspd += $(lib32)/libssp_nonshared.a +endif +ifeq ($(with_lib64ssp),yes) + dirs_sspd += $(PF)/lib64 + files_sspd += $(PF)/lib64/libssp.{a,so} + files_sspd += $(PF)/lib64/libssp_nonshared.a +endif + +$(binary_stamp)-libssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp) + dh_installdirs -p$(p_ssp) + + $(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp) + debian/dh_doclink -p$(p_ssp) $(p_lbase) + + debian/dh_rmemptydirs -p$(p_ssp) + + dh_strip -p$(p_ssp) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))' + dh_shlibdeps -p$(p_ssp) + echo $(p_ssp) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp64) + dh_installdirs -p$(p_ssp64) \ + $(PF)/lib64 + $(dh_compat2) dh_movefiles -p$(p_ssp64) \ + $(PF)/lib64/libssp.so.* + + debian/dh_doclink -p$(p_ssp64) $(p_lbase) + + dh_strip -p$(p_ssp64) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp64) + echo $(p_ssp64) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ssp32) + dh_installdirs -p$(p_ssp32) \ + $(lib32) + $(dh_compat2) dh_movefiles -p$(p_ssp32) \ + $(lib32)/libssp.so.* + + debian/dh_doclink -p$(p_ssp32) $(p_lbase) + + dh_strip -p$(p_ssp32) + dh_makeshlibs $(ldconfig_arg) -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_ssp32) + echo $(p_ssp32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libn32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspn32) + dh_installdirs -p$(p_sspn32) \ + $(PF)/$(libn32) + $(dh_compat2) dh_movefiles -p$(p_sspn32) \ + $(PF)/$(libn32)/libssp.so.* + + debian/dh_doclink -p$(p_sspn32) $(p_lbase) + + dh_strip -p$(p_sspn32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspn32) + echo $(p_sspn32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libx32ssp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_sspx32) + dh_installdirs -p$(p_sspx32) \ + $(PF)/$(libx32) + $(dh_compat2) dh_movefiles -p$(p_sspx32) \ + $(PF)/$(libx32)/libssp.so.* + + debian/dh_doclink -p$(p_sspx32) $(p_lbase) + + dh_strip -p$(p_sspx32) + dh_makeshlibs $(ldconfig_arg) -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))' +# dh_shlibdeps -p$(p_sspx32) + echo $(p_sspx32) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libstdcxx.mk b/rules.d/binary-libstdcxx.mk new file mode 100644 index 0000000..995eb65 --- /dev/null +++ b/rules.d/binary-libstdcxx.mk @@ -0,0 +1,521 @@ +ifeq ($(with_libcxx),yes) + $(lib_binaries) += libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + $(lib_binaries) += lib64stdcxx +endif +ifeq ($(with_lib32cxx),yes) + $(lib_binaries) += lib32stdcxx +endif +ifeq ($(with_libn32cxx),yes) + $(lib_binaries) += libn32stdcxx +endif +ifeq ($(with_libx32cxx),yes) + $(lib_binaries) += libx32stdcxx +endif +ifeq ($(with_libhfcxx),yes) + $(lib_binaries) += libhfstdcxx +endif +ifeq ($(with_libsfcxx),yes) + $(lib_binaries) += libsfstdcxx +endif + +ifneq ($(DEB_STAGE),rtlibs) + ifeq ($(with_lib64cxxdev),yes) + $(lib_binaries) += lib64stdcxx-dev + endif + ifeq ($(with_lib64cxxdbg),yes) + $(lib_binaries) += lib64stdcxxdbg + endif + ifeq ($(with_lib32cxxdev),yes) + $(lib_binaries) += lib32stdcxx-dev + endif + ifeq ($(with_lib32cxxdbg),yes) + $(lib_binaries) += lib32stdcxxdbg + endif + ifeq ($(with_libn32cxxdev),yes) + $(lib_binaries) += libn32stdcxx-dev + endif + ifeq ($(with_libn32cxxdbg),yes) + $(lib_binaries) += libn32stdcxxdbg + endif + ifeq ($(with_libx32cxxdev),yes) + $(lib_binaries) += libx32stdcxx-dev + endif + ifeq ($(with_libx32cxxdbg),yes) + $(lib_binaries) += libx32stdcxxdbg + endif + ifeq ($(with_libhfcxxdev),yes) + $(lib_binaries) += libhfstdcxx-dev + endif + ifeq ($(with_libhfcxxdbg),yes) + $(lib_binaries) += libhfstdcxxdbg + endif + ifeq ($(with_libsfcxxdev),yes) + $(lib_binaries) += libsfstdcxx-dev + endif + ifeq ($(with_libsfcxxdbg),yes) + $(lib_binaries) += libsfstdcxxdbg + endif + + ifeq ($(with_cxxdev),yes) + $(lib_binaries) += libstdcxx-dev + ifneq ($(DEB_CROSS),yes) + indep_binaries := $(indep_binaries) libstdcxx-doc + endif + endif +endif + +libstdc_ext = -$(BASE_VERSION) + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_libhf = libhfstdc++$(CXX_SONAME)$(cross_lib_arch) +p_libsf = libsfstdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = libstdc++$(libstdc_ext)-dev$(cross_lib_arch) +p_pic = libstdc++$(libstdc_ext)-pic$(cross_lib_arch) +p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbghf = libhfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbgsf = libsfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_libd = libstdc++$(libstdc_ext)-doc + +d_lib = debian/$(p_lib) +d_lib64 = debian/$(p_lib64) +d_lib32 = debian/$(p_lib32) +d_libn32= debian/$(p_libn32) +d_libx32= debian/$(p_libx32) +d_libhf = debian/$(p_libhf) +d_libsf = debian/$(p_libsf) +d_dev = debian/$(p_dev) +d_pic = debian/$(p_pic) +d_dbg = debian/$(p_dbg) +d_dbg64 = debian/$(p_dbg64) +d_dbg32 = debian/$(p_dbg32) +d_dbghf = debian/$(p_dbghf) +d_dbgsf = debian/$(p_dbgsf) +d_libd = debian/$(p_libd) + +dirs_dev = \ + $(docdir)/$(p_base)/C++ \ + $(usr_lib) \ + $(gcc_lib_dir)/include \ + $(PFL)/include/c++ + +files_dev = \ + $(PFL)/include/c++/$(BASE_VERSION) \ + $(gcc_lib_dir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/libsupc++.a \ + $(gcc_lib_dir)/libstdc++fs.a + +ifeq ($(with_multiarch_cxxheaders),yes) + dirs_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) + files_dev += \ + $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext} +endif + +dirs_dbg = \ + $(docdir) \ + $(PF)/lib/debug/$(usr_lib) \ + $(usr_lib)/debug \ + $(PF)/share/gdb/auto-load/$(usr_lib)/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(usr_lib)/debug/libstdc++.{a,so*} \ + $(usr_lib)/debug/libstdc++fs.a + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +# ---------------------------------------------------------------------- + +gxx_baseline_dir = $(shell \ + sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \ + $(buildlibdir)/libstdc++-v3/testsuite/Makefile) +gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt + +debian/README.libstdc++-baseline: + cat debian/README.libstdc++-baseline.in \ + > debian/README.libstdc++-baseline + + baseline_name=`basename $(gxx_baseline_dir)`; \ + baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ + compat_baseline_name=""; \ + if [ -f "$(gxx_baseline_file)" ]; then \ + ( \ + echo "A baseline file for $$baseline_name was found."; \ + echo "Running the check-abi script ..."; \ + echo ""; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ + check-abi; \ + ) >> debian/README.libstdc++-baseline; \ + else \ + ( \ + echo "No baseline file found for $$baseline_name."; \ + echo "Generating a new baseline file ..."; \ + echo ""; \ + ) >> debian/README.libstdc++-baseline; \ + mkdir -p $(gxx_baseline_dir); \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ + if [ -f $(gxx_baseline_file) ]; then \ + cat $(gxx_baseline_file); \ + else \ + cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \ + fi >> debian/README.libstdc++-baseline; \ + fi + +# ---------------------------------------------------------------------- +# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors +# for the 32bit multilib build + +define __do_libstdcxx + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + + dh_installdirs -p$(p_l) \ + $(docdir) \ + $(usr_lib$(2)) \ + $(PF)/share/gdb/auto-load/$(usr_lib$(2)) + + $(if $(DEB_CROSS),,$(if $(2),, + dh_installdirs -p$(p_l) \ + $(PF)/share/gcc-$(BASE_VERSION)/python + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx + )) + cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \ + $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py + + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_l)/$(usr_lib$(2))/. + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + + dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)) + + $(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \ + -$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \ + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + ) + + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dbg + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_d) + dh_installdirs -p$(p_d) \ + $(PF)/lib/debug/$(usr_lib$(2)) \ + $(usr_lib$(2)) + + $(if $(filter yes,$(with_lib$(2)cxx)), + cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ + $(d_d)/$(usr_lib$(2))/.; + dh_strip -p$(p_d) --keep-debug; + $(if $(filter yes,$(with_common_libs)),, # if !with_common_libs + # remove the debug symbols for libstdc++ + # built by a newer version of GCC + rm -rf $(d_d)/usr/lib/debug/$(PF); + ) + rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9] + ) + + $(if $(filter yes,$(with_cxx_debug)), + mkdir -p $(d_d)/$(usr_lib$(2))/debug; + mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug; + rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a + ) + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ + $(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l))),$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_d)) + + debian/dh_doclink -p$(p_d) $(p_lbase) + debian/dh_rmemptydirs -p$(p_d) + echo $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +define __do_libstdcxx_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib$(2))/libstdc++.a $(d)/$(usr_lib$(2))/libstdc++fs.a $(d)/$(usr_lib$(2))/libsupc++.a \ + $(d)/$(gcc_lib_dir$(2))/ + + rm -rf $(d_l) + dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) + + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lib_dir$(2))/libstdc++.a \ + $(gcc_lib_dir$(2))/libstdc++fs.a \ + $(gcc_lib_dir$(2))/libsupc++.a \ + $(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2)) + $(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l)) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_rmemptydirs -p$(p_l) + dh_strip -p$(p_l) + dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1)) +do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1)) +do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1)) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libstdcxx: $(install_stamp) + $(call do_libstdcxx,) + +$(binary_stamp)-lib64stdcxx: $(install_stamp) + $(call do_libstdcxx,64) + +$(binary_stamp)-lib32stdcxx: $(install_stamp) + $(call do_libstdcxx,32) + +$(binary_stamp)-libn32stdcxx: $(install_stamp) + $(call do_libstdcxx,n32) + +$(binary_stamp)-libx32stdcxx: $(install_stamp) + $(call do_libstdcxx,x32) + +$(binary_stamp)-libhfstdcxx: $(install_stamp) + $(call do_libstdcxx,hf) + +$(binary_stamp)-libsfstdcxx: $(install_stamp) + $(call do_libstdcxx,sf) + +$(binary_stamp)-lib64stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,64) + +$(binary_stamp)-lib32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,32) + +$(binary_stamp)-libn32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,n32) + +$(binary_stamp)-libx32stdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,x32) + +$(binary_stamp)-libhfstdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,hf) + +$(binary_stamp)-libsfstdcxxdbg: $(install_stamp) + $(call do_libstdcxx_dbg,sf) + +$(binary_stamp)-lib64stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,64) + +$(binary_stamp)-lib32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,32) + +$(binary_stamp)-libn32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,n32) + +$(binary_stamp)-libx32stdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,x32) + +$(binary_stamp)-libhfstdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,hf) + +$(binary_stamp)-libsfstdcxx-dev: $(install_stamp) + $(call do_libstdcxx_dev,sf) + +# ---------------------------------------------------------------------- +libcxxdev_deps = $(install_stamp) +ifeq ($(with_libcxx),yes) + libcxxdev_deps += $(binary_stamp)-libstdcxx +endif +ifeq ($(with_check),yes) + libcxxdev_deps += debian/README.libstdc++-baseline +endif +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + ln -sf ../../../$(DEB_TARGET_GNU_TYPE)/libstdc++.so.$(CXX_SONAME) \ + $(d)/$(gcc_lib_dir)/libstdc++.so + mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ + + rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a + rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + + for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ + if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ + done + + $(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev) + $(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic) +ifeq ($(with_cxx_debug),yes) + $(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg) +endif + + dh_link -p$(p_dev) \ + /$(usr_lib)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so + + debian/dh_doclink -p$(p_dev) $(p_lbase) + debian/dh_doclink -p$(p_pic) $(p_lbase) + debian/dh_doclink -p$(p_dbg) $(p_lbase) + cp -p $(srcdir)/libstdc++-v3/ChangeLog \ + $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ +ifeq ($(with_check),yes) + cp -p debian/README.libstdc++-baseline \ + $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH) + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \ + fi +endif + cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \ + $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map + + cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/. + sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \ + $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py + +ifeq ($(with_libcxx),yes) + cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \ + $(d_dbg)/$(usr_lib)/ + dh_strip -p$(p_dbg) --keep-debug + rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9] +endif + + dh_strip -p$(p_dev) --dbg-package=$(p_dbg) +ifneq ($(with_common_libs),yes) + : # remove the debug symbols for libstdc++ built by a newer version of GCC + rm -rf $(d_dbg)/usr/lib/debug/$(PF) +endif + dh_strip -p$(p_pic) + +ifeq ($(with_cxxdev),yes) + debian/dh_rmemptydirs -p$(p_dev) + debian/dh_rmemptydirs -p$(p_pic) + debian/dh_rmemptydirs -p$(p_dbg) +endif + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + $(call shlibdirs_to_search,,) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_dbg)) + echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc + +doxygen-docs: $(build_doxygen_stamp) +$(build_doxygen_stamp): $(build_stamp) + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen + $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen + -find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f + + touch $@ + +$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_libd) + dh_installdirs -p$(p_libd) \ + $(docdir)/$(p_base)/libstdc++ \ + $(PF)/share/man + +# debian/dh_doclink -p$(p_libd) $(p_base) + dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) + dh_installdocs -p$(p_libd) + rm -f $(d_libd)/$(docdir)/$(p_base)/copyright + + cp -a $(srcdir)/libstdc++-v3/doc/html/* \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + cp -a $(doxygen_doc_dir)/doxygen/html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/user + find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \ + | xargs -r rm -f + +# Broken docs ... see #766499 +# rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js +# dh_link -p$(p_libd) \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/html/jquery.js \ +# /usr/share/javascript/jquery/jquery.js \ +# /$(docdir)/$(p_base)/libstdc++/user/jquery.js + + : FIXME: depending on the doxygen version + if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \ + $(d_libd)/$(PF)/share/man/man3; \ + if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \ + $(d_libd)/$(PF)/share/man/man3/; \ + fi; \ + elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ + cp -a $(doxygen_doc_dir)/doxygen/man/man3 \ + $(d_libd)/$(PF)/share/man/man3; \ + fi + + for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \ + [ -f $${i} ] || continue; \ + mv $${i} $${i}cxx; \ + done + rm -f $(d_libd)/$(PF)/share/man/man3/todo.3* + + mkdir -p $(d_libd)/usr/share/lintian/overrides + cp -p debian/$(p_libd).overrides \ + $(d_libd)/usr/share/lintian/overrides/$(p_libd) + + echo $(p_libd) >> debian/indep_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-libtsan.mk b/rules.d/binary-libtsan.mk new file mode 100644 index 0000000..0320423 --- /dev/null +++ b/rules.d/binary-libtsan.mk @@ -0,0 +1,80 @@ +$(lib_binaries) += libtsan +ifeq (0,1) +ifeq ($(with_lib64tsan),yes) + $(lib_binaries) += lib64tsan +endif +ifeq ($(with_lib32tsan),yes) + $(lib_binaries) += lib32tsan +endif +ifeq ($(with_libn32tsan),yes) + $(lib_binaries) += libn32tsan +endif +ifeq ($(with_libx32tsan),yes) + $(lib_binaries) += libx32tsan +endif +ifeq ($(with_libhftsan),yes) + $(lib_binaries) += libhftsan +endif +ifeq ($(with_libsftsan),yes) + $(lib_binaries) += libsftsan +endif +endif + +define __do_tsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libtsan.so.* \ + $(usr_lib$(2))/libtsan_preinit.o + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst tsan$(TSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1)) + +$(binary_stamp)-libtsan: $(install_stamp) + $(call do_tsan,) + +$(binary_stamp)-lib64tsan: $(install_stamp) + $(call do_tsan,64) + +$(binary_stamp)-lib32tsan: $(install_stamp) + $(call do_tsan,32) + +$(binary_stamp)-libn32tsan: $(install_stamp) + $(call do_tsan,n32) + +$(binary_stamp)-libx32tsan: $(install_stamp) + $(call do_tsan,x32) + +$(binary_stamp)-libhftsan: $(install_dependencies) + $(call do_tsan,hf) + +$(binary_stamp)-libsftsan: $(install_dependencies) + $(call do_tsan,sf) diff --git a/rules.d/binary-libubsan.mk b/rules.d/binary-libubsan.mk new file mode 100644 index 0000000..5c0f03d --- /dev/null +++ b/rules.d/binary-libubsan.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += libubsan +ifeq ($(with_lib64ubsan),yes) + $(lib_binaries) += lib64ubsan +endif +ifeq ($(with_lib32ubsan),yes) + $(lib_binaries) += lib32ubsan +endif +ifeq ($(with_libn32ubsan),yes) + $(lib_binaries) += libn32ubsan +endif +ifeq ($(with_libx32ubsan),yes) + $(lib_binaries) += libx32ubsan +endif +ifeq ($(with_libhfubsan),yes) + $(lib_binaries) += libhfubsan +endif +ifeq ($(with_libsfubsan),yes) + $(lib_binaries) += libsfubsan +endif + +define __do_ubsan + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst ubsan$(UBSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1)) + +$(binary_stamp)-libubsan: $(install_stamp) + $(call do_ubsan,) + +$(binary_stamp)-lib64ubsan: $(install_stamp) + $(call do_ubsan,64) + +$(binary_stamp)-lib32ubsan: $(install_stamp) + $(call do_ubsan,32) + +$(binary_stamp)-libn32ubsan: $(install_stamp) + $(call do_ubsan,n32) + +$(binary_stamp)-libx32ubsan: $(install_stamp) + $(call do_ubsan,x32) + +$(binary_stamp)-libhfubsan: $(install_dependencies) + $(call do_ubsan,hf) + +$(binary_stamp)-libsfubsan: $(install_dependencies) + $(call do_ubsan,sf) diff --git a/rules.d/binary-libvtv.mk b/rules.d/binary-libvtv.mk new file mode 100644 index 0000000..2d3dca2 --- /dev/null +++ b/rules.d/binary-libvtv.mk @@ -0,0 +1,76 @@ +$(lib_binaries) += libvtv +ifeq ($(with_lib64vtv),yes) + $(lib_binaries) += lib64vtv +endif +ifeq ($(with_lib32vtv),yes) + $(lib_binaries) += lib32vtv +endif +ifeq ($(with_libn32vtv),yes) + $(lib_binaries) += libn32vtv +endif +ifeq ($(with_libx32vtv),yes) + $(lib_binaries) += libx32vtv +endif +ifeq ($(with_libhfvtv),yes) + $(lib_binaries) += libhfvtv +endif +ifeq ($(with_libsfvtv),yes) + $(lib_binaries) += libsfvtv +endif + +define __do_vtv + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.* + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + if [ -f debian/$(p_l).overrides ]; then \ + mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ + cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ + fi + + dh_strip -p$(p_l) --dbg-package=$(p_d) + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst vtv$(VTV_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + $(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# ---------------------------------------------------------------------- + +do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1)) + +$(binary_stamp)-libvtv: $(install_stamp) + $(call do_vtv,) + +$(binary_stamp)-lib64vtv: $(install_stamp) + $(call do_vtv,64) + +$(binary_stamp)-lib32vtv: $(install_stamp) + $(call do_vtv,32) + +$(binary_stamp)-libn32vtv: $(install_stamp) + $(call do_vtv,n32) + +$(binary_stamp)-libx32vtv: $(install_stamp) + $(call do_vtv,x32) + +$(binary_stamp)-libhfvtv: $(install_dependencies) + $(call do_vtv,hf) + +$(binary_stamp)-libsfvtv: $(install_dependencies) + $(call do_vtv,sf) diff --git a/rules.d/binary-m2.mk b/rules.d/binary-m2.mk new file mode 100644 index 0000000..772855e --- /dev/null +++ b/rules.d/binary-m2.mk @@ -0,0 +1,289 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifeq (0,1) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf))) + arch_binaries := $(arch_binaries) gm2-multi + endif + endif + arch_binaries := $(arch_binaries) gm2 + + ifeq ($(with_m2dev),yes) + $(lib_binaries) += libgm2-dev + endif + ifeq ($(with_libgm2),yes) + $(lib_binaries) += libgm2 + endif + + ifeq (0,1) + ifeq ($(with_lib64gm2dev),yes) + $(lib_binaries) += lib64gm2-dev + endif + ifeq ($(with_lib32gm2dev),yes) + $(lib_binaries) += lib32gm2-dev + endif + ifeq ($(with_libn32gm2dev),yes) + $(lib_binaries) += libn32gm2-dev + endif + ifeq ($(with_libx32gm2dev),yes) + $(lib_binaries) += libx32gm2-dev + endif + ifeq ($(with_libhfgm2dev),yes) + $(lib_binaries) += libhfgm2-dev + endif + ifeq ($(with_libsfgm2dev),yes) + $(lib_binaries) += libsfgm2-dev + endif + + ifeq ($(with_lib64gm2),yes) + $(lib_binaries) += lib64gm2 + endif + ifeq ($(with_lib32gm2),yes) + $(lib_binaries) += lib32gm2 + endif + ifeq ($(with_libn32gm2),yes) + $(lib_binaries) += libn32gm2 + endif + ifeq ($(with_libx32gm2),yes) + $(lib_binaries) += libx32gm2 + endif + ifeq ($(with_libhfgm2),yes) + $(lib_binaries) += libhfgm2 + endif + ifeq ($(with_libsfgm2),yes) + $(lib_binaries) += libsfgm2 + endif + endif +endif + +p_gm2 = gm2$(pkg_ver)$(cross_bin_arch) +p_gm2_m = gm2$(pkg_ver)-multilib$(cross_bin_arch) +p_libgm2 = libgm2-$(GM2_SONAME) +p_libgm2dev = libgm2$(pkg_ver)-dev + +d_gm2 = debian/$(p_gm2) +d_gm2_m = debian/$(p_gm2_m) +d_libgm2 = debian/$(p_libgm2) +d_libgm2dev = debian/$(p_libgm2dev) + +dirs_gm2 = \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lexec_dir) \ + $(gcc_lexec_dir)/plugin +#ifneq ($(DEB_CROSS),yes) +# dirs_gm2 += \ +# $(gm2_include_dir) +#endif + +files_gm2 = \ + $(PF)/bin/$(cmd_prefix)gm2$(pkg_ver) \ + $(gcc_lexec_dir)/plugin/m2rte.so \ + $(gcc_lexec_dir)/{cc1gm2,gm2l,gm2lcc,gm2lgen,gm2lorder,gm2m} +ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + files_gm2 += \ + $(PF)/share/man/man1/$(cmd_prefix)gm2$(pkg_ver).1 +endif + +dirs_libgm2 = \ + $(PF)/lib \ + $(gm2_include_dir) \ + $(gcc_lib_dir) + +$(binary_stamp)-gm2: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2) + dh_installdirs -p$(p_gm2) $(dirs_gm2) + + dh_installdocs -p$(p_gm2) + dh_installchangelogs -p$(p_gm2) src/gcc/gm2/ChangeLog + + $(dh_compat2) dh_movefiles -p$(p_gm2) $(files_gm2) + +ifeq ($(unprefixed_names),yes) + ln -sf $(cmd_prefix)gm2$(pkg_ver) \ + $(d_gm2)/$(PF)/bin/gm2$(pkg_ver) + ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) + ln -sf $(cmd_prefix)gm2$(pkg_ver).1 \ + $(d_gm2)/$(PF)/share/man/man1/gm2$(pkg_ver).1 + endif +endif + + dh_link -p$(p_gm2) \ + /$(docdir)/$(p_gcc)/README.Bugs \ + /$(docdir)/$(p_gm2)/README.Bugs + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_gm2)/$(gcc_lexec_dir)/{cc1gm2,gm2l,gm2lcc,gm2lgen,gm2lorder} +endif + dh_strip -p$(p_gm2) \ + $(if $(unstripped_exe),-X/cc1gm2 -X/gm2) + dh_shlibdeps -p$(p_gm2) + + mkdir -p $(d_gm2)/usr/share/lintian/overrides + echo '$(p_gm2) binary: hardening-no-pie' \ + > $(d_gm2)/usr/share/lintian/overrides/$(p_gm2) + + echo $(p_gm2) >> debian/arch_binaries + + find $(d_gm2) -type d -empty -delete + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-gm2-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gm2_m) + dh_installdirs -p$(p_gm2_m) $(docdir) + + debian/dh_doclink -p$(p_gm2_m) $(p_xbase) + + dh_strip -p$(p_gm2_m) + dh_shlibdeps -p$(p_gm2_m) + echo $(p_gm2_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +define __do_libgm2 + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) $(d_d) + dh_installdirs -p$(p_l) \ + $(usr_lib$(2)) + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libgm2.so.* \ + $(usr_lib$(2))/libcor.so.* \ + $(usr_lib$(2))/libiso.so.* \ + $(usr_lib$(2))/liblog.so.* \ + $(usr_lib$(2))/libmin.so.* \ + $(usr_lib$(2))/libulm.so.* + + $(if $(filter $(build_type), build-cross cross-build-cross), \ + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(usr_lib$(2))/libpth.so.* \ + ) + + debian/dh_doclink -p$(p_l) $(p_lbase) + debian/dh_doclink -p$(p_d) $(p_lbase) + + dh_strip -p$(p_l) --dbg-package=$(p_d) + : ln -sf libgm2.symbols debian/$(p_l).symbols + $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ + -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) + rm -f debian/$(p_l).symbols + $(call cross_mangle_shlibs,$(p_l)) + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ + $(call shlibdirs_to_search, \ + $(subst gm2-$(GM2_SONAME),gcc$(GCC_SONAME),$(p_l)) \ + ,$(2)) \ + $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) + $(call cross_mangle_substvars,$(p_l)) + + $(if $(2), + mkdir -p $(d_l)/usr/share/lintian/overrides; \ + echo "$$pkgname binary: embedded-library" \ + >> $(d_l)/usr/share/lintian/overrides/$(p_l) + ) + + dh_lintian -p$(p_l) + echo $(p_l) $(p_d) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +# install_gm2_lib(lib,soname,flavour,package,subdir) +define install_gm2_lib + mkdir -p debian/$(4)/$(gcc_lib_dir$(3))/$(5) + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/. + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so + +endef + +define __do_libgm2_dev + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l) + dh_installdirs -p$(p_l) \ + $(gcc_lib_dir$(2)) + + $(call install_gm2_lib,libgm2,$(GM2_SONAME),$(2),$(p_l),m2/pim) + $(call install_gm2_lib,libcor,$(GM2_SONAME),$(2),$(p_l),m2/cor) + $(call install_gm2_lib,libiso,$(GM2_SONAME),$(2),$(p_l),m2/iso) + $(call install_gm2_lib,liblog,$(GM2_SONAME),$(2),$(p_l),m2/log) + $(call install_gm2_lib,libmin,$(GM2_SONAME),$(2),$(p_l),m2/min) + $(call install_gm2_lib,libulm,$(GM2_SONAME),$(2),$(p_l),m2/ulm) + + $(if $(filter $(build_type), build-cross cross-build-cross), \ + $(call install_gcc_lib,libpth,0,$(2),$(p_l)) + ) + + $(if $(2),, + $(dh_compat2) dh_movefiles -p$(p_l) \ + $(gcc_lexec_dir)/m2 + ) + + : # included in gm2 package + rm -f $(d_l)/$(gm2_include_dir)/__entrypoint.di + + debian/dh_doclink -p$(p_l) \ + $(if $(filter yes,$(with_separate_gm2)),$(p_gm2),$(p_lbase)) + echo $(p_l) >> debian/$(lib_binaries) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) +endef + +do_libgm2 = $(call __do_libgm2,lib$(1)gm2-$(GM2_SONAME),$(1)) +do_libgm2_dev = $(call __do_libgm2_dev,lib$(1)gm2-$(BASE_VERSION)-dev,$(1)) + +$(binary_stamp)-libgm2: $(install_stamp) + $(call do_libgm2,) + +$(binary_stamp)-lib64gm2: $(install_stamp) + $(call do_libgm2,64) + +$(binary_stamp)-lib32gm2: $(install_stamp) + $(call do_libgm2,32) + +$(binary_stamp)-libn32gm2: $(install_stamp) + $(call do_libgm2,n32) + +$(binary_stamp)-libx32gm2: $(install_stamp) + $(call do_libgm2,x32) + +$(binary_stamp)-libhfgm2: $(install_stamp) + $(call do_libgm2,hf) + +$(binary_stamp)-libsfgm2: $(install_stamp) + $(call do_libgm2,sf) + + +$(binary_stamp)-libgm2-dev: $(install_stamp) + $(call do_libgm2_dev,) + +$(binary_stamp)-lib64gm2-dev: $(install_stamp) + $(call do_libgm2_dev,64) + +$(binary_stamp)-lib32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,32) + +$(binary_stamp)-libx32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,x32) + +$(binary_stamp)-libn32gm2-dev: $(install_stamp) + $(call do_libgm2_dev,n32) + +$(binary_stamp)-libhfgm2-dev: $(install_stamp) + $(call do_libgm2_dev,hf) + +$(binary_stamp)-libsfgm2-dev: $(install_stamp) + $(call do_libgm2_dev,sf) diff --git a/rules.d/binary-neon.mk b/rules.d/binary-neon.mk new file mode 100644 index 0000000..83ff60c --- /dev/null +++ b/rules.d/binary-neon.mk @@ -0,0 +1,47 @@ +arch_binaries := $(arch_binaries) neon + +p_nlgcc = libgcc$(GCC_SONAME)-neon +p_ngomp = libgomp$(GOMP_SONAME)-neon +p_nlobjc = libobjc$(OBJC_SONAME)-neon +p_nflib = libgfortran$(FORTRAN_SONAME)-neon +p_nlcxx = libstdc++$(CXX_SONAME)-neon + +d_nlgcc = debian/$(p_nlgcc) +d_ngomp = debian/$(p_ngomp) +d_nlobjc = debian/$(p_nlobjc) +d_nflib = debian/$(p_nflib) +d_nlcxx = debian/$(p_nlcxx) + +neon_pkgs = -p$(p_nlgcc) -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) + +# ---------------------------------------------------------------------- +$(binary_stamp)-neon: $(install_neon_stamp) + dh_testdir + dh_testroot + + dh_installdirs -p$(p_nlgcc) \ + $(PF)/share/doc \ + lib/neon + dh_installdirs -A -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) \ + $(PF)/share/doc \ + $(PF)/lib/neon + + cp -a $(d_neon)/$(PF)/lib/libgcc*.so.* \ + $(d_nlgcc)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libgomp*.so.* \ + $(d_ngomp)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libobjc*.so.* \ + $(d_nlobjc)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libgfortran*.so.* \ + $(d_nflib)/$(PF)/lib/neon/ + cp -a $(d_neon)/$(PF)/lib/libstdc++*.so.* \ + $(d_nlcxx)/$(PF)/lib/neon/ + + for p in $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx); do \ + ln -s ../$(p_base) debian/$$p/usr/share/doc/$$p; \ + done + dh_strip $(neon_pkgs) + dh_shlibdeps $(neon_pkgs) + echo $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx) >> debian/arch_binaries + + touch $@ diff --git a/rules.d/binary-nof.mk b/rules.d/binary-nof.mk new file mode 100644 index 0000000..fa5408a --- /dev/null +++ b/rules.d/binary-nof.mk @@ -0,0 +1,51 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_ver)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(usr_lib)/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(usr_lib)/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + $(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/. + rm -f $(d)/$(usr_lib)/libgcc_s_nof.so + ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + $(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_xbase) + dh_strip -p$(p_nof) + dh_shlibdeps -p$(p_nof) + + dh_makeshlibs $(ldconfig_arg) -p$(p_nof) + : # Only keep the shlibs file for the libgcc_s_nof library + fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ + > debian/$(p_nof)/DEBIAN/shlibs.tmp + mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs + + echo $(p_nof) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-nvptx.mk b/rules.d/binary-nvptx.mk new file mode 100644 index 0000000..ebce8fe --- /dev/null +++ b/rules.d/binary-nvptx.mk @@ -0,0 +1,88 @@ +ifeq ($(with_offload_nvptx),yes) + arch_binaries := $(arch_binaries) nvptx + ifeq ($(with_common_libs),yes) + arch_binaries := $(arch_binaries) nvptx-plugin + endif +endif + +p_nvptx = gcc$(pkg_ver)-offload-nvptx +d_nvptx = debian/$(p_nvptx) + +p_pl_nvptx = libgomp-plugin-nvptx1 +d_pl_nvptx = debian/$(p_pl_nvptx) + +dirs_nvptx = \ + $(docdir)/$(p_xbase)/ \ + $(PF)/bin \ + $(gcc_lexec_dir)/accel + +files_nvptx = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver) \ + $(gcc_lexec_dir)/accel/nvptx-none + +# not needed: libs moved, headers not needed for lto1 +# $(PF)/nvptx-none + +# are these needed? +# $(PF)/lib/gcc/nvptx-none/$(versiondir)/{include,finclude,mgomp} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_nvptx += \ + $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver).1 +endif + +$(binary_stamp)-nvptx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_nvptx) + dh_installdirs -p$(p_nvptx) $(dirs_nvptx) + $(dh_compat2) dh_movefiles --sourcedir=$(d)-nvptx -p$(p_nvptx) \ + $(files_nvptx) + + mkdir -p $(d_nvptx)/usr/share/lintian/overrides + echo '$(p_nvptx) binary: hardening-no-pie' \ + > $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_nvptx) binary: binary-without-manpage' \ + >> $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) +endif + + debian/dh_doclink -p$(p_nvptx) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_nvptx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} +endif + dh_strip -p$(p_nvptx) \ + $(if $(unstripped_exe),-X/lto1) + dh_shlibdeps -p$(p_nvptx) + echo $(p_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-nvptx-plugin: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_pl_nvptx) + dh_installdirs -p$(p_pl_nvptx) \ + $(docdir) \ + $(usr_lib) + $(dh_compat2) dh_movefiles -p$(p_pl_nvptx) \ + $(usr_lib)/libgomp-plugin-nvptx.so.* + + debian/dh_doclink -p$(p_pl_nvptx) $(p_xbase) + debian/dh_rmemptydirs -p$(p_pl_nvptx) + + dh_strip -p$(p_pl_nvptx) + dh_makeshlibs -p$(p_pl_nvptx) + dh_shlibdeps -p$(p_pl_nvptx) + echo $(p_pl_nvptx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objc.mk b/rules.d/binary-objc.mk new file mode 100644 index 0000000..b5cd216 --- /dev/null +++ b/rules.d/binary-objc.mk @@ -0,0 +1,73 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) objc-multi + endif + arch_binaries := $(arch_binaries) objc +endif + +p_objc = gobjc$(pkg_ver)$(cross_bin_arch) +d_objc = debian/$(p_objc) + +p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch) +d_objc_m= debian/$(p_objc_m) + +dirs_objc = \ + $(docdir)/$(p_xbase)/ObjC \ + $(gcc_lexec_dir) + +files_objc = \ + $(gcc_lexec_dir)/cc1obj + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc) + dh_installdirs -p$(p_objc) $(dirs_objc) + $(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc) + + cp -p $(srcdir)/libobjc/{README*,THREADS*} \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/. + + cp -p $(srcdir)/libobjc/ChangeLog \ + $(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc + + mkdir -p $(d_objc)/usr/share/lintian/overrides + echo '$(p_objc) binary: hardening-no-pie' \ + > $(d_objc)/usr/share/lintian/overrides/$(p_objc) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_objc) binary: binary-without-manpage' \ + >> $(d_objc)/usr/share/lintian/overrides/$(p_objc) +endif + + debian/dh_doclink -p$(p_objc) $(p_xbase) + + debian/dh_rmemptydirs -p$(p_objc) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objc)/$(gcc_lexec_dir)/cc1obj +endif + dh_strip -p$(p_objc) \ + $(if $(unstripped_exe),-X/cc1obj) + dh_shlibdeps -p$(p_objc) + echo $(p_objc) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_m) + dh_installdirs -p$(p_objc_m) $(docdir) + + debian/dh_doclink -p$(p_objc_m) $(p_xbase) + + dh_strip -p$(p_objc_m) + dh_shlibdeps -p$(p_objc_m) + echo $(p_objc_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-objcxx.mk b/rules.d/binary-objcxx.mk new file mode 100644 index 0000000..4f6d8e1 --- /dev/null +++ b/rules.d/binary-objcxx.mk @@ -0,0 +1,66 @@ +ifneq ($(DEB_STAGE),rtlibs) + ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + arch_binaries := $(arch_binaries) objcxx-multi + endif + arch_binaries := $(arch_binaries) objcxx +endif + +p_objcx = gobjc++$(pkg_ver)$(cross_bin_arch) +d_objcx = debian/$(p_objcx) + +p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch) +d_objcx_m = debian/$(p_objcx_m) + +dirs_objcx = \ + $(docdir)/$(p_xbase)/Obj-C++ \ + $(gcc_lexec_dir) + +files_objcx = \ + $(gcc_lexec_dir)/cc1objplus + +$(binary_stamp)-objcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx) + dh_installdirs -p$(p_objcx) $(dirs_objcx) + $(dh_compat2) dh_movefiles -p$(p_objcx) $(files_objcx) + + debian/dh_doclink -p$(p_objcx) $(p_xbase) + cp -p $(srcdir)/gcc/objcp/ChangeLog \ + $(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog + + mkdir -p $(d_objcx)/usr/share/lintian/overrides + echo '$(p_objcx) binary: hardening-no-pie' \ + > $(d_objcx)/usr/share/lintian/overrides/$(p_objcx) +ifeq ($(GFDL_INVARIANT_FREE),yes) + echo '$(p_objcx) binary: binary-without-manpage' \ + >> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx) +endif + + debian/dh_rmemptydirs -p$(p_objcx) + +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) + $(DWZ) \ + $(d_objcx)/$(gcc_lexec_dir)/cc1objplus +endif + dh_strip -p$(p_objcx) \ + $(if $(unstripped_exe),-X/cc1objplus) + dh_shlibdeps -p$(p_objcx) + echo $(p_objcx) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + rm -rf $(d_objcx_m) + debian/dh_doclink -p$(p_objcx_m) $(p_xbase) + debian/dh_rmemptydirs -p$(p_objcx_m) + dh_strip -p$(p_objcx_m) + dh_shlibdeps -p$(p_objcx_m) + echo $(p_objcx_m) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-snapshot.mk b/rules.d/binary-snapshot.mk new file mode 100644 index 0000000..3382417 --- /dev/null +++ b/rules.d/binary-snapshot.mk @@ -0,0 +1,165 @@ +arch_binaries := $(arch_binaries) snapshot + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + p_snap = gcc-snapshot +else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE))) + p_snap = gcc-linaro +else + $(error unknown build for single gcc package) +endif + +ifeq ($(DEB_CROSS),yes) + p_snap := $(p_snap)$(cross_bin_arch) +endif +d_snap = debian/$(p_snap) + +dirs_snap = \ + $(docdir)/$(p_snap) \ + usr/lib + +ifeq ($(with_hppa64),yes) + snapshot_depends = binutils-hppa64 +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-snapshot: $(install_snap_stamp) + dh_testdir + dh_testroot + mv $(install_snap_stamp) $(install_snap_stamp)-tmp + + rm -rf $(d_snap) + dh_installdirs -p$(p_snap) $(dirs_snap) + + mv $(d)/$(PF) $(d_snap)/usr/lib/ + + find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf + find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # FIXME: libbacktrace is not installed by default + for d in . 32 n32 64 sf hf; do \ + if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ + install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ + $(d_snap)/$(gcc_lib_dir)/$$d; \ + fi; \ + done + if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ + install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + install -m644 $(srcdir)/libbacktrace/backtrace.h \ + $(d_snap)/$(gcc_lib_dir)/include/; \ + fi + + rm -rf $(d_snap)/$(PF)/lib/nof + +ifeq ($(with_ada),yes FIXME: apply our ada patches) + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a + dh_link -p$(p_snap) \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ + $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a + + set -e; \ + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_SONAME); \ + mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \ + rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + dh_link -p$(p_snap) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ + done +endif +ifeq ($(with_ada),yes) + ln -sf gcc $(d_snap)/$(PF)/bin/gnatgcc +endif + +ifeq ($(with_hppa64),yes) + : # provide as and ld links + dh_link -p $(p_snap) \ + /usr/bin/hppa64-linux-gnu-as \ + /$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/as \ + /usr/bin/hppa64-linux-gnu-ld \ + /$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/ld +endif + +ifeq ($(with_check),yes) + dh_installdocs -p$(p_snap) test-summary +# more than one libgo.sum, avoid it + mkdir -p $(d_snap)/$(docdir)/$(p_snap)/test-summaries + cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ + $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ + $(d_snap)/$(docdir)/$(p_snap)/test-summaries/ + ifeq ($(with_go),yes) + cp -p $(buildlibdir)/libgo/libgo.sum \ + $(d_snap)/$(docdir)/$(p_snap)/test-summaries/ + endif + if which xz 2>&1 >/dev/null; then \ + echo -n $(d_snap)/$(docdir)/$(p_snap)/test-summaries/* \ + | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -7v; \ + fi +else + dh_installdocs -p$(p_snap) +endif + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \ + fi + cp -p debian/README.snapshot \ + $(d_snap)/$(docdir)/$(p_snap)/README.Debian + cp -p debian/README.Bugs \ + $(d_snap)/$(docdir)/$(p_snap)/ + dh_installchangelogs -p$(p_snap) +ifeq ($(DEB_TARGET_ARCH),hppa) +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i))) +else +# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ +# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i))) + dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ + $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i))) +endif + dh_compress -p$(p_snap) -X README.Bugs -X.log.xz -X.sum.xz + -find $(d_snap) -type d ! -perm 755 -exec chmod 755 {} \; + dh_fixperms -p$(p_snap) +ifeq ($(with_ada),yes) + find $(d_snap)/$(gcc_lib_dir) -name '*.ali' | xargs -r chmod 444 +endif + + mkdir -p $(d_snap)/usr/share/lintian/overrides + cp -p debian/gcc-snapshot.overrides \ + $(d_snap)/usr/share/lintian/overrides/$(p_snap) + + ( \ + echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libffi $(FFI_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgo $(GO_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \ + echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \ + ) > debian/shlibs.local + + $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ + dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib + -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars + +ifeq ($(with_multiarch_lib),yes) + : # paths needed for relative lookups from startfile_prefixes + for ma in $(xarch_multiarch_names); do \ + mkdir -p $(d_snap)/lib/$$ma; \ + mkdir -p $(d_snap)/usr/lib/$$ma; \ + done +endif + + dh_gencontrol -p$(p_snap) -- $(common_substvars) \ + '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' + dh_installdeb -p$(p_snap) + dh_md5sums -p$(p_snap) + dh_builddeb -p$(p_snap) + + trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp) diff --git a/rules.d/binary-softfloat.mk b/rules.d/binary-softfloat.mk new file mode 100644 index 0000000..6badfcc --- /dev/null +++ b/rules.d/binary-softfloat.mk @@ -0,0 +1,31 @@ +arch_binaries := $(arch_binaries) softfloat + +p_softfloat = gcc$(pkg_ver)-soft-float +d_softfloat = debian/$(p_softfloat) + +dirs_softfloat = \ + $(PFL)/$(libdir) \ + $(gcc_lib_dir) + +files_softfloat = \ + $(PFL)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +# ---------------------------------------------------------------------- +$(binary_stamp)-softfloat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_softfloat) + dh_installdirs -p$(p_softfloat) $(dirs_softfloat) + $(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat) + rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so* + mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \ + $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a + debian/dh_doclink -p$(p_softfloat) $(p_xbase) + dh_strip -p$(p_softfloat) + dh_shlibdeps -p$(p_softfloat) + echo $(p_softfloat) >> debian/arch_binaries + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --git a/rules.d/binary-source.mk b/rules.d/binary-source.mk new file mode 100644 index 0000000..9844826 --- /dev/null +++ b/rules.d/binary-source.mk @@ -0,0 +1,54 @@ +indep_binaries := $(indep_binaries) gcc-source + +ifeq ($(BACKPORT),true) + p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source +else + p_source = gcc$(pkg_ver)-source +endif +d_source= debian/$(p_source) + +$(binary_stamp)-gcc-source: $(install_stamp) + dh_testdir + dh_testroot + + dh_installdocs -p$(p_source) + dh_installchangelogs -p$(p_source) + + dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver) +ifneq (,$(m2_tarball)) + dh_install -p$(p_source) $(m2_tarball) usr/src/gcc$(pkg_ver) +endif + tar cf - $$(find './debian' -mindepth 1 \( \ + -name .svn -prune -o \ + -path './debian/.debhelper' -prune -o \ + -path './debian/gcc-*' -type d -prune -o \ + -path './debian/cpp-*' -type d -prune -o \ + -path './debian/*fortran*' -type d -prune -o \ + -path './debian/lib*' -type d -prune -o \ + -path './debian/patches/*' -prune -o \ + -path './debian/tmp*' -prune -o \ + -path './debian/files' -prune -o \ + -path './debian/rules.d/*' -prune -o \ + -path './debian/rules.parameters' -prune -o \ + -path './debian/soname-cache' -prune -o \ + -path './debian/*substvars*' -prune -o \ + -path './debian/gcc-snapshot*' -prune -o \ + -path './debian/*[0-9]*.p*' -prune -o \ + -path './debian/*$(pkg_ver)[.-]*' -prune -o \ + -print \) ) \ + | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver) -f - + # FIXME: Remove generated files + find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf + rm -f $(d_source)/usr/src/gcc$(pkg_ver)/debian/patches/series + + touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters + + dh_link -p$(p_source) \ + /usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches + + mkdir -p $(d_source)/usr/share/lintian/overrides + cp -p debian/$(p_source).overrides \ + $(d_source)/usr/share/lintian/overrides/$(p_source) + echo $(p_source) >> debian/indep_binaries + + touch $@ diff --git a/rules.defs b/rules.defs new file mode 100644 index 0000000..dba8141 --- /dev/null +++ b/rules.defs @@ -0,0 +1,2183 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +# common vars +SHELL = /bin/bash -e # brace expansion used in rules file +srcdir = $(CURDIR)/src +builddir = $(CURDIR)/build +builddir_jit = $(CURDIR)/build-jit +builddir_nvptx = $(CURDIR)/build-nvptx +builddir_hppa64 = $(CURDIR)/build-hppa64 +stampdir = stamps + +distribution := $(shell lsb_release -is) +distrelease := $(shell lsb_release -cs) +derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ + elif dpkg-vendor --derives-from Debian; then echo Debian; \ + else echo Unknown; fi) + +# On non official archives, "lsb_release -cs" default to "n/a". Assume +# sid in that case +ifeq ($(distrelease),n/a) +distrelease := sid +endif + +on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) + +# creates {srcdir,builddir}_{hppa64,neon} +$(foreach x,srcdir builddir,$(foreach target,hppa64 neon,$(eval \ + $(x)_$(target) := $($(x))-$(target)))) + +# for architecture dependent variables and changelog vars +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +# for rules.sonames +vafilt_defined = 1 + +dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes) +ifeq ($(dpkg_target_vars),yes) + DEB_TARGET_ARCH= + DEB_TARGET_ARCH_BITS= + DEB_TARGET_ARCH_CPU= + DEB_TARGET_ARCH_ENDIAN= + DEB_TARGET_ARCH_OS= + DEB_TARGET_GNU_CPU= + DEB_TARGET_GNU_SYSTEM= + DEB_TARGET_GNU_TYPE= + DEB_TARGET_MULTIARCH= +endif + +DPKG_VARS := $(shell dpkg-architecture) +ifeq ($(dpkg_target_vars),yes) + DPKG_VARS := $(filter-out DEB_TARGET_%, $(DPKG_VARS)) +endif +DEB_BUILD_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_BUILD_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),dapper hardy lucid precise quantal raring saucy trusty)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i686-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i686-linux-gnu + endif + endif +else + ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy)) + # keep dpkg defaults + else ifneq (,$(filter $(distrelease),jessie)) + ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) + DEB_BUILD_GNU_TYPE = i586-linux-gnu + endif + ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) + DEB_HOST_GNU_TYPE = i586-linux-gnu + endif + else + # stretch and newer ... + DEB_BUILD_GNU_TYPE := $(subst i586,i686,$(DEB_BUILD_GNU_TYPE)) + DEB_HOST_GNU_TYPE := $(subst i586,i686,$(DEB_HOST_GNU_TYPE)) + endif +endif + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +# the name of the source package +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +# those are required here too +SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ + sed -e 's/.*://' -e 's/ds[0-9][0-9]*//')) +# epoch used for gcc versions up to 3.3.x, now used for some remaining +# libraries: libgcc1, libobjc1 +EPOCH := 1 +DEB_EVERSION := $(EPOCH):$(DEB_VERSION) +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([0-9][0-9]*\).*-.*/\1/') + +NJOBS := +USE_CPUS := 1 +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + USE_CPUS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS := -j $(USE_CPUS) + NJOBS_TESTS := -j $(USE_CPUS) +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + single_package = yes + trunk_build = yes +else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE))) + single_package = yes + trunk_build = no +else + # --program-suffix=-$(BASE_VERSION) + versioned_packages := yes +endif + +# push glibc stack traces into stderr +export LIBC_FATAL_STDERR_=1 + +# --------------------------------------------------------------------------- +# set target +# - GNU triplet via DEB_TARGET_GNU_TYPE +# - Debian arch in debian/target +# - Debian arch via DEB_GCC_TARGET or GCC_TARGET +# +# alias +ifdef GCC_TARGET + DEB_GCC_TARGET := $(GCC_TARGET) +endif +ifdef DEB_TARGET_GNU_TYPE + TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null) +else + # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested + # by toolchain-source maintainer + DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null))) + ifndef DEB_TARGET_ARCH + ifneq (,$(DEBIAN_TARGET_FILE)) + DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE) + else + ifdef DEB_GCC_TARGET + DEB_TARGET_ARCH := $(DEB_GCC_TARGET) + else + DEB_TARGET_ARCH := $(DEB_HOST_ARCH) + endif + endif + endif + TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null) +endif +ifeq ($(dpkg_target_vars),yes) + TARGET_VARS := $(filter-out DEB_TARGET_%, $(TARGET_VARS)) +endif + +DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH) +DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS) +DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU) +DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU) +DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE) +DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM) +DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH) +DEB_TARGET_ARCH_ABI := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ABI) +DEB_TARGET_ARCH_BITS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS) +DEB_TARGET_ARCH_ENDIAN := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN) +DEB_TARGET_ARCH_LIBC := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_LIBC) +export DEB_TARGET_ARCH DEB_TARGET_ARCH_ABI DEB_TARGET_ARCH_BITS \ + DEB_TARGET_ARCH_CPU DEB_TARGET_ARCH_OS DEB_TARGET_ARCH_ENDIAN \ + DEB_TARGET_ARCH_LIBC DEB_TARGET_GNU_CPU DEB_TARGET_GNU_TYPE \ + DEB_TARGET_GNU_SYSTEM DEB_TARGET_MULTIARCH + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),dapper lucid)) + ifeq ($(DEB_TARGET_GNU_TYPE),i486-linux-gnu) + DEB_TARGET_GNU_TYPE = i586-linux-gnu + endif + endif +else + ifneq (,$(filter $(distrelease),stretch)) + DEB_TARGET_GNU_TYPE := $(subst i586,i686,$(DEB_TARGET_GNU_TYPE)) + i586_symlinks = $(if $(findstring i686,$(DEB_TARGET_GNU_TYPE)),yes) + endif +endif + +ifeq ($(DEB_TARGET_ARCH),) + $(error Invalid architecure.) +endif + +# Force this, people get confused about the default. See #760770. +override with_deps_on_target_arch_pkgs := + +# including unversiond symlinks for binaries +#with_unversioned = yes + +# --------------------------------------------------------------------------- +# cross-compiler config +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross building a cross compiler, untested. + DEB_CROSS = yes + build_type = cross-build-cross + else + # cross building the native compiler + build_type = cross-build-native + endif +else + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + # cross compiler, sets WITH_SYSROOT on it's own + DEB_CROSS = yes + build_type = build-cross + else ifeq ($(FORCE_CROSS_LAYOUT),yes) + # a native build with a cross layout + DEB_CROSS = yes + build_type = build-cross + else + # native build + build_type = build-native + endif +endif + +# --------------------------------------------------------------------------- +# cross compiler support +ifeq ($(DEB_CROSS),yes) + # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name) + # TP: Target Prefix. Used primarily as a prefix for cross tool + # names (e.g. powerpc-linux-gcc). + # TS: Target Suffix. Used primarily at the end of cross compiler + # package names (e.g. gcc-powerpc). + # LS: Library Suffix. Used primarily at the end of cross compiler + # library package names (e.g. libgcc-powerpc-cross). + # AQ: Arch Qualifier. Used for cross-arch dependencies + DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) + TARGET := $(DEB_TARGET_ARCH) + TP := $(subst _,-,$(DEB_TARGET_GNU_TYPE))- + TS := -$(subst _,-,$(DEB_TARGET_ALIAS)) + LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + AQ := + + cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS)) + cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + + TARGET_ALIAS := $(DEB_TARGET_ALIAS) + + lib_binaries := indep_binaries + cross_shlibdeps = DEB_HOST_ARCH=$(TARGET) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" + cross_gencontrol = DEB_HOST_ARCH=$(TARGET) + cross_makeshlibs = DEB_HOST_ARCH=$(TARGET) + cross_clean = DEB_HOST_ARCH=$(TARGET) +else + TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) + + ifeq ($(TARGET_ALIAS),i386-gnu) + TARGET_ALIAS := i586-gnu + endif + + ifeq ($(single_package),yes) + cmd_prefix := + unprefixed_names := + else + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + unprefixed_names := yes + endif + + #ifeq ($(TARGET_ALIAS),i486-linux-gnu) + # TARGET_ALIAS := i686-linux-gnu + #endif + + TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) + + # configure as linux-gnu, not linux + #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) + # TARGET_ALIAS := $(TARGET_ALIAS)-gnu + #endif + + # configure as linux, not linux-gnu + #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) + + lib_binaries := arch_binaries + cross_shlibdeps := + cross_gencontrol := + cross_makeshlibs := + # FIXME: Ignore missing symbols for a first build ... + #cross_makeshlibs := - + cross_clean := +endif + +printarch: + @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) + @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) + @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) + @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) + @echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH) + @echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG) + @echo TARGET_ALIAS: $(TARGET_ALIAS) + @echo TP: $(TP) + @echo TS: $(TS) + +# ------------------------------------------------------------------- +# bootstrap options +ifdef WITH_BOOTSTRAP + # "yes" is the default and causes a 3-stage bootstrap. + # "off" runs a complete build with --disable-bootstrap + # "no" means to just build the first stage, and not create the stage1 + # directory. + # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no + # longer needed. + with_bootstrap = $(WITH_BOOTSTRAP) +endif + +ifneq ($(trunk_build),yes) + ifeq ($(build_type),build-native) + ifeq (,$(DEB_STAGE)) + ifeq (,$(filter $(distrelease),wheezy jessie stretch precise trusty xenial bionic)) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 armhf arm64 powerpc ppc64 ppc64el s390x sparc64)) + with_bootstrap := profiled + endif + endif + endif + endif + + ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + endif + + # Enable LTO only for 64bit builds + ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) + with_lto_build := yes + endif + with_lto_build := yes + + # FIXME: hppa has issues with parsing the jobs output. + # FIXME: m68k, riscv64 and sh4 running on simulators, don't care ... + # FIXME: buildds not powerful ebough: mips* + # FIXME: just let it build, takes too long: hurd-i386 + # FIXME: not yet tried to build: alpha + ifneq (,$(filter $(DEB_HOST_ARCH), alpha hppa m68k mips mipsel mips64el riscv64 sh4 sparc64 hurd-i386)) + with_lto_build := + endif + + # FIXME: newer binutils needed? + ifneq (,$(filter $(distrelease),stretch precise trusty xenial bionic)) + with_bootstrap := + with_lto_build := + endif +endif + +ifneq ($(findstring nolto, $(DEB_BUILD_OPTIONS)),) + with_lto_build := +endif + +ifneq ($(findstring nopgo, $(DEB_BUILD_OPTIONS)),) + ifeq ($(with_bootstrap),profiled) + with_bootstrap := + endif +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + with_bootstrap := off + with_lto_build := + DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip + export DEB_BUILD_OPTIONS +endif + +# ------------------------------------------------------------------- +# stage options +ifdef DEB_STAGE + with_cdev := yes + separate_lang := yes + # "stage1" is minimal compiler with static libgcc + # "stage2" is minimal compiler with shared libgcc + # "rtlibs" is a subset of target libraries, without compilers + ifeq ($(DEB_STAGE),stage1) + with_shared_libgcc := no + endif + ifeq ($(DEB_STAGE),stage2) + with_libgcc := yes + with_shared_libgcc := yes + endif + ifeq ($(DEB_STAGE),rtlibs) + with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath + ifeq ($(DEB_CROSS),yes) + LS := + TS := + cross_lib_arch := + endif + endif +endif + +ifeq ($(BACKPORT),true) + with_dev := no + with_source := yes + with_base_only := yes +endif + +# ------------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +# ------------------------------------------------------------------- +# for components configuration + +COMMA = , +SPACE = $(EMPTY) $(EMPTY) + +# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG + +DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) +DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) +DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) +DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) +lfilt = $(strip $(if $(DEB_LANG), \ + $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) +nlfilt = $(strip $(if $(DEB_NOLANG), \ + $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) +wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ + disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) +envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) + +# ------------------------------------------------------------------- +# architecture specific config + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_async_unwind = yes +endif + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),precise trusty xenial bionic cosmic disco)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) + with_stack_clash := yes + endif + endif + ifeq (,$(filter $(distrelease),precise trusty xenial bionic cosmic disco)) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) + with_cf_protection := yes + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),armhf) + ifeq ($(distribution),Raspbian) + with_arm_thumb := no + else + with_arm_thumb := yes + endif +else + ifeq ($(derivative)-$(DEB_TARGET_ARCH),Ubuntu-armel) + ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise)) + with_arm_thumb := yes + endif + endif +endif + +# build using fsf or linaro +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64 armel armhf)) + with_linaro_branch = yes + endif +endif +with_linaro_branch = + +# build using fsf or the ibm branch +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),ppc64el)) + #with_ibm_branch = yes + endif +endif + +ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) + with_linaro_branch = + with_ibm_branch = +else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE))) + with_ibm_branch = +endif + +# check if we're building for armel or armhf +ifneq (,$(filter %eabihf,$(DEB_TARGET_GNU_SYSTEM))) + float_abi := hard +else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel)) + ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise)) + float_abi := softfp + else + float_abi := soft + endif +else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel)) + float_abi := soft +endif + +# ------------------------------------------------------------------- +# basic config + +# allows to wrote backtraces for ICEs +#unstripped_exe = yes + +# common things --------------- +# build common packages, where package names don't differ in different +# gcc versions (fixincludes, ...) +with_common_pkgs := yes +# ... and some libraries, which do not change (libgcc1, libssp0). +with_common_libs := yes +# XXX: should with_common_libs be "yes" only if this is the default compiler +# version on the targeted arch? + +# is this a multiarch-enabled build? +ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick)) + with_multiarch_lib := yes +endif + +ifeq ($(with_multiarch_lib),yes) + ifneq ($(single_package),yes) + ifneq ($(DEB_CROSS),yes) + with_multiarch_cxxheaders := yes + endif + endif +endif + +ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick)) + multiarch_stage1 := yes +endif + +MIPS_R6_ENABLED = no +ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid wily xenial yakkety zesty artful)) + MIPS_R6_ENABLED = yes +endif + +# mapping for the non-default biarch multilib / multiarch names +multiarch_xarch_map = \ + amd64=i386-linux-gnu,x86_64-linux-gnux32 \ + armel=arm-linux-gnueabi \ + armhf=arm-linux-gnueabihf \ + i386=x86_64-linux-gnu,x86_64-linux-gnux32 \ + powerpc=powerpc64-linux-gnu \ + ppc64=powerpc-linux-gnu \ + sparc=sparc64-linux-gnu \ + sparc64=sparc-linux-gnu \ + s390=s390x-linux-gnu \ + s390x=s390-linux-gnu \ + mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \ + mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \ + mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \ + mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \ + mips64=mips-linux-gnu,mips64-linux-gnuabin32 \ + mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \ + mipsr6=mipsisa64r6-linux-gnuabin32,mipsisa64r6-linux-gnuabi64 \ + mipsr6el=mipsisa64r6el-linux-gnuabin32,mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabi64 \ + mips64r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabin32 \ + mips64r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabin32 \ + x32=x86_64-linux-gnu,i386-linux-gnu \ + kfreebsd-amd64=i386-kfreebsd-gnu +xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map)))) + +multilib_multiarch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_MULTIARCH) \ + amd64/32=i386-linux-gnu \ + amd64/x32=x86_64-linux-gnux32 \ + armel/hf=arm-linux-gnueabihf \ + armhf/sf=arm-linux-gnueabi \ + i386/64=x86_64-linux-gnu \ + i386/x32=x86_64-linux-gnux32 \ + powerpc/64=powerpc64-linux-gnu \ + ppc64/32=powerpc-linux-gnu \ + sparc/64=sparc64-linux-gnu \ + sparc64/32=sparc-linux-gnu \ + s390/64=s390x-linux-gnu \ + s390x/32=s390-linux-gnu \ + mips/n32=mips64-linux-gnuabin32 \ + mips/64=mips64-linux-gnuabi64 \ + mipsel/n32=mips64el-linux-gnuabin32 \ + mipsel/64=mips64el-linux-gnuabi64 \ + mipsn32/32=mips-linux-gnu \ + mipsn32/64=mips64-linux-gnuabi64 \ + mipsn32el/32=mipsel-linux-gnu \ + mipsn32el/64=mips64el-linux-gnuabi64 \ + mips64/32=mips-linux-gnu \ + mips64/n32=mips64-linux-gnuabin32 \ + mips64el/32=mipsel-linux-gnu \ + mips64el/n32=mips64el-linux-gnuabin32 \ + mipsr6/n32=mipsisa64r6-linux-gnuabin32 \ + mipsr6/64=mipsisa64r6-linux-gnuabi64 \ + mipsr6el/n32=mipsisa64r6el-linux-gnuabin32 \ + mipsr6el/64=mipsisa64r6el-linux-gnuabi64 \ + mipsn32r6/32=mipsisa32r6-linux-gnu \ + mipsn32r6/64=mipsisa64r6-linux-gnuabi64 \ + mipsn32r6el/32=mipsisa32r6el-linux-gnu \ + mipsn32r6el/64=mipsisa64r6el-linux-gnuabi64 \ + mips64r6/32=mipsisa32r6-linux-gnu \ + mips64r6/n32=mipsisa64r6-linux-gnuabin32 \ + mips64r6el/32=mipsisa32r6el-linux-gnu \ + mips64r6el/n32=mipsisa64r6el-linux-gnuabin32 \ + x32/32=i386-linux-gnu \ + x32/64=x86_64-linux-gnu \ + kfreebsd-amd64/32=i386-kfreebsd-gnu +# $(call mlib_to_march,|32|64|n32|x32|hf|sf) +mlib_to_march = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_multiarch_map))) + +multilib_arch_map = \ + $(DEB_TARGET_ARCH)/=$(DEB_TARGET_ARCH) \ + amd64/32=i386 \ + amd64/x32=x32 \ + armel/hf=armhf \ + armhf/sf=armel \ + i386/64=amd64 \ + i386/x32=x32 \ + powerpc/64=ppc64 \ + ppc64/32=powerpc \ + sparc/64=sparc64 \ + sparc64/32=sparc \ + s390/64=s390x \ + s390x/32=s390 \ + mips/n32=mipsn32 \ + mips/64=mips64 \ + mipsel/n32=mipsn32el \ + mipsel/64=mips64el \ + mipsn32/32=mips \ + mipsn32/64=mips64 \ + mipsn32el/32=mipsel \ + mipsn32el/64=mips64el \ + mips64/32=mips \ + mips64/n32=mipsn32 \ + mips64el/32=mipsel \ + mips64el/n32=mipsn32el \ + mipsr6/n32=mipsn32r6 \ + mipsr6/64=mips64r6 \ + mipsr6el/n32=mipsn32r6el \ + mipsr6el/64=mips64r6el \ + mipsn32r6/32=mipsr6 \ + mipsn32r6/64=mips64r6 \ + mipsn32r6el/32=mipsr6el \ + mipsn32r6el/64=mips64r6el \ + mips64r6/32=mipsr6 \ + mips64r6/n32=mipsn32r6 \ + mips64r6el/32=mipsr6el \ + mips64r6el/n32=mipsn32r6el \ + x32/32=i386 \ + x32/64=amd64 \ + kfreebsd-amd64/32=kfreebsd-i386 +# $(call mlib_to_arch,|32|64|n32|x32|hf|sf) +mlib_to_arch = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ + $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_arch_map))) + +# build -base packages +with_gccbase := yes +ifeq ($(build_type),build-cross) + ifneq ($(DEB_STAGE),rtlibs) + with_gcclbase := yes + endif +endif + +# build dev packages. +ifneq ($(DEB_STAGE),rtlibs) + with_dev := yes +endif + +with_cpp := yes + +# set lang when built from a different source package. +separate_lang := no + +#no_dummy_cpus := ia64 i386 hppa s390 sparc +#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) +# with_base_only := no +# with_common_libs := yes +# with_common_pkgs := yes +#else +# with_base_only := yes +# with_common_libs := no +# with_common_pkgs := no +# with_dev := no +#endif + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) + PV := $(pkg_ver) +endif + +# ------------------------------------------------------------------- +# configure languages + +# C --------------------------- +enabled_languages := c + +with_jit = yes + +# FIXME: compiler bug +jit_no_cpus := ia64 + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(jit_no_cpus))) + with_jit := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(with_rtlibs)) + with_jit := disabled for rtlibs stage +endif +ifneq ($(findstring nojit, $(DEB_BUILD_OPTIONS)),) + with_jit := disabled by DEB_BUILD_OPTIONS +endif +with_jit := $(call envfilt, jit, , , $(with_jit)) + +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + with_jit := +endif + +ifneq (,$(findstring build-cross, $(build_type))) + with_jit := disabled for cross builds +endif + +ifeq ($(with_jit),yes) + ifeq ($(with_common_libs),yes) + with_libgccjit := yes + endif +endif + +nvptx_archs := amd64 ppc64el +ifneq (,$(filter $(DEB_TARGET_ARCH),$(nvptx_archs))) + offload_targets += nvptx-none + with_offload_nvptx := yes +endif +ifneq (,$(filter $(distrelease),lucid precise)) + offload_targets := + with_offload_nvptx := +endif +ifneq (,$(findstring build-cross, $(build_type))) + with_offload_nvptx := disabled for cross builds +endif + +ifeq ($(single_package),yes) + with_offload_nvptx := disabled for snapshot builds +endif +ifneq ($(findstring nonvptx, $(DEB_BUILD_OPTIONS)),) + with_offload_nvptx := disabled by DEB_BUILD_OPTIONS +endif +with_offload_nvptx := $(call envfilt, nvptx, , , $(with_offload_nvptx)) + +#with_offload_nvptx := not yet built for GCC 9 + +hsa_archs := amd64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(hsa_archs))) + offload_targets += hsa + with_offload_hsa := yes +endif +ifneq (,$(findstring build-cross, $(build_type))) + with_offload_hsa := disabled for cross builds +endif + +ifeq ($(single_package),yes) + with_offload_hsa := disabled for snapshot builds +endif +with_offload_hsa := $(call envfilt, hsa, , , $(with_offload_hsa)) + +#with_offload_hsa := not yet built for GCC 9 + +with_cc1 := yes +with_cc1 := $(call envfilt, cc1, , , $(with_cc1)) + +ifeq ($(with_cc1),yes) + ifeq ($(with_common_libs),yes) + with_libcc1 := yes + endif + with_libcc1_plugin := yes +endif + +ifneq (,$(with_rtlibs)) + with_libcc1 := disabled for rtlibs stage + with_libcc1_plugin := disabled for rtlibs stage +endif +ifneq (,$(findstring build-cross, $(build_type))) + with_libcc1 := disabled for cross builds +endif + +# Build all packages needed for C development +ifneq ($(with_base_only),yes) + ifeq ($(with_dev),yes) + with_cdev := yes + endif +endif + +ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) +# Ada -------------------- +ada_no_cpus := m32r sh3 sh3eb sh4eb +# no Debian builds ... some of these should exist +# ... cross-build-native cross-builds a non-working compiler ... +ifneq (,$(filter $(build_type), build-native)) + ada_no_cpus += m68k # see https://bugs.debian.org/868365 +endif +ada_no_systems := +ada_no_cross := no +ada_no_snap := no +ifeq ($(single_package),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) + ada_no_snap := yes + endif +endif + +ifeq ($(with_dev),yes) + ifneq ($(separate_lang),yes) + with_ada := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) + with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) + with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes) + with_ada := disabled for cross compiler package +endif +ifeq ($(ada_no_snap)-$(single_package),yes-yes) + with_ada := disabled for snapshot build +endif +ifneq (,$(findstring gccgo,$(PKGSOURCE))) + with_ada := +endif +ifneq (,$(filter $(distrelease),lucid precise)) + with_ada := +endif +with_ada := $(call envfilt, ada, , , $(with_ada)) + +ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-) + with_ada := disabled for rtlibs stage +endif +#with_ada := disabled for GCC 9 + +#ifneq ($(single_package),yes) +# with_separate_gnat := yes +#endif + +ifneq ($(with_separate_gnat),yes) + ifeq ($(with_ada),yes) + ifneq (,$(filter $(distrelease),squeeze lucid precise)) + with_ada := + endif + endif +endif + +ifeq ($(with_ada)-$(with_separate_gnat),yes-yes) + ifneq (,$(findstring gnat,$(PKGSOURCE))) + languages := c + separate_lang := yes + with_mudflap := no + with_gccbase := no + with_cdev := no + with_cc1 := no + with_libcc1 := no + else + debian_extra_langs += ada + with_ada := built from separate source + with_libgnat := built from separate source + endif +endif + +ifeq ($(with_ada),yes) + enabled_languages += ada + with_libgnat := yes + #with_gnatsjlj := yes +endif + +# C++ ------------------------- +cxx_no_cpus := avr +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cxx := yes + endif +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus))) + with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +with_cxx := $(call envfilt, c++, obj-c++, , $(with_cxx)) + +# Set the default libstdc++ ABI. libstdc++ provides both ABI's. +# Existing code still runs with the new c++11 ABI, however link +# errors are seen when one object is compiled with the new std::string in scope, +# another object is compiled with the old std::string in scope. both can link +# to libstdc++.so but not to each other. +# two objects (which might be some system library and a user's program) need to +# agree on the version of std::string they're using + +libstdcxx_abi = new +# backports default to the old ABI +ifneq (,$(filter $(distrelease),squeeze wheezy jessie lucid precise trusty utopic vivid)) + libstdcxx_abi = gcc4-compatible +endif + +# Build all packages needed for C++ development +ifeq ($(with_cxx),yes) + ifeq ($(with_dev),yes) + with_cxxdev := yes + with_libcxxdbg := yes + endif + ifeq ($(with_common_libs),yes) + with_libcxx := yes + endif + + # debugging versions of libstdc++ + ifneq (,$(findstring gcc-, $(PKGSOURCE))) + ifeq ($(with_cxxdev),yes) + with_cxx_debug := yes + debug_no_cpus := + ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(debug_no_cpus))) + with_cxx_debug := disabled for cpu $(DEB_TARGET_GNU_CPU) + endif + endif + endif + with_cxx_debug := $(call envfilt, debug, , , $(with_cxx_debug)) + + enabled_languages += c++ +endif + +# Go ------------------- +# - To build a standalone gccgo package (with no corresponding gcc +# package): with_separate_libgo=yes, with_standalone_go=yes +# - To build the go packages from the gcc source package: +# with_separate_libgo=no, with_standalone_go=no +# - To build gcc and go from separate sources: +# with_separate_libgo=yes, with_standalone_go=no + +go_no_cross := yes +go_no_cross := no + +ifneq (,$(findstring gccgo, $(PKGSOURCE))) + with_separate_libgo := yes + with_standalone_go := yes + with_cc1 := + with_libcc1 := +endif + +go_no_cpus := avr arm hppa +go_no_cpus += m68k # See PR 79281 / PR 83314 +ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric)) + go_no_cpus := $(filter-out arm, $(go_no_cpus)) +endif +go_no_systems := kfreebsd +ifneq (,$(filter $(distrelease),precise)) + go_no_archs = armhf +endif + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_go := yes + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus))) + with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_OS),$(go_no_systems))) + with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(go_no_archs))) + with_go := disabled for architecture $(DEB_TARGET_ARCH) +endif +ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes) + with_go := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgo, $(with_rtlibs)),rtlibs-) + with_go := disabled for rtlibs stage +endif +with_go := $(call envfilt, go, , , $(with_go)) + +# Build all packages needed for Go development +ifneq (,$(findstring gcc, $(PKGSOURCE))) + ifeq ($(with_go),yes) + ifeq ($(with_dev),yes) + with_godev := yes + endif + with_libgo := yes + enabled_languages += go + endif +endif + +ifeq ($(with_go)-$(with_separate_libgo),yes-yes) + ifneq (,$(findstring gccgo, $(PKGSOURCE))) + languages := c c++ go + separate_lang := yes + with_libgcc := yes + with_shared_libgcc := yes + else + debian_extra_langs += go + with_go := built from separate source + with_libgo := buit from separate source + endif +endif + +# BRIG --------------------------- + +with_brig := no +ifneq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 x32)) + with_brig := yes +endif +with_brig := $(call envfilt, brig, , , $(with_brig)) + +ifeq ($(with_brig),yes) + with_brigdev := yes + ifeq ($(with_common_libs),yes) + with_libhsailrt := yes + endif + enabled_languages += brig +endif + +# D --------------------------- +d_no_cross := yes +d_no_snap := +d_no_cpus := s390 + +ifneq ($(single_package),yes) + with_separate_gdc := yes +endif +with_separate_gdc := no + +ifneq ($(separate_lang),yes) + with_d := yes +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(d_no_cpus))) + with_d := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(d_no_snap)-$(single_package),yes-yes) + with_d := disabled for snapshot build +endif +ifeq ($(DEB_STAGE)-$(filter libphobos, $(with_rtlibs)),rtlibs-) + with_d := disabled for rtlibs stage +endif +ifeq ($(GENERATE_DFSG_TARBALL),yes) + with_d := disabled while generating the dfsg tarball +endif +with_d := $(call envfilt, d, , , $(with_d)) +#with_d := not yet built for GCC 9 + +ifeq ($(with_base_only),yes) + with_d := no +endif + +ifeq ($(with_d)-$(with_separate_gdc),yes-yes) + ifneq (,$(findstring gdc,$(PKGSOURCE))) + languages := c c++ + separate_lang := yes + + # FIXME: language selection needs improvement. + with_go := disabled for d + else + debian_extra_langs += d + with_d := built from separate source + endif +endif + +ifeq ($(with_d),yes) + phobos_archs = amd64 arm64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386 + phobos_archs += hppa + phobos_archs += mips mips64 mipsel mips64el + phobos_archs += mipsn32 mipsn32el + phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el + phobos_archs += riscv64 s390x + ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) + with_phobos := yes + endif + + phobos_no_cpus := alpha avr hppa ia64 m68k \ + powerpc ppc64 s390 sh4 sparc sparc64 + phobos_no_systems := gnu kfreebsd-gnu + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(phobos_no_cpus))) + with_phobos := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(phobos_no_systems))) + with_phobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + with_libphobosdev := $(with_phobos) + + enabled_languages += d +endif + +# Fortran 95 ------------------- +fortran_no_cross := yes +fortran_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_fortran := yes + endif +endif +ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes) + with_fortran := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fortran := disabled for rtlibs stage +endif + +with_fortran := $(call envfilt, fortran, , , $(with_fortran)) + +# Build all packages needed for Fortran development +ifeq ($(with_fortran),yes) + ifeq ($(with_dev),yes) + ifneq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) + with_fdev := yes + endif + endif + ifeq ($(with_common_libs),yes) + with_libgfortran := yes + endif + enabled_languages += fortran +endif + +# libquadmath ------------------- + +quadmath_targets = amd64 ia64 i386 x32 \ + hurd-i386 kfreebsd-i386 kfreebsd-amd64 \ + ppc64el +# powerpc and ppc64 don't have power7 CPU defaults ... +ifneq (,$(filter $(DEB_TARGET_ARCH), $(quadmath_targets))) + # FIXME: upstream build tied to gfortran build + ifeq ($(with_fortran),yes) + with_qmath := yes + ifneq (,$(findstring gcc-9,$(PKGSOURCE))) + ifeq ($(with_common_libs),yes) + with_libqmath := yes + endif + endif + endif +endif + +# ObjC ------------------------ +objc_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objc := yes + objc_no_archs = + ifneq (,$(filter $(DEB_TARGET_ARCH),$(objc_no_archs))) + with_objc := + endif + endif +endif +ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes) + with_objc := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libobjc, $(with_rtlibs)),rtlibs-) + with_objc := disabled for rtlibs stage +endif +with_objc := $(call envfilt, objc, obj-c++, , $(with_objc)) + +ifeq ($(with_objc),yes) + # the ObjC runtime with garbage collection enabled needs the Boehm GC + with_objc_gc := yes + + # disable ObjC garbage collection library (needs libgc) + libgc_no_cpus := arm64 avr mips mipsel # alpha amd64 arm armel armhf hppa i386 ia64 m68k mips mipsel powerpc ppc64 s390 s390x sparc + libgc_no_systems := knetbsd-gnu + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) + with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libgc_no_systems))) + with_objc_gc := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + ifneq (,$(findstring build-cross, $(build_type))) + with_objc_gc := disabled for cross builds + endif + # Build all packages needed for Objective-C development + ifeq ($(with_dev),yes) + with_objcdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libobjc := yes + endif + + enabled_languages += objc +endif + +# ObjC++ ---------------------- +objcxx_no_cross := no + +ifeq ($(with_objc),yes) + ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objcxx := yes + endif + endif +endif +ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes) + with_objcxx := disabled for cross compiler package +endif +with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx)) + +ifeq ($(with_objcxx),yes) + enabled_languages += obj-c++ +endif + +# Modula-2 ------------------- +m2_no_cross := yes +m2_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_m2 := yes + endif +endif +m2_no_archs = powerpc ppc64 sh4 kfreebsd-amd64 kfreebsd-i386 hurd-i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(m2_no_archs))) + with_m2 := disabled for cpu $(DEB_TARGET_ARCH) +endif +ifeq ($(m2_no_cross)-$(DEB_CROSS),yes-yes) + with_m2 := disabled for cross compiler package +endif +ifeq ($(DEB_STAGE)-$(filter libgm2, $(with_rtlibs)),rtlibs-) + with_m2 := disabled for rtlibs stage +endif +ifneq (,$(filter $(distrelease),precise)) + with_m2 := disabled for $(distrelease) backport +endif + +with_m2 := $(call envfilt, m2, , , $(with_m2)) +#with_m2 := disabled, not working with lto builds. + +# Build all packages needed for Modula-2 development +ifeq ($(with_m2),yes) + # FIXME: lto doesn't work yet with gm2 + with_lto_build := + ifeq ($(with_dev),yes) + with_m2dev := yes + endif + ifeq ($(with_common_libs),yes) + with_libgm2 := yes + endif + enabled_languages += gm2 +endif + +# ------------------------------------------------------------------- +# other config + +# not built from the main source package +ifeq (,$(findstring gcc-,$(PKGSOURCE))) + extra_package := yes +endif + +with_nls := yes +ifeq ($(trunk_build),yes) + with_nls := no +endif +with_nls := $(call envfilt, nls, , , $(with_nls)) + +# powerpc nof libraries ----- +with_libnof := no + +ifneq (,$(findstring gcc-9,$(PKGSOURCE))) + ifeq (,$(with_rtlibs)) + with_source := yes + endif +endif +with_source := $(call envfilt, source, , , $(with_source)) + +ifeq ($(with_cdev),yes) + +# ssp & libssp ------------------------- +with_ssp := yes +ssp_no_archs = alpha hppa ia64 m68k +ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%))) + with_ssp := not available on $(DEB_TARGET_ARCH) +endif +with_ssp := $(call envfilt, ssp, , , $(with_ssp)) + +ifeq ($(with_ssp),yes) + ifneq ($(derivative),Debian) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) + with_ssp_default := yes + endif + endif +endif + +# gomp -------------------- +with_gomp := yes +with_gomp := $(call envfilt, gomp, , , $(with_gomp)) +gomp_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gomp_no_archs))) + with_gomp := +endif + +# itm -------------------- +itm_archs = alpha amd64 arm64 i386 x32 ppc64 ppc64el s390x sh4 sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(itm_archs))) + with_itm := yes +endif +with_itm := $(call envfilt, itm, , , $(with_itm)) + +# atomic -------------------- +with_atomic := yes +atomic_no_archs = +ifneq (,$(filter $(DEB_TARGET_ARCH),$(atomic_no_archs))) + with_atomic := +endif + +# backtrace -------------------- +with_backtrace := yes +backtrace_no_archs = m68k +ifneq (,$(filter $(DEB_TARGET_ARCH),$(backtrace_no_archs))) + with_backtrace := +endif + +# asan / sanitizer -------------------- +with_asan := +with_asan := $(call envfilt, asan, , , $(with_asan)) +asan_archs = amd64 armel armhf arm64 i386 powerpc ppc64 ppc64el x32 \ + s390x sparc sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(asan_archs))) + with_asan := yes +endif + +# lsan / sanitizer -------------------- +with_lsan := +with_lsan := $(call envfilt, lsan, , , $(with_lsan)) +lsan_archs = arm64 amd64 ppc64 ppc64el +ifneq (,$(filter $(DEB_TARGET_ARCH),$(lsan_archs))) + with_lsan := yes +endif + +# tsan / sanitizer -------------------- +with_tsan := +with_tsan := $(call envfilt, tsan, , , $(with_tsan)) +tsan_archs = arm64 amd64 ppc64 ppc64el +ifneq (,$(filter $(DEB_TARGET_ARCH),$(tsan_archs))) + with_tsan := yes +endif + +endif # with_cdev + +# ubsan / sanitizer -------------------- +with_ubsan := +with_ubsan := $(call envfilt, ubsan, , , $(with_ubsan)) +ubsan_archs = amd64 armel armhf arm64 i386 powerpc ppc64 ppc64el x32 \ + s390x sparc sparc64 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(ubsan_archs))) + with_ubsan := yes +endif + +# libvtv -------------------- +with_vtv := +with_vtv := $(call envfilt, vtv, , , $(with_vtv)) +vtv_archs = amd64 i386 x32 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + with_vtv := yes + with_libvtv := yes +endif +# libvtv builds a modified libstdc++, don't enable it by default +with_vtv := +with_libvtv := + +# pie by default -------------------- +with_pie := +ifeq ($(distribution),Debian) + ifeq (,$(filter $(distrelease),wheezy squeeze jessie)) + pie_archs = amd64 arm64 armel armhf i386 \ + mips mipsel mips64 mips64el mipsn32 mipsn32el \ + mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ + ppc64el s390x sparc sparc64 kfreebsd-amd64 kfreebsd-i386 \ + hurd-i386 riscv64 + endif + ifeq (,$(filter $(distrelease),wheezy squeeze jessie stretch)) + pie_archs += powerpc ppc64 + endif +else ifeq ($(distribution),Ubuntu) + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily)) + pie_archs = s390x + endif + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily xenial)) + pie_archs += amd64 ppc64el + endif + ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily xenial yakkety zesty)) + pie_archs += armhf arm64 i386 + endif +endif +ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs))) + with_pie := yes +endif +ifeq ($(trunk_build),yes) + with_pie := disabled for trunk builds +endif + +# gold -------------------- +# armel with binutils 2.20.51 only +gold_archs = amd64 armel armhf i386 powerpc ppc64 ppc64el s390x sparc sparc64 x32 hurd-i386 +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) + with_gold := yes +endif + +# plugins -------------------- +with_plugins := yes +ifneq (,$(with_rtlibs)) + with_plugins := disabled for rtlibs stage +endif + +endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(derivative),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +# ------------------------------------------------------------------- +# non-extra config +ifeq ($(extra_package),yes) + ifeq ($(with_separate_libgo),yes) + # package stuff + with_gccbase := yes + with_cdev := no + with_cxx := no + with_cxxdev := no + endif +else + # libssp ------------------ + ifeq ($(with_ssp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) + #endif + with_libssp := libc provides ssp + endif + + # libgomp ----------------- + ifeq ($(with_gomp)-$(with_common_libs),yes-yes) + with_libgomp := yes + endif + + # libitm ----------------- + ifeq ($(with_itm)-$(with_common_libs),yes-yes) + with_libitm := yes + endif + + # libatomic ----------------- + ifeq ($(with_atomic)-$(with_common_libs),yes-yes) + with_libatomic := yes + endif + + # libbacktrace ----------------- + ifeq ($(with_backtrace)-$(with_common_libs),yes-yes) + # currently not a shared library + #with_libbacktrace := yes + endif + + # libasan ----------------- + ifeq ($(with_asan)-$(with_common_libs),yes-yes) + ifeq ($(with_asan),yes) + with_libasan := yes + endif + endif + + # liblsan ----------------- + ifeq ($(with_lsan)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_liblsan := yes + #endif + endif + + # libtsan ----------------- + ifeq ($(with_tsan)-$(with_common_libs),yes-yes) + with_libtsan := yes + endif + + # libubsan ----------------- + ifeq ($(with_ubsan)-$(with_common_libs),yes-yes) + ifeq ($(with_ubsan),yes) + with_libubsan := yes + endif + endif + + # libvtv ----------------- + ifeq ($(with_vtv)-$(with_common_libs),yes-yes) + with_libvtv := yes + endif + + # libquadmath ----------------- + ifeq ($(with_qmath)-$(with_common_libs),yes-yes) + with_libqmath := yes + endif + + # libunwind ----------------- + with_internal_libunwind = + ifeq ($(DEB_HOST_ARCH),ia64) + ifeq ($(DEB_STAGE),stage1) + ifeq ($(DEB_CROSS),yes) + with_internal_libunwind = yes + endif + endif + endif + + # Shared libgcc -------------------- + ifneq ($(DEB_STAGE),stage1) + with_shared_libgcc := yes + ifeq ($(with_common_libs),yes) + with_libgcc := yes + endif + endif + + # libphobos ----------------- + ifeq ($(with_phobos)-$(with_common_libs),yes-yes) + ifeq ($(with_common_libs),yes) + with_libphobos := yes + endif + endif + + # libgcc-math -------------------- + with_libgmath := no + ifneq (,$(findstring i486,$(DEB_TARGET_ARCH))) + #with_libgccmath := yes + #with_lib64gmath := yes + #with_libgmathdev := yes + endif + ifeq ($(DEB_TARGET_ARCH),amd64) + #with_libgccmath := yes + #with_lib32gmath := yes + #with_libgmathdev := yes + endif + + # hppa64 build ---------------- + hppa64_no_snap := no + hppa64_archs := hppa + ifneq (,$(filter $(build_type), build-native cross-build-native)) + ifneq (,$(filter $(distrelease),wheezy squeeze jessie lucid precise trusty utopic vivid wily)) + binutils_hppa64 := binutils-hppa64 + else + ifneq ($(single_package),yes) + hppa64_archs += amd64 i386 x32 + endif + binutils_hppa64 := binutils-hppa64-linux-gnu + endif + ifneq (,$(filter $(DEB_TARGET_ARCH),$(hppa64_archs))) + with_hppa64 := yes + endif + endif + ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes) + with_hppa64 := disabled for snapshot build + endif + ifneq ($(findstring nohppa64, $(DEB_BUILD_OPTIONS)),) + with_hppa64 := disabled by DEB_BUILD_OPTIONS + endif + with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64)) + + ifeq ($(DEB_STAGE),rtlibs) + with_libatomic := disabled for rtlibs stage + with_libasan := disabled for rtlibs stage + with_liblsan := disabled for rtlibs stage + with_libtsan := disabled for rtlibs stage + with_libubsan := disabled for rtlibs stage + with_hppa64 := disabled for rtlibs stage + endif + + # neon build ------------------- + # FIXME: build as a cross compiler to build on armv4 as well + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) + ifeq ($(derivative),Ubuntu) +# neon_archs = armel armhf +# ifneq (, $(filter $(DEB_TARGET_ARCH),$(neon_archs))) +# with_neon = yes +# endif + endif + endif +endif + +# run testsuite --------------- +with_check := yes +# if you don't want to run the gcc testsuite, uncomment the next line +#with_check := disabled by hand +ifeq ($(with_base_only),yes) + with_check := no +endif +ifeq ($(DEB_CROSS),yes) + with_check := disabled for cross compiler package +endif +ifneq (,$(findstring cross-build-,$(build_type))) + with_check := disabled for cross building the compiler +endif +ifneq (,$(with_rtlibs)) + with_check := disabled for rtlibs stage +endif +check_no_cpus := m68k +check_no_systems := # gnu kfreebsd-gnu +ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) + with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +#ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) +# with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM) +#endif +ifneq (,$(findstring gdc,$(PKGSOURCE))) + with_check := disabled for D +endif +with_check := $(call envfilt, check, , , $(with_check)) +ifdef WITHOUT_CHECK + with_check := disabled by environment +endif +ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),) + with_check := disabled by DEB_BUILD_OPTIONS +endif +#ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips)) +# ifneq ($(single_package),yes) +# with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect +# endif +#endif +#with_check := disabled for this upload + +# not a dependency on all archs, but if available, use it for the testsuite +ifneq (,$(wildcard /usr/bin/localedef)) + locale_data = generate +endif +# try to b-d on locales-all +locale_data = + +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + ldconfig_arg = --noscripts +endif + +all_enabled_languages := $(enabled_languages) +languages_without_lang_opt := c++ objc obj-c++ + +debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs)) +export debian_extra_langs + +# multilib +biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \ + x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el \ + mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel \ + mipsr6=mips64r6 mipsr6el=mips64r6el mips64r6=mipsr6 mips64r6el=mipsr6el \ + mipsn32r6=mipsr6 mipsn32r6el=mipsr6el +ifneq (,$(filter $(derivative),Ubuntu)) + ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid)) + biarch_map := $(subst i686=,i486=,$(biarch_map)) + endif +else # Debian + biarch_map := $(subst i686=,i486=,$(biarch_map)) +endif + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty)) + biarch_map += arm=arm + endif +endif +biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \ + $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map)))) + +biarch64 := no +biarch32 := no +biarchn32 := no +biarchx32 := no +biarchhf := no +biarchsf := no +flavours := +define gen_biarch + ifneq (yes,$$(call envfilt, biarch, , ,yes)) + biarch$1archs := + endif + ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs))) + biarch$1 := yes + flavours += $1 + #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM) + biarch$1subdir = $1 + ifeq ($$(with_libgcc),yes) + with_lib$1gcc := yes + endif + ifeq ($$(with_cdev),yes) + with_lib$1gccdev := yes + endif + ifeq ($$(with_libcxx),yes) + with_lib$1cxx := yes + endif + ifeq ($$(with_libcxxdbg),yes) + with_lib$1cxxdbg := yes + endif + ifeq ($$(with_cxxdev),yes) + with_lib$1cxxdev := yes + endif + ifeq ($$(with_libobjc),yes) + with_lib$1objc := yes + endif + ifeq ($$(with_objcdev),yes) + with_lib$1objcdev := yes + endif + ifeq ($$(with_libgfortran),yes) + with_lib$1gfortran := yes + endif + ifeq ($$(with_fdev),yes) + with_lib$1gfortrandev := yes + endif + ifeq (,$(filter $1, hf)) + ifeq ($$(with_libphobos),yes) + with_lib$1phobos := yes + endif + ifeq ($$(with_libphobosdev),yes) + with_lib$1phobosdev := yes + endif + endif + ifeq ($$(with_libssp),yes) + with_lib$1ssp := yes + endif + ifeq ($$(with_libgomp),yes) + with_lib$1gomp:= yes + endif + ifeq ($$(with_libitm),yes) + with_lib$1itm:= yes + endif + ifeq ($$(with_libatomic),yes) + with_lib$1atomic:= yes + endif + ifeq ($$(with_libbacktrace),yes) + with_lib$1backtrace:= yes + endif + ifeq ($$(with_libasan),yes) + with_lib$1asan:= yes + endif + ifeq ($$(with_liblsan),yes) + with_lib$1lsan := yes + endif + ifeq ($$(with_libtsan),yes) + with_lib$1tsan:= yes + endif + ifeq ($$(with_libubsan),yes) + with_lib$1ubsan := yes + endif + ifeq ($$(with_libvtv),yes) + with_lib$1vtv := yes + endif + ifeq ($$(with_libqmath),yes) + with_lib$1qmath := yes + endif + ifeq ($$(with_libgo),yes) + with_lib$1go := yes + endif + ifeq ($$(with_godev),yes) + with_lib$1godev := yes + endif + ifeq ($$(with_libhsailrt),yes) + with_lib$1hsailrt := yes + endif + + biarch_multidir_names = libiberty libgcc libbacktrace libatomic libgomp + ifneq (,$$(findstring gcc-, $$(PKGSOURCE))) + biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \ + zlib libitm libsanitizer + ifeq ($$(with_objc_gc),yes) + biarch_multidir_names += boehm-gc + endif + endif + ifneq (,$(findstring yes, $(with_go))) + biarch_multidir_names += libffi + endif + ifeq ($(with_fortran),yes) + biarch_multidir_names += libquadmath + endif + ifeq ($(with_go),yes) + biarch_multidir_names += libgo + endif + ifeq ($(with_brig),yes) + biarch_multidir_names += libhsail-rt + endif + ifeq ($(with_phobos),yes) + ifeq (,$(filter $1, hf)) + biarch_multidir_names += libphobos + endif + endif + # FIXME: it now builds, but installs everything into the same $libdir + #ifeq ($(with_m2),yes) + # biarch_multidir_names += libgm2 + #endif + ifneq (,$$(findstring 32,$1)) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + TARGET32_MACHINE := $$(TARGET_ALIAS) + else + TARGET64_MACHINE := $$(TARGET_ALIAS) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + endif + export TARGET32_MACHINE + export TARGET64_MACHINE + endif +endef +biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/ +biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/ +biarchn32archs := /mips/mipsel/mips64/mips64el/ +ifeq (yes,$(MIPS_R6_ENABLED)) + biarch32archs += /mipsn32r6/mipsn32r6el/mips64r6/mips64r6el/ + biarch64archs += /mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/ + biarchn32archs += /mipsr6/mipsr6el/mips64r6/mips64r6el/ +endif + +ifeq ($(derivative),Ubuntu) + ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty artful)) + biarchhfarchs := /armel/ + biarchsfarchs := /armhf/ + endif + ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal)) + biarchx32archs := /amd64/i386/ + endif +endif +ifeq ($(derivative),Debian) + ifeq (,$(filter $(distrelease),etch squeeze wheezy)) + biarchx32archs := /amd64/i386/ + endif +endif +$(foreach x,32 64 n32 x32 hf sf,$(eval $(call gen_biarch,$(x)))) + +ifeq ($(DEB_TARGET_ARCH),sh4) + biarch_multidir_names=none +endif +export biarch_multidir_names + +#ifeq ($(trunk_build),yes) +# no_biarch_libs := yes +#endif +no_biarch_libs := + +ifeq ($(no_biarch_libs),yes) + with_lib64gcc := no + with_lib64cxx := no + with_lib64cxxdbg := no + with_lib64objc := no + with_lib64ffi := no + with_lib64gfortran := no + with_lib64ssp := no + with_lib64go := no + with_lib64gomp := no + with_lib64itm := no + with_lib64qmath := no + with_lib64atomic := no + with_lib64backtrace := no + with_lib64asan := no + with_lib64lsan := no + with_lib64tsan := no + with_lib64ubsan := no + with_lib64vtv := no + with_lib64gccdev := no + with_lib64cxxdev := no + with_lib64objcdev := no + with_lib64gfortrandev := no + with_lib64phobosdev := no + with_lib64hsailrtdev := no + + with_lib32gcc := no + with_lib32cxx := no + with_lib32cxxdbg := no + with_lib32objc := no + with_lib32ffi := no + with_lib32gfortran := no + with_lib32ssp := no + with_lib32go := no + with_lib32gomp := no + with_lib32itm := no + with_lib32qmath := no + with_lib32atomic := no + with_lib32backtrace := no + with_lib32asan := no + with_lib32lsan := no + with_lib32tsan := no + with_lib32ubsan := no + with_lib32vtv := no + with_lib32gccdev := no + with_lib32cxxdev := no + with_lib32objcdev := no + with_lib32gfortrandev := no + with_lib32phobosdev := no + with_lib32hsailrtdev := no + + with_libn32gcc := no + with_libn32cxx := no + with_libn32cxxdbg := no + with_libn32objc := no + with_libn32ffi := no + with_libn32gfortran := no + with_libn32ssp := no + with_libn32go := no + with_libn32gomp := no + with_libn32itm := no + with_libn32qmath := no + with_libn32atomic := no + with_libn32backtrace := no + with_libn32asan := no + with_libn32lsan := no + with_libn32tsan := no + with_libn32ubsan := no + with_libn32gccdev := no + with_libn32cxxdev := no + with_libn32objcdev := no + with_libn32gfortrandev:= no + with_libn32phobosdev := no + with_libn32hsailrtdev := no + + with_libx32gcc := no + with_libx32cxx := no + with_libx32cxxdbg := no + with_libx32objc := no + with_libx32ffi := no + with_libx32gfortran := no + with_libx32ssp := no + with_libx32go := no + with_libx32gomp := no + with_libx32itm := no + with_libx32qmath := no + with_libx32atomic := no + with_libx32backtrace := no + with_libx32asan := no + with_libx32lsan := no + with_libx32tsan := no + with_libx32ubsan := no + with_libx32vtv := no + with_libx32gccdev := no + with_libx32cxxdev := no + with_libx32objcdev := no + with_libx32gfortrandev:= no + with_libx32phobosdev := no + with_libx32hsailrtdev := no + + with_libhfgcc := no + with_libhfcxx := no + with_libhfcxxdbg := no + with_libhfobjc := no + with_libhfffi := no + with_libhfgfortran := no + with_libhfssp := no + with_libhfgo := no + with_libhfgomp := no + with_libhfitm := no + with_libhfqmath := no + with_libhfatomic := no + with_libhfbacktrace := no + with_libhfasan := no + with_libhflsan := no + with_libhftsan := no + with_libhfubsan := no + with_libhfgccdev := no + with_libhfcxxdev := no + with_libhfobjcdev := no + with_libhfgfortrandev := no + with_libhfphobosdev := no + with_libhfhsailrtdev := no + + with_libsfgcc := no + with_libsfcxx := no + with_libsfcxxdbg := no + with_libsfobjc := no + with_libsfffi := no + with_libsfgfortran := no + with_libsfssp := no + with_libsfgo := no + with_libsfgomp := no + with_libsfitm := no + with_libsfqmath := no + with_libsfatomic := no + with_libsfbacktrace := no + with_libsfasan := no + with_libsflsan := no + with_libsftsan := no + with_libsfubsan := no + with_libsfgccdev := no + with_libsfcxxdev := no + with_libsfobjcdev := no + with_libsfgfortrandev := no + with_libsfphobosdev := no + with_libsfhsailrtdev := no + + ifeq ($(with_ada)-$(with_separate_gnat),yes-yes) + biarchhf := disabled for Ada + biarchsf := disabled for Ada + endif + +endif + +ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf))) + multilib := yes +endif + +multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchx32archs) $(biarchhfarchs) $(biarchsfarchs))) + +biarchsubdirs := \ + $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \ + $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \ + $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \ + $(if $(filter yes,$(biarchx32)),$(biarchx32subdir),) \ + $(if $(filter yes,$(biarchhf)),$(biarchhfsubdir),) \ + $(if $(filter yes,$(biarchsf)),$(biarchsfsubdir),) +biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))} + +# GNU locales +force_gnu_locales := yes +locale_no_cpus := +locale_no_systems := +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) + force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif + +gcc_tarpath := $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-9/gcc-*.tar.*)) +gcc_tarball := $(notdir $(gcc_tarpath)) +gcc_srcdir := $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=))))) + +ifeq ($(with_offload_nvptx),yes) + nl_nvptx_tarpath := $(firstword $(wildcard newlib-*.tar.* /usr/src/gcc-$(BASE_VERSION)/newlib-*.tar.*)) + nl_nvptx_tarball := $(notdir $(nl_nvptx_tarpath)) + nl_nvptx_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(nl_nvptx_tarball:.tar.bz2=)))) +endif + +#ifeq ($(with_m2),yes) + m2_tarpath := $(firstword $(wildcard gm2-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gm2-*.tar.*)) + m2_tarball := $(notdir $(m2_tarpath)) + m2_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(m2_tarball:.tar.bz2=)))) +#endif + +# NOTE: This is not yet used. when building gdc or gnat using the +# gcc-source package, we don't require an exact binary dependency. +ifneq ($(dir $(gcc_tarpath)),./) + built_using_external_source := yes +else + built_using_external_source := +endif +ifeq ($(DEB_CROSS),yes) + add_built_using = yes +endif +ifeq ($(with_ada)-$(with_separate_gnat),yes-yes) + add_built_using = yes +endif + +unpack_stamp := $(stampdir)/01-unpack-stamp +pre_patch_stamp := $(stampdir)/02-pre-patch-stamp +patch_stamp := $(stampdir)/02-patch-stamp +control_stamp := $(stampdir)/03-control-stamp +configure_stamp := $(stampdir)/04-configure-stamp +build_stamp := $(stampdir)/05-build-stamp +build_arch_stamp := $(stampdir)/05-build-arch-stamp +build_indep_stamp := $(stampdir)/05-build-indep-stamp +build_html_stamp := $(stampdir)/05-build-html-stamp +build_locale_stamp := $(stampdir)/05-build-locale-stamp +build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp +build_gnatdoc_stamp := $(stampdir)/05-build-gnatdoc-stamp +check_stamp := $(stampdir)/06-check-stamp +check_inst_stamp := $(stampdir)/06-check-inst-stamp +install_stamp := $(stampdir)/07-install-stamp +install_snap_stamp := $(stampdir)/07-install-snap-stamp +binary_stamp := $(stampdir)/08-binary-stamp + +configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp +build_dummy_stamp := $(stampdir)/05-build-dummy-stamp +install_dummy_stamp := $(stampdir)/07-install-dummy-stamp + +configure_jit_stamp := $(stampdir)/04-configure-jit-stamp +build_jit_stamp := $(stampdir)/05-build-jit-stamp +install_jit_stamp := $(stampdir)/07-install-jit-stamp + +configure_nvptx_stamp := $(stampdir)/04-configure-nvptx-stamp +build_nvptx_stamp := $(stampdir)/05-build-nvptx-stamp +install_nvptx_stamp := $(stampdir)/07-install-nvptx-stamp + +configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp +build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp +install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp + +configure_neon_stamp := $(stampdir)/04-configure-neon-stamp +build_neon_stamp := $(stampdir)/05-build-neon-stamp +install_neon_stamp := $(stampdir)/07-install-neon-stamp + +control_dependencies := $(patch_stamp) + +ifeq ($(single_package),yes) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_snap_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif +else + ifeq ($(with_base_only),yes) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) + else + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + endif +endif + +ifeq ($(with_jit),yes) + build_dependencies += $(build_jit_stamp) + install_dependencies += $(install_jit_stamp) +endif + +ifeq ($(with_offload_nvptx),yes) + build_dependencies += $(build_nvptx_stamp) + install_dependencies += $(install_nvptx_stamp) +endif + +ifeq ($(with_neon),yes) + build_dependencies += $(build_neon_stamp) + install_dependencies += $(install_neon_stamp) +endif + +ifeq ($(with_hppa64),yes) + build_dependencies += $(build_hppa64_stamp) + ifneq ($(trunk_build),yes) + install_dependencies += $(install_hppa64_stamp) + endif +endif + +build_dependencies += $(check_dependencies) + +build_arch_dependencies = $(build_dependencies) +build_indep_dependencies = $(build_dependencies) + +ifneq (,$(findstring build-native, $(build_type))) + ifneq ($(single_package),yes) + build_indep_dependencies += $(build_html_stamp) + ifeq ($(with_cxx),yes) + build_indep_dependencies += $(build_doxygen_stamp) + endif + ifeq ($(with_ada),yes) + build_indep_dependencies += $(build_gnatdoc_stamp) + endif + endif +endif + +stamp-dir: + mkdir -p $(stampdir) + +ifeq ($(DEB_CROSS),yes) + define cross_mangle_shlibs + if [ -f debian/$(1)/DEBIAN/shlibs ]; then \ + sed -i s/$(cross_lib_arch)/:$(DEB_TARGET_ARCH)/g debian/$(1)/DEBIAN/shlibs; \ + fi + endef + define cross_mangle_substvars + if [ -f debian/$(1).substvars ]; then \ + sed -i \ + -e 's/:$(DEB_TARGET_ARCH)/$(cross_lib_arch)/g' \ + -e 's/\(libc[.0-9]*-[^:]*\):\([a-z0-9-]*\)/\1-\2-cross/g' \ + $(if $(filter armel,$(DEB_TARGET_ARCH)),-e 's/:armhf/-armhf-cross/g') \ + $(if $(filter armhf,$(DEB_TARGET_ARCH)),-e 's/:armel/-armel-cross/g') \ + debian/$(1).substvars; \ + fi + endef +else + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef + # precise's dh_shlibdeps doesn't work well for ARM multilibs + # and dh_shlibdeps doesn't work well for cross builds, see #698881. + ifneq (,$(filter $(distrelease),precise quantal raring)) + ifneq (,$(filter $(DEB_TARGET_ARCH), armel armhf arm64)) + ignshld = - + endif + endif + # FIXME: don't stop at the first shlibdeps failure ... + ignshld = - +endif +ifeq ($(DEB_STAGE),rtlibs) + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef +endif + +# takes a *list* of package names as $1, the multilib dirname as $2 +_shlibdirs = \ + $(if $(strip $(1)), \ + $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \ + -name '*.so.*' -printf '%h ' | uniq)) \ + $(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \ + $(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \ + $(with_build_sysroot)/$(usr_lib$(2)) \ + $(if $(findstring mips64,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_lib64)) \ + $(if $(findstring mipsn32,$(DEB_TARGET_ARCH)), \ + $(with_build_sysroot)/$(usr_libn32)) \ + $(if $(filter yes,$(biarchsf) $(biarchhf)), \ + $(with_build_sysroot)/usr/$(call mlib_to_march,$(2))/lib) \ + $(if $(filter yes, $(with_common_libs)),, \ + $(CURDIR)/$(d)/$(usr_lib$(2)) \ + $(CURDIR)/$(d)/usr/$(call mlib_to_march,$(2))/lib) +shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d))) diff --git a/rules.parameters b/rules.parameters new file mode 100644 index 0000000..46dce24 --- /dev/null +++ b/rules.parameters @@ -0,0 +1,41 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 9.2.1 +NEXT_GCC_VERSION := 9.2.2 +BASE_VERSION := 9 +SOURCE_VERSION := 9.2.1-17 +DEB_VERSION := 9.2.1-17 +DEB_EVERSION := 1:9.2.1-17 +DEB_GDC_VERSION := 9.2.1-17 +DEB_SOVERSION := 5 +DEB_SOEVERSION := 1:5 +DEB_LIBGCC_SOVERSION := +DEB_LIBGCC_VERSION := 1:9.2.1-17 +DEB_STDCXX_SOVERSION := 5 +DEB_GOMP_SOVERSION := 5 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 5 +OBJC_SONAME := 4 +GDC_VERSION := 9 +GNAT_VERSION := 9 +GNAT_SONAME := 9 +FFI_SONAME := 7 +SSP_SONAME := 0 +GOMP_SONAME := 1 +ITM_SONAME := 1 +ATOMIC_SONAME := 1 +BTRACE_SONAME := 1 +ASAN_SONAME := 5 +LSAN_SONAME := 0 +TSAN_SONAME := 0 +UBSAN_SONAME := 1 +VTV_SONAME := 0 +QUADMATH_SONAME := 0 +GO_SONAME := 14 +CC1_SONAME := 0 +GCCJIT_SONAME := 0 +GPHOBOS_SONAME := 76 +GDRUNTIME_SONAME := 76 +GM2_SONAME := 0 +HSAIL_SONAME := 0 +LIBC_DEP := libc6 diff --git a/rules.patch b/rules.patch new file mode 100644 index 0000000..d0f6dc8 --- /dev/null +++ b/rules.patch @@ -0,0 +1,384 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir ?= debian/patches +series_file ?= $(patchdir)/series + +# which patches should be applied? + +debian_patches = \ + svn-updates \ + $(if $(with_linaro_branch),gcc-linaro) \ + $(if $(with_linaro_branch),gcc-linaro-no-macros) \ + gcc-lto-jobserver \ + gcc-lto-pick-compile-time-g \ + +# svn-updates \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + $(if $(with_linaro_branch),gcc-linaro-doc) \ + rename-info-files \ + gcc-lto-jobserver-doc \ + gcc-lto-pick-compile-time-g-doc \ + +# svn-doc-updates \ +# $(if $(with_linaro_branch),,svn-doc-updates) \ + +else +endif +debian_patches += \ + gcc-gfdl-build + +debian_patches += \ + gcc-textdomain \ + gcc-distro-specs \ + gcc-driver-extra-langs$(if $(with_linaro_branch),-linaro) + +ifneq (,$(filter $(distrelease),etch lenny squeeze wheezy dapper hardy intrepid jaunty karmic lucid)) + debian_patches += gcc-hash-style-both +else + debian_patches += gcc-hash-style-gnu +endif + +debian_patches += \ + libstdc++-pic \ + libstdc++-doclink \ + libstdc++-man-3cxx \ + libstdc++-test-installed \ + alpha-no-ev4-directive \ + note-gnu-stack \ + libgomp-omp_h-multilib \ + libgo-testsuite \ + libgo-cleanfiles \ + gcc-target-include-asm \ + libgo-revert-timeout-exp \ + libgo-setcontext-config \ + gcc-auto-build \ + kfreebsd-unwind \ + libitm-no-fortify-source \ + sparc64-biarch-long-double-128 \ + pr66368 \ + pr67590 \ + libjit-ldflags \ + libffi-pax \ + libffi-race-condition \ + gcc-foffload-default \ + cuda-float128 \ + libffi-mipsen-r6 \ + t-libunwind-elf-Wl-z-defs \ + gcc-force-cross-layout \ + gcc-search-prefixed-as-ld \ + kfreebsd-decimal-float \ + pr87808 \ + libgomp-no-werror \ + gdc-cross-build \ + verbose-lto-linker \ + libstdc++-futex \ + pr91307 \ + pr92267 \ + +# TODO: +# pr81829 \ + +# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ +# libstdc++-nothumb-check \ + +hardening_patches = +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) + hardening_patches += \ + gcc-distro-specs-doc \ + gcc-default-fortify-source \ + gcc-default-relro \ + testsuite-hardening-format \ + testsuite-hardening-printf-types \ + testsuite-hardening-updates \ + testsuite-glibc-warnings + ifeq ($(with_pie),yes) + hardening_patches += \ + bind_now_when_pie +# else +# hardening_patches += \ +# ignore-pie-specs-when-not-enabled + endif + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) +# ifneq ($(with_pie),yes) +# hardening_patches += \ +# ignore-pie-specs-when-not-enabled +# endif + endif +endif + +# FIXME 4.5: Drop and adjust symbols files +ifneq (,$(findstring 4.4, $(PKGSOURCE))) + debian_patches += pr39491 +endif + +# Patches for non-core languages. + +debian_patches += gm2 gm2-install-man gm2-updates gm2-bootstrap-compare + +# Most of the time, it would be safe to apply them whether the +# language is selected or not. But when working on a new GCC version, +# it is convenient to concentrate on core languages, and refresh them +# later when working on the specific language. +ifeq ($(with_ada),yes) + debian_patches += ada-gcc-name + debian_patches += ada-verbose + ifeq ($(biarch64),yes) + debian_patches += ada-nobiarch-check + endif + debian_patches += ada-link-lib + debian_patches += ada-libgnatvsn + debian_patches += ada-gnattools-cross + debian_patches += ada-tools-move-ldflags + ifeq ($(with_gnatsjlj),yes) + debian_patches += ada-sjlj + endif + debian_patches += ada-lib-info-source-date-epoch + debian_patches += ada-armel-libatomic + # applied for trunk builds as well: + #debian_patches += ada-kfreebsd + debian_patches += ada-749574 + debian_patches += ada-perl-shebang + debian_patches += ada-repinfo-input +endif + +# FIXME: still relevant? +# gdc-updates \ +# gdc-multiarch + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += gdc-texinfo +endif +ifneq ($(with_libphobos),yes) + debian_patches += gdc-driver-nophobos +endif +ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 armhf)) + debian_patches += disable-gdc-tests +endif + +ifeq ($(DEB_TARGET_ARCH),alpha) + debian_patches += alpha-ieee + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += alpha-ieee-doc + endif +endif + +ifeq ($(DEB_TARGET_ARCH),ia64) + debian_patches += pr87338 pr90714 +endif + +# all patches below this line are applied for gcc-snapshot builds as well + +ifeq ($(single_package),yes) + debian_patches = +endif + +debian_patches += \ + sys-auxv-header \ + gdc-dynamic-link-phobos \ + ia64-disable-selective-scheduling \ + +ifeq ($(with_ibm_branch),yes) + debian_patches += ibm-branch +endif + +ifeq ($(with_softfloat),yes) + debian_patches += arm-multilib-soft-float +else ifeq ($(multilib),yes) + ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise)) + debian_patches += arm-multilib-softfp$(if $(filter yes,$(DEB_CROSS)),-cross) + else + debian_patches += arm-multilib-soft$(if $(filter yes,$(DEB_CROSS)),-cross) + endif +endif +debian_patches += arm-multilib-defaults + +ifeq ($(DEB_CROSS),yes) + debian_patches += cross-fixes + debian_patches += cross-install-location + ifeq ($(with_m2),yes) + debian_patches += cross-install-location-gm2 + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes +endif + +debian_patches += gcc-ice-dump +debian_patches += gcc-ice-apport +debian_patches += skip-bootstrap-multilib +debian_patches += libffi-ro-eh_frame_sect +debian_patches += libffi-mips +debian_patches += ada-kfreebsd + +# sigaction on sparc changed between glibc 2.19 and 2.21 +ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}'))) + # keep it, gets remove in GCC from time to time + #debian_patches += pr67899 +endif + +debian_patches += gcc-multiarch +debian_patches += config-ml +ifneq ($(single_package),yes) + ifeq ($(with_multiarch_cxxheaders),yes) + debian_patches += g++-multiarch-incdir + debian_patches += canonical-cpppath + endif +endif +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + debian_patches += cross-no-locale-include + debian_patches += cross-biarch +endif +debian_patches += gcc-multilib-multiarch + +ifneq ($(trunk_build),yes) +ifneq (,$(filter $(derivative),Ubuntu)) + ifeq (,$(filter $(distrelease),dapper hardy intrepid jaunty karmic lucid maverick)) + debian_patches += gcc-as-needed + ifeq (,$(filter $(distrelease),dapper hardy intrepid jaunty karmic lucid maverick precise trusty utopic vivid wily xenial yakkety)) + debian_patches += gcc-as-needed-gold + endif + endif +else # Debian + ifeq (,$(filter $(distrelease),squeeze wheezy jessie stretch)) + debian_patches += gcc-as-needed gcc-as-needed-gold + endif +endif +endif + +debian_patches += libgomp-kfreebsd-testsuite +debian_patches += go-testsuite + +# don't remove, this is regularly overwritten, see PR sanitizer/63958. +#debian_patches += libasan-sparc + +# Has to be refreshed manually as described in the header. +debian_patches += ada-changes-in-autogen-output + +series_stamp = $(stampdir)/02-series-stamp +series: $(series_stamp) +$(series_stamp): + echo $(strip $(addsuffix .diff,$(debian_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) +ifneq (,$(strip $(hardening_patches))) + ifneq ($(trunk_build),yes) + echo $(strip $(addsuffix .diff,$(hardening_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) + endif +endif + sed -r 's/(.)$$/\1 -p1/' -i $(series_file) + touch $@ + +autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u) +autoconf_dirs = $(sort $(dir $(autoconf_files))) + +automake_files = $(addprefix ./, $(filter-out none, \ + $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u))) + +autoconf_version = 2.69 +# FIXME should have a separate 2.69 package +ifeq (,$(filter $(distrelease),lucid precise)) + autoconf_version = +endif +ifeq ($(trunk_build),yes) + # The actual version depends on the build-dependencies set by + # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the + # correct version is installed. + #autoconf_version = +endif + +# FIXME: the auto* stuff is done every time for every subdir, which +# leads to build errors. Idea: record the auto* calls in the patch +# files (AUTO ) and run them separately, +# maybe only once per directory). +$(patch_stamp): $(unpack_stamp) $(series_stamp) + sync + QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \ + quilt --quiltrc /dev/null push -a || test $$? = 2 + +ifneq (,$(filter svn-updates, $(debian_patches))) + awk '/^EOF/ {exit} p==1 {print} /EOF$$/ {p=1}' \ + $(patchdir)/svn-updates.diff > src/LAST_UPDATED +endif + + : # only needed when we have changes, and currently fails with autogen 5.18 + : #cd $(srcdir)/fixincludes && ./genfixes + + sync + echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ + cd $(CURDIR)/{} && rm -f configure && \ + AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' + + for i in $(debian_patches) $(hardening_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + + : # generate the distro-defaults.h header + rm -f $(srcdir)/gcc/distro-defaults.h + echo '/* distro specific configuration injected by the distro build. */' \ + >> $(srcdir)/gcc/distro-defaults.h +ifeq ($(with_async_unwind),yes) + echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + echo '#define DIST_DEFAULT_SSP 1' \ + >> $(srcdir)/gcc/distro-defaults.h + ifeq (,$(filter $(distrelease),dapper hardy lucid maverick natty oneiric precise quantal raring saucy trusty)) + echo '#define DIST_DEFAULT_SSP_STRONG 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \ + >> $(srcdir)/gcc/distro-defaults.h +endif +ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) +# FIXME: this is directly patched +# echo '#define DIST_DEFAULT_FORTIFY_SOURCE 1' \ +# >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_stack_clash),yes) + echo '#define DIST_DEFAULT_STACK_CLASH 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif + ifeq ($(with_cf_protection),yes) + echo '#define DIST_DEFAULT_CF_PROTECTION 1' \ + >> $(srcdir)/gcc/distro-defaults.h + endif +else ifneq (,$(filter $(derivative),Debian)) + ifneq (,$(findstring gcc-9, $(PKGSOURCE))) + endif +endif + + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + +update-patches: $(series_stamp) + export QUILT_PATCHES=$(patchdir); \ + export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ + export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ + while quilt push; do quilt refresh; done + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools diff --git a/rules.sonames b/rules.sonames new file mode 100644 index 0000000..c128926 --- /dev/null +++ b/rules.sonames @@ -0,0 +1,89 @@ +ifneq ($(vafilt_defined),1) + $(error rules.defs must be included before rules.sonames) +endif + +ifeq (,$(wildcard debian/soname-cache)) + SONAME_VARS := $(shell \ + cache=debian/soname-cache; \ + rm -f $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libstdc++-v3/acinclude.m4`; \ + echo CXX_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libobjc/configure.ac`; \ + echo OBJC_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \ + echo FORTRAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \ + echo SSP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \ + echo FFI_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgomp/configure.ac`; \ + echo GOMP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/asan/libtool-version | cut -d: -f1`; \ + echo ASAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/lsan/libtool-version | cut -d: -f1`; \ + echo LSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/tsan/libtool-version | cut -d: -f1`; \ + echo TSAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libsanitizer/ubsan/libtool-version | cut -d: -f1`; \ + echo UBSAN_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libatomic/configure.ac`; \ + v=1; \ + echo ATOMIC_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libbacktrace/configure.ac`; \ + echo BTRACE_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \ + echo QUADMATH_SONAME=$$v >> $$cache; \ + v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ + | sed -e 's/.*"\([^"]*\)".*/\1/'`; \ + echo GNAT_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgo/configure.ac`; \ + echo GO_SONAME=$$v >> $$cache; \ + echo ITM_SONAME=1 >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libvtv/configure.ac`; \ + v=0; \ + echo VTV_SONAME=$$v >> $$cache; \ + echo CC1_SONAME=0 >> $$cache; \ + echo GCCJIT_SONAME=0 >> $$cache; \ + echo GPHOBOS_SONAME=76 >> $$cache; \ + echo GDRUNTIME_SONAME=76 >> $$cache; \ + echo HSAIL_SONAME=0 >> $$cache; \ + echo GM2_SONAME=0 >> $$cache; \ + cat $$cache) +else + SONAME_VARS := $(shell cat debian/soname-cache) +endif +CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) +OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) +FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) +SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) +FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) +GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) +ATOMIC_SONAME = $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME) +BTRACE_SONAME = $(call vafilt,$(SONAME_VARS),BTRACE_SONAME) +ASAN_SONAME = $(call vafilt,$(SONAME_VARS),ASAN_SONAME) +LSAN_SONAME = $(call vafilt,$(SONAME_VARS),LSAN_SONAME) +TSAN_SONAME = $(call vafilt,$(SONAME_VARS),TSAN_SONAME) +UBSAN_SONAME = $(call vafilt,$(SONAME_VARS),UBSAN_SONAME) +VTV_SONAME = $(call vafilt,$(SONAME_VARS),VTV_SONAME) +CILKRTS_SONAME = $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME) +QUADMATH_SONAME = $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME) +GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) +GO_SONAME = $(call vafilt,$(SONAME_VARS),GO_SONAME) +ITM_SONAME = $(call vafilt,$(SONAME_VARS),ITM_SONAME) +CC1_SONAME = $(call vafilt,$(SONAME_VARS),CC1_SONAME) +GCCJIT_SONAME = $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME) +GPHOBOS_SONAME = $(call vafilt,$(SONAME_VARS),GPHOBOS_SONAME) +GDRUNTIME_SONAME= $(call vafilt,$(SONAME_VARS),GDRUNTIME_SONAME) +HSAIL_SONAME = $(call vafilt,$(SONAME_VARS),HSAIL_SONAME) +GM2_SONAME = $(call vafilt,$(SONAME_VARS),GM2_SONAME) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) +STDC++_SONAME = $(CXX_SONAME) diff --git a/rules.source b/rules.source new file mode 100644 index 0000000..a11b595 --- /dev/null +++ b/rules.source @@ -0,0 +1,15 @@ +SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(SOURCE_DIR)/patches + +include $(SOURCE_DIR)/debian/rules.defs +include $(SOURCE_DIR)/debian/rules.patch +include $(SOURCE_DIR)/debian/rules.unpack + +patch-source: $(patch_stamp) + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gdc_srcdir) + rm -rf bin + rm -rf $(srcdir) + diff --git a/rules.unpack b/rules.unpack new file mode 100644 index 0000000..4756deb --- /dev/null +++ b/rules.unpack @@ -0,0 +1,197 @@ +# -*- makefile -*- +# rules to unpack the source tarballs in $(srcdir); if the source dir already +# exists, the rule exits with an error to prevent deletion of modified +# source files. It has to be deleted manually. + +tarballs = $(gcc_tarball) +ifeq ($(with_offload_nvptx),yes) + tarballs += $(nl_nvptx_tarball) +endif +ifneq (,$(m2_tarball)) + tarballs += $(m2_tarball) +endif + +unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i)) + +unpack: stamp-dir $(unpack_stamp) debian-chmod +$(unpack_stamp): $(unpack_stamps) +$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p)) + echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \ + > pxxx + echo -e "Integrated upstream packages in this version:\n" >> pxxx + for i in $(tarballs); do echo " $$i" >> pxxx; done + mv -f pxxx $@ + +debian-chmod: + @chmod 755 debian/dh_* + +# --------------------------------------------------------------------------- + +gfdl_texinfo_files = \ + gcc/doc/avr-mmcu.texi \ + gcc/doc/bugreport.texi \ + gcc/doc/cfg.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cpp.texi \ + gcc/doc/cppdiropts.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/cppwarnopts.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcov.texi \ + gcc/doc/gcov-dump.texi \ + gcc/doc/gcov-tool.texi \ + gcc/doc/generic.texi \ + gcc/doc/gimple.texi \ + gcc/doc/gnu.texi \ + gcc/doc/gty.texi \ + gcc/doc/headerdirs.texi \ + gcc/doc/hostconfig.texi \ + gcc/doc/implement-c.texi \ + gcc/doc/implement-cxx.texi \ + gcc/doc/install-old.texi \ + gcc/doc/install.texi \ + gcc/doc/interface.texi \ + gcc/doc/invoke.texi \ + gcc/doc/languages.texi \ + gcc/doc/libgcc.texi \ + gcc/doc/loop.texi \ + gcc/doc/lto.texi \ + gcc/doc/makefile.texi \ + gcc/doc/match-and-simplify.texi \ + gcc/doc/md.texi \ + gcc/doc/objc.texi \ + gcc/doc/optinfo.texi \ + gcc/doc/options.texi \ + gcc/doc/passes.texi \ + gcc/doc/plugins.texi \ + gcc/doc/poly-int.texi \ + gcc/doc/portability.texi \ + gcc/doc/rtl.texi \ + gcc/doc/service.texi \ + gcc/doc/sourcebuild.texi \ + gcc/doc/standards.texi \ + gcc/doc/tm.texi.in \ + gcc/doc/tm.texi \ + gcc/doc/tree-ssa.texi \ + gcc/doc/trouble.texi \ + gcc/doc/include/gcc-common.texi \ + gcc/doc/include/funding.texi \ + gcc/fortran/gfc-internals.texi \ + gcc/fortran/invoke.texi \ + gcc/fortran/intrinsic.texi \ + + +gfdl_toplevel_texinfo_files = \ + gcc/doc/gcc.texi \ + gcc/ada/gnat-style.texi \ + gcc/ada/gnat_rm.texi \ + gcc/ada/gnat_ugn.texi \ + gcc/fortran/gfortran.texi \ + gcc/go/gccgo.texi \ + libgomp/libgomp.texi \ + libquadmath/libquadmath.texi \ + +gfdl_manpages = \ + gcc/doc/cpp.1 \ + gcc/doc/g++.1 \ + gcc/doc/gc-analyze.1 \ + gcc/doc/gcc.1 \ + gcc/doc/gccgo.1 \ + gcc/doc/gcov.1 \ + gcc/doc/gcov-dump.1 \ + gcc/doc/gcov-tool.1 \ + gcc/doc/gfortran.1 \ + gcc/doc/fsf-funding.7 \ + +# --------------------------------------------------------------------------- +$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath) + : # unpack gcc tarball + mkdir -p $(stampdir) + if [ -d $(srcdir) ]; then \ + echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \ + false; \ + fi + rm -rf $(gcc_srcdir) + tar -x -f $(gcc_tarpath) + mv $(gcc_srcdir) $(srcdir) + ln -sf libsanitizer $(srcdir)/libasan +ifeq (0,1) + cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ + $(gfdl_texinfo_files) \ + $(gfdl_toplevel_texinfo_files) \ + $(gfdl_manpages) +endif +ifeq ($(GFDL_INVARIANT_FREE),yes) + ifneq ($(single_package),yes) + rm -f $(srcdir)/gcc/doc/*.1 + rm -f $(srcdir)/gcc/doc/fsf-funding.7 + rm -f $(srcdir)/gcc/doc/*.info + rm -f $(srcdir)/gcc/fortran/*.info + rm -f $(srcdir)/libgomp/*.info + for i in $(gfdl_texinfo_files); do \ + if [ -f $(srcdir)/$$i ]; then \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + else \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + ( \ + echo '@include gcc-vers.texi'; \ + echo '@macro versionsubtitle'; \ + echo '@subtitle For @sc{gcc} version @value{version-GCC}'; \ + echo '@vskip 0pt plus 1filll'; \ + echo '@end macro'; \ + ) > $(srcdir)/gcc/doc/include/gcc-common.texi + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_manpages); do \ + touch $(srcdir)/$$i; \ + done + rm -f $(srcdir)/INSTALL/*.html + rm -f $(srcdir)/zlib/contrib/dotzlib/DotZLib.chm + endif +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +ifneq (,$(nl_nvptx_tarball)) +$(unpack_stamp)-$(nl_nvptx_tarball): $(nl_nvptx_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack newlib-nvptx tarball + mkdir -p $(stampdir) + : # rm -rf $(nl_nvptx_srcdir) + tar -x -f $(nl_nvptx_tarpath) + echo "$(nl_nvptx_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(m2_tarball)) +$(unpack_stamp)-$(m2_tarball): $(m2_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack gm2 tarball + mkdir -p $(stampdir) + : # rm -rf $(m2_srcdir) + mkdir -p gm2 + tar -C gm2 -x -f $(m2_tarpath) + (cd gm2 && tar cf - gcc libgm2) | (cd src && tar xf -) + rm -rf gm2 + echo "$(m2_tarball) unpacked." > $@ +endif diff --git a/rules2 b/rules2 new file mode 100644 index 0000000..4e1a45c --- /dev/null +++ b/rules2 @@ -0,0 +1,2628 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +.SUFFIXES: + +include debian/rules.defs +include debian/rules.parameters + +dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \ + && echo DH_COMPAT=2) + +# some tools +SHELL = /bin/bash -e # brace expansion in rules file +IR = install -m 644 # Install regular file +IP = install -m 755 # Install program +IS = install -m 755 # Install script + +DWZ = dwz +ifneq (,$(filter $(distrelease),jessie stretch trusty xenial)) + DWZ = : dwz +endif + +# kernel-specific ulimit hack +ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) + ULIMIT_M = if [ -e /proc/meminfo ]; then \ + m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ + /proc/meminfo`; \ + else \ + m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ + fi; \ + echo "Limiting memory for test runs to $${m}kB"; \ + if ulimit -m $$m; then \ + echo " limited to `ulimit -m`kB"; \ + else \ + echo " failed"; \ + fi +else + ULIMIT_M = true +endif + +ifeq ($(locale_data),generate) + SET_LOCPATH = LOCPATH=$(CURDIR)/locales +endif + +SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH +ifeq ($(trunk_build),yes) + ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif + ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif +endif + +# the recipient for the test summaries. Send with: debian/rules mail-summary +S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org + +# build not yet prepared to take variables from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +CC = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-7 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-6 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-5 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))) +CXX = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-7 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-6 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-5 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-g++))) +ifeq ($(with_ada),yes) + GNAT = $(notdir $(firstword $(wildcard \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-9 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-8 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-7 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-6 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-5 \ + /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat /usr/bin/gnatgcc))) + ifeq ($(GNAT),gnatgcc) + CC := $(shell readlink /usr/bin/gnatgcc) + else ifneq (,$(GNAT)) + CC = $(subst gnat,gcc,$(GNAT)) + else ifneq (,$(filter $(distrelease), trusty)) + CC = gcc-4.8 + else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)) + CC = $(DEB_HOST_GNU_TYPE)-gcc + else + CC = gcc + endif + CXX = $(subst gcc,g++,$(CC)) +endif + +ifneq (,$(filter $(build_type),cross-build-native cross-build-cross)) + SET_TARGET_TOOLS = \ + CC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gcc-$(BASE_VERSION) \ + CXX_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-g++-$(BASE_VERSION) \ + GFORTRAN_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gfortran-$(BASE_VERSION) \ + GOC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gccgo-$(BASE_VERSION) \ + GNAT_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gnat-$(BASE_VERSION) \ + GDC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gdc-$(BASE_VERSION) +endif + +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ +else + CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc +endif + +ifneq ($(derivative),Ubuntu) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel)) + STAGE1_CFLAGS = -g -O2 + endif +endif + +ifeq ($(with_ssp_default),yes) + STAGE1_CFLAGS = -g + ifeq (,$(BOOT_CFLAGS)) + BOOT_CFLAGS = -g -O2 + endif + LIBCFLAGS = -g -O2 + LIBCXXFLAGS = -g -O2 -fno-implicit-templates + # Only use -fno-stack-protector when known to the stage1 compiler. + cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \ + -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ + then echo "-fno-stack-protector"; fi;) + $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \ + $(var) += $(cc-fno-stack-protector))) +endif + +# FIXME: passing LDFLAGS for native doesn't do anything +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + CFLAGS = -g -O2 + LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS += -Wl,--no-relax + endif +else + BOOT_LDFLAGS = -Wl,-z,relro + ifeq ($(DEB_TARGET_ARCH),alpha) + BOOT_LDFLAGS += -Wl,--no-relax + endif +endif +LDFLAGS_FOR_TARGET = -Wl,-z,relro +ifeq ($(DEB_TARGET_ARCH),alpha) + LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax +endif + +ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS))) + LDFLAGS += -static +endif + +ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) + CFLAGS = -O0 -g3 -fno-inline + CXXFLAGS = -O0 -g3 -fno-inline + CFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CXXFLAGS_FOR_BUILD = -O0 -g3 -fno-inline + CFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + CXXFLAGS_FOR_TARGET = -O0 -g3 -fno-inline + BOOT_CFLAGS = + BOOT_LDFLAGS = + STAGE1_CFLAGS = + STAGE1_LDFLAGS = +endif + +# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target +# all other flags are passed to the make step. +pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))")) +flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS + +docdir = usr/share/doc + +# no prefix for regular builds, would disable searching for as / ld +binutils_prefix = +ifneq (,$(with_build_sysroot)) + binutils_prefix = $(with_build_sysroot)/usr/bin +endif + +CONFARGS = -v \ + --with-pkgversion='$(distribution)$(if $(with_linaro_branch),/Linaro)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \ + --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' + +CONFARGS += \ + --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ + --prefix=/$(PF) \ + --with-gcc-major-version-only \ + +ifneq (,$(with_build_sysroot)) + CONFARGS += \ + --with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \ + --with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld +endif + +ifeq ($(versioned_packages),yes) + CONFARGS += --program-suffix=-$(BASE_VERSION) +endif +ifneq (,$(filter $(build_type),build-native cross-build-native)) + CONFARGS += --program-prefix=$(cmd_prefix) +endif + +ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) + CONFARGS += \ + --disable-decimal-float \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libhsail-rt \ + --disable-libssp \ + --disable-libquadmath \ + --disable-libsanitizer \ + --disable-threads \ + --disable-bootstrap \ + --libexecdir=/$(libexecdir) \ + --libdir=/$(PF)/$(configured_libdir) \ + $(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \ + $(if $(findstring build-cross, $(build_type)), \ + $(if $(with_sysroot),--with-sysroot=$(with_sysroot))) \ + --enable-linker-build-id + + ifeq ($(with_multiarch_lib),yes) + CONFARGS += \ + --enable-multiarch + endif + + ifeq ($(DEB_STAGE),stage1) + CONFARGS += \ + --disable-shared \ + --with-newlib \ + --without-headers + else + # stage2 + CONFARGS += \ + --enable-shared + endif +else + CONFARGS += \ + --enable-shared \ + --enable-linker-build-id \ + +ifneq ($(single_package),yes) + CONFARGS += \ + --libexecdir=/$(libexecdir) \ + --without-included-gettext \ + --enable-threads=posix \ + --libdir=/$(PF)/$(configured_libdir) +endif + +ifneq ($(with_cpp),yes) + CONFARGS += --disable-cpp +endif + +ifeq ($(with_nls),yes) + CONFARGS += --enable-nls +else + CONFARGS += --disable-nls +endif + +ifeq ($(with_bootstrap),off) + CONFARGS += --disable-bootstrap +else ifneq ($(with_bootstrap),) + CONFARGS += --enable-bootstrap +endif + +ifneq ($(with_sysroot),) + CONFARGS += --with-sysroot=$(with_sysroot) +endif +ifneq ($(with_build_sysroot),) + CONFARGS += --with-build-sysroot=$(with_build_sysroot) +endif + +ifeq ($(force_gnu_locales),yes) + CONFARGS += --enable-clocale=gnu +endif + +ifeq ($(with_cxx)-$(with_cxx_debug),yes-yes) + CONFARGS += --enable-libstdcxx-debug +endif +CONFARGS += --enable-libstdcxx-time=yes +CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi) +ifeq ($(libstdcxx_abi),gcc4-compatible) + CONFARGS += --disable-libstdcxx-dual-abi +endif + +ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-i386 kfreebsd-i386 kfreebsd-amd64)) + CONFARGS += --enable-gnu-unique-object +endif + +ifneq ($(with_ssp),yes) + CONFARGS += --disable-libssp +endif + +ifneq ($(with_gomp),yes) + CONFARGS += --disable-libgomp +endif + +ifneq ($(with_itm),yes) + CONFARGS += --disable-libitm +endif + +ifneq ($(with_atomic),yes) + CONFARGS += --disable-libatomic +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) + ifeq ($(with_vtv),yes) + CONFARGS += --enable-vtable-verify + else + CONFARGS += --disable-vtable-verify + endif +endif + +ifneq ($(with_asan),yes) + CONFARGS += --disable-libsanitizer +endif + +ifneq ($(with_qmath),yes) + CONFARGS += --disable-libquadmath --disable-libquadmath-support +endif + +ifeq ($(with_plugins),yes) + CONFARGS += --enable-plugin +endif + +#ifeq ($(with_gold),yes) +# CONFARGS += --enable-gold --enable-ld=default +#endif + +#CONFARGS += --with-plugin-ld=ld.gold +#CONFARGS += --with-plugin-ld + +# enable pie-by-default on pie_archs +ifeq ($(with_pie),yes) + CONFARGS += --enable-default-pie +endif + +endif # !DEB_STAGE + +CONFARGS += --with-system-zlib + +ifeq ($(with_phobos),yes) + ifeq ($(DEB_CROSS),yes) + CONFARGS += --without-target-system-zlib + else + CONFARGS += --with-target-system-zlib=auto + endif +endif + +ifeq ($(with_d),yes) + ifneq ($(with_phobos),yes) + CONFARGS += --disable-libphobos + endif +endif + +ifeq ($(with_objc)-$(with_objc_gc),yes-yes) + CONFARGS += --enable-objc-gc=auto +endif + +ifeq ($(with_m2),yes) + ifeq ($(DEB_CROSS),yes) + CONFARGS += --enable-libpth-m2 + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu)) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-kfreebsd-gnu s390x-linux-gnu sparc64-linux-gnu)) + ifneq ($(biarch32),yes) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe)) + CONFARGS += --enable-secureplt + ifeq ($(biarch64),yes) + CONFARGS += --disable-softfloat --with-cpu=default32 + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat \ + --enable-targets=powerpc-linux,powerpc64-linux + endif + else + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifneq (,$(filter $(distrelease),jessie trusty utopic vivid wily)) + CONFARGS += --with-cpu=power7 --with-tune=power8 + else + CONFARGS += --with-cpu=power8 + endif + CONFARGS += --enable-targets=powerpcle-linux + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --enable-secureplt + ifeq ($(biarch32),yes) + ifeq ($(multilib),yes) + CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux + endif + else + CONFARGS += --disable-multilib + endif + ifeq ($(derivative),Ubuntu) + CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7 + endif +endif + +# FIXME: only needed for isl-0.13 for now +#CONFARGS += --disable-isl-version-check + +ifneq (,$(findstring cross-build-,$(build_type))) + # FIXME: requires isl headers for the target + #CONFARGS += --without-isl + # FIXME: build currently fails build the precompiled headers + CONFARGS += --disable-libstdcxx-pch +endif + +ifeq ($(with_multiarch_lib),yes) + CONFARGS += --enable-multiarch +endif + +ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU))) + # requires binutils 2.25.90 or newer + ifeq (,$(filter $(distrelease),squeeze precise trusty utopic vivid wily)) + CONFARGS += --enable-fix-cortex-a53-843419 + endif +endif + +ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-float=soft +endif + +ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-fpu=vfp +endif + +ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(multilib),yes) + CONFARGS += --enable-multilib + endif + CONFARGS += --disable-sjlj-exceptions + ifneq (,$(filter %armhf,$(DEB_TARGET_ARCH))) + ifeq ($(distribution),Raspbian) + with_arm_arch = armv6 + with_arm_fpu = vfp + else + with_arm_arch = armv7-a + with_arm_fpu = vfpv3-d16 + endif + else + # armel + ifeq ($(derivative),Debian) + ifneq (,$(filter $(distrelease),etch lenny squeeze wheezy jessie stretch)) + with_arm_arch = armv4t + else + with_arm_arch = armv5te + endif + else ifneq (,$(filter $(distrelease),karmic)) + with_arm_arch = armv6 + with_arm_fpu = vfpv3-d16 + else ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise)) + with_arm_arch = armv7-a + with_arm_fpu = vfpv3-d16 + else + with_arm_arch = armv5t # starting with quantal + CONFARGS += --with-specs='%{mfloat-abi=hard:-march=armv7-a___-mcpu=generic-armv7-a___-mfloat-abi=hard}' + endif + endif + CONFARGS += --with-arch=$(with_arm_arch) + ifneq (,$(with_arm_fpu)) + CONFARGS += --with-fpu=$(with_arm_fpu) + endif + CONFARGS += --with-float=$(float_abi) + ifeq ($(with_arm_thumb),yes) + CONFARGS += --with-mode=thumb + endif +endif + +ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k)) + CONFARGS += --disable-werror +endif +# FIXME: correct fix-warnings.dpatch +ifeq ($(derivative),Ubuntu) + CONFARGS += --disable-werror +else ifeq ($(derivative),Debian) + CONFARGS += --disable-werror +endif + +ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-cpu-32=ultrasparc + else + CONFARGS += --with-cpu=ultrasparc + endif +endif + +ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu-32=ultrasparc + ifeq ($(biarch32),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE))) + ifneq ($(with_internal_libunwind),yes) + CONFARGS += --with-system-libunwind + endif +endif + +ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu +endif + +ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(filter tilegx,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --disable-multilib +endif + +ifneq (,$(findstring riscv64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-multilib + CONFARGS += --with-arch=rv64imafdc --with-abi=lp64d +endif + +ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(derivative),Ubuntu) + ifneq (,$(filter $(distrelease),xenial bionic disco eoan)) + CONFARGS += --with-arch=zEC12 + else + CONFARGS += --with-arch=z13 --with-mtune=z15 + endif + else # Debian + CONFARGS += --with-arch=z196 + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 ppc64el s390 s390x sparc sparc64)) + CONFARGS += --with-long-double-128 + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 kfreebsd-i386 kfreebsd-amd64)) + ifneq (,$(filter $(derivative),Ubuntu)) + ifneq (,$(filter $(distrelease),dapper hardy)) + CONFARGS += --with-arch-32=i486 + else ifneq (,$(filter $(distrelease),jaunty karmic lucid)) + CONFARGS += --with-arch-32=i586 + else + CONFARGS += --with-arch-32=i686 + endif + else # Debian + ifneq (,$(filter $(distrelease),etch lenny)) + CONFARGS += --with-arch-32=i486 + else ifneq (,$(filter $(distrelease),squeeze wheezy jessie)) + CONFARGS += --with-arch-32=i586 + else + CONFARGS += --with-arch-32=i686 + endif + endif +endif + +ifeq ($(DEB_TARGET_ARCH),amd64) + CONFARGS += --with-abi=m64 +endif +ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-abi=mx32 +endif +ifeq ($(multilib),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) + CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32) + else ifeq ($(DEB_TARGET_ARCH),x32) + CONFARGS += --with-multilib-list=mx32,m64,m32 + endif + CONFARGS += --enable-multilib +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386)) + CONFARGS += --with-arch=i586 +endif + +ifeq ($(DEB_TARGET_ARCH),lpia) + CONFARGS += --with-arch=pentium-m --with-tune=i586 +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-i386 kfreebsd-i386 kfreebsd-amd64)) + CONFARGS += --with-tune=generic +endif + +ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + CONFARGS += --with-madd4=no + CONFARGS += --with-lxc1-sxc1=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + CONFARGS += --with-madd4=no + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r2 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + endif + endif +endif + +#FIXME: howto for mipsn32? +ifneq (,$(findstring mipsisa64r6el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + ifeq ($(multilib),yes) + ifeq ($(biarch64)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-mips-plt + CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 + ifeq ($(multilib),yes) + ifeq ($(biarchn32)-$(biarch32),yes-yes) + CONFARGS += --enable-targets=all + CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 + endif + endif +endif + +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) + ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64))) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(multilib),yes) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif + endif +endif + +ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-libstdcxx-pch +endif + +ifneq (,$(offload_targets)) + CONFARGS += \ + --enable-offload-targets=$(subst $(SPACE),$(COMMA),$(offload_targets)) + ifeq ($(with_offload_nvptx),yes) + CONFARGS += --without-cuda-driver + endif +endif + +ifneq (,$(findstring gdc, $(PKGSOURCE))) + CONFARGS += --disable-libquadmath +endif + +ifeq ($(trunk_build),yes) + ifeq ($(findstring --disable-werror, $(CONFARGS)),) + CONFARGS += --disable-werror + endif + CONFARGS += --enable-checking=yes +else + CONFARGS += --enable-checking=release +endif + +CONFARGS += \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(TARGET_ALIAS) + +ifeq ($(DEB_CROSS),yes) + CONFARGS += \ + --program-prefix=$(TARGET_ALIAS)- \ + --includedir=/$(PFL)/include +endif + +ifeq ($(with_bootstrap),off) + bootstrap_target = +else ifeq ($(with_bootstrap),profiled) + bootstrap_target = profiledbootstrap + bootstrap_target = profiledbootstrap-lean +else ifeq ($(with_bootstrap),) + ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gnat-$(BASE_VERSION) gcc-snapshot)) + bootstrap_target = bootstrap + endif + ifneq (,$(DEB_STAGE)) + bootstrap_target = bootstrap + endif +endif + +ifeq ($(with_lto_build),yes) + CONFARGS += \ + --with-build-config=bootstrap-lto-lean \ + --enable-link-mutex +endif + +DEJAGNU_TIMEOUT=300 +# Increase the timeout for one testrun on slow architectures +ifeq ($(derivative),Debian) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64)) + DEJAGNU_TIMEOUT=240 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel armhf hppa m68k sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + DEJAGNU_TIMEOUT=900 + endif +else ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64)) + DEJAGNU_TIMEOUT=240 + else ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf hppa ia64 sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif +endif + +DEJAGNU_RUNS = +ifneq ($(trunk_build),yes) +ifeq ($(with_ssp),yes) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),sh4 mips)) + DEJAGNU_RUNS = + else ifneq (,$(filter $(DEB_TARGET_ARCH),armel)) + DEJAGNU_RUNS = + else + ifneq ($(single_package),yes) + DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) + endif + endif + ifeq ($(derivative),Ubuntu) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),ia64 sparc)) + DEJAGNU_RUNS = + endif + # FIXME Ubuntu armel buildd hangs + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + DEJAGNU_RUNS = + endif + endif +endif +endif + +ifeq ($(derivative),Ubuntu) + ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) + ifeq ($(with_arm_thumb),yes) + #DEJAGNU_RUNS += -marm + else + DEJAGNU_RUNS += -mthumb + endif + endif +endif + +# no b-d on g++-multilib, this is run by the built compiler +abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \ + $(shell cat build/runcheck$(1).out), \ + $(shell CC="$(builddir)/gcc/xg++ -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh))) +ifeq ($(biarch32),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32)) +endif +ifeq ($(biarch64),yes) + DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64)) +endif +ifeq ($(biarchn32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32) +endif +ifeq ($(biarchx32),yes) + DEJAGNU_RUNS += $(call abi_run_check,-mx32) +endif + +# gdc is not multilib'd +ifneq (,$(findstring gdc, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +# neither is gnat +ifneq (,$(findstring gnat, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +ifneq (,$(strip $(value DEJAGNU_RUNS))) + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" +endif + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases. +ifneq (,$(PF)) + # use value set in the environment +else ifeq ($(trunk_build),yes) + PF = usr/lib/gcc-snapshot +else ifeq ($(PKGSOURCE),gcc-linaro) + PF = usr/lib/gcc-linaro +else + PF = usr +endif + +# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + PFL = $(PF) +endif + +# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + RPF = +endif + +ifeq ($(with_multiarch_lib),yes) + ifeq ($(DEB_CROSS),yes) + libdir = lib + else + libdir = lib/$(DEB_TARGET_MULTIARCH) + endif +else + libdir = lib +endif +configured_libdir = lib + +hppa64libexecdir= $(PF)/lib + +# /usr/libexec doesn't follow the FHS +ifeq ($(single_package),yes) + libdir = lib + libexecdir = $(PF)/libexec + versiondir = $(BASE_VERSION) +else + libexecdir = $(PF)/$(configured_libdir) + versiondir = $(BASE_VERSION) +endif +buildlibdir = $(builddir)/$(TARGET_ALIAS) + +# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc +gcc_subdir_name = gcc +ifneq ($(single_package),yes) + ifeq ($(DEB_CROSS),yes) + gcc_subdir_name = gcc-cross + endif +endif + +gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) +gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) + +lib32loc = lib32 +ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) +lib32loc = libo32 +endif +lib32 = $(PF)/$(lib32loc) +lib64 = lib64 +libn32 = lib32 +libx32 = libx32 + +p_l= $(1)$(cross_lib_arch) +p_d= $(1)-dbg$(cross_lib_arch) +d_l= debian/$(p_l) +d_d= debian/$(p_d) + +ifeq ($(DEB_CROSS),yes) + usr_lib = $(PFL)/lib +else + usr_lib = $(PFL)/$(libdir) +endif +usr_lib32 = $(PFL)/$(lib32loc) +usr_libn32 = $(PFL)/lib32 +usr_libx32 = $(PFL)/libx32 +usr_lib64 = $(PFL)/lib64 +# FIXME: Move to the new location for native builds too +ifeq ($(DEB_CROSS),yes) + usr_libhf = $(PFL)/libhf + usr_libsf = $(PFL)/libsf +else + usr_libhf = $(PFL)/lib/arm-linux-gnueabihf + usr_libsf = $(PFL)/lib/arm-linux-gnueabi +endif + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + PFL = $(PF) + RPF = + libdir = lib/$(DEB_TARGET_MULTIARCH) + usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH) +endif + +gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) +gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) +gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir) +gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) +gcc_lib_dirhf = $(gcc_lib_dir)/$(biarchhfsubdir) +gcc_lib_dirsf = $(gcc_lib_dir)/$(biarchsfsubdir) + +libgcc_dir = $(RPF)/$(libdir) +# yes, really; lib32gcc_s ends up in usr +libgcc_dir32 = $(PFL)/$(lib32loc) +libgcc_dirn32 = $(RPF)/lib32 +# libx32gcc_s also ends up in usr +libgcc_dirx32 = $(PFL)/libx32 +libgcc_dir64 = $(RPF)/lib64 +# FIXME: Move to the new location for native builds too +ifeq ($(DEB_CROSS),yes) + libgcc_dirhf = $(RPF)/libhf + libgcc_dirsf = $(RPF)/libsf +else + libgcc_dirhf = $(RPF)/lib/arm-linux-gnueabihf + libgcc_dirsf = $(RPF)/lib/arm-linux-gnueabi +endif + +# install_gcc_lib(lib,soname,flavour,package) +define install_gcc_lib + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so + +endef + +checkdirs = $(builddir) +ifeq ($(with_separate_go),yes) + ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) + checkdirs = $(buildlibdir)/libgo + endif +endif +ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + checkdirs = $(builddir)/gcc + endif +endif + +# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff +MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH) +export MULTIARCH_DIRNAME + +default: build + +configure: $(configure_dependencies) + +$(configure_dummy_stamp): + touch $(configure_dummy_stamp) + +$(configure_stamp): + dh_testdir + : # give information about the build process + @echo "------------------------ Build process variables ------------------------" + @echo "Memory on this machine:" + @egrep '^(Mem|Swap)' /proc/meminfo || true + @echo "Number of parallel processes used for the build: $(USE_CPUS)" + @echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS" + @echo "Package source: $(PKGSOURCE)" + @echo "GCC version: $(GCC_VERSION)" + @echo "Base Debian version: $(BASE_VERSION)" + @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" +ifeq ($(DEB_CROSS),yes) + @echo "Building cross compiler for $(DEB_TARGET_ARCH)" +endif + @echo "Using shell $(SHELL)" + @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" + @echo "CPPFLAGS: $(CPPFLAGS)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" + @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" + @echo "Install prefix: /$(PF)" +ifeq ($(biarchn32)-$(biarch64),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" +else ifeq ($(biarchn32)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)" +else ifeq ($(biarch64)-$(biarch32),yes-yes) + @echo "Will build the triarch compilers (x32/64/32, defaulting to x32)" +else ifeq ($(biarch64)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)" +else ifeq ($(biarch32)-$(biarchx32),yes-yes) + @echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)" +else + ifeq ($(biarch64),yes) + @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" + else + ifeq ($(biarch32),yes) + @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" + else + @echo "Will not build the biarch compilers" + endif + endif +endif + +ifeq ($(with_cxx),yes) + @echo "Will build the C++ compiler" +else + @echo "Will not build the C++ compiler: $(with_cxx)" +endif +ifeq ($(with_objc),yes) + @echo "Will build the ObjC compiler." + ifeq ($(with_objc_gc),yes) + @echo "Will build the extra ObjC runtime for garbage collection." + else + @echo "Will not build the extra ObjC runtime for garbage collection." + endif +else + @echo "Will not build the ObjC compiler: $(with_objc)" +endif +ifeq ($(with_objcxx),yes) + @echo "Will build the Obj-C++ compiler" +else + @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" +endif +ifeq ($(with_fortran),yes) + @echo "Will build the Fortran 95 compiler." +else + @echo "Will not build the Fortran 95 compiler: $(with_fortran)" +endif +ifeq ($(with_ada),yes) + @echo "Will build the Ada compiler." + ifeq ($(with_libgnat),yes) + @echo "Will build the shared Ada libraries." + else + @echo "Will not build the shared Ada libraries." + endif +else + @echo "Will not build the Ada compiler: $(with_ada)" +endif +ifeq ($(with_go),yes) + @echo "Will build the Go compiler." +else + @echo "Will not build the Go compiler: $(with_go)" +endif +ifeq ($(with_d),yes) + @echo "Will build the D compiler" + ifeq ($(with_phobos),yes) + @echo "Will build the phobos D runtime library." + else + @echo "Will not build the phobos D runtime library: $(with_phobos)" + endif +else + @echo "Will not build the D compiler: $(with_d)" +endif +ifeq ($(with_m2),yes) + @echo "Will build the Modula-2 compiler." +else + @echo "Will not build the Modula-2 compiler: $(with_m2)" +endif +ifeq ($(with_ssp),yes) + @echo "Will build with SSP support." +else + @echo "Will build without SSP support: $(with_ssp)" +endif +ifeq ($(with_check),yes) + @echo "Will run the testsuite." +else + @echo "Will not run the testsuite: $(with_check)" +endif +ifeq ($(with_nls),yes) + @echo "Will enable national language support." +else + @echo "Will disable national language support: $(with_nls)" +endif + @echo "-----------------------------------------------------------------------------" + @echo "" +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the GCC"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + rm -f $(configure_stamp) $(build_stamp) + cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH) + + rm -rf $(builddir) + mkdir $(builddir) + + : # some tools like gettext are built with a newer libstdc++ + mkdir -p bin + for i in msgfmt; do \ + install -m755 debian/bin-wrapper.in bin/$$i; \ + done + + : # configure + cd $(builddir) \ + && $(SET_PATH) \ + $(call pass_vars, CC CXX $(flags_to_pass) \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + $(SET_SHELL) $(SET_TARGET_TOOLS) \ + ../src/configure $(subst ___, ,$(CONFARGS)) + + : # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET) + if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \ + mkdir -p $(builddir)/sys-include; \ + ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \ + fi + + touch $(configure_stamp) + +build: $(sort $(build_arch_dependencies) $(build_indep_dependencies)) +build-arch: $(build_arch_dependencies) +build-indep: $(build_indep_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data)-$(with_cxx),generate-yes) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + -USE_CPUS=$(USE_CPUS) sh debian/locale-gen +endif + touch $(build_locale_stamp) + + +$(build_stamp): $(configure_stamp) $(build_locale_stamp) + dh_testdir + rm -f bootstrap-protocol + @echo TTTTT $$(date -R) +ifeq ($(build_type),build-native) + : # build native compiler + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(bootstrap_target) \ + $(call pass_vars, CC $(flags_to_pass) \ + STAGE1_CFLAGS STAGE1_LDFLAGS \ + BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol +else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross)) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol +endif + @echo TTTTT $$(date -R) + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + + for h in $$(find $(builddir) -name omp.h); do \ + echo "=================== OMP_H HEADER $$h ====================== "; \ + cat $$h; \ + done + + if [ -f $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + /bin/sh $(srcdir)/contrib/warn_summary bootstrap-protocol \ + > bootstrap-summary; \ + fi + +ifeq ($(DEB_CHECK_ALI_UPDATE)$(with_libgnat)$(build_type),1yesbuild-native) + sh debian/ada/check_ali_update.sh /$(gcc_lib_dir)/adalib build/gcc/ada/rts +endif + + touch $(build_stamp) + +ifneq ($(build_type),build-native) + BUILT_CC = $(CC) + BUILT_CXX = $(CXX) +else + BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ + BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \ + -B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \ + -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \ + -I$(srcdir)/libstdc++-v3/libsupc++ \ + -L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ + -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs +endif + +CONFARGS_JIT := \ + $(filter-out --enable-languages=% \ + --enable-libstdcxx-debug %bootstrap,\ + $(CONFARGS)) \ + --enable-languages=c++,jit \ + --enable-host-shared \ + --disable-bootstrap + +$(configure_jit_stamp): $(build_stamp) + dh_testdir + rm -f $(configure_jit_stamp) $(build_jit_stamp) + rm -rf $(builddir_jit) + mkdir $(builddir_jit) + + : # configure jit + cd $(builddir_jit) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src/configure $(subst ___, ,$(CONFARGS_JIT)) + touch $(configure_jit_stamp) + +$(build_jit_stamp): $(configure_jit_stamp) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_jit) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee jit-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_jit) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + +ifeq ($(with_check),yes) + # FIXME: #782444 + ifeq (,$(filter $(DEB_TARGET_ARCH), kfreebsd-i386 kfreebsd-amd64)) + -$(MAKE) -C $(builddir_jit)/gcc check-jit \ + RUNTESTFLAGS="-v -v" + endif +endif + + touch $(build_jit_stamp) + +CONFARGS_NVPTX := \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --with-gcc-major-version-only \ + --disable-bootstrap \ + --disable-sjlj-exceptions \ + --enable-newlib-io-long-long \ + --target nvptx-none \ + --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ + --enable-languages=c,c++,fortran,lto \ + --enable-checking=release \ + --with-system-zlib \ + --without-isl + +# --with-build-time-tools=/$(PF)/nvptx-none/bin + +CONFARGS_NVPTX += --program-prefix=nvptx-none- +ifeq ($(versioned_packages),yes) + CONFARGS_NVPTX += --program-suffix=-$(BASE_VERSION) +endif + +# FIXME: must not be run in parrallel with jit and hppa64 builds ... +$(configure_nvptx_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + dh_testdir + rm -f $(configure_nvptx_stamp) $(build_nvptx_stamp) + rm -rf $(builddir_nvptx) + mkdir $(builddir_nvptx) + ln -sf ../$(nl_nvptx_srcdir)/newlib $(srcdir)/newlib + + : # configure nvptx offload + cd $(builddir_nvptx) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + ../src/configure $(subst ___, ,$(CONFARGS_NVPTX)) + rm -f $(srcdir)/newlib + touch $(configure_nvptx_stamp) + +$(build_nvptx_stamp): $(configure_nvptx_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) + ln -sf ../$(nl_nvptx_srcdir)/newlib $(srcdir)/newlib + + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_nvptx) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee nvptx-protocol + + s=`cat status`; rm -f status; \ + if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ + for log in $$(find $(builddir_nvptx) -name config.log); do \ + case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ + echo LOGFILE START $$log; \ + cat $$log; \ + echo LOGFILE END $$log; \ + done; \ + fi; \ + test $$s -eq 0 + +ifeq ($(with_check),yes) +# -$(MAKE) -C $(builddir_nvptx)/gcc check-jit \ +# RUNTESTFLAGS="-v -v" +endif + rm -f $(srcdir)/newlib + touch $(build_nvptx_stamp) + +ifeq ($(versioned_packages),yes) + hppa64_configure_flags += --program-suffix=-$(BASE_VERSION) +endif + +$(configure_hppa64_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + dh_testdir + rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp) + rm -rf $(builddir_hppa64) + mkdir $(builddir_hppa64) + : # configure hppa64 + cd $(builddir_hppa64) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(BUILT_CC)" \ + CXX="$(BUILT_CXX)" \ + $(call pass_vars, $(flags_to_pass)) \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(hppa64libexecdir) \ + --with-gcc-major-version-only \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libitm \ + --disable-libssp \ + --disable-libquadmath \ + --enable-plugin \ + --with-system-zlib \ + --with-as=/usr/bin/hppa64-linux-gnu-as \ + --with-ld=/usr/bin/hppa64-linux-gnu-ld \ + --includedir=/usr/hppa64-linux-gnu/include \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=hppa64-linux-gnu + touch $(configure_hppa64_stamp) + +$(build_hppa64_stamp): $(configure_hppa64_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + if [ -f $(srcdir)/gcc/distro-defaults.h ]; then \ + if [ ! -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv $(srcdir)/gcc/distro-defaults.h $(srcdir)/gcc/distro-defaults.h.saved; \ + fi; \ + echo '/* Empty distro-defaults for hppa64 cross build */' \ + > $(srcdir)/gcc/distro-defaults.h; \ + fi + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, \ + CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) + if [ -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ + mv -f $(srcdir)/gcc/distro-defaults.h.saved $(srcdir)/gcc/distro-defaults.h; \ + fi + touch $(build_hppa64_stamp) + +$(configure_neon_stamp): $(build_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + dh_testdir + rm -f $(configure_neon_stamp) $(build_neon_stamp) + rm -rf $(builddir_neon) + mkdir $(builddir_neon) + : # configure neon + cd $(builddir_neon) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(call pass_vars, $(flags_to_pass)) \ + CC="$(builddir)/gcc/xg++ -B$(builddir)/gcc/" \ + ../src/configure \ + --disable-bootstrap \ + --enable-languages=c,c++,objc,fortran \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --program-suffix=-$(BASE_VERSION) \ + --disable-nls \ + --enable-plugin \ + --with-arch=armv7-a --with-tune=cortex-a8 \ + --with-float=$(float_abi) --with-fpu=neon \ + --host=arm-linux-gnueabi \ + --build=arm-linux-gnueabi \ + --target=arm-linux-gnueabi + touch $(configure_neon_stamp) + +$(build_neon_stamp): $(configure_neon_stamp) \ + $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir_neon) \ + $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ + CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) + touch $(build_neon_stamp) + + +ifeq ($(with_ada),yes) + MANUALS = \ + $(srcdir)/gcc/ada/gnat_ugn.texi \ + $(srcdir)/gcc/ada/gnat_rm.texi +endif +MANUALS += \ + $(srcdir)/gcc/doc/gccint.texi \ + $(srcdir)/gcc/doc/gcc.texi \ + $(srcdir)/gcc/doc/cpp.texi \ + $(srcdir)/gcc/doc/cppinternals.texi +ifeq ($(with_fortran),yes) + MANUALS += $(srcdir)/gcc/fortran/gfortran.texi +endif +ifeq ($(with_ada),yes) + MANUALS += $(srcdir)/gcc/ada/gnat-style.texi +endif +ifeq ($(with_gomp),yes) + MANUALS += $(srcdir)/libgomp/libgomp.texi +endif +ifeq ($(with_itm),yes) + MANUALS += $(srcdir)/libitm/libitm.texi +endif +ifeq ($(with_qmath),yes) + MANUALS += $(srcdir)/libquadmath/libquadmath.texi +endif +ifeq ($(with_go),yes) + MANUALS += $(srcdir)/gcc/go/gccgo.texi +endif + +html-docs: $(build_html_stamp) +#$(build_html_stamp): $(stampdir)/05-build-html-split +$(build_html_stamp): $(stampdir)/05-build-html-nosplit + +html-makeinfo-split: $(stampdir)/05-build-html-split +$(stampdir)/05-build-html-split: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + outname=`basename {} .texi`; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(buildlibdir)/libquadmath \ + -o $${outname} \ + {}' + touch $@ + +html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit +$(stampdir)/05-build-html-nosplit: $(build_stamp) + mkdir -p html + rm -f html/*.html + cd $(builddir)/gcc; \ + echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ + sh -c 'outname=`basename {} .texi`.html; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections --no-split \ + -I $(srcdir)/gcc/doc/include -I `dirname {}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -I $(buildlibdir)/libquadmath \ + -o $(CURDIR)/html/$${outname} \ + {}' + touch $@ + +# start the script only on architectures known to have slow autobuilders ... +logwatch_archs := alpha arm m68k mips mipsel mips64el riscv64 sparc +ifeq ($(DEB_HOST_GNU_CPU), $(findstring $(DEB_HOST_GNU_CPU),$(logwatch_archs))) + start_logwatch = yes +endif +ifeq ($(DEB_HOST_GNU_SYSTEM),gnu) + start_logwatch = yes +endif + +check: $(check_stamp) +$(check_stamp): $(filter $(build_stamp) $(build_jit_stamp) $(build_hppa64_stamp), $(build_dependencies)) + rm -f test-protocol + rm -f $(builddir)/runcheck* + + -chmod 755 $(srcdir)/contrib/test_summary + + : # needed for the plugin tests to succeed + ln -sf gcc $(builddir)/prev-gcc + ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) + +ifneq ($(with_common_libs),yes) + ifeq ($(with_cxx),yes) + : # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib + + sed 's/-L[^ ]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \ + > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed + -$(ULIMIT_M); \ + set +e; \ + for d in $(buildlibdir)/libstdc++-v3/testsuite; do \ + echo "Running testsuite in $$d ..."; \ + TEST_INSTALLED=1 \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_GCC_NO_O3=1 \ + $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol2 + + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > raw-test-summary + -( \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \ + ) > libstdc++-test-summary + echo 'BEGIN installed libstdc++-v3 test-summary' + cat libstdc++-test-summary + echo 'END installed libstdc++-v3 test-summary' + find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \ + | xargs -r rm -f + endif +endif + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \ + -m '\ntestsuite still running ...\n' \ + test-protocol \ + $(builddir)/gcc/testsuite/gcc/gcc.log \ + $(builddir)/gcc/testsuite/g++/g++.log \ + $(builddir)/gcc/testsuite/gfortran/gfortran.log \ + $(builddir)/gcc/testsuite/objc/objc.log \ + $(builddir)/gcc/testsuite/obj-c++/obj-c++.log \ + $(builddir)/gcc/testsuite/gnat/gnat.log \ + $(builddir)/gcc/testsuite/ada/acats/acats.log \ + $(builddir)/gcc/testsuite/gfortran/gfortran.log \ + $(builddir)/gcc/p/test/test_log \ + $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.log \ + $(buildlibdir)/libgomp/testsuite/libgomp.log \ + $(buildlibdir)/libffi/testsuite/libffi.log \ + & +endif + +ifeq ($(with_ada),yes) + chmod +x debian/acats-killer.sh + -debian/acats-killer.sh -p $(builddir)/acats-killer.pid \ + $(builddir)/gcc/testsuite/ada/acats/acats.log \ + $(builddir)/gcc/testsuite/g++.log \ + & +endif + + -$(ULIMIT_M); \ + set +e; \ + for d in $(checkdirs); do \ + echo "Running testsuite in $$d ..."; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + DEB_GCC_NO_O3=1 \ + $(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + -if [ -f $(builddir)/logwatch.pid ]; then \ + kill -1 `cat $(builddir)/logwatch.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/logwatch.pid`; \ + rm -f $(builddir)/logwatch.pid; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + +ifeq ($(with_ada),yes) + -if [ -f $(builddir)/acats-killer.pid ]; then \ + kill -1 `cat $(builddir)/acats-killer.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/acats-killer.pid`; \ + rm -f $(builddir)/acats-killer.pid; \ + fi +endif + + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-summary; \ + ( \ + cd $(builddir); \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + echo 'Bootstrap comparison failure:' >> ts-include; \ + cat $(builddir)/gcc/.bad_compare >> ts-include; \ + echo '' >> ts-include; \ + echo '' >> ts-include; \ + fi; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + cat ../$(patch_stamp) >> ts-include; \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-summary; \ + if [ -n "$(testsuite_tarball)" ]; then \ + echo "Test suite used: $(testsuite_srcdir)" > test-summary; \ + echo " Do not interpret the results on its own" >> test-summary; \ + echo " but compare them with the results from" >> test-summary; \ + echo " the gcc-snapshot package." >> test-summary; \ + fi; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \ + >> test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \ + if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \ + echo '' >> test-summary; \ + cat bootstrap-summary >> test-summary; \ + fi; \ + echo 'BEGIN test-summary'; \ + cat test-summary; \ + echo 'END test-summary'; \ + fi +ifeq ($(with_d),yes) + : # the D test failures for the non-default multilibs are known, ignore them + egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp + mv -f test-summary.tmp test-summary +endif + + touch $(check_stamp) + +$(check_inst_stamp): $(check_stamp) + rm -f test-inst-protocol + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \ + -m '\ntestsuite (3.3) still running ...\n' \ + test-inst-protocol \ + check-inst/{gcc,g++,g77,objc}.log \ + & +endif + + rm -rf check-inst + mkdir check-inst + + echo "Running testsuite ..." + -$(ULIMIT_M) ; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + cd check-inst && $(srcdir)/contrib/test_installed \ + --with-gcc=gcc-3.3 --with-g++=g++-3.3 --with-g77=g77-3.3 \ + 2>&1 | tee test-inst-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + if [ -f $(builddir)/logwatch-inst.pid ]; then \ + kill -1 `cat $(builddir)/logwatch-inst.pid`; \ + else \ + true; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + + -chmod 755 $(srcdir)/contrib/test_summary + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-inst-summary; \ + ( \ + cd check-inst; \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-inst-summary; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \ + >> test-inst-summary; \ + awk '/^cat/, /^EOF/' raw-test-inst-summary \ + | grep -v EOF >> test-inst-summary; \ + echo 'BEGIN test-installed-summary'; \ + cat test-inst-summary; \ + echo 'END test-installed-summary'; \ + fi + + chmod 755 debian/reduce-test-diff.awk + if diff -u test-inst-summary test-summary \ + | debian/reduce-test-diff.awk > diff-summary; \ + then \ + mv -f diff-summary testsuite-comparision; \ + else \ + ( \ + echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \ + echo ''; \ + cat diff-summary; \ + ) > testsuite-comparision; \ + rm -f diff-summary; \ + fi + touch $(check_inst_stamp) + +clean: debian/control + dh_testdir + rm -f pxxx status + rm -f *-summary *-protocol testsuite-comparision summary-diff + rm -f $(srcdir)/gcc/po/*.gmo + rm -f debian/lib{gcc,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} + fs=`echo debian/*BV* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || continue; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + rm -f $$f2; \ + done + rm -f debian/lib*gcc1.symbols + rm -f debian/lib*{atomic$(ATOMIC_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),quadmath$(QUADMATH_SONAME),hsail-rt$(HSAIL_SONAME)}.symbols + find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f + rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1 + rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local + rm -f debian/*.debhelper + -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean + rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH) + rm -f debian/arch_binaries* debian/indep_binaries* + rm -rf bin locales share + rm -rf check-inst + dh_clean +ifneq (,$(filter $(build_type), build-cross cross-build-cross)) + $(cross_clean) dh_clean +endif + +# ----------------------------------------------------------------------------- +# some abbrevations for the package names and directories; +# p_XXX is the package name, d_XXX is the package directory +# these macros are only used in the binary-* targets. + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) +endif + +# if native or rtlibs build +ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) + p_base = gcc$(pkg_ver)-base + p_lbase = $(p_base) + p_xbase = gcc$(pkg_ver)-base + p_gcc = gcc$(pkg_ver) + p_cpp = cpp$(pkg_ver) + p_cppd = cpp$(pkg_ver)-doc + p_cxx = g++$(pkg_ver) + p_doc = gcc$(pkg_ver)-doc +else + # only triggered if DEB_CROSS set + p_base = gcc$(pkg_ver)$(cross_bin_arch)-base + p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD) + p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base + p_cpp = cpp$(pkg_ver)$(cross_bin_arch) + p_gcc = gcc$(pkg_ver)$(cross_bin_arch) + p_cxx = g++$(pkg_ver)$(cross_bin_arch) +endif +p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu + +# needed for shlibs.common* generation +ifeq (,$(p_lgcc)) + p_lgcc = libgcc$(GCC_SONAME)$(cross_lib_arch) +endif +ifeq (,$(p_lib)) + p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +endif + +d = debian/tmp +d_base = debian/$(p_base) +d_xbase = debian/$(p_xbase) +d_gcc = debian/$(p_gcc) +d_cpp = debian/$(p_cpp) +d_cppd = debian/$(p_cppd) +d_cxx = debian/$(p_cxx) +d_doc = debian/$(p_doc) +d_lgcc = debian/$(p_lgcc) +d_hppa64= debian/$(p_hppa64) + +d_neon = debian/tmp-neon + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +ifeq ($(DEB_CROSS),yes) + lib_binaries := indep_binaries +else + lib_binaries := arch_binaries +endif + +# --------------------------------------------------------------------------- + +ifeq ($(single_package),yes) + include debian/rules.d/binary-snapshot.mk +else + +ifneq ($(with_base_only),yes) +ifneq ($(DEB_CROSS),yes) +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +endif +endif +endif + +ifneq ($(BACKPORT),true) + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifneq ($(with_base_only),yes) + +# always include to get some definitions +include debian/rules.d/binary-libgcc.mk + +ifeq ($(with_libqmath),yes) + include debian/rules.d/binary-libquadmath.mk +endif + +ifeq ($(with_libgmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifeq ($(with_libitm),yes) + include debian/rules.d/binary-libitm.mk +endif + +ifeq ($(with_libatomic),yes) + include debian/rules.d/binary-libatomic.mk +endif + +ifeq ($(with_libbacktrace),yes) + include debian/rules.d/binary-libbacktrace.mk +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp.mk +endif + +ifeq ($(with_libssp),yes) + include debian/rules.d/binary-libssp.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc.mk + include debian/rules.d/binary-libobjc.mk +endif + +ifeq ($(with_go),yes) + include debian/rules.d/binary-go.mk +endif + +ifeq ($(with_brig),yes) + include debian/rules.d/binary-brig.mk + include debian/rules.d/binary-libhsail.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx.mk +endif + +ifeq ($(with_libasan),yes) + include debian/rules.d/binary-libasan.mk +endif + +ifeq ($(with_liblsan),yes) + include debian/rules.d/binary-liblsan.mk +endif + +ifeq ($(with_libtsan),yes) + include debian/rules.d/binary-libtsan.mk +endif + +ifeq ($(with_libubsan),yes) + include debian/rules.d/binary-libubsan.mk +endif + +ifeq ($(with_libvtv),yes) + include debian/rules.d/binary-libvtv.mk +endif + +ifeq ($(with_f77),yes) + include debian/rules.d/binary-f77.mk +endif + +ifeq ($(with_fortran),yes) + include debian/rules.d/binary-fortran.mk +endif + +ifeq ($(with_ada),yes) + include debian/rules.d/binary-ada.mk +endif + +ifeq ($(with_d),yes) + include debian/rules.d/binary-d.mk +endif + +ifeq ($(with_m2),yes) + include debian/rules.d/binary-m2.mk +endif + +ifeq ($(with_libcc1),yes) + include debian/rules.d/binary-libcc1.mk +endif + +ifeq ($(with_jit),yes) + include debian/rules.d/binary-libgccjit.mk +endif + +ifeq ($(with_offload_nvptx),yes) + include debian/rules.d/binary-nvptx.mk +endif + +ifeq ($(with_offload_hsa),yes) + include debian/rules.d/binary-hsa.mk +endif + +ifeq ($(with_libnof),yes) + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + include debian/rules.d/binary-nof.mk + endif +endif + +ifeq ($(with_softfloat),yes) + include debian/rules.d/binary-softfloat.mk +endif + +# gcc must be moved/built after g77 and g++ +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-gcc.mk +endif + +ifeq ($(with_hppa64),yes) + include debian/rules.d/binary-hppa64.mk +endif + +ifeq ($(with_neon),yes) + include debian/rules.d/binary-neon.mk +endif + +endif # with_base_only +endif # BACKPORT +endif # ($(single_package),yes) + +# ---------------------------------------------------------------------- +install: $(install_dependencies) + +$(install_dummy_stamp): $(build_dummy_stamp) + touch $(install_dummy_stamp) + +$(install_snap_stamp): $(build_dependencies) + dh_testdir + dh_testroot + dh_prep + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # Install hppa64 + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + install + + ls -l $(d)/$(PF)/bin + if [ ! -x $(d)/$(PF)/bin/hppa64-linux-gnu-gcc ]; then \ + mv $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-9* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-9*; \ + fi + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/hppa64-linux-gnu-gcc-$$i.1; \ + done + + : # remove files not needed from the hppa64 build + rm -rf $(d)/$(PF)/share/info + rm -rf $(d)/$(PF)/share/man + rm -f $(d)/$(PF)/$(libdir)/libiberty.a + rm -f $(d)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc} + + rm -rf $(d)/$(PF)/hppa64-linux-gnu/include + rm -rf $(d)/$(PF)/hppa64-linux-gnu/lib + set -e; \ + cd $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(versiondir)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done +endif + + : # Work around PR lto/41569 + ln -sf gcc $(builddir)/prev-gcc + ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ + done + + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-9* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-9*; \ + fi + set -e; \ + cd $(d)/$(gcc_lib_dir)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done + +ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + ifeq ($(with_ada),yes) + sed -i s~$(PF)/$(configured_libdir)~$(PF)/$(libdir)~ $(d)/$(PF)/share/gpr/gnatvsn.gpr + endif +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + +$(install_stamp): $(build_stamp) + dh_testdir + dh_testroot + dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64)) + + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ + fi + rm -f $(binary_stamp)* + if [ -f saved-stamp-hppa64 ]; then \ + mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/$(lib32loc)/debug +endif +ifeq ($(biarch64),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif +ifeq ($(biarchn32),yes) + mkdir -p $(d)/$(PF)/$(libn32)/debug +endif +ifeq ($(biarchx32),yes) + mkdir -p $(d)/$(PF)/libx32/debug +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64)) +ifneq ($(DEB_TARGET_ARCH),x32) + : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 + : # (this works when CONFARGS contains '--disable-multilib') + ln -s $(configured_libdir) $(d)/lib64 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/lib64 +endif +endif +ifeq ($(DEB_TARGET_ARCH),x32) + : # link lib to libx32 and $(PF)/lib to $(PF)/libx32 + ln -s $(configured_libdir) $(d)/libx32 + mkdir -p $(d)/$(PF)/$(configured_libdir) + ln -s $(configured_libdir) $(d)/$(PF)/libx32 +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + +ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) + @echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib) + ls $(d)/$(PF)/$(TARGET_ALIAS)/lib + set -x; \ + if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \ + fi + for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \ + [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \ + cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \ + done +else + ifneq ($(configured_libdir),$(libdir)) + for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec'; do \ + mv $(d)/$(PF)/$(configured_libdir)/$$i \ + $(d)/$(PF)/$(libdir)/. || true; \ + done + ifeq ($(with_ada),yes) + sed -i s~$(PF)/$(configured_libdir)~$(PF)/$(libdir)~ $(d)/$(PF)/share/gpr/gnatvsn.gpr + endif + endif +endif + +ifneq (,$(cmd_prefix)) + for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \ + [ -f "$$i" ] || continue; \ + mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \ + done +endif + +ifeq ($(with_libcxxdbg),yes) + : # FIXME: the libstdc++ gdb.py file is installed with a wrong name + for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \ + [ -f $$i ] || continue; \ + d=$$(dirname $$i); \ + b=$$(basename $$i); \ + t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \ + mv $$i $$d/$$t; \ + done +endif + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ + $(d)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + case "$$i" in ecj1|*gij-*|*libjawt*|*libjvm*) continue; esac; \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f + +ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + + ifeq ($(with_fortran),yes) + for i in g77; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif +endif + +ifneq ($(with_libgnat),yes) + rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* +endif + +# ifeq ($(with_ada),yes) +# : # rename files (versioned ada binaries) +# for i in ; do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# mv $(d)/$(PF)/share/man/man1/$$i.1 \ +# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ +# done +# for i in $(GNAT_TOOLS); do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# done +# endif + + for i in ar nm ranlib; do \ + cp debian/gcc-$$i-$(BASE_VERSION).1 \ + $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \ + done + + chmod 755 debian/dh_* + +ifneq ($(with_common_libs),yes) +# for native builds, the default ml libs are always available; no need for a placeholder +# apparently this changed with newer dpkg versions (1.18.7?) ... + echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)' > debian/shlibs.common + echo 'libstdc++ $(CXX_SONAME) $(p_lib)' >> debian/shlibs.common + echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common + echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common + $(foreach ml,32 64 n32 x32 hf sf, \ + echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))' > debian/shlibs.common$(ml); \ + echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))' >> debian/shlibs.common$(ml); \ + echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \ + echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)' >> debian/shlibs.common$(ml); \ + ) +endif + + @echo XXXXX `date -R` + find $(d) ! -type d -print + @echo XXXXX + touch $(install_stamp) + +$(install_jit_stamp): $(build_jit_stamp) $(install_stamp) + dh_testdir + dh_testroot + rm -rf $(d)-jit + mkdir -p $(d)-jit/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_jit) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-jit \ + install + + : # copy files to the standard build + cp -a $(d)-jit/$(PF)/include/libgccjit*.h \ + $(d)/$(gcc_lib_dir)/include/. + cp -a $(d)-jit/$(PF)/lib/libgccjit.so* \ + $(d)/$(usr_lib)/. + cp -a $(d)-jit/$(PF)/share/info/libgccjit* \ + $(d)/$(PF)/share/info/. + + @echo XXXXX `date -R` + touch $(install_jit_stamp) + +$(install_nvptx_stamp): $(build_nvptx_stamp) $(install_stamp) \ + $(if $(filter yes, $(with_jit)), $(install_jit_stamp)) \ + $(if $(filter yes, $(with_hppa64)), $(install_hppa64_stamp)) + dh_testdir + dh_testroot + ln -sf ../$(nl_nvptx_srcdir)/newlib $(srcdir)/newlib + rm -rf $(d)-nvptx + mkdir -p $(d)-nvptx/$(PF) + + $(SET_PATH) \ + biarch_multidir_names=none \ + $(MAKE) -C $(builddir_nvptx) \ + CC="$(CC_FOR_TARGET)" \ + $(call pass_vars, $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d)-nvptx \ + install + + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools + rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} + rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale} + rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1 + rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin} + rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed} + rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1* + + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ + mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \ + $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ + find $(d)-nvptx -name \*.la | xargs rm -f + rm -rf $(d)-nvptx/$(PF)/nvptx-none/include + -find $(d)-nvptx -type d -empty -delete + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + find $(d)-nvptx + @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + rm -f $(srcdir)/newlib + @echo XXXXX `date -R` + touch $(install_nvptx_stamp) + +$(install_hppa64_stamp): $(build_hppa64_stamp) + dh_testdir + dh_testroot + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_hppa64) \ + install + + : # remove files not needed + rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info + rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin + rm -f $(d_hppa64)/$(PF)/lib/libiberty.a + rm -f $(d_hppa64)/$(PF)/lib/libcc1.* + rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc} + + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu + rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools + +ifeq ($(versioned_packages),yes) + for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ + mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ + done +endif + mkdir -p $(d_hppa64)/$(PF)/share/man/man1 + for i in gcc-ar gcc-nm gcc-ranlib; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +ifneq ($(GFDL_INVARIANT_FREE),yes) + for i in cpp gcc; do \ + ln -sf $$i$(pkg_ver).1.gz \ + $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ + done +endif + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ + $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ + $(if $(filter $(with_multiarch_lib),yes), \ + $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ + 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ + do \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH/RUNPATH: $$i"; \ + done + + touch $(install_hppa64_stamp) + +$(install_neon_stamp): $(build_neon_stamp) + dh_testdir + dh_testroot + rm -rf $(d_neon) + mkdir -p $(d_neon)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_neon) \ + $(call pass_vars, CC $(flags_to_pass)) \ + DESTDIR=$(CURDIR)/$(d_neon) \ + install + touch $(install_neon_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ + > arch_binaries.tmp + mv debian/arch_binaries.tmp debian/arch_binaries + sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch + cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all + +# see #879054 for the "test ! -s" tests, needed for the rtlibs stage +binary-arch: debian/arch_binaries.all + test ! -s debian/arch_binaries.all || \ + dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs +ifeq ($(i586_symlinks),yes) + cd debian; \ + test ! -s arch_binaries || \ + for x in $$(find `cat arch_binaries` -type l -name 'i686-*'); do \ + link=$$(echo $$x | sed 's/i686-/i586-/'); \ + tgt=$$(basename $$x); \ + echo "Adding symlink: $$link -> $$tgt"; \ + rm -f $$link; cp -a $$x $$link; \ + done +endif + test ! -s debian/arch_binaries.all || \ + dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries || \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/arch_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + test ! -s debian/arch_binaries.all || \ + dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) + test ! -s debian/arch_binaries.all || \ + dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + + : # remove empty directories, when all components are in place + -find $(d) -type d -empty -delete + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d + + @echo XXXXX `date -R` + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ + > indep_binaries.tmp + mv debian/indep_binaries.tmp debian/indep_binaries + sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch + cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all + +binary-indep: debian/indep_binaries.all + dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ + -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs + dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + : # the export should be harmless for the binary indep packages of a native build + export DEB_HOST_ARCH=$(TARGET); \ + dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ + -- -v$(DEB_VERSION) $(common_substvars) + @set -e; \ + export DEB_HOST_ARCH=$(TARGET); \ + pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ + if [ -n "$$pkgs" ]; then \ + echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ + fi + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) + for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ + p=$${p#-p*}; \ + case "$$p" in \ + lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ + esac; \ + done +endif + + dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) + + @echo XXXXX `date -R` + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary +.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all diff --git a/runcheck.sh b/runcheck.sh new file mode 100644 index 0000000..c7d6cfb --- /dev/null +++ b/runcheck.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +mkdir -p build + +abi=${CC##* } +base=build/runcheck$abi + +cat >$base.c < +int main() +{ + printf("$abi"); + return 0; +} +EOF + + +if ${CC:-gcc} -o $base $base.c 2>/dev/null; then + if [ "$($base 2>&1)" = "$abi" ]; then + printf "%s" $abi > $base.out + printf "%s" $abi + fi +fi diff --git a/source/format b/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/source/lintian-overrides b/source/lintian-overrides new file mode 100644 index 0000000..ade6144 --- /dev/null +++ b/source/lintian-overrides @@ -0,0 +1,9 @@ +invalid-arch-string-in-source-relation + +quilt-build-dep-but-no-series-file + +# lintian can't handle (>= ${gcc:Version}) +weak-library-dev-dependency + +# yes, still generating the series file for the build +patch-file-present-but-not-mentioned-in-series diff --git a/tests/control b/tests/control new file mode 100644 index 0000000..95c77af --- /dev/null +++ b/tests/control @@ -0,0 +1,24 @@ +Tests: runtime-libs +Depends: apt, python3-minimal +Restrictions: allow-stderr + +Tests: libc-link +Depends: gcc-9, libc6-dev | libc-dev + +Tests: libstdcxx-link +Depends: g++-9 + +Tests: libgfortran-link +Depends: gfortran-9 + +Tests: libgo-link +Depends: gccgo-9 + +Tests: libgomp-link +Depends: gfortran-9, gcc-9 + +Tests: libgnat-link +Depends: gnat-9 + +Tests: shlib-build +Depends: gcc-9, libc6-dev | libc-dev diff --git a/tests/libc-link b/tests/libc-link new file mode 100755 index 0000000..e224a31 --- /dev/null +++ b/tests/libc-link @@ -0,0 +1,31 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libc, to verify +# basic compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +CC=gcc-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libctest.c +#include +#include + +int main() +{ + assert (1 > 0); + assert (strcmp ("hello", "hello") == 0); + return 0; +} +EOF + +$CC -o libctest libctest.c +echo "build: OK" +[ -x libctest ] +./libctest +echo "run: OK" diff --git a/tests/libgfortran-link b/tests/libgfortran-link new file mode 100755 index 0000000..cc217bb --- /dev/null +++ b/tests/libgfortran-link @@ -0,0 +1,23 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +F95=gfortran-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libgfortran.f + program hello + print *, "Hello World!" + end program hello +EOF + +$F95 -o ftest libgfortran.f +echo "build: OK" +ldd ftest +[ -x ftest ] +./ftest +echo "run: OK" diff --git a/tests/libgnat-link b/tests/libgnat-link new file mode 100755 index 0000000..d741759 --- /dev/null +++ b/tests/libgnat-link @@ -0,0 +1,25 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgnat, +# to verify basic compile-time and run-time linking functionality. + +set -e + +GNATMAKE=gnatmake-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello.adb +with Ada.Text_IO; use Ada.Text_IO; +procedure Hello is +begin + Put_Line("Hello gnatmake."); +end Hello; +EOF + +$GNATMAKE -eS -vm -o adatest hello.adb +echo "build: OK" +ldd adatest +[ -x adatest ] +./adatest +echo "run: OK" diff --git a/tests/libgo-link b/tests/libgo-link new file mode 100755 index 0000000..e83076f --- /dev/null +++ b/tests/libgo-link @@ -0,0 +1,26 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgo, +# to verify basic compile-time and run-time linking functionality. + +set -e + +GO=go-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello.go +package main +import "fmt" +func main() { + fmt.Println("hello world") +} +EOF + +$GO run hello.go +$GO build hello.go +echo "build: OK" +ldd hello +[ -x hello ] +./hello +echo "run: OK" diff --git a/tests/libgomp-link b/tests/libgomp-link new file mode 100755 index 0000000..2dad551 --- /dev/null +++ b/tests/libgomp-link @@ -0,0 +1,77 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libgfortran, +# to verify basic compile-time and run-time linking functionality. + +set -e + +CC=gcc-9 +F95=gfortran-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < hello-gomp.c +#include +#include +#include +int main (int argc, char *argv[]) { + +int nthreads, tid; + +/* Fork a team of threads giving them their own copies of variables */ +#pragma omp parallel private(nthreads, tid) + { + + /* Obtain thread number */ + tid = omp_get_thread_num(); + printf("Hello World from thread = %d\n", tid); + + /* Only master thread does this */ + if (tid == 0) + { + nthreads = omp_get_num_threads(); + printf("Number of threads = %d\n", nthreads); + } + + } /* All threads join master thread and disband */ +} +EOF + +$CC -fopenmp -o gctest hello-gomp.c +echo "build: OK" +ldd gctest +[ -x gctest ] +./gctest +echo "run: OK" + +cat < hello-gomp.f + program omp_par_do + implicit none + + integer, parameter :: n = 100 + real, dimension(n) :: dat, result + integer :: i + + !$OMP PARALLEL DO + do i = 1, n + result(i) = my_function(dat(i)) + end do + !$OMP END PARALLEL DO + + contains + + function my_function(d) result(y) + real, intent(in) :: d + real :: y + + ! do something complex with data to calculate y + end function my_function + end program omp_par_do +EOF + +$F95 -fopenmp -o gftest hello-gomp.f +echo "build: OK" +ldd gftest +[ -x gftest ] +./gftest +echo "run: OK" diff --git a/tests/libstdcxx-link b/tests/libstdcxx-link new file mode 100755 index 0000000..7718974 --- /dev/null +++ b/tests/libstdcxx-link @@ -0,0 +1,27 @@ +#!/bin/sh +# autopkgtest check: Build and run a simple program against libstdc++, +# to verify basic compile-time and run-time linking functionality. + +set -e + +CXX=g++-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < libstdcxx.cc +#include +using namespace std; + +int main() { + cout << "Hello! World!\n"; + return 0; +} +EOF + +$CXX -o cxxtest libstdcxx.cc +echo "build: OK" +ldd cxxtest +[ -x cxxtest ] +./cxxtest +echo "run: OK" diff --git a/tests/runtime-libs b/tests/runtime-libs new file mode 100755 index 0000000..e4e9fc6 --- /dev/null +++ b/tests/runtime-libs @@ -0,0 +1,31 @@ +#!/bin/sh +# autopkgtest check: start a "simple" program and check that +# dynamic loading of modules works + +set -e + + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR + +echo "Running exexutable linked with libgcc and libstdc++ (apt)..." +if [ -x /usr/bin/apt ]; then + apt=/usr/bin/apt +elif [ -x /bin/apt ]; then + apt=/bin/apt +else + echo "apt not found" + exit 1 +fi + +ldd $apt +apt show libgcc1 libstdc++6 + +echo "Running dynamically linked executable (python3)..." +python3 -c 'print("Hello World!")' +echo "OK" + +echo "Loading extension module..." +python3 -c 'import _hashlib; print(_hashlib.__dict__)' +echo "OK" diff --git a/tests/shlib-build b/tests/shlib-build new file mode 100755 index 0000000..eb16453 --- /dev/null +++ b/tests/shlib-build @@ -0,0 +1,46 @@ +#!/bin/sh +# autopkgtest check: Build and link against a simple shared library, to test +# basic binutils compile-time and run-time linking functionality. +# +# (C) 2012 Canonical Ltd. +# Author: Martin Pitt + +set -e + +CC=gcc-9 + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat < testlib.c + +int ultimate_answer() +{ + return 42; +} +EOF + +$CC -Wall -Werror -shared -o libultimate.so testlib.c +echo "library build: OK" + +# should export the symbol +nm -D libultimate.so | grep -q 'T ultimate_answer' + +# link it against a program +cat < testprog.c +#include + +int ultimate_answer(); + +int main() +{ + assert (ultimate_answer() == 42); + return 0; +} +EOF + +$CC -Wall -Werror -L . -o testprog testprog.c -lultimate +echo "program build: OK" +[ -x testprog ] +LD_LIBRARY_PATH=. ./testprog +echo "run: OK" diff --git a/watch b/watch new file mode 100644 index 0000000..f46cd77 --- /dev/null +++ b/watch @@ -0,0 +1,3 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(9\.[\d\.]*)/ \ + gcc-([\d\.]+)\.tar\.xz debian uupdate